Fix release for 1.1.1: the minimal path end to end, engine commands that run on Godot, Unity and Unreal, hook warnings you can see, and verdicts that say when they could not check. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.1 → v1.1.2). Fixes #67 Fixes #131 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
12 KiB
Skill Test Spec: /review-all-gdds
Skill Summary
/review-all-gdds is an Opus-tier skill that performs a holistic cross-GDD
review across the system GDDs in design/gdd/. After loading everything
(Phase 1), it runs two independent reviews in parallel as game-designer
sub-agents: Phase 2, Cross-GDD Consistency (dependency bidirectionality, rule
contradictions, stale references, ownership conflicts, formula compatibility,
acceptance-criteria conflicts), and Phase 3, Game Design Holism (competing
progression loops, attention budget, dominant strategies, economic loops,
difficulty curves, pillar alignment, player-fantasy coherence). Phase 4 walks
multi-system scenarios. It produces a PASS / NOT ASSESSED / CONCERNS / FAIL
verdict, and writes design/gdd/gdd-cross-review-[YYYY-MM-DD].md and
systems-index "Needs Revision" statuses only after the user approves.
It is invoked after individual GDDs are approved and before architecture work.
It spawns no director gate agents. At workflow: minimal it does not apply (no
GDDs), so every fixture below sets modes.workflow: full.
Static Assertions (Structural)
Checked against the SKILL.md by /skill-test spec — no fixture needed.
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥5 phase headings (complex multi-phase skill)
- Contains verdict keywords: PASS, NOT ASSESSED, CONCERNS, FAIL
allowed-toolsincludes Write, so "May I write" language is present (Phase 6 report write)- Has a next-step handoff at the end
- Documents parallel spawning of Phase 2 (Consistency) and Phase 3 (Design Theory)
Director Gate Checks
No director gates — this skill spawns no director gate agents and resolves no
review mode. It IS the holistic review; its only agents are the two
game-designer sub-agents for Phases 2 and 3.
Test Cases
Case 1: Happy Path — Clean GDD set with no conflicts
Fixture:
project.yamlsetsmodes.workflow: fulldesign/gdd/containsgame-concept.md,game-pillars.md(pillars and anti-pillars),systems-index.md, and three system GDDs —combat.md,inventory.md,crafting.md— each with every section Phase 1c loads and a filled## Cross-Referencestable whose rows all resolve- All GDDs are consistent: no formula contradictions, no competing ownership, no stale references, reciprocal dependencies; every system serves a pillar
- Nothing a design-theory check would warn on either: one primary progression loop, at most 4 systems active at once, every resource has both a source and a sink, compatible scaling curves, compatible player fantasies
Input: /review-all-gdds
Expected behavior:
- Skill greps
## Summaryacrossdesign/gdd/*.mdand shows a manifest ("Found [N] GDDs. Summaries: …") - Skill reads the entity registry, or notes that it is empty and suggests
/consistency-check - Skill loads the review sections and reports "Loaded [N] system GDDs covering [M] systems. Pillars: […]. Anti-pillars: […]."
- Phase 2 and Phase 3 spawn simultaneously as
game-designersub-agents, each given the pasted GDD content for its slice (not file paths) and its checklist (2a–2f / 3a–3g) - Phase 4 walks 3–5 multi-system scenarios
- Report shows no blocking issues and no warnings; verdict PASS
AskUserQuestion: "May I write this review todesign/gdd/gdd-cross-review-[date].md?"- Closing widget built from project state
Assertions:
- Phase 2 and Phase 3 are spawned in parallel (both
Agentcalls issued before either result is awaited) - Sub-agent prompts carry the GDD section content, not just file paths
- The report states the covered set:
GDDs reviewed: [N] of [M] presentandNot read: none, and lists the scenarios walked - Verdict is PASS only because there are no blocking issues and no warnings, over three readable GDDs — a single warning would make it CONCERNS
- The report is written only after the user approves, under an ISO-dated name (
gdd-cross-review-YYYY-MM-DD.md) - The closing widget offers
/create-architectureand/gate-check(both allowed on PASS)
Case 2: Failure Path — Conflicting rules between two GDDs
Fixture:
project.yamlsetsmodes.workflow: fullcombat.mddefines a floor: "Minimum damage after armour reduction is 1"status-effects.mdstates a mechanic that bypasses it: "Poison ignores armour and can reduce damage to 0"- The two GDDs are otherwise complete and valid;
game-pillars.mddefines the pillars andsystems-index.mdlists both systems
Input: /review-all-gdds
Expected behavior:
- Phase 2 detects the floor/ceiling contradiction
- Report prints a
🔴 Rule Contradictionentry quoting both rules and asking which GDD is authoritative - The issue sits under Consistency Issues → Blocking; both GDDs appear in "GDDs Flagged for Revision"
- Verdict: FAIL, with "If FAIL — required actions before re-running"
- After the report write question, a second
AskUserQuestionoffers to mark the flagged GDDsNeeds Revisioninsystems-index.md
Assertions:
- Verdict is FAIL (not PASS, CONCERNS or NOT ASSESSED)
- Both GDD filenames are named in the conflict entry
- The specific contradicting rules are quoted (not a vague "conflict found")
- The issue is classified as Blocking (🔴), and both GDDs are in the flagged table with Priority Blocking
- Skill does NOT decide which GDD is right and does NOT edit either GDD
- If the user approves the systems-index update, the status is written as exactly
Needs Revisionwith no parenthetical - The closing widget offers neither
/create-architecturenor/gate-check(verdict is FAIL)
Case 3: Partial Path — Cross-reference to a GDD that does not exist
Fixture:
project.yamlsetsmodes.workflow: fulldesign/gdd/holdsgame-pillars.md,systems-index.mdand two consistent system GDDs,crafting.mdandinventory.mdcrafting.md's## Cross-Referencestable has a row whose Target GDD issystem-b.md; nodesign/gdd/system-b.mdexistssystems-index.mdlists system-b as the next system with Status: Not Started- Nothing else would warn
Input: /review-all-gdds
Expected behavior:
- Phase 2's stale-reference check (2c) confirms each Cross-References row's
Target GDD exists, and finds
system-b.mdmissing - Because
systems-index.mdlists system-b, the reference is a dependency on planned work: a⚠️ Stale ReferenceWarning namingcrafting.mdand the missing target, to re-check when that GDD is written - No other issues found; verdict CONCERNS (warnings, nothing blocking)
- Closing widget includes
/design-system system-b(next in design order)
Assertions:
- The finding names
crafting.mdand the missingsystem-b.md - It is reported under Warnings (⚠️), not Blocking — because the systems index lists system-b as planned
- Verdict is CONCERNS — not FAIL for a reference to planned work, and not an unqualified PASS
- The closing widget offers
/design-system system-b, and offers/create-architecturebut not/gate-check(which requires PASS) - Skill does NOT skip or silently ignore the missing target
Case 3b — the target is in neither place: the same fixture, except
systems-index.md has no entry for system-b. Nothing will ever define it.
Assertions (3b):
- The reference is reported as 🔴 Blocking, and
crafting.mdappears in "GDDs Flagged for Revision" with Priority Blocking - Verdict is FAIL, and the closing widget offers neither
/create-architecturenor/gate-check
Case 4: Edge Case — Fewer than two system GDDs
Fixture:
project.yamlsetsmodes.workflow: fulldesign/gdd/containssystems-index.mdand a single system GDD,combat.md
Input: /review-all-gdds
Expected behavior:
- Skill loads what exists and counts the system GDDs
- Fewer than 2 → skill stops with: "Cross-GDD review requires at least 2 system
GDDs. Write more GDDs first, then re-run
/review-all-gdds." - No review phase runs and no report is offered
Assertions:
- Skill outputs the "requires at least 2 system GDDs" stop message
- Neither Phase 2 nor Phase 3 sub-agent is spawned
- No verdict of PASS is produced for the single document
- No report write is offered and no file is written
Case 5: Director Gate — none spawned, whatever the review mode
Fixture:
project.yamlsetsmodes.workflow: fulldesign/gdd/holds the Case 1 set: concept, pillars, systems index and three consistent system GDDs- 5a:
modes.review_mode: full; 5b:modes.review_mode: solo
Input: /review-all-gdds
Expected behavior:
- The resolved config block requests only
automation,workflowandsystem_overrides— review mode is not consulted - In both 5a and 5b, the same two
game-designersub-agents run Phases 2 and 3 - No director gate agent is spawned; the verdict is produced normally
Assertions:
- No director gate agents (CD-, TD-, PR-, AD-, LP- prefixed gates) are spawned in either mode
- Review mode changes nothing: under
solothe twogame-designersub-agents still run - Output contains no "Gate: [GATE-ID]" or "[GATE-ID] skipped" entries
- The skill produces a verdict in both modes
- The only
Agentspawns in the run are the Phase 2 and Phase 3game-designersub-agents
Case 6: NOT ASSESSED — fewer than two readable GDDs
Fixture:
project.yamlsetsmodes.workflow: fulldesign/gdd/holdsgame-pillars.md,systems-index.mdand two system GDDs:combat.md, complete, andinventory.md, which has the template's headings but only placeholder text under them
Input: /review-all-gdds
Expected behavior:
- Two system GDDs exist, so the "requires at least 2 system GDDs" stop does not fire
inventory.mdis present but empty — not reviewable — so only one GDD can be compared, and a clean result would mean only that nothing was compared- Verdict NOT ASSESSED; "If NOT ASSESSED — what could not be reviewed, and why"
names
inventory.mdas placeholder-only and says a cross-review needs two readable GDDs - The report states
GDDs reviewed: 1 of 2 present
Assertions:
- Verdict is NOT ASSESSED — not PASS, although no contradiction was found
- The report names
inventory.mdas present but not reviewable, and statesGDDs reviewed: 1 of 2 present - A GDD that could not be read at all would be named on the report's
Not read:line under every verdict, and is a NOT ASSESSED trigger like an empty one - The closing widget offers neither
/create-architecturenor/gate-check
Protocol Compliance
- Phase 2 (Consistency) and Phase 3 (Design Theory) spawned in parallel — not sequentially
- The full analysis is shown before any write is requested
- Does NOT write the report or update
systems-index.mdwithoutAskUserQuestionapproval - Verdict is one of exactly: PASS, NOT ASSESSED, CONCERNS, FAIL
- Every issue cites the GDD, section and text involved
- Ends with an
AskUserQuestionhandoff built from the verdict: FAIL or NOT ASSESSED → neither/create-architecturenor/gate-check; CONCERNS →/create-architectureonly; PASS → both
Coverage Notes
- Economic loop analysis (3d, source/sink loops) is not fixture-tested. Case 2 exercises Phase 2's rule-contradiction check — a different checklist, run by the other sub-agent — so it says nothing about 3d.
- The design theory phase (Phase 3) checks, including dominant strategy detection and cognitive overload, are not individually fixture-tested.
- Case 6 covers the fewer-than-two-readable-GDDs trigger, through a present-but-empty GDD. The NOT ASSESSED triggers for undefined pillars and for a sub-agent that returns no report are not fixture-tested.
- The
since-last-reviewmode (.claude/scripts/review-scope.sh) and theconsistency/design-theoryfocus modes are not tested here.