Mmcp.market

story-readiness skill

by Donchitos·Donchitos/Claude-Code-Game-Studios·25k stars·MIT

Is a story implementation-ready? Checks clear acceptance criteria, open questions, ADR refs. READY/NEEDS WORK/BLOCKED/NOT ASSESSED.

A100/100content scan

Is the story-readiness skill safe?

Clean: nothing in its files matched our rules. We read 2 files in the folder on 2026-09-28.

No findings.

Install the story-readiness skill

A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.

git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git /tmp/Claude-Code-Game-Studios
mkdir -p ~/.claude/skills
cp -r /tmp/Claude-Code-Game-Studios/.claude/skills/story-readiness ~/.claude/skills/story-readiness
available in every project

In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub

The instructions your agent would load

SKILL.md as published, without the frontmatter. Read it on GitHub

!bash "${CLAUDESKILLDIR}/../../hooks/yaml-helper.sh" resolveconfig --keys reviewmode,automation,workflow,qa.level,testing.strict,system_overrides

Resolved above — use as-is; --review overrides review_mode. No block → defaults in .claude/docs/config-resolution.md.

Story Readiness

This skill validates that a story file contains everything a developer needs to begin implementation — no mid-sprint design interruptions, no guessing, no ambiguous acceptance criteria. Run it before assigning a story.

This skill is read-only. It never edits story files. It reports findings and asks whether the user wants help filling gaps.

Output: Verdict per story (READY / NEEDS WORK / BLOCKED / NOT ASSESSED) with a specific

NOT ASSESSED is not a synonym for BLOCKED. BLOCKED is a

finding about the story — a Proposed ADR, an unresolved dependency — and it

tells the reader exactly what to clear. Use NOT ASSESSED when the story could

not be evaluated at all: the file is unreadable or unparseable, or a referenced

ADR or design document cannot be located, so the checks below cannot run.

Collapsing that into BLOCKED reports a blocker that does not exist and hides

the one that does — the reader chases a phantom ADR instead of a missing file.

READY must never be reachable for a story that was not actually evaluated.

Precedence — first matching rule wins, in this order: BLOCKED, then

NEEDS WORK, then NOT ASSESSED, then READY. NOT ASSESSED outranks

READY (a story that could not be evaluated has not been shown ready) and

ranks below both failure verdicts (a known blocker is more actionable than

an unknown, and demoting it behind an access problem buries it). A story with

both a real blocker and an unevaluable check is BLOCKED — the blocker is the

actionable finding. This half of the rank has to be stated: the rule above

establishes only that READY is unreachable, which would leave the ordering

against BLOCKED to inference.

gap list for each non-ready story.

Phase 0: Resolve Review Mode

See .claude/docs/director-gates.md for the full check pattern and mode definitions. Individual gate definitions live in .claude/docs/director-gates/[gate-id].md — the spawned agent reads its own gate file; do not read it in the parent session.

Every AskUserQuestion call follows .claude/docs/automation-modes.md (collaborative asks always · guided major-only · autonomous logs and proceeds; automationalwaysask categories always prompt).

Resolve the workflow tier per story (per .claude/docs/workflow-modes.md): for the system a story belongs to (the GDD filename stem of its GDD: path; the [system] segment of a TR-[system]-NNN ID is a fallback alias only), use the systemoverrides row for that system if the block lists one, else the project value. When validating multiple stories (all / sprint scope), resolve per story** — different systems may sit at different tiers. The tier sets which checklist sections block — see the note in Section 3.

qa.level: controls whether a test requirement is validated. At minimal, the "Test evidence requirement is clear" item auto-passes (no requirement validated); at standard, validate the per-type test requirement (strictness from testing.strict); at full, also validate a coverage target. Distinct axis from workflow.

1. Parse Arguments

Scope: $ARGUMENTS[0] (blank = ask user via AskUserQuestion)

validate that single story file.

  • Specific path (e.g., /story-readiness production/epics/combat/story-001-basic-attack.md):

recent file), extract every story path it references, validate each one.

  • sprint: read the current sprint plan from production/sprints/ (most

validate every story file found.

  • all: glob production/epics//.md, exclude EPIC.md index files,
  • No argument: ask the user which scope to validate.

If no argument is given, use AskUserQuestion:

"All stories in production/epics/", "Stories for a specific epic"

  • "What would you like to validate?"
  • Options: "A specific story file", "All stories in the current sprint",

Report the scope before proceeding: "Validating [N] story files."

**If the scope resolves to ZERO story files, stop and report

NOT ASSESSED — no stories in scope.** Name which scope was searched and

which path was empty (production/epics//.md, the sprint file's story

list, or the specific path given), and route: /create-epics [layer] then

/create-stories [epic-slug].

The zero-scope path is mandatory. Without it an empty glob falls through

to the Section 5 aggregate template and renders Ready: 0 /

Needs Work: 0 / Blocked: 0 above an empty list — **indistinguishable from

"I checked every story and none needed work"**. It is the core failure of this

framework exactly: a scan that finds nothing because there was nothing to

scan, reported the same way as a clean result. Three zeros read as a healthy

sprint.

Note what made this survive: NOT ASSESSED was already in this skill's

vocabulary, but the body scoped it to per-story evaluation failures (an

unreadable or unparseable file, a missing referenced ADR). The verdict existed;

the case that most needs it had no route to it. It is a recurring shape — a

correct fix that did not reach one surface.

A zero-story sprint scope is not the same as an absent sprint file. If

More skills from Donchitos/Claude-Code-Game-Studios

  • AadoptBrownfield audit — do existing artifacts actually work? Numbered migration plan. Unlike /project-stage-detect, checks compliance not existence.
  • Aarchitecture-decisionCreate an ADR documenting a technical decision: context, alternatives considered, consequences.
  • Aarchitecture-reviewTraceability matrix mapping GDD requirements to ADRs. Finds gaps, cross-ADR conflicts, engine compatibility. PASS/CONCERNS/NOT ASSESSED/FAIL.
  • Aart-bibleAuthor the Art Bible — visual identity gating asset production. Run before /map-systems.
  • Aasset-auditAudit assets against naming conventions, file size budgets, format standards. Finds orphaned assets, missing references.
  • Aasset-specPer-asset visual specs plus AI generation prompts from GDDs and character profiles. After the art bible.
  • Abalance-checkFind balance outliers, broken progressions, degenerate strategies, economy imbalances in formulas and data. 'Check game balance'.
  • AbrainstormGuided concept ideation using professional studio techniques, player psychology, creative exploration.
  • Abug-reportStructured bug report from a description, or analyze code for potential bugs. Reproduction steps, severity.
  • Abug-triageRe-evaluate open bugs — priority vs severity, assign to sprints, surface systemic trends. Run when the count grows.
  • AchangelogAuto-generate a changelog from git commits and sprint data. Internal and player-facing versions.
  • Acode-reviewArchitectural code review — coding standards, SOLID, testability, performance concerns.

All agent skills → · MCP servers