Agent skill

Create Stories

by Donchitos in Donchitos/Claude-Code-Game-Studios

Break one epic into implementable stories embedding TR-ID, ADR guidance, acceptance criteria.

MITAuto-check passedProduct & Project Management

Install Create Stories

skills CLI
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill create-stories -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Donchitos/Claude-Code-Game-Studios create-stories --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/create-stories .claude/skills/create-stories && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
create-stories
GitHub stars
26k
Token cost
~7.3k tokens
SKILL.md length
3,336 words
Files
2
Skills in repo
73
Repo updated
First seen
Licence
MIT

At a glance

Break one epic into implementable stories embedding TR-ID, ADR guidance, acceptance criteria.

  • Works in 7 steps: Parse Argument → Load Everything for This Epic → Classify Stories by Type → …
  • Tasks that involve User stories
  • SKILL.md covers 1. Parse Argument, 2. Load Everything for This Epic, 3. Classify Stories by Type and 4. Decompose the GDD into…, plus 5 more sections
  • Calls bash

What it does

Create Stories is an agent skill from Donchitos/Claude-Code-Game-Studios. Break one epic into implementable stories embedding TR-ID, ADR guidance, acceptance criteria. Reads the control manifest. After /create-epics.

Its SKILL.md is about 7.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `CONTRACT.md`).

It sits in Product & Project Management, covering User stories, Architecture decision records and Embeddings. The repository describes itself as: Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy. The licence is MIT.

When your agent uses it

  • Tasks that involve User stories
  • Tasks that involve Architecture decision records
  • Tasks that involve Embeddings

Example prompts

  • “/create-stories”

Requirements

  • Pre-approved tools (allowed-tools): Read, Glob, Grep, Write, Edit, Agent, AskUserQuestion, Bash(bash "*/.claude/skills/create-stories/../../hooks/yaml-helper.sh" resolve_config *)

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Parse Argument
  2. Load Everything for This Epic
  3. Classify Stories by Type
  4. Decompose the GDD into Stories
  5. Present Stories for Review
  6. Write Story Files
  7. After Writing

What it can do on your machine

Read from SKILL.md and the folder at commit be8993b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Glob
    • Grep
    • Write
    • Edit
    • Agent
    • AskUserQuestion
    • Bash(bash "*/.claude/skills/create-stories/../../hooks/yaml-helper.sh" resolve_config *)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Create Stories loads about 7.3k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 3,336 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~7.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Donchitos/Claude-Code-Game-Studios at commit be8993b, republished under its MIT licence (© Donchitos). 3,336 words, ~7,254 tokens.

Download SKILL.mdSave it as .claude/skills/create-stories/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
create-stories
description
Break one epic into implementable stories embedding TR-ID, ADR guidance, acceptance criteria. Reads the control manifest. After /create-epics.
allowed-tools
Read, Glob, Grep, Write, Edit, Agent, AskUserQuestion, Bash(bash "*/.claude/skills/create-stories/../../hooks/yaml-helper.sh" resolve_config *)
argument-hint
[epic-slug | epic-path] [--review full|lean|solo]
user-invocable
true
model
sonnet

!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys review_mode,automation,workflow,docs.density,story_granularity,qa.level,system_overrides

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

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] — at workflow: minimal, /dev-story [story-path] directly (/story-readiness is not on the minimal path)


1. Parse Argument

See .claude/docs/director-gates.md for the full check pattern. 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; automation_always_ask categories always prompt).

workflow for this epic's system (per .claude/docs/workflow-modes.md) — use the system_overrides row for <system> if the block lists one, else the project value. <system> is the epic slug / its GDD system. The tier sets which prerequisites block — see the note in Step 2.

story_granularity — it sets each story's AC load: 5–10 ACs covering a whole feature at coarse (the default, via rigor: minimal), 2–4 ACs covering one task at balanced (rigor: standard), 1 AC at fine (the story name is the AC restatement). Group or split ACs into stories to hit the target.

