- New skill: /skill-test (static | spec | audit modes) - static: 7-check structural linter per skill file - spec: Claude-evaluated behavioral assertions against test specs - audit: coverage report across all 52 skills with priority gaps - New hook: validate-skill-change.sh — advisory reminder to lint after skill edits - New template: skill-test-spec.md — standard structure for authoring test specs - New: tests/skills/catalog.yaml — machine-readable coverage index (52 skills) - New: tests/skills/_fixtures/ — shared fixtures (complete concept, incomplete GDD) - New: 4 seed test specs for critical gate skills (gate-check, design-review, story-readiness, story-done) — 4 cases each - Modified: settings.json — validate-skill-change.sh added to PostToolUse hook Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5.9 KiB
Skill Test Spec: /gate-check
Skill Summary
/gate-check validates whether the project is ready to advance to the next
development phase. It checks for required artifacts, runs quality checks, asks
the user about unverifiable items, and produces a PASS/CONCERNS/FAIL verdict.
On PASS with user confirmation, it writes the new stage name to
production/stage.txt. It governs all 6 phase transitions and is the most
critical gate-keeping skill in the pipeline.
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 (numbered Phase N or ## sections)
- Contains verdict keywords: PASS, CONCERNS, FAIL
- Contains "May I write" collaborative protocol language
- Has a next-step handoff at the end (Follow-Up Actions section)
Test Cases
Case 1: Happy Path — All Concept artifacts present, advancing to Systems Design
Fixture:
design/gdd/game-concept.mdexists, has content including all required sectionsdesign/gdd/game-pillars.mdexists (or pillars defined within concept doc)- No systems index yet (which is correct for this stage)
Input: /gate-check systems-design
Expected behavior:
- Skill reads
design/gdd/game-concept.mdand verifies it has content - Skill checks for game pillars (in concept or separate file)
- Skill checks quality items (core loop described, target audience identified)
- Skill outputs structured checklist with all items marked
- Skill presents PASS/CONCERNS/FAIL verdict
- If PASS: skill asks "May I update
production/stage.txtto 'Systems Design'?"
Assertions:
- Skill uses Glob or Read to verify
design/gdd/game-concept.mdexists before marking it checked - Output includes a "Required Artifacts" section with check status per item
- Output includes a "Quality Checks" section with check status per item
- Output includes a "Verdict" line with one of PASS / CONCERNS / FAIL
- Skill asks about unverifiable quality items (e.g., "Has this been reviewed?") rather than assuming PASS
- Skill asks "May I write" before updating
production/stage.txt - Skill does NOT write
production/stage.txtwithout explicit user confirmation
Case 2: Failure Path — Missing required artifacts for Concept → Systems Design
Fixture:
design/gdd/game-concept.mddoes NOT exist- No game pillars document exists
design/gdd/directory is empty or absent
Input: /gate-check systems-design
Expected behavior:
- Skill attempts to read
design/gdd/game-concept.md— file not found - Skill marks required artifact as missing (not present)
- Skill outputs FAIL verdict
- Skill lists blocker: "No game concept document found"
- Skill suggests remediation: run
/brainstormto create one
Assertions:
- Verdict is FAIL (not PASS or CONCERNS) when required artifacts are missing
- Output explicitly names
design/gdd/game-concept.mdas missing - Output includes a "Blockers" section with at least 1 item
- Output recommends
/brainstormas the remediation action - Skill does NOT write
production/stage.txtwhen verdict is FAIL
Case 3: No Argument — Auto-detect current stage
Fixture:
production/stage.txtcontainsConceptdesign/gdd/game-concept.mdexists with content- No systems index yet
Input: /gate-check (no argument)
Expected behavior:
- Skill reads
production/stage.txtto determine current stage - Skill determines the next gate is Concept → Systems Design
- Skill proceeds with the Systems Design gate checks
- Output clearly states which transition is being validated
Assertions:
- Skill reads
production/stage.txt(or uses project-stage-detect heuristics) to determine current stage - Output header names both current and target phases (e.g., "Gate Check: Concept → Systems Design")
- Skill does not ask the user which gate to check if current stage is determinable
Case 4: Edge Case — Manual check items flagged correctly
Fixture:
- All required artifacts for Concept → Systems Design are present
- No playtest or review record exists (can't auto-verify quality checks)
Input: /gate-check systems-design
Expected behavior:
- Skill verifies all artifact files exist
- Skill encounters quality check: "Game concept reviewed (not MAJOR REVISION NEEDED)"
- Since no review record exists, skill marks item as MANUAL CHECK NEEDED
- Skill asks the user: "Has the game concept been reviewed for design quality?"
- Skill waits for user input before finalizing verdict
Assertions:
- Items that cannot be auto-verified are marked
[?] MANUAL CHECK NEEDEDrather than assumed PASS - Skill uses a question to the user for at least one unverifiable quality item
- Skill does not mark unverifiable items as PASS by default
Protocol Compliance
- Uses "May I write" before updating
production/stage.txt - Presents the full checklist report before asking for write approval
- Ends with a "Follow-Up Actions" section listing next steps per verdict
- Never advances the stage without explicit user confirmation
- Never auto-creates
production/stage.txtif it doesn't exist without asking
Coverage Notes
- The Production → Polish and Polish → Release gates are not covered here because they require complex multi-artifact setups (sprint plans, playtest data, QA sign-off); these are deferred to dedicated follow-up specs.
- The "CONCERNS" verdict path (minor gaps, not blocking) is not explicitly tested here; it falls between Case 1 and Case 2 and follows the same pattern.
- The Vertical Slice validation block (Pre-Production → Production gate) is not covered because it requires a playable build context that cannot be expressed as a document fixture.