6.5 KiB
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.,
/brainstormor/startdepending 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.mdcontains only placeholders- Engine argument provided:
godot
Input: /setup-engine godot
Expected behavior:
- Skill skips engine-selection step (argument provided)
- Skill presents language options for Godot: GDScript or C#
- User selects GDScript
- 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.)
- Skill populates the routing table:
.gd→ gdscript-specialist,.gdshader→ godot-shader-specialist,.tscn→ godot-specialist - Skill asks "May I write to
technical-preferences.md?" - 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.tscnentries - 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.mdcontains only placeholders- Engine argument provided:
unity
Input: /setup-engine unity
Expected behavior:
- Skill sets engine to Unity, language to C#
- Naming conventions are C#-appropriate (PascalCase for classes, camelCase for fields)
- Specialist assignments reference unity-specialist, csharp-specialist
- Routing table:
.cs→ csharp-specialist,.asmdef→ unity-specialist,.unity(scene) → unity-specialist - 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
.csand.unityentries - Verdict is COMPLETE
Case 3: Unreal + Blueprint — Unreal-specific configuration
Fixture:
technical-preferences.mdcontains only placeholders- Engine argument provided:
unreal
Input: /setup-engine unreal
Expected behavior:
- Skill sets engine to Unreal Engine 5, primary language to Blueprint (Visual Scripting)
- Specialist assignments reference unreal-specialist, blueprint-specialist
- Routing table:
.uasset→ blueprint-specialist or unreal-specialist,.umap→ unreal-specialist - Performance budgets are pre-set with Unreal defaults (e.g., higher draw call budget)
- Skill asks "May I write" and writes on approval; verdict is COMPLETE
Assertions:
- Engine field is set to Unreal Engine 5
- Routing table includes
.uassetand.umapentries - Blueprint specialist is assigned
- Verdict is COMPLETE
Case 4: Engine Already Configured — Offers to reconfigure specific sections
Fixture:
technical-preferences.mdhas engine set to Godot 4 with all fields populated- No engine argument provided
Input: /setup-engine
Expected behavior:
- Skill reads
technical-preferences.mdand detects fully configured engine (Godot 4) - Skill reports: "Engine already configured as Godot 4 + GDScript"
- Skill presents options: reconfigure all, reconfigure specific section only (Engine/Language, Naming Conventions, Specialists, Performance Budgets)
- User selects "Reconfigure Performance Budgets only"
- Only the performance budget section is updated; all other fields unchanged
- 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:
- Skill completes full engine configuration
- No director agents are spawned at any point
- 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.