docs.density — it controls the depth of each story's prose (context, implementation notes, ADR summary), not the AC count (that is story_granularity) and never the AC text itself. modes.rigor sets it alongside workflow; set docs.density explicitly to vary story prose alone: terse (the default, via rigor: minimal) = notes as bullets, no preamble; balanced = short context paragraph + notes (rigor: standard); thorough = full context, implementation guidance, and ADR rationale. The embedded TR-ID reference, ADR Version stamp, and acceptance criteria are structural and are never trimmed by density.

  • /create-stories [epic-slug] — e.g. /create-stories combat

  • /create-stories production/epics/combat/EPIC.md — full path also accepted

  • A named epic that does not exist — if production/epics/[slug]/EPIC.md (or the given path) is missing, stop at standard/full: "No epic at production/epics/[slug]/EPIC.md. Run /create-epics to create it, or check the slug with ls production/epics/." Do not decompose from a guess. At minimal there are no /create-epics epics to name and that skill is not on the path — say so, take Step 2's minimal branch, and name the slug it uses.

  • No argument — at minimal there are no epics yet (Option A): skip to Step 2's minimal branch and synthesize the epic from design/game-brief.md. At standard/full, ask "Which epic would you like to break into stories?" and Glob production/epics/*/EPIC.md to list available epics with their status.

    If that glob returns nothing at standard/full, stop — do not build a question with no options. Report: "No epics found under production/epics/. Run /create-epics layer: foundation first — an epic is what this skill decomposes."

    The zero-epic path is load-bearing. Asking which epic and globbing to list them leaves an AskUserQuestion with nothing to offer when the glob is empty. Route to /create-epics instead — it is named as Previous step in this skill's own header.

    Note what this skill guarded and what it did not. Step 2's ADR validation is thorough: three tiers, each with its own stop condition, and an explicit message naming the missing file. That is the deepest input. The first input — does an epic exist at all — went unchecked. Guarding the far end of a chain while leaving the near end open is the shape to watch for.

    At minimal this does not apply: there are deliberately no epics, and the branch above synthesizes one from the brief.


2. Load Everything for This Epic

minimal tier — synthesize the epic from the brief (Option A). At minimal there is no /create-epics step and usually no EPIC.md. Instead: 0. No design/game-brief.md? Stop: "There is no brief to build stories from yet — run /brainstorm first; it writes the one-page brief." An EPIC.md already at production/epics/<slug>/ — the named epic, or the brief-title slug (/create-epics run anyway, or an earlier run of this skill) — is the epic: use its scope, still traced to the brief, and never rewrite it; Step 6 only appends its Stories table, and the Step 5 ask says update EPIC.md. Stories already in production/epics/<slug>/? This is a return visit — /help sends a finished build order back here. Never rewrite an existing story-*.md or the EPIC.md: read them, add stories only for brief items they do not yet cover (or the new ones the user names), and number on from the highest existing story-NNN. The one change EPIC.md gets is Step 6's: a row per new story appended to its Stories table — existing rows and the rest of the file stay as they are.

  1. Read design/game-brief.md in full (it is one page).
  2. Synthesize an implicit epic (first run only — a return visit keeps the existing one): draft a lightweight production/epics/<slug>/EPIC.md, where <slug> is the brief's slugified working title (mvp if untitled) — goal = the brief's one-sentence pitch, scope = its MVP feature list, ordering = its Build order. Keep it terse; this is the container /dev-story and /sprint-status expect. It is written in Step 6, with the stories, after the Step 5 ask names it — never before.
  3. Generate one coarse story per MVP feature (Step 3+), in Build-order sequence, each traced to the brief (not a GDD/TR-ID). Leave stories unblocked on ADR grounds — none exist at this tier. Skip the GDD, control-manifest, TR-registry, and ADR reads below (none exist at minimal), then continue to Step 3 with the synthesized epic.

For standard/full (a /create-epics epic exists), read in full (these are small):

  • production/epics/[epic-slug]/EPIC.md — epic overview, governing ADRs, GDD requirements table
  • The epic's GDD (design/gdd/[filename].md) — at full read all 8 sections; at standard the 5 required sections (+ conditional Formulas); at minimal the GDD may not exist — work from the epic brief + acceptance criteria. Always prioritise Acceptance Criteria, Formulas, and Edge Cases where present.
  • docs/architecture/control-manifest.md — grep only this epic's layer (Grep pattern="^## <layer> Layer Rules" path="docs/architecture/control-manifest.md" output_mode="content" -A 40) plus the header Manifest Version date, not a full read of all layers
  • docs/architecture/tr-registry.yaml — grep only this system's entries (Grep pattern="system: <slug>\s*$" path="docs/architecture/tr-registry.yaml" output_mode="content" -B1 -A5, or id: TR-<slug>-[0-9]; the anchors keep combat from matching combat-ai), not the whole cross-system registry

