agentleFS
ShiningPlagueShiningPlague/shiningplague-studio/skills/dev-story/SKILL.md

dev-story

Skill0 starsChanged 4 months agoMITView on GitHub

Read a story file and implement it. Loads the full context (story, GDD requirement, ADR guidelines, control manifest), routes to the right programmer agent for the system and engine, implements the code and test, and confirms each acceptance criterion. The core implementation skill — run after /story-readiness, before /code-review and /story-done. ShiningPlague-adopted: project paths (docs/adr/, docs/gdd/), engine-conditional specialist routing ({{ENGINE}}), control manifest at docs/architecture/control-manifest.md.

11 other projects use a version of this, 7 of them edited.

Adopted by

Most recently taken up by

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.
  • hongyuancSkill

    vertical-slice

    Build and evaluate a production-quality vertical slice before advancing from Pre-Production to Production.

    Also in 4 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

25 rules. 2 are common, 10 are distinctive, and 13 are very specific to this project.

  • 2

    Common

    Most of the 11 edited versions we read keep these.

  • 10

    Distinctive

    This author's own choices. Worth a look.

  • 13

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    After all sprint stories are done: run /qa-plan [sprint] to execute the full QA cycle.

    line 34
  2. Common:

    If a path is provided: read that file directly.

    line 63
  3. Very specific:

    If no argument: check production/session-state/active.md for the active story.

    line 65
  4. Distinctive:

    If TR registry or governing ADR is missing, set story status to BLOCKED in session state and do not spawn any programmer agent.

    line 81
  5. Distinctive:

    Read all of the following simultaneously:

    line 83
  6. Very specific:

    Read docs/architecture/tr-registry.yaml.

    line 100
  7. Very specific:

    Read docs/architecture/control-manifest.md.

    line 112
  8. Distinctive:

    Check: does story's embedded Manifest Version match current manifest header date?

    line 117
  9. Very specific:

    If they differ, use AskUserQuestion:

    line 119
  10. Distinctive:

    After extracting Dependencies, validate each:

    line 128
  11. Very specific:

    Read its Status: field

    line 130
  12. Very specific:

    If any dependency Status not Complete/Done:

    line 131
  13. Very specific:

    Use AskUserQuestion: "Story depends on [dependency] which is [status], not Complete.

    line 132
  14. Very specific:

    Create or modify files in src/ following ADR guidelines

    line 190
  15. Distinctive:

    Write clean, doc-commented public APIs

    line 193
  16. Very specific:

    Test requirements (the naming and structure rules live in .claude/rules/test-standards.md):

    line 212
  17. Distinctive:

    No random seeds, no time-dependent assertions, no external I/O

    line 216
  18. Distinctive:

    Test the formula bounds from GDD Formulas section

    line 217
  19. Distinctive:

    After programmer agent(s) complete, collect:

    line 227
  20. Distinctive:

    Test file created (path + number of test functions)

    line 229
  21. Common:

    If any spawned agent returns BLOCKED, errors, or cannot complete:

    line 274
  22. Distinctive:

    Assess dependencies: If output required by subsequent phases, don't proceed

    line 277
  23. Very specific:

    Run /code-review [file1] [file2] to review before closing

    line 302
  24. Very specific:

    Run /story-done [story-path] to verify acceptance criteria and mark complete

    line 303
  25. Very specific:

    After all sprint stories done: run /qa-plan [sprint] for the full QA cycle

    line 304

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Dev Story

🌱 ShiningPlague-adopted. Originally Donchitos; battle-tested on a shipped Godot project. Upstream procedure preserved + project path corrections + engine-conditional routing.

This skill bridges planning and code. It reads a story file in full, assembles all the context a programmer needs, routes to the correct specialist agent, and drives implementation to completion — including writing the test.

The loop for every story:

/qa-plan sprint           ← define test requirements before sprint begins
/story-readiness [path]   ← validate before starting
/dev-story [path]         ← implement it  (this skill)
/code-review [files]      ← review it
/story-done [path]        ← verify and close it

After all sprint stories are done: run /qa-plan [sprint] to execute the full QA cycle.

Output: Source code + test file in the project's src/ and tests/ directories.

If an artifact named here is absent: say so plainly in one line, skip that step, and continue. Never invent the file to satisfy a checklist, and never fail a close because an optional artifact was never created.

Project Paths

WhatCanonical path
System GDDdocs/gdd/[system].md or {{GDD_PATH}}
ADRsdocs/adr/NNN-*.md
Control manifestdocs/architecture/control-manifest.md
Storiesproduction/epics/<epic-slug>/story-*.md
Test evidencetests/ or tools/ (headless harnesses)

