← ClaudeAtlas

add-terminal-commandlisted

Add or change an ICommand type so the Game.WebClient debug terminal keeps working with zero web-client code changes — mandates ParamSuggestionAttribute annotations on domain-id parameters and the matching provider for genuinely new id kinds.
KonH/GlobalStrategy · ★ 2 · Code & Development · score 68
Install: claude install-skill KonH/GlobalStrategy
# add-terminal-command The web client's debug terminal (`src/Game.WebClient/Terminal/`) discovers every `ICommand` type in `src/Game.Commands/` via reflection (`CommandRegistry`) — a new command ships with just a new build, no web-client code change required. Tab completion, however, depends on every domain-id parameter being annotated so the terminal knows what to suggest. This skill is the checklist for keeping that contract intact whenever an `ICommand` type is added or changed. ## When this applies - Adding a new `ICommand` record/struct to `src/Game.Commands/`. - Adding a new field or record-positional property to an existing `ICommand` type. - Changing a parameter's type on an existing `ICommand` type (e.g. `string` → `int`, or widening a closed string set). ## Checklist 1. **Every domain-id parameter gets a `ParamSuggestionAttribute`.** A "domain-id parameter" is any public field or record-positional property whose name ends in `Id`, or is named `Locale`/`Interval` (the two known non-`Id` exceptions already in the codebase). Pick the attribute from `src/Game.Commands/ParamSuggestion.cs` that matches what the id refers to: - `[CountryId]` — a country id (`CountryConfig.Countries`) - `[OrgId]` — an organization id (`OrganizationConfig.Organizations`) - `[ProvinceId]` — a province id (`ProvinceConfig.Provinces`) - `[ActionId]` — an action id (`ActionConfig.Actions`) - `[RoleId]` — a character role id (`CharacterConfig.Roles`) - `[Chara