Load each governing ADR by section — never with an unbounded full read. A substantial ADR exceeds the 25k-token Read cap, and a capped read's only recovery is paging through the remainder — the most expensive possible way to read a file. Per ADR:

  1. Map the headings (cheap — line numbers only):
    Grep pattern="^## |^### Implementation Guidelines" path="docs/architecture/[adr-file].md" output_mode="content" -n
  2. Bounded-read exactly the sections this skill consumes, using the line numbers from the map to set Read(offset, limit) spans that end where the next section begins:
    • ## Summary and ## Decision (including its ### Implementation Guidelines subsection) — these feed the story's ADR Decision Summary and Implementation Notes.
    • ## Engine Compatibility — feeds the story's Engine, Risk, and Engine Notes fields. (Engine Notes is a story field derived from this section — it is not an ADR section name; do not search for one.)
  3. Capture the ## Status and the ## Last Verified date in one call:
    Grep pattern="^## (Status|Last Verified|Date)" path="docs/architecture/[adr-file].md" output_mode="content" -A 2
    The Status (Accepted / Proposed / …) is what Step 4 decides Ready vs Blocked on — never assume it. For the version, use Last Verified, falling back to Date, then to unversioned if both are absent. This becomes the story's ADR Version stamp — /dev-story uses it to decide whether it can trust this story's distilled summary instead of re-opening the ADR.

Skip Context, Alternatives Considered, Consequences, Risks, and any Amendments Log unless a section you loaded explicitly cross-references one of their entries — then take only the referenced entry with one more bounded read. If the heading map comes back empty (a nonstandard ADR predating the template), fall back to one full Read — and if that read truncates at the cap, do not page through the remainder; grep for the story-relevant content directly and flag the ADR for /architecture-decision retrofit [file].

ADR existence validation (tier-gated — resolved in Step 1): After reading the governing ADRs list from the epic, confirm each referenced ADR file exists on disk.

  • full — if any referenced ADR file cannot be found, stop immediately before decomposing any story.
  • standard — stop only if a critical (Foundation-layer) ADR is missing; for a missing non-critical ADR, warn and continue (the story embeds the ADR reference and is set Status: Blocked until the ADR exists).
  • minimal — no ADR requirement; do not stop. Embed any ADR references that do exist; otherwise decompose against the brief + acceptance criteria and leave stories unblocked on ADR grounds.

When stopping (full / standard-critical):

"Epic references [ADR-NNNN: title] but docs/architecture/[adr-file].md was not found. Check the filename in the epic's Governing ADRs list, or run /architecture-decision to create it. Cannot create stories until all referenced ADR files are present."

At full, do not proceed to Step 3 until all referenced ADR files are confirmed present.

Report: "Loaded epic [name], GDD [filename], [N] governing ADRs [ADR status], [manifest status]." State the actual situation for the resolved tier — e.g. "all confirmed present, control manifest v[date]" at full; "M present, K missing non-critical (embedded + Blocked)" at standard; "no ADRs / manifest required" at minimal. Do not assert "all confirmed present" if any referenced ADR was missing, or name a manifest version when none exists.


3. Classify Stories by Type

Story Type Classification — assign each story a type based on its acceptance criteria:

Story TypeAssign when criteria reference...
LogicFormulas, numerical thresholds, state transitions, AI decisions, calculations
IntegrationTwo or more systems interacting, signals crossing boundaries, save/load round-trips
Visual/FeelAnimation behaviour, VFX, "feels responsive", timing, screen shake, audio sync
UIMenus, HUD elements, buttons, screens, dialogue boxes, tooltips
Config/DataBalance 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: size each story to the resolved modes.story_granularity target (above). The "~2-4 hours / one focused session" heuristic is the balanced target (rigor: standard) — at coarse, the default, a story spans a whole feature (5–10 ACs, multi-day), at fine a story is a single AC. Split or group criteria to hit the resolved target, not a fixed session length.

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 — accept it with /architecture-decision accept ADR-NNNN once decided"
    • Deprecated or Superseded by ADR-XXXX → set story Status: Blocked with note: "BLOCKED: ADR-NNNN is [status] — point the story at [successor] (edit its ADR field — /create-stories never rewrites an existing story) before implementing"
    • Multiple ADRs apply: List all governing ADRs in the story's Governing ADRs: field. Designate the one most directly controlling the implementation pattern as primary (first in the list). Others are listed as secondary references.
    • No ADR applies at all: Write ADR: N/A — [brief reason, e.g. "pure data configuration, no architectural pattern required"] in the story's ADR field. Do NOT leave the field blank — a blank ADR field means "not checked", not "not applicable".
  • Story Type: from Step 3 classification
  • Engine risk: from the ADR's Knowledge Risk field

