mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-06-27 04:51:46 +00:00
Split /create-epics-stories into /create-epics + /create-stories; add /dev-story
- NEW /create-epics (agent: technical-director): architect-level epic scoping, one epic per architectural module. Does not create stories. - NEW /create-stories (agent: lead-programmer): decomposes a single epic into story files with embedded TR-IDs, ADR guidance, and test evidence paths. - NEW /dev-story: the missing implementation skill — reads a story, loads full context (TR registry, ADR, control manifest, engine prefs), routes to the correct programmer agent via Task, and drives implementation to completion including writing the test. - DEPRECATED /create-epics-stories: added redirect notice; original content preserved for reference. - Updated /gate-check: Pre-Prod→Production artifact check and follow-up actions now reference the two new skills. - Updated workflow-catalog.yaml: replaced create-epics-stories step with two separate steps; implement step now references /dev-story with command field. Story loop is now explicit: /story-readiness → /dev-story → /code-review → /story-done Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
234
.claude/skills/create-stories/SKILL.md
Normal file
234
.claude/skills/create-stories/SKILL.md
Normal file
@@ -0,0 +1,234 @@
|
||||
---
|
||||
name: create-stories
|
||||
description: "Break a single epic into implementable story files. Reads the epic, its GDD, governing ADRs, and control manifest. Each story embeds its GDD requirement TR-ID, ADR guidance, acceptance criteria, story type, and test evidence path. Run after /create-epics for each epic."
|
||||
argument-hint: "[epic-slug | epic-path]"
|
||||
user-invocable: true
|
||||
allowed-tools: Read, Glob, Grep, Write
|
||||
context: fork
|
||||
agent: lead-programmer
|
||||
---
|
||||
|
||||
# Create Stories
|
||||
|
||||
A story is a single implementable behaviour — small enough to complete in one
|
||||
focused session, self-contained, and fully traceable to a GDD requirement and
|
||||
an ADR decision. Stories are what developers pick up. Epics are what architects
|
||||
define.
|
||||
|
||||
**Run this skill per epic**, not per layer. Run it for Foundation epics first,
|
||||
then Core, and so on — matching the dependency order.
|
||||
|
||||
**Output:** `production/epics/[epic-slug]/story-NNN-[slug].md` files
|
||||
|
||||
**Previous step:** `/create-epics [system]`
|
||||
**Next step after stories exist:** `/story-readiness [story-path]` then `/dev-story [story-path]`
|
||||
|
||||
---
|
||||
|
||||
## 1. Parse Argument
|
||||
|
||||
- `/create-stories [epic-slug]` — e.g. `/create-stories combat`
|
||||
- `/create-stories production/epics/combat/EPIC.md` — full path also accepted
|
||||
- No argument — ask: "Which epic would you like to break into stories?"
|
||||
Glob `production/epics/*/EPIC.md` and list available epics with their status.
|
||||
|
||||
---
|
||||
|
||||
## 2. Load Everything for This Epic
|
||||
|
||||
Read in full:
|
||||
|
||||
- `production/epics/[epic-slug]/EPIC.md` — epic overview, governing ADRs, GDD requirements table
|
||||
- The epic's GDD (`design/gdd/[filename].md`) — read all 8 sections, especially Acceptance Criteria, Formulas, and Edge Cases
|
||||
- All governing ADRs listed in the epic — read the Decision, Implementation Guidelines, Engine Compatibility, and Engine Notes sections
|
||||
- `docs/architecture/control-manifest.md` — extract rules for this epic's layer; note the Manifest Version date from the header
|
||||
- `docs/architecture/tr-registry.yaml` — load all TR-IDs for this system
|
||||
|
||||
Report: "Loaded epic [name], GDD [filename], [N] governing ADRs, control manifest v[date]."
|
||||
|
||||
---
|
||||
|
||||
## 3. Classify Stories by Type
|
||||
|
||||
**Story Type Classification** — assign each story a type based on its acceptance criteria:
|
||||
|
||||
| Story Type | Assign when criteria reference... |
|
||||
|---|---|
|
||||
| **Logic** | Formulas, numerical thresholds, state transitions, AI decisions, calculations |
|
||||
| **Integration** | Two or more systems interacting, signals crossing boundaries, save/load round-trips |
|
||||
| **Visual/Feel** | Animation behaviour, VFX, "feels responsive", timing, screen shake, audio sync |
|
||||
| **UI** | Menus, HUD elements, buttons, screens, dialogue boxes, tooltips |
|
||||
| **Config/Data** | Balance tuning values, data file changes only — no new code logic |
|
||||
|
||||
Mixed stories: assign the type that carries the highest implementation risk.
|
||||
The type determines what test evidence is required before `/story-done` can close the story.
|
||||
|
||||
---
|
||||
|
||||
## 4. Decompose the GDD into Stories
|
||||
|
||||
For each GDD acceptance criterion:
|
||||
|
||||
1. Group related criteria that require the same core implementation
|
||||
2. Each group = one story
|
||||
3. Order stories: foundational behaviour first, edge cases last, UI last
|
||||
|
||||
**Story sizing rule:** one story = one focused session (~2-4 hours). If a
|
||||
group of criteria would take longer, split into two stories.
|
||||
|
||||
For each story, determine:
|
||||
- **GDD requirement**: which acceptance criterion(ia) does this satisfy?
|
||||
- **TR-ID**: look up in `tr-registry.yaml`. Use the stable ID. If no match, use `TR-[system]-???` and warn.
|
||||
- **Governing ADR**: which ADR governs how to implement this?
|
||||
- `Status: Accepted` → embed normally
|
||||
- `Status: Proposed` → set story `Status: Blocked` with note: "BLOCKED: ADR-NNNN is Proposed — run `/architecture-decision` to advance it"
|
||||
- **Story Type**: from Step 3 classification
|
||||
- **Engine risk**: from the ADR's Knowledge Risk field
|
||||
|
||||
---
|
||||
|
||||
## 5. Present Stories for Review
|
||||
|
||||
Before writing any files, present the full story list:
|
||||
|
||||
```
|
||||
## Stories for Epic: [name]
|
||||
|
||||
Story 001: [title] — Logic — ADR-NNNN
|
||||
Covers: TR-[system]-001 ([1-line summary of requirement])
|
||||
Test required: tests/unit/[system]/[slug]_test.[ext]
|
||||
|
||||
Story 002: [title] — Integration — ADR-MMMM
|
||||
Covers: TR-[system]-002, TR-[system]-003
|
||||
Test required: tests/integration/[system]/[slug]_test.[ext]
|
||||
|
||||
Story 003: [title] — Visual/Feel — ADR-NNNN
|
||||
Covers: TR-[system]-004
|
||||
Evidence required: production/qa/evidence/[slug]-evidence.md
|
||||
|
||||
[N stories total: N Logic, N Integration, N Visual/Feel, N UI, N Config/Data]
|
||||
```
|
||||
|
||||
Ask: "May I write these [N] stories to `production/epics/[epic-slug]/`?"
|
||||
|
||||
---
|
||||
|
||||
## 6. Write Story Files
|
||||
|
||||
For each story, write `production/epics/[epic-slug]/story-[NNN]-[slug].md`:
|
||||
|
||||
```markdown
|
||||
# Story [NNN]: [title]
|
||||
|
||||
> **Epic**: [epic name]
|
||||
> **Status**: Ready
|
||||
> **Layer**: [Foundation / Core / Feature / Presentation]
|
||||
> **Type**: [Logic | Integration | Visual/Feel | UI | Config/Data]
|
||||
> **Manifest Version**: [date from control-manifest.md header]
|
||||
|
||||
## Context
|
||||
|
||||
**GDD**: `design/gdd/[filename].md`
|
||||
**Requirement**: `TR-[system]-NNN`
|
||||
*(Requirement text lives in `docs/architecture/tr-registry.yaml` — read fresh at review time)*
|
||||
|
||||
**ADR Governing Implementation**: [ADR-NNNN: title]
|
||||
**ADR Decision Summary**: [1-2 sentence summary of what the ADR decided]
|
||||
|
||||
**Engine**: [name + version] | **Risk**: [LOW / MEDIUM / HIGH]
|
||||
**Engine Notes**: [from ADR Engine Compatibility section — post-cutoff APIs, verification required]
|
||||
|
||||
**Control Manifest Rules (this layer)**:
|
||||
- Required: [relevant required pattern]
|
||||
- Forbidden: [relevant forbidden pattern]
|
||||
- Guardrail: [relevant performance guardrail]
|
||||
|
||||
---
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
*From GDD `design/gdd/[filename].md`, scoped to this story:*
|
||||
|
||||
- [ ] [criterion 1 — directly from GDD]
|
||||
- [ ] [criterion 2]
|
||||
- [ ] [performance criterion if applicable]
|
||||
|
||||
---
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
*Derived from ADR-NNNN Implementation Guidelines:*
|
||||
|
||||
[Specific, actionable guidance from the ADR. Do not paraphrase in ways that
|
||||
change meaning. This is what the programmer reads instead of the ADR.]
|
||||
|
||||
---
|
||||
|
||||
## Out of Scope
|
||||
|
||||
*Handled by neighbouring stories — do not implement here:*
|
||||
|
||||
- [Story NNN+1]: [what it handles]
|
||||
|
||||
---
|
||||
|
||||
## Test Evidence
|
||||
|
||||
**Story Type**: [type]
|
||||
**Required evidence**:
|
||||
- Logic: `tests/unit/[system]/[story-slug]_test.[ext]` — must exist and pass
|
||||
- Integration: `tests/integration/[system]/[story-slug]_test.[ext]` OR playtest doc
|
||||
- Visual/Feel: `production/qa/evidence/[story-slug]-evidence.md` + sign-off
|
||||
- UI: `production/qa/evidence/[story-slug]-evidence.md` or interaction test
|
||||
- Config/Data: smoke check pass (`production/qa/smoke-*.md`)
|
||||
|
||||
**Status**: [ ] Not yet created
|
||||
|
||||
---
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Depends on: [Story NNN-1 must be DONE, or "None"]
|
||||
- Unlocks: [Story NNN+1, or "None"]
|
||||
```
|
||||
|
||||
### Also update `production/epics/[epic-slug]/EPIC.md`
|
||||
|
||||
Replace the "Stories: Not yet created" line with a populated table:
|
||||
|
||||
```markdown
|
||||
## Stories
|
||||
|
||||
| # | Story | Type | Status | ADR |
|
||||
|---|-------|------|--------|-----|
|
||||
| 001 | [title] | Logic | Ready | ADR-NNNN |
|
||||
| 002 | [title] | Integration | Ready | ADR-MMMM |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. After Writing
|
||||
|
||||
Tell the user:
|
||||
|
||||
"[N] stories written to `production/epics/[epic-slug]/`.
|
||||
|
||||
To start implementation:
|
||||
1. Run `/story-readiness [story-path]` to confirm the first story is ready
|
||||
2. Run `/dev-story [story-path]` to implement it
|
||||
3. Run `/code-review [changed files]` after implementation
|
||||
4. Run `/story-done [story-path]` to close it
|
||||
|
||||
Work through stories in order — each story's `Depends on:` field tells you
|
||||
what must be DONE before you can start it."
|
||||
|
||||
---
|
||||
|
||||
## Collaborative Protocol
|
||||
|
||||
1. **Read before presenting** — load all inputs silently before showing the story list
|
||||
2. **Ask once** — present all stories for the epic in one summary, not one at a time
|
||||
3. **Warn on blocked stories** — flag any story with a Proposed ADR before writing
|
||||
4. **Ask before writing** — get approval for the full story set before writing files
|
||||
5. **No invention** — acceptance criteria come from GDDs, implementation notes from ADRs, rules from the manifest
|
||||
6. **Never start implementation** — this skill stops at the story file level
|
||||
Reference in New Issue
Block a user