Project Context

  • Engine: {{ENGINE}} (from .claude/docs/technical-preferences.md) — routes to the matching engine specialist (e.g. godot-gdscript-specialist for Godot 4 + GDScript)
  • Technical preferences at .claude/docs/technical-preferences.md
  • Coding standards/gotchas at .claude/docs/ (e.g. godot-gotchas.md for Godot projects)
  • Architecture principles in CLAUDE.md § Architecture principles

Phase 1: Find the Story

If a path is provided: read that file directly.

If no argument: check production/session-state/active.md for the active story. If found, confirm: "Continuing work on [story title] — is that correct?" If not found, ask: "Which story are we implementing?" Glob production/epics/**/*.md and list stories with Status: Ready.


Phase 2: Load Full Context

Before loading any context, verify required files exist. Extract ADR path from story's ADR Governing Implementation field, then check:

FilePathIf missing
TR registrydocs/architecture/tr-registry.yamlSTOP — "TR registry not found. Run /create-epics to generate it."
Governing ADRpath from story's ADR fieldSTOP — "ADR file [path] not found. Run /architecture-decision to create it, or correct the filename in the story's ADR field."
Control manifestdocs/architecture/control-manifest.mdWARN and continue — "Control manifest not found — layer rules cannot be checked. Run /create-control-manifest."

"Missing" includes "seeded but unwritten." The installer seeds the TR registry and the control manifest, so existence proves nothing — a copy still carrying the scaffold-seed: unwritten marker (or a tr-registry.yaml whose requirements: list is still empty) is the blank skeleton. Treat it as missing and take the row's action.

If TR registry or governing ADR is missing, set story status to BLOCKED in session state and do not spawn any programmer agent.

Read all of the following simultaneously:

The story file

Extract and hold:

  • Story title, ID, layer, type (Logic / Integration / Visual/Feel / UI / Config/Data)
  • TR-ID — the GDD requirement identifier
  • Governing ADR reference
  • Manifest Version embedded in story header
  • Acceptance Criteria — every checkbox item, verbatim
  • Implementation Notes — the ADR guidance section
  • Out of Scope boundaries
  • Test Evidence — required test file path
  • Dependencies — what must be DONE before this story

The TR registry

Read docs/architecture/tr-registry.yaml. Look up story's TR-ID. Read current requirement text — source of truth.

The governing ADR

Read docs/adr/[adr-file].md. Extract:

  • Full Decision section
  • Implementation Guidelines section
  • Engine Compatibility section (post-cutoff APIs, known risks)
  • ADR Dependencies section

The control manifest

Read docs/architecture/control-manifest.md. Extract rules for this layer:

  • Required patterns
  • Forbidden patterns
  • Performance guardrails

Check: does story's embedded Manifest Version match current manifest header date?

If they differ, use AskUserQuestion:

  • Prompt: "Story written against manifest v[story-date]. Current manifest is v[current-date]. New rules may apply. Proceed?"
  • Options:
    • [A] Update story manifest version and implement with current rules (Recommended)
    • [B] Implement with old rules — accept risk of non-compliance
    • [C] Stop — review the manifest diff first

Dependency validation

After extracting Dependencies, validate each:

  1. Glob production/epics/**/*.md to find each dependency story file
  2. Read its Status: field
  3. If any dependency Status not Complete/Done:
    • Use AskUserQuestion: "Story depends on [dependency] which is [status], not Complete. How proceed?"
    • Options: [A] Proceed anyway / [B] Stop — complete dependency first / [C] Mark dependency Complete and continue

Engine reference

Read .claude/docs/technical-preferences.md:

  • Engine: — {{ENGINE}} (e.g. Godot 4.x)
  • Naming conventions
  • Performance budgets
  • Forbidden patterns

Phase 3: Route to the Right Programmer

Based on story's Layer, Type, and system name:

Config/Data stories — skip agent spawning entirely. Jump directly to Phase 4. The implementation is a data file edit.

Primary agent routing table

Story contextPrimary agent
Foundation layer — any typeengine-programmer
Any layer — Type: UIui-programmer
Any layer — Type: Visual/Feelgameplay-programmer
Core or Feature — gameplay mechanicsgameplay-programmer
Core or Feature — AI behaviour, pathfindingai-programmer
Core or Feature — networking, replicationnetwork-programmer
Config/Data — no codeNo agent needed

Engine specialist — always spawn as secondary for code stories

Route by {{ENGINE}} (from .claude/docs/technical-preferences.md). For Godot 4 projects, default secondary = godot-gdscript-specialist.

EngineSpecialist agents
Godot 4godot-specialist, godot-gdscript-specialist, godot-shader-specialist
Other enginesactivate the matching engine pack in .claude/agents-optional/ and route to its specialists

When engine risk is HIGH (from ADR or VERSION.md): always spawn engine specialist, even for non-engine-facing stories.


Phase 4: Implement