Show full SKILL.md (1,400 more words)Show less

4b. QA Lead Story Readiness Gate

Review mode check — apply before spawning QL-STORY-READY:

  • solo → skip. Note: "QL-STORY-READY skipped — Solo mode." Proceed to Step 5 (present stories for review).
  • lean → skip (not a PHASE-GATE). Note: "QL-STORY-READY skipped — Lean mode." Proceed to Step 5 (present stories for review).
  • full → spawn as normal.

After decomposing all stories (Step 4 complete) but before presenting them for write approval, spawn qa-lead once via Agent using gate QL-STORY-READY (.claude/docs/director-gates/ql-story-ready.md). A single call returns both the readiness verdict and the test-case specs — do not spawn qa-lead a second time to generate specs.

Pass: the full story list inline — no story file exists yet, so the stories themselves stand in for the gate's story paths — with each story's acceptance criteria, story type, and TR-IDs with their requirement text from tr-registry.yaml; the epic's GDD acceptance criteria for reference. Require in the return:

  1. The QL-STORY-READY verdict per story (ADEQUATE / GAPS / INADEQUATE, or NOT ASSESSED naming a missing input).
  2. For every story it marks ADEQUATE, its test-case spec block (formats below) — one Given/When/Then per acceptance criterion for Logic and Integration stories, or manual verification steps for Visual/Feel and UI stories.

Present the assessment, then act on each story's verdict — the gate's own words, handled per .claude/docs/director-gates.md:

  • ADEQUATE — keep the returned specs.
  • GAPS — use AskUserQuestion: Revise flagged criteria / Accept and proceed / Discuss further. Do not revise before the user chooses. On Revise, draft the revised criteria, show them, and re-request specs for just those stories in one follow-up call. On Accept, the criteria stay as written and the story carries no qa-lead specs — its ## QA Test Cases reads *Test cases not yet defined — run /qa-plan to generate them.*
  • INADEQUATE — blocking: the story is not written as it stands. Revise its criteria with the user (draft, show, confirm), then re-request its specs; if the user will not revise it, drop it from this run and name it as dropped in the Step 5 list.
  • NOT ASSESSED [missing input] — not an ADEQUATE: name what was missing, then supply it and re-request that story's verdict, or write the story without qa-lead specs (the /qa-plan line above in its ## QA Test Cases) and mark it QL-STORY-READY: NOT ASSESSED — [input] in the Step 5 list.

Untestable criteria cannot be implemented correctly, so a story carries qa-lead specs only once it is ADEQUATE.

Prefer an existing QA plan when one already covers a story — this substitutes for the qa-lead's specs, it does not add a spawn. Glob production/qa/qa-plan-*.md for the most recent file; if it holds test specs for stories in this epic (match titles/slugs in its Automated Tests Required section) that differ from the qa-lead's, use AskUserQuestion (Use QA-plan specs / Use qa-lead specs / Skip and leave *Test cases not yet defined — run /qa-plan to generate them.*). Either way no additional qa-lead spawn occurs.

The spec block formats — Logic/Integration:

Test: [criterion text]
  Given: [precondition]
  When: [action]
  Then: [expected result / assertion]
  Edge cases: [boundary values or failure states to test]

For Visual/Feel and UI stories, produce manual verification steps instead:

Manual check: [criterion text]
  Setup: [how to reach the state]
  Verify: [what to look for]
  Pass condition: [unambiguous pass description]

These test case specs are embedded directly into each story's ## QA Test Cases section. The developer implements against these cases. The programmer does not write tests from scratch — QA has already defined what "done" looks like.


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: retained screenshot in production/qa/evidence/ + sign-off in production/qa/evidence/[slug]-evidence.md

[N stories total: N Logic, N Integration, N Visual/Feel, N UI, N Config/Data]

Use AskUserQuestion:

  • Prompt: "May I write these [N] stories to production/epics/[epic-slug]/, and update production/epics/[epic-slug]/EPIC.md and production/epics/index.md?" — name every file Step 6 touches: at minimal say create EPIC.md only when none exists yet (the Step 2 draft, shown with the stories), and leave index.md out when it does not exist.
  • Options: [A] Yes — write all [N] stories / [B] Not yet — I want to review or adjust first

