modules/<module>/issues/<ID>.yml file. The whole workflow is three steps over that file:
Find — discover work
Audit a module’s source and surface concrete findings, each one a future issue.
Plan — turn requests into specs
Scaffold an issue and restructure it into
context / goal / dod / dependencies, splitting big work into ordered sub-issues./issue:found, /issue:plan, /issue:fix — that you invoke from your agent (Claude or Codex). They share one artifact, the issue file, so the spec flows from discovery to a finished, verified change.
The issue is the spec
Everything centers on one file per unit of work:<ID> is generated for you — three uppercase letters and six digits, e.g. ABC-012345. A brand-new issue starts as a thin skeleton (see issue:create):
| Field | What it holds |
|---|---|
context | Background and why the issue exists. |
goal | The concrete work to do — plus optional Technical Notes and a module-type-specific structure block. |
dod | The Definition of Done: acceptance criteria as - [ ] checkboxes. The fixer ticks these and only marks the issue Done when all pass. |
dependencies | IDs of issues that must be completed first — how the loop sequences work. |
Issue lifecycle
Every issue carries astate and a priority. State moves left to right as the spec travels through the workflow:
| State | Meaning |
|---|---|
Backlog / Todo | Captured but not yet a real spec — just a title and a description. |
Planned | Restructured into context/goal/dod/dependencies — ready to implement. /issue:fix takes over here. |
In Progress / In Review | Being implemented or reviewed. |
Done | Every dod checkbox is satisfied. |
Cancelled | Dropped. |
Low, Medium, High, Urgent, inferred from severity (an exploitable vulnerability is Urgent; a missing test is Medium).
The workflow
1. Find — audit a module for issues
/issue:found infers which modules you mean from plain language (“audit the user and billing modules”, or just user), then runs a read-only audit of each module’s source. It never writes anything itself — it dispatches each module to the founder sub-agent that matches the module’s type and collects findings.
Module type | Founder | What it audits |
|---|---|---|
module (or none) | module-issue-founder | Backend domain module — security, performance, architecture, missing tests, code quality, database |
api | api-issue-founder | The above plus the HTTP/REST contract (status codes, DTOs, validation, versioning, pagination, rate limiting) |
microservice | microservice-issue-founder | The above plus boundaries, event contracts, idempotency, resilience, observability |
spa | spa-issue-founder + design-issue-founder | Client-side SPA issues and UI/UX design issues |
design | design-issue-founder | UI/UX design issues for the design system |
/issue:plan.
Prompt
2. Plan — turn a request into a spec
/issue:plan is the heart of spec-driven development. It takes either an existing issue (by ID) or a free-form description and produces a planned spec:
- Scaffold (for new work) — runs
issue:create, inferring the target module from the domain nouns in your request (“user profile” →user, “checkout” →order). - Restructure — replaces the free-form
descriptionwithcontext/goal/dod/dependencies. - Label and prioritize — extracts labels and sets
state: "Planned"with an inferred priority. - Split when needed — if the work spans multiple unrelated concerns, it breaks the parent into 3–7 ordered, self-contained sub-issues (each with the same four fields, wired together through
dependencies) and deletes the parent.
Prompt
Specs are module-type aware
Thegoal’s technical block follows the module’s conventions, so the fixer gets the right vocabulary:
- Backend (module / api / microservice)
- SPA (spa)
- Design (design)
### Data Model — TypeORM relations with the exact field, decorator, and inverse side:3. Fix — implement the spec
/issue:fix resolves which issues to implement (by ID, by module, or by description), sequences them in dependency order, and dispatches each to the fixer sub-agent for its module type:
Module type | Fixer |
|---|---|
module (or none) | module-issue-fixer |
api | api-issue-fixer |
microservice | microservice-issue-fixer |
spa | spa-issue-fixer |
design | design-issue-fixer |
goal calls for following Clean Architecture and the module’s conventions, runs bun run fmt and bun run lint from the monorepo root, checks off every satisfied dod box, and sets state: "Done" only when all of them pass.
Prompt
All commands — including the ones the fixers run — execute from the monorepo
root, never inside an individual module. See Monorepo.
The loop end to end
The three skills compose into a single thread from “something’s wrong” to “it’s fixed and verified”:Prompt
Find
/issue:found audits modules/user/ and surfaces a missing authorization
check, citing the exact route file.Plan
The finding flows into
/issue:plan, which scaffolds ABC-012345,
restructures it into a spec, labels it Security, sets it High / Planned.Why specs
- The agent never guesses the goal —
goalanddodare explicit, so the work and the finish line are unambiguous. - Self-verifying — the fixer can only mark
Donewhen every acceptance criterion is checked, so “done” means verified against the spec you wrote. - Sequenced automatically —
dependencieslet the loop implement issues in the right order, even across modules. - Convention-aware — specs carry the right structure for backend, SPA, or design modules, so generated code fits your codebase.
- Reviewable before any code is written — planning happens read-only; you approve the spec, then execution writes the change.
Use with Claude and Codex
The skills ship with the CLI. Initialize them, then drive the whole workflow in natural language.- Claude
- Codex
Prompt
Next steps
issue:create
The command that scaffolds an issue’s YAML skeleton.
Monorepo
Where modules and their
issues/ directories live.Module overview
What a module is and how its
type selects the founder and fixer.Workflow component
Orchestrate reversible multi-step processes that a fix may call for.