Spawn chosen programmer agent(s) via Task with full context package:

  1. The complete story file content
  2. The current GDD requirement text (from TR registry)
  3. The ADR Decision + Implementation Guidelines (verbatim — don't summarise)
  4. The control manifest rules for this layer
  5. The engine naming conventions and performance budgets
  6. Any engine-specific notes from ADR Engine Compatibility
  7. The test file path that must be created
  8. Explicit instruction: implement this story and write the test

Agent should:

  • Create or modify files in src/ following ADR guidelines
  • Respect all Required and Forbidden patterns from control manifest
  • Stay within story's Out of Scope boundaries
  • Write clean, doc-commented public APIs

Config/Data stories (no agent needed)

For Type: Config/Data, implementation is editing a data file. Read story's acceptance criteria and make specified changes directly. Note values changed.

Visual/Feel stories

Spawn gameplay-programmer to implement code/animation calls. Visual/Feel acceptance criteria cannot be auto-verified — "does it feel right?" check happens in /story-done via manual confirmation.


Phase 5: Write the Test

For Logic and Integration stories, test must be written as part of this implementation — not deferred.

Remind the programmer agent:

"Test file for this story is required at: [path from Test Evidence section]. Story cannot be closed via /story-done without it. Write the test alongside implementation."

Test requirements (the naming and structure rules live in .claude/rules/test-standards.md):

  • File name: [system]_[feature]_test.[engine test extension] (e.g. .gd for Godot, .cs for Unity)
  • Function names: test_[system]_[scenario]_[expected_result] — the pattern in .claude/rules/test-standards.md
  • Each acceptance criterion must have at least one test function
  • No random seeds, no time-dependent assertions, no external I/O
  • Test the formula bounds from GDD Formulas section

For Visual/Feel and UI stories: no automated test. Remind agent to note: "Evidence doc required at production/qa/evidence/[slug]-evidence.md."

For Config/Data stories: no test file. A smoke check serves as evidence.


Phase 6: Collect and Summarise

After programmer agent(s) complete, collect:

  • Files created/modified (with paths)
  • Test file created (path + number of test functions)
  • Any deviations from story's Out of Scope boundary
  • Any questions or blockers
  • Any engine-specific risks the specialist flagged

Present concise summary:

## Implementation Complete: [Story Title]

**Files changed**:
- `src/[path]` — created / modified ([brief description])
- `tests/[path]` — test file ([N] test functions)

**Acceptance criteria covered**:
- [x] [criterion] — implemented in [file:function]
- [x] [criterion] — covered by test [test_name]
- [ ] [criterion] — DEFERRED: requires playtest (Visual/Feel)

**Deviations from scope**: [None] or [list files touched outside boundary]
**Engine risks flagged**: [None] or [specialist finding]
**Blockers**: [None] or [describe]

Ready for: `/code-review [file1] [file2]` then `/story-done [story-path]`

Phase 7: Update Session State

Silently append to production/session-state/active.md:

## Session Extract — /dev-story [date]
- Story: [story-path] — [story title]
- Files changed: [comma-separated list]
- Test written: [path, or "None — Visual/Feel/Config story"]
- Blockers: [None, or description]
- Next: /code-review [files] then /story-done [story-path]

Error Recovery Protocol

If any spawned agent returns BLOCKED, errors, or cannot complete:

  1. Surface immediately: "[AgentName]: BLOCKED — [reason]"
  2. Assess dependencies: If output required by subsequent phases, don't proceed
  3. Offer options via AskUserQuestion: skip / retry narrower scope / stop and resolve
  4. Always produce partial report — never discard work

Common blockers:

  • Input file missing → redirect to skill that creates it
  • ADR status is Proposed → run /architecture-decision first
  • Scope too large → split via /create-stories
  • Conflicting ADR/story instructions → surface, don't guess
  • Manifest version mismatch → show diff, ask

Collaborative Protocol

  • File writes are delegated — all source code, test files, evidence docs written by sub-agents spawned via Task. Each sub-agent enforces "May I write to [path]?" individually.
  • Load before implementing — don't start coding until all context loaded
  • The ADR is the law — implementation must follow ADR Implementation Guidelines. If guidelines conflict with what seems "better," flag in summary
  • Stay in scope — Out of Scope is a contract. If implementing requires touching out-of-scope file, stop and surface
  • Test is not optional for Logic/Integration — don't mark complete without test file
  • Visual/Feel criteria are deferred, not skipped
  • Ask before large structural decisions — if story requires pattern not covered by ADR, surface

Recommended Next Steps

  • Run /code-review [file1] [file2] to review before closing
  • Run /story-done [story-path] to verify acceptance criteria and mark complete
  • After all sprint stories done: run /qa-plan [sprint] for the full QA cycle

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.