6. Write Story Files

For each story, write production/epics/[epic-slug]/story-[NNN]-[slug].md:

At minimal tier the Context/traceability inputs do not exist (no GDD, ADR, TR registry, or control manifest). Fill the template from the brief instead — apply this mapping exactly, so every run is deterministic rather than improvised:

  • GDD → design/game-brief.md

  • Requirement → Brief MVP feature N (the feature this story implements — NOT a TR-[system]-NNN ID)

  • ADR Governing Implementation / ADR Decision Summary / ADR Version → N/A (minimal — no ADRs)

  • Manifest Version and Control Manifest Rules (this layer) → N/A (minimal — no control manifest)

  • Engine and Risk → read docs/engine-reference/<engine>/VERSION.md (engine from engine.name). Engine is engine.name + engine.version. Risk is the risk level that file assigns to the pinned version — its post-cutoff timeline row, or its stated overall risk. If the file is missing or assigns no level, write NOT ASSESSED (no VERSION.md risk rating) — never guess a level.

    This field is load-bearing and had no rule, so it was improvised. /dev-story Phase 3 spawns the engine specialist as a mandatory secondary "when engine risk is HIGH (from the ADR or VERSION.md)". At minimal there is no ADR, so VERSION.md is the only source — and nothing here told this skill to read it. A story written with an invented Risk: MEDIUM against a VERSION.md rating of HIGH silently disables the specialist review. Treat NOT ASSESSED as HIGH for the spawn decision: an unknown risk is not a low one.

  • Engine Notes → none (no ADR engine-compatibility analysis at minimal)

  • The Acceptance-Criteria source line → "From design/game-brief.md (the Player goal & fail state field + the MVP feature this story implements), scoped to this story" — derive concrete, testable ACs from what the user wrote there rather than inventing them from a bare MVP bullet

  • The ## QA Test Cases section → at any tier where the QL-STORY-READY / qa-lead gate is skipped (minimal, or lean/solo review mode) no qa-lead specs are authored; write "N/A — no qa-lead specs at this tier; implement against the Acceptance Criteria above" rather than improvising test cases.

  • Any Test Evidence / DoD line is governed by qa.level, not this template — at qa.level: minimal tests are waived (advisory, never "must exist and pass"), but a Visual/Feel or UI story's retained screenshot is not.

markdown
# Story [NNN]: [title]

> **Epic**: [epic name]
> **Status**: Ready
> **Layer**: [Foundation / Core / Feature / Presentation]
> **Type**: [Logic | Integration | Visual/Feel | UI | Config/Data]
> **Estimate**: [hours or t-shirt size — fill before sprint planning]
> **Manifest Version**: [date from control-manifest.md header]
> **Last Updated**: [set by /dev-story when implementation begins]

## 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]
**ADR Version**: [the ADR's `## Last Verified` date, else its `## Date`, else `unversioned`]

**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]

---

## QA Test Cases

*Written by qa-lead at story creation. The developer implements against these — do not invent new test cases during implementation. (At tiers where the QL-STORY-READY gate is skipped — `minimal`, or `lean`/`solo` review mode — no qa-lead specs exist; see the `minimal` mapping note above.)*

**[For Logic / Integration stories — automated test specs]:**

- **AC-1**: [criterion text]
  - Given: [precondition]
  - When: [action]
  - Then: [assertion]
  - Edge cases: [boundary values / failure states]

**[For Visual/Feel / UI stories — manual verification steps]:**

- **AC-1**: [criterion text]
  - Setup: [how to reach the state]
  - Verify: [what to look for]
  - Pass condition: [unambiguous pass description]

---

## Test Evidence

*Governed by `qa.level`: at `qa.level: minimal` tests are **waived** (advisory, never "must exist and pass"), but a Visual/Feel or UI story's retained screenshot is not.*

**Story Type**: [type]
**Required evidence**:
- Logic: `tests/unit/[system]/[story-slug]_test.[ext]` — must exist and pass (`/story-done` checks that it EXISTS; pass/fail is established by `/gate-check` and `/smoke-check`, both later)
- Integration: `tests/integration/[system]/[story-slug]_test.[ext]` OR playtest doc
- Visual/Feel: a retained screenshot in `production/qa/evidence/` + sign-off in `production/qa/evidence/[story-slug]-evidence.md`
- UI: a retained screenshot of each screen touched, in `production/qa/evidence/`
- 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

