2.1 KiB
AGENTS.md for plugins
This file applies to plugins/.
Plugin Boundary
Plugins are game management plugins. Do not model unrelated billing, cloud sales, host provider behavior, or independent plugin backend services here.
Game-specific lifecycle behavior belongs here, not in platform services or the generic run executor. A plugin must own its install, update, pre-start checks, start command construction, stop behavior, status checks, executable paths, dependency commands, default launch flags, and game-specific app IDs.
When a game needs automatic setup, express it through plugin manifests, action specs, templates, or scripts. For example, the SCUM plugin should own the SteamCMD install/update flow, including stopping the server before update, running steamcmd +force_install_dir ... +login anonymous +app_update 3792580 validate +quit, and starting SCUMServer.exe with plugin-declared port and MaxPlayers plus the plugin default -log.
Start scripts may perform plugin-owned environment checks before launch. If required files, directories, SteamCMD, or server binaries are missing, the plugin script should create/install/update them and then start the service in the same lifecycle path, instead of requiring new platform/frontend deployment states.
Do not rely on run or platform hardcoding a specific game path, Steam app ID, command line, or startup flag to make a plugin work. If a new capability is needed, declare the generic capability the plugin needs and keep the game-specific policy in the plugin.
Structure Rules
Manifests, schemas, SDK contracts, example plugins, and test fixtures must live in dedicated directories. Do not bury action schemas or bridge types inside UI page code.
Security Rules
Plugins must never receive raw AI provider keys, run credentials, raw host paths, or direct storage endpoints. Use platform-mediated bridge calls for jobs, logs, files, artifacts, and AI.
Local Development
Local plugin development should exercise real platform-run flows through dev registration instead of bypassing platform authorization.