story-done
Skill1 starsChanged 3 months agoMITView on GitHub
End-of-story completion review. Reads the story file, verifies each acceptance criterion against the implementation, checks for GDD/ADR deviations, prompts code review, updates story status to Complete, and surfaces the next ready story from the sprint.
10 other projects use a version of this, 6 of them edited.
Adopted by
Most recently taken up by
- striderZA/OpenCodeGameStudiosedited, first seen Nov 4, 2026
- Donchitos/Claude-Code-Game-Studiostheir own version, first seen Oct 19, 2026
- venus2099/codex-game-studiosedited, first seen Oct 17, 2026
- ShiningPlague/shiningplague-studiotheir own version, first seen Oct 11, 2026
- HunLuanZhiZhu/Game-Studios-Pluginedited, first seen Oct 5, 2026
- gonimar/claude-web-studiotheir own version, first seen Sep 27, 2026
Used with
Projects with it also use vertical-slice.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
hongyuancSkillvertical-slice
Build and evaluate a production-quality vertical slice before advancing from Pre-Production to Production.
Also in 4 projects that use this
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 6
- striderZA/OpenCodeGameStudios★ 11893% same
- dawn840705/codex-code-studios★ 1796% same
- lilangMax/ClaudeCodeGameStudios★ 894% same
- hongyuanc/codex-game-studios★ 551% same
- HunLuanZhiZhu/Game-Studios-Plugin★ 181% same
- venus2099/codex-game-studios★ 119% same
Wrote their own version · 4
- Donchitos/Claude-Code-Game-Studios★ 27ksame name
- cenconq25/claude-code-app-studio★ 40same name
- gonimar/claude-web-studio★ 4same name
- ShiningPlague/shiningplague-studio★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository90 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- adoptSkill
- api-cost-gateSkill
- architecture-decisionSkill
- architecture-reviewSkill
- art-bibleSkill
- asset-auditSkill
- asset-specSkill
- balance-checkSkill
- brainstormSkill
- bug-reportSkill
- bug-triageSkill
- changelogSkill
- code-reviewSkill
- consistency-checkSkill
- content-auditSkill
- create-architectureSkill
- create-control-manifestSkill
- create-epicsSkill
- create-prdSkill
- create-storiesSkill
- day-one-patchSkill
- design-reviewSkill
- design-systemSkill
- dev-storySkill
- doc-relinkSkill
- estimateSkill
- gate-checkSkill
- governance-bible-initSkill
- helpSkill
- hotfixSkill
- humanize-koreanSkill
- humanize-redoSkill
- humanizeSkill
- launch-checklistSkill
- legacy-purgeSkill
- lesson-logSkill
- lesson-reviewSkill
- localizeSkill
- map-systemsSkill
- milestone-reviewSkill
- onboardSkill
- patch-notesSkill
- perf-profileSkill
- playtest-reportSkill
- product-conceptSkill
- project-stage-detectSkill
- propagate-design-changeSkill
- prototypeSkill
- qa-planSkill
- quick-designSkill
- regression-suiteSkill
- release-checklistSkill
- remove-bgSkill
- retrospectiveSkill
- reverse-documentSkill
- review-all-gddsSkill
- scope-checkSkill
- security-auditSkill
- self-loopSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
53 rules. 0 are common, 25 are distinctive, and 28 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
25
Distinctive
This author's own choices. Worth a look.
28
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 34
If --review [full|lean|solo] was passed → use that
- Very specific: line 45
Check production/session-state/active.md for the currently active story.
- Very specific: line 46
If not found there, read the most recent file in production/sprints/ and look for stories marked IN PROGRESS.
- Very specific: line 48
If multiple in-progress stories are found, use AskUserQuestion:
- Distinctive: line 51
If no story can be found, ask the user to provide the path.
- Distinctive: line 57
Read the full story file. Extract and hold in context:
- Very specific: line 72
Read the *current* requirement text from the registry entry.
- Very specific: line 91
Test pass check: if a test file path is mentioned, run it via Bash.
- Distinctive: line 96
Dependency check: if a criterion says "depends on X", check that X exists.
- Very specific: line 118
After completing the pass/fail/deferred check above, map each acceptance criterion to the test that covers it:
- Distinctive: line 123
Ask: is there a test — unit, integration, or confirmed manual playtest — that directly verifies this criterion?
- Very specific: line 125
Unit test: check tests/unit/ for a test file or function name that matches the criterion's subject (use Glob and Grep)
- Very specific: line 127
Integration test: check tests/integration/ similarly
- Very specific: line 128
Manual confirmation: if the criterion was verified via AskUserQuestion above with a "Yes — passes" answer, count that as a manual test
- Distinctive: line 143
If >50% of criteria are UNTESTED: escalate to BLOCKING — test coverage is insufficient to confirm the story is actually done.
- Distinctive: line 146
If some (≤50%) criteria are UNTESTED: remain ADVISORY — does not block completion, but must appear in Completion Notes.
- Distinctive: line 148
If all criteria are COVERED: no action needed beyond including the table in the report.
- Distinctive: line 174
For Integration stories: read the story's Test Evidence section for the exact required path.
- Distinctive: line 178
If none found: flag as BLOCKING (same rule as Logic).
- Very specific: line 185
For Config/Data stories: check for any production/qa/smoke-*.md file.
- Very specific: line 186
If none: flag as ADVISORY — "No smoke check report found.
- Distinctive: line 200
Run these checks automatically:
- Distinctive: line 211
If they match → pass silently.
- Very specific: line 212
If the story's version is older → flag as ADVISORY: ADVISORY: Story was written against manifest v[story-date].
- Distinctive: line 215
If control-manifest.md does not exist → skip this check.
- Very specific: line 217
ADR constraints check: Read the referenced ADR's Decision section.
- Very specific: line 245
After completing the deviation checks in Phase 4, spawn qa-lead via Task using gate QL-TEST-COVERAGE (.claude/docs/director-gates.md).
- Distinctive: line 249
Test file paths found during Phase 3 (exact paths, or "none found")
- Distinctive: line 277
If REJECT, do not proceed to Phase 6 verdict until the issues are resolved.
- Distinctive: line 279
If the story has no implementation files yet (verdict is being run before coding is done), skip this phase and note: "LP-CODE-REVIEW …
- Distinctive: line 293
Run the policy axis. It is independent of the completion axis — neither overrides the other, and both are reported.
- Distinctive: line 317
Before updating any files, present the full report:
- Very specific: line 361
COMPLETE: all criteria pass, no blocking deviations, policy axis exit 0
- Very specific: line 362
COMPLETE WITH NOTES: all criteria pass; advisory deviations and/or a policy exit 1 documented
- Distinctive: line 371
If the verdict is BLOCKED: do not proceed to Phase 7.
- Distinctive: line 378
Ask before writing: "May I update the story file to mark it Complete and log the completion notes?"
- Distinctive: line 381
If yes, edit the story file:
- Very specific: line 383
Update the status field: Status: Complete
- Very specific: line 384
Add a ## Completion Notes section at the bottom:
- Very specific: line 395
If advisory deviations exist, ask: "Should I log these as tech debt in docs/tech-debt-register.md?"
- Very specific: line 401
Update the top-level updated field
- Very specific: line 406
After updating the story file, silently append to production/session-state/active.md:
- Very specific: line 415
If active.md does not exist, create it with this block as the initial content.
- Distinctive: line 422
After completion, help the developer keep momentum:
- Very specific: line 424
Read the current sprint plan from production/sprints/.
- Distinctive: line 427
Not blocked by other incomplete stories
- Distinctive: line 442
If no more Must Have stories remain in this sprint (all are Complete or Blocked):
- Distinctive: line 457
If there are Should Have stories still unstarted, surface them alongside the close-out sequence so the user can choose: close the sprint …
- Distinctive: line 459
If no more stories are ready but Must Have stories are still In Progress (not Complete): "No more stories ready to start — [N] Must Have …
- Very specific: line 473
Use AskUserQuestion for the code review prompt and for batching manual criteria confirmations.
- Very specific: line 480
Run /story-readiness [next-story-path] to validate the next story before starting implementation
- Very specific: line 481
If all Must Have stories are complete: run /smoke-check sprint → /team-qa sprint → /gate-check
- Very specific: line 482
If tech debt was logged: track it via /tech-debt to keep the register current
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Track check — this skill is game-framed. Resolve
production/track.txt(or the session'sPROJECT_TYPEline) before Phase 0.
game— run as written.product(web / mobile / service) — substitute as you read: player becomes user, game becomes product, GDD becomes PRD (design/gdd/→product/prd/), engine becomes the stack pinned in.claude/docs/technical-preferences.md. Check deviations against the PRD and the ADRs, not a GDD.- Unresolved — ask which track this is before doing anything. A greenfield project has no signal either way; do not infer one from the repository contents.
Story Done
This skill closes the loop between design and implementation. Run it at the end of implementing any story. It ensures every acceptance criterion is verified before the story is marked done, GDD and ADR deviations are explicitly documented rather than silently introduced, code review is prompted rather than forgotten, and the story file reflects actual completion status.
Output: Updated story file (Status: Complete) + surfaced next story.
Phase 1: Find the Story
Resolve the review mode (once, store for all gate spawns this run):
- If
--review [full|lean|solo]was passed → use that - Else read
production/review-mode.txt→ use that value - Else → default to
lean
See .claude/docs/director-gates.md for the full check pattern.
If a file path is provided (e.g., /story-done production/epics/core/story-damage-calculator.md):
read that file directly.
If no argument is provided:
- Check
production/session-state/active.mdfor the currently active story. - If not found there, read the most recent file in
production/sprints/and look for stories marked IN PROGRESS. - If multiple in-progress stories are found, use
AskUserQuestion:- "Which story are we completing?"
- Options: list the in-progress story file names.
- If no story can be found, ask the user to provide the path.
Phase 2: Read the Story
Read the full story file. Extract and hold in context:
- Story name and ID
- GDD Requirement TR-ID(s) referenced (e.g.,
TR-combat-001) - Manifest Version embedded in the story header (e.g.,
2026-03-10) - ADR reference(s) referenced
- Acceptance Criteria — the complete list (every checkbox item)
- Implementation files — files listed under "files to create/modify"
- Story Type — the
Type:field from the story header (Logic / Integration / Visual/Feel / UI / Config/Data) - Engine notes — any engine-specific constraints noted
- Definition of Done — if present, the story-level DoD
- Estimated vs actual scope — if an estimate was noted
Also read:
docs/architecture/tr-registry.yaml— look up each TR-ID in the story. Read the currentrequirementtext from the registry entry. This is the source of truth for what the GDD required — do not use any requirement text that may be quoted inline in the story (it may be stale).- The referenced GDD section — just the acceptance criteria and key rules, not the full document. Use this to cross-check the registry text is still accurate.
- The referenced ADR(s) — just the Decision and Consequences sections
docs/architecture/control-manifest.mdheader — extract the currentManifest Version:date (used in Phase 4 staleness check)
Phase 3: Verify Acceptance Criteria
For each acceptance criterion in the story, attempt verification using one of three methods:
Automatic verification (run without asking)
- File existence check:
Globfor files the story said would be created. - Test pass check: if a test file path is mentioned, run it via
Bash. - No hardcoded values check:
Grepfor numeric literals in gameplay code paths that should be in config files. - No hardcoded strings check:
Grepfor player-facing strings insrc/that should be in localization files. - Dependency check: if a criterion says "depends on X", check that X exists.
Manual verification with confirmation (use AskUserQuestion)
- Criteria about subjective qualities ("feels responsive", "animations play correctly")
- Criteria about gameplay behaviour ("player takes damage when...", "enemy responds to...")
- Performance criteria ("completes within Xms") — ask if profiled or accept as assumed
Batch up to 4 manual verification questions into a single AskUserQuestion call:
question: "Does [criterion]?"
options: "Yes — passes", "No — fails", "Not tested yet"Unverifiable (flag without blocking)
- Criteria that require a full game build to test (end-to-end gameplay scenarios)
- Mark as:
DEFERRED — requires playtest session
Test-Criterion Traceability
After completing the pass/fail/deferred check above, map each acceptance criterion to the test that covers it:
For each acceptance criterion in the story:
- Ask: is there a test — unit, integration, or confirmed manual playtest — that
directly verifies this criterion?
- Unit test: check
tests/unit/for a test file or function name that matches the criterion's subject (useGlobandGrep) - Integration test: check
tests/integration/similarly - Manual confirmation: if the criterion was verified via
AskUserQuestionabove with a "Yes — passes" answer, count that as a manual test
- Unit test: check
- Produce a traceability table:
| Criterion | Test | Status |
|-----------|------|--------|
| AC-1: [criterion text] | tests/unit/test_foo.gd::test_bar | COVERED |
| AC-2: [criterion text] | Manual playtest confirmation | COVERED |
| AC-3: [criterion text] | — | UNTESTED |Apply these escalation rules:
- If >50% of criteria are UNTESTED: escalate to BLOCKING — test coverage is insufficient to confirm the story is actually done. The verdict in Phase 6 cannot be COMPLETE until coverage improves.
- If some (≤50%) criteria are UNTESTED: remain ADVISORY — does not block completion, but must appear in Completion Notes.
- If all criteria are COVERED: no action needed beyond including the table in the report.
- For any ADVISORY untested criteria, add to the Completion Notes in Phase 7:
"Untested criteria: [AC-N list]. Recommend adding tests in a follow-up story."
Test Evidence Requirement
Based on the Story Type extracted in Phase 2, check for required evidence:
| Story Type | Required Evidence | Gate Level |
| Logic | Automated unit test in tests/unit/[system]/ — must exist and pass | BLOCKING |
| Integration | Integration test in tests/integration/[system]/ OR playtest doc | BLOCKING |
| Visual/Feel | Screenshot + sign-off in production/qa/evidence/ | ADVISORY |
| UI | Manual walkthrough doc OR interaction test in production/qa/evidence/ | ADVISORY |
| Config/Data | Smoke check pass report in production/qa/smoke-*.md | ADVISORY |
For Logic stories: first read the story's Test Evidence section to extract the
exact required file path. Use Glob to check that exact path. If the exact path is not
found, also search tests/unit/[system]/ broadly (the file may have been placed at a
slightly different location). If no test file is found at either location:
- Flag as BLOCKING: "Logic story has no unit test file. Story requires it at
[exact-path-from-Test-Evidence-section]. Create and run the test before marking this story Complete."
For Integration stories: read the story's Test Evidence section for the exact
required path. Use Glob to check that exact path first, then search
tests/integration/[system]/ broadly, then check production/session-logs/ for a
playtest record referencing this story.
If none found: flag as BLOCKING (same rule as Logic).
For Visual/Feel and UI stories: glob production/qa/evidence/ for a file
referencing this story. If none: flag as ADVISORY —
"No manual test evidence found. Create production/qa/evidence/[story-slug]-evidence.md
using the test-evidence template and obtain sign-off before final closure."
For Config/Data stories: check for any production/qa/smoke-*.md file.
If none: flag as ADVISORY — "No smoke check report found. Run /smoke-check."
If no Story Type is set: flag as ADVISORY —
"Story Type not declared. Add Type: [Logic|Integration|Visual/Feel|UI|Config/Data]
to the story header to enable test evidence gate enforcement in future stories."
Any BLOCKING test evidence gap prevents the COMPLETE verdict in Phase 6.
Phase 4: Check for Deviations
Compare the implementation against the design documents.
Run these checks automatically:
- GDD rules check: Using the current requirement text from
tr-registry.yaml(looked up by the story's TR-ID), check that the implementation reflects what the GDD actually requires now — not what it required when the story was written.Grepthe implemented files for key function names, data structures, or class names mentioned in the current GDD section. - Manifest version staleness check: Compare the
Manifest Version:date embedded in the story header against theManifest Version:date in the currentdocs/architecture/control-manifest.mdheader.- If they match → pass silently.
- If the story's version is older → flag as ADVISORY:
ADVISORY: Story was written against manifest v[story-date]; current manifest is v[current-date]. New rules may apply. Run /story-readiness to check. - If control-manifest.md does not exist → skip this check.
- ADR constraints check: Read the referenced ADR's Decision section. Check
for forbidden patterns from
docs/architecture/control-manifest.md(if it exists).Grepfor patterns explicitly forbidden in the ADR. - Hardcoded values check:
Grepthe implemented files for numeric literals in gameplay logic that should be in data files. - Scope check: Did the implementation touch files outside the story's stated scope? (files not listed in "files to create/modify")
For each deviation found, categorize:
- BLOCKING — implementation contradicts the GDD or ADR (must fix before marking complete)
- ADVISORY — implementation drifts slightly from spec but is functionally equivalent (document, user decides)
- OUT OF SCOPE — additional files were touched beyond the story's stated boundary (flag for awareness — may be valid or scope creep)
Phase 4b: QA Coverage Gate
Review mode check — apply before spawning QL-TEST-COVERAGE:
solo→ skip. Note: "QL-TEST-COVERAGE skipped — Solo mode." Proceed to Phase 5.lean→ skip (not a PHASE-GATE). Note: "QL-TEST-COVERAGE skipped — Lean mode." Proceed to Phase 5.full→ spawn as normal.
After completing the deviation checks in Phase 4, spawn qa-lead via Task using gate QL-TEST-COVERAGE (.claude/docs/director-gates.md).
Pass:
- The story file path and story type
- Test file paths found during Phase 3 (exact paths, or "none found")
- The story's
## QA Test Casessection (the pre-written test specs from story creation) - The story's
## Acceptance Criterialist
The qa-lead reviews whether the tests actually cover what was specified — not just whether files exist.
Apply the verdict:
- ADEQUATE → proceed to Phase 5
- GAPS → flag as ADVISORY: "QA lead identified coverage gaps: [list]. Story can complete but gaps should be addressed in a follow-up story."
- INADEQUATE → flag as BLOCKING: "QA lead: critical logic is untested. Verdict cannot be COMPLETE until coverage improves. Specific gaps: [list]."
Skip this phase for Config/Data stories (no code tests required).
Phase 5: Lead Programmer Code Review Gate
Review mode check — apply before spawning LP-CODE-REVIEW:
solo→ skip. Note: "LP-CODE-REVIEW skipped — Solo mode." Proceed to Phase 6 (completion report).lean→ skip (not a PHASE-GATE). Note: "LP-CODE-REVIEW skipped — Lean mode." Proceed to Phase 6 (completion report).full→ spawn as normal.
Spawn lead-programmer via Task using gate LP-CODE-REVIEW (.claude/docs/director-gates.md).
Pass: implementation file paths, story file path, relevant GDD section, governing ADR.
Present the verdict to the user. If CONCERNS, surface them via AskUserQuestion:
- Options:
Revise flagged issues/Accept and proceed/Discuss furtherIf REJECT, do not proceed to Phase 6 verdict until the issues are resolved.
If the story has no implementation files yet (verdict is being run before coding is done), skip this phase and note: "LP-CODE-REVIEW skipped — no implementation files found. Run after implementation is complete."
Phase 5b: Policy Compliance Gate (deterministic)
Everything above this line judges completion: did the acceptance criteria
pass, is the evidence there, did the reviewer approve. None of it can see the
other failure — work that finished by breaking a rule. A story that reached
its criteria by adding @pytest.mark.skip, or that scattered artifacts outside
the documented tree, produces exactly the same completion report as one that did
the work properly. That is unsafe-success, and it is worse than a plain
failure because nothing in the record distinguishes it from a real one.
Run the policy axis. It is independent of the completion axis — neither overrides the other, and both are reported.
python3 "${CLAUDE_PLUGIN_ROOT:-.claude}/scripts/verify_policy.py" --story [story-file-path]Read the exit code. Do not re-derive the verdict from the output — see
.claude/docs/deterministic-gates.md.
| Exit | Meaning | What to do |
0 | Compliant | Proceed to Phase 6 |
1 | Warning (P3 track mixing / P4 path convention) | Report it in Phase 6 and let the user decide |
2 | Abort (P1 missing evidence / P2 skip marker added) | Verdict is BLOCKED. Do not proceed to Phase 7 |
3 | Cannot judge (not a git repo, diff failed) | Say so. Never record this as a pass |
Carry the exit code into the Phase 6 report verbatim, naming the gate:
verify_policy.py → exit 2 (P2: tests/combat_test.py adds @pytest.mark.skip).
Phase 6: Present the Completion Report
Before updating any files, present the full report:
## Story Done: [Story Name]
**Story**: [file path]
**Date**: [today]
### Acceptance Criteria: [X/Y passing]
- [x] [Criterion 1] — auto-verified (test passes)
- [x] [Criterion 2] — confirmed
- [ ] [Criterion 3] — FAILS: [reason]
- [?] [Criterion 4] — DEFERRED: requires playtest
### Test-Criterion Traceability
| Criterion | Test | Status |
|-----------|------|--------|
| AC-1: [text] | [test file::test name] | COVERED |
| AC-2: [text] | Manual confirmation | COVERED |
| AC-3: [text] | — | UNTESTED |
### Test Evidence
**Story Type**: [Logic | Integration | Visual/Feel | UI | Config/Data | Not declared]
**Required evidence**: [unit test file | integration test or playtest | screenshot + sign-off | walkthrough doc | smoke check pass]
**Evidence found**: [YES — `[path]` | NO — BLOCKING | NO — ADVISORY]
### Deviations
[NONE] OR:
- BLOCKING: [description] — [GDD/ADR reference]
- ADVISORY: [description] — user accepted / flagged for tech debt
### Scope
[All changes within stated scope] OR:
- Extra files touched: [list] — [note whether valid or scope creep]
### Two-axis verdict
| Axis | Result | Decided by |
|------|--------|-----------|
| Task completion | PASS / FAIL | this skill (criteria above) |
| Policy compliance | PASS / WARN / FAIL / NOT RUN | `verify_policy.py` exit code (Phase 5b) |
### Verdict: COMPLETE / COMPLETE WITH NOTES / BLOCKEDVerdict definitions:
- COMPLETE: all criteria pass, no blocking deviations, policy axis exit
0 - COMPLETE WITH NOTES: all criteria pass; advisory deviations and/or a policy
exit
1documented - BLOCKED: failing criteria, blocking deviations, or a policy exit
2
The two axes never cancel each other. A completion PASS beside a policy FAIL
is still BLOCKED — that combination is precisely the case this gate exists to
catch, and reporting only the completion half is how it goes unrecorded. If the
policy gate exited 3, write "policy: NOT RUN" and never "policy: PASS".
If the verdict is BLOCKED: do not proceed to Phase 7. List what must be fixed. Offer to help fix the blocking items.
Phase 7: Update Story Status
Ask before writing: "May I update the story file to mark it Complete and log the completion notes?"
If yes, edit the story file:
- Update the status field:
Status: Complete - Add a
## Completion Notessection at the bottom:
## Completion Notes
**Completed**: [date]
**Criteria**: [X/Y passing] ([any deferred items listed])
**Deviations**: [None] or [list of advisory deviations]
**Test Evidence**: [Logic: test file at path | Visual/Feel: evidence doc at path | None required (Config/Data)]
**Code Review**: [Pending / Complete / Skipped]- If advisory deviations exist, ask: "Should I log these as tech debt in
docs/tech-debt-register.md?" - Update
production/sprint-status.yaml(if it exists):- Find the entry matching this story's file path or ID
- Set
status: doneandcompleted: [today's date] - Update the top-level
updatedfield - This is a silent update — no extra approval needed (already approved in step above)
Session State Update
After updating the story file, silently append to
production/session-state/active.md:
## Session Extract — /story-done [date]
- Verdict: [COMPLETE / COMPLETE WITH NOTES / BLOCKED]
- Story: [story file path] — [story title]
- Tech debt logged: [N items, or "None"]
- Next recommended: [next ready story title and path, or "None identified"]If active.md does not exist, create it with this block as the initial content.
Confirm in conversation: "Session state updated."
Phase 8: Surface the Next Story
After completion, help the developer keep momentum:
- Read the current sprint plan from
production/sprints/. - Find stories that are:
- Status: READY or NOT STARTED
- Not blocked by other incomplete stories
- In the Must Have or Should Have tier
Present:
### Next Up
The following stories are ready to pick up:
1. [Story name] — [1-line description] — Est: [X hrs]
2. [Story name] — [1-line description] — Est: [X hrs]
Run `/story-readiness [path]` to confirm a story is implementation-ready
before starting.If no more Must Have stories remain in this sprint (all are Complete or Blocked):
### Sprint Close-Out Sequence
All Must Have stories are complete. QA sign-off is required before advancing.
Run these in order:
1. `/smoke-check sprint` — verify the critical path still works end-to-end
2. `/team-qa sprint` — full QA cycle: test case execution, bug triage, sign-off report
3. `/gate-check` — advance to the next phase once QA approves
Do not run `/gate-check` until `/team-qa` returns APPROVED or APPROVED WITH CONDITIONS.If there are Should Have stories still unstarted, surface them alongside the close-out sequence so the user can choose: close the sprint now, or pull in more work first.
If no more stories are ready but Must Have stories are still In Progress (not Complete): "No more stories ready to start — [N] Must Have stories still in progress. Continue implementing those before sprint close-out."
Collaborative Protocol
- Never mark a story complete without user approval — Phase 7 requires an explicit "yes" before any file is edited.
- Never auto-fix failing criteria — report them and ask what to do.
- Deviations are facts, not judgments — present them neutrally; the user decides if they are acceptable.
- BLOCKED verdict is advisory — the user can override and mark complete anyway; document the risk explicitly if they do.
- Use
AskUserQuestionfor the code review prompt and for batching manual criteria confirmations.
Recommended Next Steps
- Run
/story-readiness [next-story-path]to validate the next story before starting implementation - If all Must Have stories are complete: run
/smoke-check sprint→/team-qa sprint→/gate-check - If tech debt was logged: track it via
/tech-debtto keep the register current
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