At minimal with no EPIC.md yet, this is where the Step 2 draft is written, with the table below. Otherwise replace the "Stories: Not yet created" line with a populated table; if the table already exists (a return visit), append a row per new story and leave the existing rows as they are:

markdown
## Stories

| # | Story | Type | Status | ADR |
|---|-------|------|--------|-----|
| 001 | [title] | Logic | Ready | ADR-NNNN |
| 002 | [title] | Integration | Ready | ADR-MMMM |
Also update production/epics/index.md

Find the row in the index table matching this epic (by epic name or slug). Set its Stories column to [N] stories, where N is the epic's total story count after this run — the existing rows plus the ones just written, not only the new ones. If the index file does not exist, say so in one line — Epics index not updated: production/epics/index.md absent — and continue. Do not skip silently: the index is what a reader consults to learn which epics have stories, so an un-updated one keeps reporting Not yet created for work that now exists, and nothing else would ever reveal the gap.


7. After Writing

Use AskUserQuestion to close with context-aware next steps:

Check:

  • Are there other epics in production/epics/ without stories yet? List them.
  • Is this the last epic? If so, include /sprint-plan as an option — except at workflow: minimal, which has no sprints: the brief's build order is the plan.

Widget:

  • Prompt: "[N] stories written to production/epics/[epic-slug]/. What next?"
  • Options (include all that apply):
    • [A] Start implementing — run /dev-story [first-story-path] at minimal, /story-readiness [first-story-path] otherwise (Recommended)
    • [B] Create stories for [next-epic-slug] — run /create-stories [slug] (only if other epics have no stories yet)
    • [C] Plan the sprint — run /sprint-plan new (only if all epics have stories, and never at minimal)
    • [D] Stop here for this session

Note in output: "Work through stories in order — each story's Depends on: field tells you what must be DONE before you can start it."


Collaborative Protocol

Applies in collaborative mode (the default). For guided and autonomous modes, see .claude/docs/automation-modes.md — the rules below describe what collaborative mode requires, not universal behavior.

  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

After writing (or declining):

  • Verdict: COMPLETE — [N] stories written to production/epics/[epic-slug]/. Run /dev-story (at minimal) or /story-readiness → /dev-story to begin implementation.
  • Verdict: BLOCKED — user declined. No story files written.

© Donchitos, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .claude/skills/create-stories of Donchitos/Claude-Code-Game-Studios.

  • SKILL.md
  • CONTRACT.md

Open the folder on GitHubat commit be8993b

Compare with similar skills

Create Stories next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Create Stories compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Stories this skillDonchitos/Claude-Code-Game-Studios26k—~7.3kAutomated safety check: PassMIT
Bmad Helpaj-geddes/claude-code-bmad-skills488—~1.7kAutomated safety check: NotesCustom licence
Bmad Correct Courseaj-geddes/claude-code-bmad-skills488—~3.1kAutomated safety check: NotesCustom licence
Agentic Feature FramingPackmindHub/packmind317—~1.3kAutomated safety check: PassApache-2.0
Add Customer To User Listlangfuse/langfuse-docs247—~2.3kAutomated safety check: PassMIT
Vibe CodingOfficeDev/microsoft-365-agents-toolkit781—~5.5kAutomated safety check: PassCustom licence

Similar skills

  • Bmad Help

    aj-geddes/claude-code-bmad-skills

    Orchestration spine and "what do I do next?" router for the BMAD Planning & Orchestrator plugin.

    488 GitHub stars~1.7k tokensUpdated 3 mo ago
    Product & Project ManagementAuto-check: notes
  • Bmad Correct Course

    aj-geddes/claude-code-bmad-skills

    CROSS-PHASE mid-stream scope correction. An agent skill from aj-geddes/claude-code-bmad-skills.

    488 GitHub stars~3.1k tokensUpdated 3 mo ago
    Product & Project ManagementAuto-check: notes
  • Agentic Feature Framing

    PackmindHub/packmind

    Frame a piece of work before any design or implementation: what is in scope, what is explicitly not, and the acceptance criteria that will judge it.

    317 GitHub stars~1.3k tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Add Customer To User List

    langfuse/langfuse-docs

    Add or update a company in the Langfuse /users adopters table.

    247 GitHub stars~2.3k tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Vibe Coding

    OfficeDev/microsoft-365-agents-toolkit

    End-to-end workflow for agent-driven changes that add or modify behavior in the toolkit packages.

    781 GitHub stars~5.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Requirement Interviewer

    ceilf6/FrontAgent

    Gather missing product, UX, technical, and delivery constraints before planning or coding.

    120 GitHub stars~476 tokensUpdated 9 days ago
    Product & Project ManagementAuto-check passed

