# Skill Test Spec: /setup-engine ## Skill Summary `/setup-engine` configures the project's engine, language, rendering backend, physics engine, specialist agent assignments, and naming conventions by populating `technical-preferences.md`. It accepts an optional engine argument (e.g., `/setup-engine godot`) to skip the engine-selection step. For each section of `technical-preferences.md`, the skill presents a draft and asks "May I write to `technical-preferences.md`?" before updating. The skill also populates the specialist routing table (file extension → agent mappings) based on the chosen engine. It has no director gates — configuration is a technical utility task. The verdict is always COMPLETE when the file is fully written. --- ## Static Assertions (Structural) Verified automatically by `/skill-test static` — no fixture needed. - [ ] Has required frontmatter fields: `name`, `description`, `argument-hint`, `user-invocable`, `allowed-tools` - [ ] Has ≥2 phase headings - [ ] Contains verdict keyword: COMPLETE - [ ] Contains "May I write" collaborative protocol language before updating technical-preferences.md - [ ] Has a next-step handoff (e.g., `/brainstorm` or `/start` depending on flow) --- ## Director Gate Checks None. `/setup-engine` is a technical configuration skill. No director gates apply. --- ## Test Cases ### Case 1: Godot 4 + GDScript — Full engine configuration **Fixture:** - `technical-preferences.md` contains only placeholders - Engine argument provided: `godot` **Input:** `/setup-engine godot` **Expected behavior:** 1. Skill skips engine-selection step (argument provided) 2. Skill presents language options for Godot: GDScript or C# 3. User selects GDScript 4. Skill drafts all engine sections: engine/language/rendering/physics fields, naming conventions (snake_case for GDScript), specialist assignments (godot-specialist, gdscript-specialist, godot-shader-specialist, etc.) 5. Skill populates the routing table: `.gd` → gdscript-specialist, `.gdshader` → godot-shader-specialist, `.tscn` → godot-specialist 6. Skill asks "May I write to `technical-preferences.md`?" 7. File is written after approval; verdict is COMPLETE **Assertions:** - [ ] Engine field is set to Godot 4 (not a placeholder) - [ ] Language field is set to GDScript - [ ] Naming conventions are GDScript-appropriate (snake_case) - [ ] Routing table includes `.gd`, `.gdshader`, and `.tscn` entries - [ ] Specialists are assigned (not placeholders) - [ ] "May I write" is asked before writing - [ ] Verdict is COMPLETE --- ### Case 2: Unity + C# — Unity-specific configuration **Fixture:** - `technical-preferences.md` contains only placeholders - Engine argument provided: `unity` **Input:** `/setup-engine unity` **Expected behavior:** 1. Skill sets engine to Unity, language to C# 2. Naming conventions are C#-appropriate (PascalCase for classes, camelCase for fields) 3. Specialist assignments reference unity-specialist, csharp-specialist 4. Routing table: `.cs` → csharp-specialist, `.asmdef` → unity-specialist, `.unity` (scene) → unity-specialist 5. Skill asks "May I write to `technical-preferences.md`?" and writes on approval **Assertions:** - [ ] Engine field is set to Unity (not Godot or Unreal) - [ ] Language field is set to C# - [ ] Naming conventions reflect C# conventions - [ ] Routing table includes `.cs` and `.unity` entries - [ ] Verdict is COMPLETE --- ### Case 3: Unreal + Blueprint — Unreal-specific configuration **Fixture:** - `technical-preferences.md` contains only placeholders - Engine argument provided: `unreal` **Input:** `/setup-engine unreal` **Expected behavior:** 1. Skill sets engine to Unreal Engine 5, primary language to Blueprint (Visual Scripting) 2. Specialist assignments reference unreal-specialist, blueprint-specialist 3. Routing table: `.uasset` → blueprint-specialist or unreal-specialist, `.umap` → unreal-specialist 4. Performance budgets are pre-set with Unreal defaults (e.g., higher draw call budget) 5. Skill asks "May I write" and writes on approval; verdict is COMPLETE **Assertions:** - [ ] Engine field is set to Unreal Engine 5 - [ ] Routing table includes `.uasset` and `.umap` entries - [ ] Blueprint specialist is assigned - [ ] Verdict is COMPLETE --- ### Case 4: Engine Already Configured — Offers to reconfigure specific sections **Fixture:** - `technical-preferences.md` has engine set to Godot 4 with all fields populated - No engine argument provided **Input:** `/setup-engine` **Expected behavior:** 1. Skill reads `technical-preferences.md` and detects fully configured engine (Godot 4) 2. Skill reports: "Engine already configured as Godot 4 + GDScript" 3. Skill presents options: reconfigure all, reconfigure specific section only (Engine/Language, Naming Conventions, Specialists, Performance Budgets) 4. User selects "Reconfigure Performance Budgets only" 5. Only the performance budget section is updated; all other fields unchanged 6. Skill asks "May I write to `technical-preferences.md`?" and writes on approval **Assertions:** - [ ] Skill does NOT overwrite all fields when only a section update was requested - [ ] User is offered section-specific reconfiguration - [ ] Only the selected section is modified in the written file - [ ] Verdict is COMPLETE --- ### Case 5: Director Gate Check — No gate; setup-engine is a utility skill **Fixture:** - Fresh project with no engine configured **Input:** `/setup-engine godot` **Expected behavior:** 1. Skill completes full engine configuration 2. No director agents are spawned at any point 3. No gate IDs appear in output **Assertions:** - [ ] No director gate is invoked - [ ] No gate skip messages appear - [ ] Verdict is COMPLETE without any gate check --- ## Protocol Compliance - [ ] Presents draft configuration before asking to write - [ ] Asks "May I write to `technical-preferences.md`?" before writing - [ ] Respects engine argument when provided (skips selection step) - [ ] Detects existing config and offers partial reconfigure - [ ] Routing table is populated for all key file types for the chosen engine - [ ] Verdict is COMPLETE after file is written --- ## Coverage Notes - Godot 4 + C# (instead of GDScript) follows the same flow as Case 1 with different naming conventions and the godot-csharp-specialist assignment. This variant is not separately tested. - The engine-version-specific guidance (e.g., Godot 4.6 knowledge gap warning from VERSION.md) is surfaced by the skill but not assertion-tested here. - Performance budget defaults per engine are noted as engine-specific but exact default values are not assertion-tested.