mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 09:58:36 +00:00
`project.yaml` at the repo root is now the single source of truth for a project's configuration, replacing `production/stage.txt`, `production/review-mode.txt` and `.claude/docs/technical-preferences.md` (all three still read as a fallback; nothing is force-deleted). **`modes.rigor` — one question instead of six.** `minimal`, `standard` or `full` fronts six knobs: `modes.workflow`, `docs.density`, `qa.level`, `modes.story_granularity`, `modes.review_mode` and `team.size`. It defaults to `minimal`, which is a change from 1.0's behaviour: the heavier tier was measured costing several times more to reach working code without producing a better result, and returning nothing when a fresh developer inherited the project. Pin `modes.rigor: standard` to keep 1.0's process level. Also in this release: - `/settings` to view or change any setting, and `project.local.yaml` for per-developer preferences that should not be committed. - `system_overrides` to hold one system to a higher standard than the rest of the project, and `testing.strict` to set per test type whether missing evidence blocks a story or warns. - A story that changes anything the player sees is not closed until the game has been launched, observed, and a screenshot retained in `production/qa/evidence/`. A parse check is not a run. This holds at every rigor level, including `minimal`, where automated tests are waived but the look is not. - The code root is engine-specific and enforced as such: Godot `src/`, Unity `Assets/`, Unreal `Source/<Module>/`. Two of the three will not build a project laid out any other way. - Migration tooling for existing projects: `.claude/scripts/migrate-v1-config.sh` converts a 1.0 layout, non-destructively by default, with a report to review before `--finalize` deletes anything. - Ask-before-write holds regardless of personal automation settings. Upgrading from 1.0 or earlier: see UPGRADING.md. Full list of changes: CHANGELOG.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xvzG3i7pWQg4LjyDwWMXd
5.6 KiB
5.6 KiB
/story-readiness — Handoff Contract
Role in Pipeline
Validates that a story file contains everything a developer needs to begin
implementation and produces a READY / NEEDS WORK / BLOCKED / NOT ASSESSED verdict — sits between
/create-stories and /dev-story, acting as a blocking gate before any code is written.
Inputs Required
Files That Must Exist
| File | Required Fields / Sections | Read-Only? |
|---|---|---|
production/epics/[epic-slug]/story-NNN-[slug].md |
All header fields (Status:, Layer:, Type:, Manifest Version:), ## Context (GDD path, TR-ID, ADR reference, Engine Notes, Control Manifest Rules), ## Acceptance Criteria, ## Test Evidence, ## Dependencies, ## Out of Scope |
Yes |
docs/architecture/control-manifest.md |
Manifest Version: date in header, layer rules |
Yes (if exists) |
docs/architecture/tr-registry.yaml |
id, status fields per TR entry |
Yes (if exists) |
docs/architecture/adr-NNNN-[slug].md (all ADRs referenced in stories) |
Status: field |
Yes |
design/gdd/systems-index.md |
Which systems have approved GDDs | Yes |
Preconditions
- The story file being validated was produced by
/create-stories(or follows the same format) - For
sprintscope: a sprint file exists inproduction/sprints/with story path references - For
allscope:production/epics/directory exists and contains story files
Outputs Produced
Files Written
None. This skill is strictly read-only and produces no file modifications under any circumstance.
Output Guarantees
- A verdict of READY, NEEDS WORK, BLOCKED or NOT ASSESSED is produced for every story file evaluated.
NOT ASSESSEDis not a synonym forBLOCKED: BLOCKED names a real, listable obstacle, while NOT ASSESSED means the story could not be evaluated at all. An empty scope yieldsNOT ASSESSED — no stories in scope, never aReady: 0 / Needs Work: 0 / Blocked: 0summary over an empty list - Every non-READY verdict includes a specific gap list with fix instructions for each failing checklist item
- Every BLOCKED verdict names the specific blocker (missing dependency story path, Proposed ADR ID, or unresolved design question marker)
- For
sprintscope: a sprint-level escalation warning is prepended if any Must Have story is not READY - The skill offers to draft missing sections in conversation but never uses Write or Edit tools
Immutability Rules
- READS but does NOT modify: story files,
docs/architecture/control-manifest.md,docs/architecture/tr-registry.yaml, all ADR files,design/gdd/systems-index.md, sprint files, any referenced asset files (existence-only Glob checks) - MODIFIES: nothing
Hard Constraints (Never Violate)
- Never use Write or Edit tools under any circumstances
- Never draft corrections directly into files — offer drafts in conversation only
- Never mark a story READY if its governing ADR has
Status: Proposed - Never mark a story READY if a dependency story file is missing or has
Status: Draft - Never re-read the same ADR file multiple times in one run — cache ADR statuses after the first read
- Never penalize a story for missing
Manifest Version:ifcontrol-manifest.mddoes not exist - Never penalize a story for missing TR-ID if
tr-registry.yamldoes not exist
Downstream Skill Expects
Next skill: /dev-story
It will rely on this skill's verdict as follows:
- If verdict is READY:
/dev-storyproceeds with implementation using the story file as its source of truth - If verdict is NEEDS WORK or BLOCKED:
/dev-storymust not be run until the story is corrected and re-validated /dev-storyreads the same story fields this skill validates — a READY verdict is an implicit guarantee that those fields are present, parseable, and internally consistent:Type:field is set to a valid story type## Acceptance Criteriacontains specific, testable checkbox items## Test Evidencespecifies a concrete evidence path- The governing ADR exists and has
Status: Accepted Manifest Version:matches the current control manifestTR-IDin## Contextis present and resolves indocs/architecture/tr-registry.yaml(when the registry exists)## Dependenciessection is present (may say "None")## Out of Scopesection is present (checked for existence;/dev-storyuses it to enforce implementation boundaries)
Known Fragile Points
- If
control-manifest.mdis regenerated with a newManifest Version:date, every story that embeds the old date will fail the manifest version check — a bulk update of all storyManifest Version:fields is required before stories can pass readiness again - If an ADR is silently renamed or moved after stories reference it by ID, the ADR file-existence check will BLOCK those stories even though the decision content is unchanged
- The manifest version comparison is a string date match, not a semantic version comparison — if the date format changes (e.g., from
2026-01-15toJan 15 2026), all stories will fail the check regardless of actual currency - Asset existence checks use Glob — on Windows, path separator mismatches (
\vs/) may cause a Glob miss that incorrectly flags an asset as missing - The TR-ID status check auto-passes if the registry does not exist, which means stories written before TR tracking was introduced will always pass this check even if they contain invalid or placeholder IDs like
TR-[system]-??? - For
sprintscope, the skill depends on sprint file formatting to extract story paths — if the sprint file format changes, story paths may not be parsed and the scope silently reduces to zero stories validated