More from Donchitos/Claude-Code-Game-Studios

All 73 skills in this repo
  • Architecture Decision

    Donchitos/Claude-Code-Game-Studios

    Create an ADR documenting a technical decision: context, alternatives considered, consequences.

    26k GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Dev Story

    Donchitos/Claude-Code-Game-Studios

    Implement a story: ADR guidelines, right programmer agent, code plus test.

    26k GitHub stars~2.4k tokensUpdated yesterday
    Auto-check: notes
  • Game Asset Audit

    Donchitos/Claude-Code-Game-Studios

    Audits game assets against naming conventions, file size budgets and format standards, and finds orphaned assets and missing references.

    26k GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Game Asset Spec Writer

    Donchitos/Claude-Code-Game-Studios

    Writes per-asset visual specs and AI image-generation prompts for a game's characters, enemies and screens, driven by the GDD, art bible and an entity inventory.

    26k GitHub stars~5k tokensUpdated yesterday
    Auto-check passed
  • Game Balance Check

    Donchitos/Claude-Code-Game-Studios

    Checks game data and formulas for balance outliers, broken progression, degenerate strategies and economy problems, and answers 'could not run' when the data is missing.

    26k GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Structured Bug Reports

    Donchitos/Claude-Code-Game-Studios

    Turns a description into a structured bug report, or scans code for likely bugs, then verifies and closes reports through four modes.

    26k GitHub stars~2.5k tokensUpdated yesterday
    Auto-check: notes

Questions about Create Stories

What does Create Stories do?

Break one epic into implementable stories embedding TR-ID, ADR guidance, acceptance criteria. Create Stories is an agent skill from Donchitos/Claude-Code-Game-Studios. Break one epic into implementable stories embedding TR-ID, ADR guidance, acceptance criteria.

When should I use Create Stories?

Create Stories fits situations like: tasks that involve User stories; tasks that involve Architecture decision records; tasks that involve Embeddings.

How do I install Create Stories in Claude Code?

Run `npx skills add Donchitos/Claude-Code-Game-Studios --skill create-stories -a claude-code`. Or copy the skill folder (.claude/skills/create-stories in Donchitos/Claude-Code-Game-Studios) into .claude/skills/create-stories in your project. Claude Code loads it when a task matches its description.

How do I install Create Stories in Codex?

Run `npx skills add Donchitos/Claude-Code-Game-Studios --skill create-stories -a codex`. Or copy the skill folder (.claude/skills/create-stories in Donchitos/Claude-Code-Game-Studios) into .agents/skills/create-stories in your project. Codex loads it when a task matches its description.

Can I use Create Stories in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Donchitos/Claude-Code-Game-Studios --skill create-stories -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-stories, .gemini/skills/create-stories, .github/skills/create-stories and .opencode/skills/create-stories in your project.

What does Create Stories need to run?

Going by SKILL.md and its folder, Create Stories needs the command-line tools its instructions call (bash). Its frontmatter pre-approves these tools: Read, Glob, Grep, Write, Edit, Agent, AskUserQuestion, Bash(bash "*/.claude/skills/create-stories/../../hooks/yaml-helper.sh" resolve_config *).

Does Create Stories access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Create Stories safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Create Stories use?

Create Stories is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Stories use?

About 7.3k tokens (SKILL.md is roughly 29k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Create Stories?

Skills that share tags, products or a category with Create Stories: Bmad Help (aj-geddes/claude-code-bmad-skills, 488 stars), Bmad Correct Course (aj-geddes/claude-code-bmad-skills, 488 stars), Agentic Feature Framing (PackmindHub/packmind, 317 stars) and Add Customer To User List (langfuse/langfuse-docs, 247 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Stories?

Donchitos (a GitHub user) maintains it in Donchitos/Claude-Code-Game-Studios, which has 25,951 GitHub stars. The repository holds 73 skills in this directory. The repository was last updated on October 8, 2026.

Source: Donchitos/Claude-Code-Game-Studios on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.