dev-story
Skill4 starsChanged 46 days agoMITView on GitHub
Implements a story end-to-end: loads spec/contract/ADR/rules, routes to the right engineers (Go/PHP/Node/GraphQL/Angular/Vue/three.js/DB), drives code + tests, runs checks, confirms each acceptance criterion. The core implementation skill — run after stories exist, before /code-review and /story-done.
- Commits and pushes
11 other projects use a version of this.
Adopted by
Most recently taken up by
- striderZA/OpenCodeGameStudiostheir own version, first seen Nov 4, 2026
- Donchitos/Claude-Code-Game-Studiostheir own version, first seen Oct 19, 2026
- venus2099/codex-game-studiostheir own version, first seen Oct 17, 2026
- rterakedis/leanwheel-skillstheir own version, first seen Oct 17, 2026
- ShiningPlague/shiningplague-studiotheir own version, first seen Oct 11, 2026
- HunLuanZhiZhu/Game-Studios-Plugintheir own version, first seen Oct 5, 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 versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- Donchitos/Claude-Code-Game-Studios★ 27ksame name
- striderZA/OpenCodeGameStudios★ 118same name
- cenconq25/claude-code-app-studio★ 40same name
- dawn840705/codex-code-studios★ 17same name
- lilangMax/ClaudeCodeGameStudios★ 8same name
- hongyuanc/codex-game-studios★ 5same name
- rterakedis/leanwheel-skills★ 2same name
- dawn840705/claude-code-studios★ 1same name
- HunLuanZhiZhu/Game-Studios-Plugin★ 1same name
- venus2099/codex-game-studios★ 1same name
1 more not listed
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 repository52 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- testing/CLAUDE.mdCLAUDE.md
- a11y-auditSkill
- adoptSkill
- api-contractSkill
- architecture-decisionSkill
- architecture-reviewSkill
- backlogSkill
- brainstormSkill
- changelogSkill
- code-reviewSkill
- collaboration-protocolSkill
- create-storiesSkill
- data-modelSkill
- dependency-auditSkill
- deploySkill
- design-systemSkill
- docsSkill
- feature-specSkill
- game-conceptSkill
- hardenSkill
- helpSkill
- hotfixSkill
- impactSkill
- incidentSkill
- initSkill
- migrateSkill
- pentestSkill
- perf-auditSkill
- product-specSkill
- qa-planSkill
- refactorSkill
- release-checklistSkill
- retrospectiveSkill
- security-auditSkill
- setup-stackSkill
- skill-improveSkill
- skill-testSkill
- sprint-planSkill
- sprint-statusSkill
- stack-updateSkill
- startSkill
- story-doneSkill
- team-featureSkill
- team-gameSkill
- team-releaseSkill
- team-securitySkill
- tech-debtSkill
- test-setupSkill
- threat-modelSkill
- updateSkill
- ux-specSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 1 is distinctive, and 6 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 35
Every step names its agent, and the table says how many steps there are.
- Very specific: line 44
If it refuses because it cannot round-trip the file, active.md has grown into a working document: leave it alone, suggest moving its …
- Very specific: line 61
No brief without line ranges in Read:: an agent that has to find its files spends half its budget on grep.
- Very specific: line 64
Before sending it, no git status, build or test by the parent — each adds 5–20 k tokens to its context.
- Distinctive: line 66
Only after both have failed may the parent write the code itself, and the story result says so in one line, "written by the parent: <agent> …
- Very specific: line 80
Never git add -A: that is how a spike, a scratch log or a stray .bak reaches the history.
- Very specific: line 84
Wait for CI: only for a run that exists: one background gh run watch <run-id> --exit-status (§ CI wait).
“Common” is measured: kept by at least 6 in 10 of the 11 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
Dev Story
Conventions: coordination-rules § Skill conventions (language, paths, gates, commit gate, Skill tool, subagents, CI wait, next step). Through the Skill tool this skill runs /impact (Phase 2 step 4, Phase 4 step 5) and /backlog add (Phase 6 step 5); every other command is a closing hand-off. The parent writes no product code (Phase 4).
Writes and mutations (git, deploy) happen only after the "May I write <path>?" / "Proceed?" gate (§ Gates). An open gate survives the next turn (rule 7): every commit gate below is recorded as Gate "/dev-story Phase N: <question>" before the question and cleared after the answer, so a session that resumes with the Gate: line continues at that question instead of reading a new task from Next:.
/create-stories → /dev-story (this) → /code-review → /story-donePhase 1: Story
- Context gate (rule 13). Statusline
ctx:above 50 %, or a story already closed in this session → the story does not start here. OneAskUserQuestion:/clear, then/web-studio:dev-story S-NNNagain (copy mode/dev-story) (Recommended) · continue here (the answer names why). Every subagent hand-back lands on top of the context the story starts with. - Pick the story. The argument, else
Task:inproduction/session-state/active.md, else ask. Status Ready or In Progress; anything else →BLOCKED (story S-NNN is <status> — Draft: run /create-stories | /sprint-plan; Review or Done: run /code-review | /story-done). - Sprint layer. No
production/sprints/sprint-*.mdcovers the story and the backlog holds more than three Ready stories → say so in one line and add/sprint-planto the Phase 3 plan question (Recommended for the first story of a fresh backlog); otherwise the sprint layer lives only in the owner's memory. With a covering sprint file, say nothing.
Phase 2: Context (read everything before planning)
- Architecture prerequisites.
docs/architecture/threat-model.mdanddocs/architecture/test-strategy.mdmust exist (a brownfield project entersbuildwith the architecture phase unwalked). Either missing →BLOCKED (architecture prerequisites unmet — run /threat-model | /test-setup first), naming only the missing ones; plan, branch or write nothing, and do not loop a question about it. - Read: the story; the relevant sections of the feature spec; the contract (
schema.graphql/ openapi); ADRs; the data model; applicable.claude/rules/*.md; the stack reference for the story's languages; the test strategy. Note line ranges: the Phase 4 briefs need them. - Missing inputs. A story that changes the contract →
BLOCKED (contract change — run /api-contract first): a pipeline document with its own gates is not written mid-story; the story restarts once the contract is in. A story whose ADR or contract does not exist →BLOCKED, naming the command (/architecture-decision·/api-contract). In both cases nothing is planned, branched or written; the verdict names the command, not a question. - Scope creep goes to
/impact. A request the acceptance criteria do not cover, or an unplanned dependency, contract, schema or security surface, is not absorbed into the story: detour to/impact <the request>through theSkilltool (/web-studio:impactin plugin mode; rule 11), quote its verdict and the commands it names in the story's chat, then return to the story (rule 7, hand-off after a detour: the pendingNext:is never overwritten). - CI on the default branch. With
gh:gh run list --branch <default> --limit 1. A red latest run is named now — job and run id, from the output — and the Phase 3 plan question gains/hotfix --chore(the toolchain lane). Not blocking: the fix is chore work, not story work. A green run adds nothing. Withoutgh, say in one line that the check was not possible.
Phase 3: Plan and branch
- Mark the story's scope as reviewed.
touch .claude/.impact-verdict: the story passed its spec and ADR gates, so the impact-guard hook stays quiet on its architecture/security paths (rule 11). - Build the plan table, rendered in the chat as a table (rule 7, on updates too). Columns: step · agent · files to create/change · criterion and test it serves.
- A step is what one specialist finishes inside a subagent's turn budget (≤ 40 turns: read the brief's files, write, one test run): one specialist, one file cluster. A one-step plan "implement the story" is how the parent ends up writing it.
- Every step names its agent, and the table says how many steps there are. Agent per stack and layer, layered Go/PHP step order, the lines the story result quotes, the SEO/a11y review step and the
/refactorhand-off: readreferences/routing.md. - Spikes. A throwaway script (a library, timing or format question) gets a home in the table —
tools/spike-<slug>/(gitignored) or the session scratchpad — and Phase 6 deletes it; an unnamed spike lands in the repository root and rides into the commit.
- Ask one
AskUserQuestion: continue — branchfeat/S-NNN-slugand start (Recommended) · change the plan (say what) · stop; plus/sprint-planwhen Phase 1 step 3 flagged it, and/web-studio:hotfix --chore(copy mode/hotfix --chore) when Phase 2 step 5 named a red run. "Continue" is the consent for the branch, the state update, the story-card edit and the files the plan names (rule 7, delegated steps):touch .claude/.write-consentafter it and again before eachTaskbatch in Phase 4. - Branch per
.claude/docs/git-workflow.md:git fetch origin.- On the default branch, or on a branch already merged into
origin/<default>(session-start prints "no commits beyond"; check withgit merge-base --is-ancestor HEAD origin/<default>):git switch <default> && git pull --ff-only origin <default>. Never continue on a merged branch. git switch -c feat/S-NNN-slug.
- Record the start.
- Session state only through the studio's writer, never a hand-built
sed/python3 -cone-liner:<hooks>session-state.sh set Task "S-NNN …" Branch feat/S-NNN-slug Next "/web-studio:code-review --diff <story-path>"(copy modeNext "/code-review --diff <story-path>"). It keeps every template field, fills untouched ones with—and prints the result, so a failed write is visible. - If it refuses because it cannot round-trip the file,
active.mdhas grown into a working document: leave it alone, suggest moving its durable parts into their own documents, never force the writer. - Story card metadata line:
Status: In ProgressandStarted: YYYY-MM-DDTHH:MM±HHMMfromdate +%FT%H:%M%z, never typed from memory (/story-donesubtracts it; a stamp without an offset cannot be subtracted). - The card rides the story's
feat(S-NNN)commit in Phase 6 (staged by name), so the stamp never lands on the default branch by itself. - A story under a sprint's roadmap heading: its row in the
## Storiestable ofproduction/sprints/sprint-NN.md→In Progress, one Edit; the sprint file rides the same commit. A Backlog story has no sprint row (sprints are optional).
- Session state only through the studio's writer, never a hand-built
Phase 4: Implementation (Task to the right engineers, by layer)
- The parent does not write product code. Every file of the story is written by a specialist through
Taskwith an explicit studiosubagent_type(e.g.web-studio:go-engineer), never by the session running this skill: specialists carry the stack reference, layout contract and memory, and the audit log records who wrote what. - One call per plan step, to the agent the plan named: independent steps in parallel, dependent ones in order (contract → backend → frontend). The result reports decisions, surprises and numbers, never the full diff — the parent reads it with
git diff. - The brief carries what the parent already knows — six lines in every
Taskprompt, filled from Phase 2 and 3:
Story: <story path> — criterion <n> (<one-line criterion>)
Read: <file>:<start>-<end>, … (the files this step touches or depends on, with line ranges)
Write: <files to create or change>
Check: <exact commands to run before reporting>
Skip: <what not to read or run: the full suite, the whole reference, unrelated packages>
Report: decisions, surprises, numbers, what you noticed "Outside the brief" (reported, not fixed), and a final `Checkpoint:` line (done · next · unverified)- No brief without line ranges in
Read:: an agent that has to find its files spends half its budget ongrep. - Consent inside a step. The Phase 3 answer covers the files the plan names. A specialist that needs more (another file, a new dependency, a contract or schema change) stops and reports; it cannot ask the user itself. The parent asks, or detours to
/impact(Phase 2 step 4) — after the runningTaskbatch has returned, never alongside it. - When an agent is cut off (
stopped at its N-turn limit, a result that ends mid-sentence, aSubagentStartwith noStop): resume that agent, never a second one (§ Subagents) — one line withSendMessageto its id from theTaskresult: "continue from yourCheckpoint:; rungit statusand the step'sCheck:yourself and report". - Before sending it, no
git status, build or test by the parent — each adds 5–20 k tokens to its context. The parent verifies once, after theSubagentStop. - Cut off twice: split what is left into smaller steps and spawn again.
- Only after both have failed may the parent write the code itself, and the story result says so in one line, "written by the parent:
<agent>cut off twice on<task>" — a rule broken silently gets broken again next story.
Phase 5: Criteria check
- Who wrote the story.
grep "SubagentStart" production/session-logs/agent-audit.log | tail -n <steps>, compared against the agents the plan named; name any step whose agent never started, or started and never stopped — silence here is how a parent-written story goes unnoticed. - Criteria table: criterion → test → result, with the command output. Name unmet criteria explicitly.
- Checks: lint, typecheck, and a dependency audit when packages were added (health verified).
- Outside the brief. Collect the items the specialists reported under that heading and list them in the story result under Outside the brief. Nothing is fixed here; Phase 6 step 5 records each — an item neither listed nor recorded is gone at
SubagentStop.
Phase 6: Wrap-up, commit and CI
- Status. Story status
Review; session stateNext "/web-studio:code-review --diff <story-path>"(copy modeNext "/code-review --diff <story-path>") through<hooks>session-state.sh set. - Commit gate, one
AskUserQuestion, recorded first asGate "/dev-story Phase 6: commit and push?"and cleared after the answer (§ Gates): commit and push (Recommended) · commit only (step 4 without the push; no steps 6–7) · not now (no steps 3–4, 6–7; step 5 still records the items) (git-workflow.md, step "Implement"). - Stage by name.
git status --shortfirst; deal with every unplanned??entry: delete the spike (itstools/spike-<slug>/or scratchpad files), add a file deliberately if it belongs to the story, otherwise leave it alone and name it.- Stage the story's files by name, and
.claude/agent-memory/as one deliberate entry (git add .claude/agent-memory): the agents' notes change with every run and belong to the commit that produced them (git-workflow § Agent memory). - Never
git add -A: that is how a spike, a scratch log or a stray.bakreaches the history.
git commit -m "feat(S-NNN): <story title>", thengit push -u origin feat/S-NNN-slug. Never commit on the default branch.- Record what was outside the brief (Phase 5 step 4) right after step 4 and before any CI wait — a slow queue ends the turn at step 7, and an item not yet recorded is gone. Per plain item
/backlog add "<item>"through theSkilltool (/web-studio:backlog addin plugin mode), one after another, each behind/backlog's own gates. A security-relevant item: readreferences/findings-mid-story.mdand follow it — aproduction/findings.mdrow behind "May I writeproduction/findings.md?" and itsdocs: findings <ID>commit gate. - Find out what starts CI (§ CI wait):
grep -l "pull_request" .github/workflows/*.ymland each workflow'son:. When the PR is what starts the checks, open it as a draft now (gh pr create --draft --fill);/story-donemarks it ready and merges it. Withoutgh, or with a push-triggered workflow, say which run to expect and its id. - Wait for CI only for a run that exists: one background
gh run watch <run-id> --exit-status(§ CI wait).
Verdict: COMPLETE | PARTIAL (open: …) | BLOCKED.
Next step, one AskUserQuestion, never a bare "run /code-review?" (§ Verdict and next step): /web-studio:code-review --diff <story-path> (copy mode /code-review --diff <story-path>) (Recommended on COMPLETE) · commit first (when step 2 was declined) · show the diff · stop here. Run the next skill only on that answer.
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.

