Files
Claude-Code-Game-Studios/CCGS Skill Testing Framework/skills/utility/help.md
T
DonchitosandClaude Opus 5.5 b21fa0f7f2 Release 1.1.2 — the default path works end to end
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
2026-09-29 21:32:19 +10:00

298 lines
13 KiB
Markdown

# Skill Test Spec: /help
## Skill Summary
`/help` tells the user where they are in the pipeline and the one thing to do
next. It is read-only and declares the Haiku tier (`model: haiku`), which is
used only when the user types `/help` in Manual mode — in auto mode, or when
Claude starts the skill itself, the session model runs it
(`.claude/docs/model-tiers.md`). Before it runs, it is handed the resolved
config block (`project.stage`, `workflow`) and the output of
`.claude/scripts/story-status.sh`; it reads the session checkpoint itself (Step 3). It then reads
`.claude/docs/workflow-catalog.yaml`, resolves step completion for the current
phase with one call to `bash .claude/scripts/artifact-check.sh --phase [phase]`,
and in Production reads `production/sprint-status.yaml`.
When `workflow` resolves to `minimal` (the default, because `modes.rigor`
defaults to `minimal`) it skips the phase ladder, reads the session checkpoint
(Step 3), and walks the minimal path (Step 4m): engine →
`design/game-brief.md` → stories → `/dev-story` ↔ `/story-done`. The optional
argument is **what the user just finished or is stuck
on** — the skill uses it to advance past the named step, and confusion language
in it adds an escalation footer. It is not a topic filter.
Output is a short "Where You Are" block with `✓ Done`, exactly one `→ Next up`,
optional `~ Also available`, and `Coming up after that`. The verdict line is
`Verdict: **COMPLETE** — next steps identified.` No files are written and no
director gates are invoked.
---
## 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`
- [ ] Frontmatter sets `model: haiku`
- [ ] Has ≥2 phase headings
- [ ] Contains verdict keyword: COMPLETE
- [ ] Does NOT contain "May I write" language, and `allowed-tools` has no Write or Edit (skill is read-only)
- [ ] Has a next-step handoff (one `→ Next up` recommendation plus escalation paths)
---
## Director Gate Checks
None. `/help` is a read-only navigation skill. No director gates apply.
---
## Test Cases
### Case 1: Happy Path — Production stage with active sprint
**Fixture:**
- `project.yaml` sets `project.stage: Production` and `modes.rigor: standard`
(so `workflow` resolves to `standard`)
- `production/sprints/sprint-004.md` exists
- `production/sprint-status.yaml` lists one story `status: in-progress`, two
`status: ready-for-dev`, three `status: done`, and one `status: blocked` with a
`blocker` field
- `production/session-state/active.md` has a STATUS block naming the in-progress story
**Input:** `/help`
**Expected behavior:**
1. Skill takes `project.stage: Production` and `workflow: standard` from the config block
2. Skill reads `.claude/docs/workflow-catalog.yaml` and runs
`bash .claude/scripts/artifact-check.sh --phase production`
3. Skill reads `production/sprint-status.yaml`: the in-progress story is
"currently active", ready-for-dev stories are "next up", done stories count as
complete, the blocked story is named with its `blocker` text
4. Because `active.md` shows an active task, it is surfaced prominently at the top:
"It looks like you were working on [story]"
5. Output uses the Step 7 shape headed `## Where You Are: Production`, with a
single `→ Next up (REQUIRED)` step
6. Verdict is COMPLETE
**Assertions:**
- [ ] Heading reads `## Where You Are: Production`
- [ ] `production/sprint-status.yaml` is read; the in-progress story is surfaced as currently active
- [ ] The blocked story appears with its `blocker` field
- [ ] Exactly one `→ Next up (REQUIRED)` step is shown (not a list of all skills)
- [ ] The in-progress story from `active.md` is surfaced at the top ("It looks like you were working on …")
- [ ] Verdict is COMPLETE
- [ ] No files are written
---
### Case 2: Concept Stage — engine configured, no concept document
**Fixture:**
- `project.yaml` sets `project.stage: Concept`, `modes.rigor: full`, and
`engine.name: "Godot"` (`full`, because at `standard` the art bible is
required only when visual-asset stories exist — `.claude/docs/workflow-modes.md`
— and a Concept-stage project has no stories to decide it by)
- No `design/gdd/game-concept.md`, no `design/art/art-bible.md`, no
`design/gdd/systems-index.md`, no sprint files
**Input:** `/help`
**Expected behavior:**
1. Skill maps `Concept` to the catalog phase `concept`
2. `artifact-check.sh --phase concept` reports `engine-setup` PRESENT (matched by
`engine.name` in `project.yaml`) and `game-concept`, `art-bible`, `map-systems` ABSENT
3. `✓ Done` lists Engine Setup
4. `→ Next up (REQUIRED)` is **Game Concept Document** with command `/brainstorm`
5. `Coming up after that` lists Art Bible (`/art-bible`) and Systems Map (`/map-systems`)
6. Verdict is COMPLETE
**Assertions:**
- [ ] Heading reads `## Where You Are: Concept`
- [ ] Engine Setup is shown under `✓ Done` (not reported missing)
- [ ] `→ Next up` is Game Concept Document via `/brainstorm`
- [ ] `/art-bible` and `/map-systems` appear under "Coming up after that", in that order
- [ ] No Production-stage skill (e.g. `/dev-story`, `/sprint-plan`) is suggested
- [ ] Verdict is COMPLETE
---
### Case 3: No stage recorded — phase inferred from artifacts
**Fixture:**
- `project.yaml` sets `modes.rigor: standard` and has no `project.stage`
- No `production/stage.txt`
- `design/gdd/game-concept.md` and `design/gdd/systems-index.md` exist
- No `docs/architecture/adr-*.md`, no `production/epics/**/story-*.md`, code root empty
**Input:** `/help`
**Expected behavior:**
1. Config block reports `project.stage` as not set
2. Skill applies the Step 2 artifact inference (most-advanced match wins):
`design/gdd/systems-index.md` exists and nothing further → `systems-design`
3. Skill reports the inferred phase normally with the Step 7 shape
4. `→ Next up (REQUIRED)` is System GDDs via `/design-system`. The catalog's
`design-system` step has only a `note:` check, so `artifact-check.sh` reports
it `NO_CHECK` with a note — a **MANUAL** step: the skill asks whether any
system GDD is already done instead of asserting that none is
5. The input has no confusion language, so the Step 9 escalation block is not shown
6. Verdict is COMPLETE
**Assertions:**
- [ ] Skill does not stop or error when no stage is recorded
- [ ] Inferred phase is Systems Design (heading `## Where You Are: Systems Design`), not Concept
- [ ] `→ Next up` is System GDDs via `/design-system`
- [ ] The skill asks the user whether any system GDD is already done (MANUAL step), rather than reporting System GDDs as done or as not started
- [ ] The "Need more detail?" escalation block (`/project-stage-detect`, `/gate-check`, `/start`) is NOT shown
- [ ] Verdict is COMPLETE
---
### Case 4: Argument — user names the step they finished and says they are unsure
**Fixture:**
- `project.yaml` sets `project.stage: Systems Design` and `modes.rigor: standard`
- `design/gdd/systems-index.md` lists two MVP systems, both `Status: Approved`,
and both system GDDs exist
- No `design/gdd/gdd-cross-review-*.md`
- The catalog's `design-review` step has no artifact check (`NO_CHECK`)
**Input:** `/help just finished design-review, not sure what's next`
**Expected behavior:**
1. The argument is read as the step the user just finished (Step 5), not as a topic filter
2. Skill advances past Per-System Design Review even though its artifact check is `NO_CHECK`
3. `→ Next up (REQUIRED)` is Cross-GDD Review via `/review-all-gdds`
4. "not sure" is confusion language, so the Step 9 "Need more detail?" block is
appended with `/project-stage-detect`, `/gate-check` and `/start`
5. The `/settings` rigor line is NOT shown: the user does not sound overwhelmed by
process and the project has not outgrown `standard` (no `settings-guidance.md § 4` trigger fires)
6. Verdict is COMPLETE
**Assertions:**
- [ ] Per-System Design Review is treated as done because the user named it
- [ ] `→ Next up` is Cross-GDD Review via `/review-all-gdds`
- [ ] Escalation block lists `/project-stage-detect`, `/gate-check` and `/start`
- [ ] No `/settings` rigor-change line appears
- [ ] Verdict is COMPLETE
---
### Case 5: Director Gate Check — minimal path, no gate and no gate-check route
**Fixture:**
- `project.yaml` has `engine.name: "Godot"` and no `modes` block (`modes.rigor`
defaults to `minimal`, so `workflow` resolves to `minimal`)
- `design/game-brief.md` exists
- `production/epics/core/story-001.md` is `Status: Complete`,
`story-002.md` is `Status: In Progress`, `story-003.md` is `Status: Ready`
- Neither `active.md` (its CHECKPOINT names story-002 as the current task, with
**Next step:** `/dev-story` on it) nor the git log (no commit mentions
story-002) says story-002's implementation is written
**Input:** `/help`
**Expected behavior:**
1. `workflow: minimal` sends the skill past the rest of Step 2; `project.stage`
is not mapped
2. Skill reads `active.md`'s STATUS and CHECKPOINT blocks (Step 3), then goes to
Step 4m
3. Skill runs `bash .claude/scripts/artifact-check.sh --path minimal`
4. The injected `story-status.sh` list has story-002 on the first `IN_PROGRESS`
line; the skill does not re-run the script or re-rank the stories
5. Output uses the minimal shape: `## Where You Are: Minimal path — 1 of 3 stories complete`,
with `✓ Done` giving the count of complete stories, not their titles
6. `→ Next up` is story-002 with `/dev-story [story-002 path]`
7. No phase label, no gate line; the concept doc, art bible, systems map, GDDs,
sprint plan and `/gate-check` are not presented as required
8. No director agents are spawned and no write tool is called
**Assertions:**
- [ ] Heading reads `Minimal path — 1 of 3 stories complete`
- [ ] `active.md`'s checkpoint is read before the next step is chosen (Step 3 runs at `minimal`)
- [ ] `→ Next up` is story-002 via `/dev-story`, not story-003
- [ ] No `/gate-check` line and no "Approaching … gate" line appear
- [ ] Game concept, art bible, systems map and GDDs are not listed as next steps
- [ ] No director gate is invoked and no gate IDs appear in output
- [ ] No write tool is called
- [ ] Verdict is COMPLETE
---
### Case 6: Minimal path — the checkpoint says the work is written
**Fixture:**
- As Case 5, except `active.md`'s CHECKPOINT reads
**Next step:** `/story-done production/epics/core/story-002.md` (what
`/dev-story` writes when it finishes a story)
**Input:** `/help`
**Expected behavior:**
1. Step 3 runs at `minimal` and finds the checkpoint's next step
2. story-002 is still on the first `IN_PROGRESS` line, but `active.md` says its
implementation is written, so `→ Next up` is story-002 with
`/story-done [story-002 path]`
3. Verdict is COMPLETE
**Assertions:**
- [ ] `→ Next up` is story-002 via `/story-done`, not `/dev-story`
- [ ] story-002 is not counted or listed as complete
- [ ] Verdict is COMPLETE
---
### Case 7: Minimal path — only a blocked story and an unknown status remain
**Fixture:**
- As Case 5, except `story-002.md` is `Status: Blocked` (its file says it waits
on the art for the player sprite) and `story-003.md` is `Status: Draft`
**Input:** `/help I'm stuck`
**Expected behavior:**
1. The injected list has no `IN_REVIEW`, `IN_PROGRESS` or `TODO` line: story-002
is on a `BLOCKED` line and story-003 on an `OTHER` line (`Draft`)
2. The skill names story-002 with its blocker and story-003 with its status as
written, and says nothing can be built next
3. It does **not** say the build order is done, and does not offer the "three
ways on" of the every-story-Complete branch
4. `→ Next up` is clearing the first of them — story-002's blocker
5. "stuck" is confusion language, so the Step 9 "Need more detail?" block is
appended — without its `/gate-check` line, since the minimal path has no
phase gates
6. Verdict is COMPLETE
**Assertions:**
- [ ] story-002 is named with its blocker; story-003 is named with status `Draft`
- [ ] Neither story is recommended to `/dev-story` or `/story-done`
- [ ] The output does not say the build order is done
- [ ] Heading reads `Minimal path — 1 of 3 stories complete`
- [ ] The escalation block appears and has no `/gate-check` line
- [ ] Verdict is COMPLETE
---
## Protocol Compliance
- [ ] Uses the injected config block for `project.stage` and `workflow` instead of re-reading them
- [ ] Resolves step completion with one `artifact-check.sh` call, not a Glob per step
- [ ] Gives exactly one primary (`→ Next up`) recommendation
- [ ] Never auto-runs the recommended skill
- [ ] Asks the user about `MANUAL` steps rather than assuming them done or not done
- [ ] Does not write any files
- [ ] Verdict is COMPLETE in all cases
---
## Coverage Notes
- The case where every story in `sprint-status.yaml` is done is not separately
tested; the Step 8 gate warning would then apply.
- At `workflow: full` every optional step is listed under `~ Also available`;
Case 2 runs at `full` only so that the art bible is required, and does not
assert that listing.
- The minimal path's "every story Complete" branch (three ways on: play the
build, `/create-stories`, `/settings`) is not separately tested.