spec
Skill2 starsChanged 7 days agoMITView on GitHub
Interview the user in detail using AskUserQuestion, then write a versioned spec under `.claude/specs/<slug>/`. Specs evolve via versioned files (v1, v2, …); INDEX.md tracks the active version per slug. Use when the user types /spec, or asks to spec out / write requirements for a non-trivial feature before building. Mode A only — never auto-fires.
168 other projects use a version of this.
Adopted by
Most recently taken up by
- thistleknot/skillstheir own version, first seen Nov 8, 2026
- varelaia/claude-skills-publictheir own version, first seen Nov 8, 2026
- mrlemoos/galiciatheir own version, first seen Nov 8, 2026
- PeanutGT/NutsSkillstheir own version, first seen Nov 8, 2026
- standardagents/skillstheir own version, first seen Nov 8, 2026
- Surething-io/cockpittheir own version, first seen Nov 8, 2026
Used with
Projects with it also use backprop, ios-clean and 10 more.
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.
JuliusBrusseeSkillbackprop
Bug → spec protocol. When a bug is found or a test fails, trace the cause, decide whether a new §V invariant would catch recurrence, append to §B. This is the one non-obvious thing SDD does that plan-then-execute doesn't. Triggers on test failure, bug report, post-mortem, or explicit user ask.
Also in 4 projects that use this
Saqlain-811Skillios-clean
Remove the DebugBridge SPM package and all #if DEBUG wiring from an iOS app. (gstack)
Also in 5 projects that use this
Saqlain-811Skillios-fix
Autonomous iOS bug fixer. (gstack)
Also in 5 projects that use this
bastosSkillios-design-review
Review iOS app UI/UX design quality using Apple's design principles and the Liquid Glass-era design language from WWDC25/26. Use when asked for a design review, UX critique, visual design assessment, or evaluation of an app's interface quality, design intent, alignment with the new Apple design system, or usability. Triggers: "design review", "UX review", "visual design critique", "review the UI", "does this design work", "evaluate this interface", "design feedback", "Liquid Glass review".
Also in 5 projects that use this
ShreyRaviSkillplan-tune
Self-tuning question sensitivity + developer psychographic for gstack (v1: observational). Review which AskUserQuestion prompts fire across gstack skills, set per-question preferences (never-ask / always-ask / ask-only-for-one-way), inspect the dual-track profile (what you declared vs what your behavior suggests), and enable/disable question tuning. Conversational interface — no CLI syntax required.
Also in 7 projects that use this
timurgaleevSkilldocument-generate
Generate missing docs for a feature, module or project as tutorials, how-tos, reference and explanation.
Also in 6 projects that use this
- +2 more from Saqlain-811
Other versions168 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 168
- garrytan/gstack★ 141ksame name
- getsentry/sentry-react-native★ 1.8ksame name
- JuliusBrussee/cavekit★ 1.1ksame name
- kdlbs/kandev★ 1.1ksame name
- getsentry/sentry-dart★ 878same name
- poshan0126/dotclaude★ 871same name
- codewithmukesh/dotnet-claude-kit★ 808same name
- SparkDevNetwork/Rock★ 701same name
- hyperlink-academy/leaflet★ 527same name
- strands-agents/box★ 503same name
158 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 repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- autonomizeSkill
- blueprintSkill
- brainstormSkill
- captureSkill
- checkpointSkill
- close-outSkill
- coordinateSkill
- cycleSkill
- deliverSkill
- design-proposalSkill
- discoverSkill
- dispatchSkill
- draft-planSkill
- envisionSkill
- executeSkill
- extract-conventionsSkill
- glossarySkill
- humanizeSkill
- human-viewSkill
- improve-promptSkill
- memory-auditSkill
- new-agentSkill
- new-agents-mdSkill
- new-hookSkill
- new-mcpSkill
- orchestrateSkill
- pr-authorSkill
- prepSkill
- pre-pushSkill
- pr-triageSkill
- recapSkill
- retrospect-coreSkill
- reviewSkill
- rulesSkill
- shortcutsSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- update-changelogSkill
- update-codemapSkill
- using-git-worktreesSkill
- visualise-codemapSkill
- visualSkill
- work-stateSkill
- wrapSkill
- write-testsSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 2 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 145 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Run the spec flow — interview-driven requirements capture that lands a versioned spec file.
- Very specific: line 14
Before /draft-plan on any feature whose requirements aren't already pinned in a spec.
- Very specific: line 16
Do not auto-fire. Do not run for one-line fixes, refactors, or tasks with no requirements to surface — that's /draft-plan --task territory …
- Very specific: line 33
Legacy migration check (one-time): If a root SPEC.md exists and .claude/specs/ does not, offer to migrate it.
- Distinctive: line 88
Use the questionnaire template in templates.md.
- Very specific: line 90
Every open question with this answerer gets a question.
- Distinctive: line 95
Do not modify the body. Old versions are read-only after supersession.
“Common” is measured: kept by at least 6 in 10 of the 145 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
spec
Run the spec flow — interview-driven requirements capture that lands a versioned spec file. Upstream of /draft-plan; downstream of /envision. Every non-trivial feature gets a spec before a plan is drafted against it.
When to run
- User types
/spec,/spec <slug>,/spec <slug> --new, or/spec <slug> --abandon. - User asks to "spec out", "write requirements for", "nail down what we're building" for a non-trivial feature.
- Before
/draft-planon any feature whose requirements aren't already pinned in a spec.
Do not auto-fire. Do not run for one-line fixes, refactors, or tasks with no requirements to surface — that's /draft-plan --task territory or just doing the work.
Forms
/spec— write to the reserveddefaultslug. Use this when the project itself is the scope (one-off small projects, single-feature work). On evolution, the existingdefaultspec evolves like any other./spec <slug>— named slug. Use when a project hosts parallel specs (auth-rework,billing, …). If the slug exists in.claude/specs/INDEX.md, evolve the active version (interview on diffs, writev_n+1, mark old versionsuperseded). If new, createv1.mdunder it./spec <slug> --new— explicit fresh slug. Refuse and stop if<slug>already exists in INDEX. For genuine forks where the existing spec keeps living.--cold— before writing, have no-context agents read the drafted spec (step 6.5). Combinable with the create and evolve forms./spec <slug> --questionnaire [<recipient>]— write a questionnaire for the active spec's open questions that someone other than the user must answer (step 7.5). No new spec version./spec <slug> --abandon— mark the active versionabandonedin both file frontmatter and INDEX. No new file written. Confirms before writing.
default is a reserved slug — it is treated like any other slug structurally (folder, INDEX row, frontmatter), the only difference is the no-arg form resolves to it. Mixing default with named slugs in the same project is supported.
Procedure
- Locate the specs tree. Resolve
$CLAUDE_PROJECT_DIR/.claude/specs/(orcwd/.claude/specs/if env var unset). Create the directory tree lazily — do not pre-create empty folders. - Legacy migration check (one-time). If a root
SPEC.mdexists and.claude/specs/does not, offer to migrate it; procedure in reference.md. - Resolve the slug.
/spec(no args) → use the reserved slugdefault. No prompt; the user opted into the no-decision path./spec <slug>→ validate against^[a-z0-9][a-z0-9-]*$; reject anything else with one re-prompt.defaultis allowed but redundant — it's the no-arg form's target.
- Decide create vs evolve vs abandon.
--abandonflag → go to step 9 (abandon flow).--newflag + slug already in INDEX → stop:Slug
<slug>already exists with active version v<N>. Drop--newto evolve it, or pick a different slug.- Slug not in INDEX → create flow: this will be
v1.md. - Slug in INDEX with active version → evolve flow: read the active file, interview only on what's changing, write
v_n+1.
4.5 Prior-art pass (port or parity work only). When the user frames the work against something that exists ("like X but for Y", "port", "parity with") or the interview surfaces a sibling already built, read prior-art.md and run it before step 5: locate candidate bases (codemap first), have the user confirm the canonical one, surface drift between candidates as a question, and never sweep other projects unasked. No trigger, no pass.
- Interview (
AskUserQuestion, fall back to plain text if unavailable):- Create flow — full interview. Probe technical implementation, UI/UX, edge cases, constraints, tradeoffs, concerns. Skip obvious questions. Stop when the user signals done, coverage is complete, or after ~10 questions ask the meta-question "I've asked 10 questions. Are there areas we haven't covered that matter?" and respect the answer.
- Create flow with a confirmed base — interview on the delta, not from zero, and always ask the shared-core question (port vs. extract a common core). Procedure: prior-art.md, Delta interview.
- Evolve flow — first read any filled questionnaire in
.claude/specs/<slug>/(step 7.5): each answer settles its open question, and the answer goes in the section it settles. Then open the active version, summarise its current shape in 3–5 bullets, then ask: "What's changing? (paragraphs / sections to revise, or 'all of it' for a full re-interview)". Interview only on the deltas. Sections the user does not touch are carried forward verbatim from the previous version. - Done-criteria probe (closing phase, both flows) — after the body sections are populated, propose 2–4 candidate done-criteria derived from the spec body and ask the user to accept/edit/add. Each criterion must be: (a) falsifiable ("done when X works" is too vague; "done when running command Y produces output Z" is good), (b) observable from outside the implementation (a fresh reader can check it against the artefact), (c) sufficient together (if all are met, the spec's intent is satisfied). Iterate until the user signals done. Minimum: one criterion. Nudge toward at least one command-shaped criterion (one a command can settle, rather than a reader's judgment) — that is the kind
/execute's closing assessment can check on its own, and asking for it during the interview costs nothing. Advisory, not a gate: a spec whose intent is genuinely all judgment still ships with judgment criteria. With a confirmed base, prefer parity-shaped criteria — "behaviours 1–7 of the base inventory hold on<target>" is falsifiable, cheap to write, and often command-shaped already where the base carries tests. If the user can't articulate any falsifiable criterion ("we'll figure it out as we go"), mark the specstatus: draftwithdone_criteria_provisional: truein frontmatter — this blocks/draft-planuntil the criteria are firm. Drafts are still useful; the block is on promotion toactive, not on writing the spec. Open-questions sort (closing phase, both flows) — list what is still unresolved and sort each item:
- Open question — you can state it precisely now, even if nobody can answer it yet. Tag who answers it (
user,research, or a person or role) and what it blocks (plan,build,none). A question the user can answer and that blocks the plan gets asked now, not recorded. Aresearchquestion that blocks the plan gets a bounded look now (docs, the repo) before it is recorded. - Not yet specified — you can tell it is coming but can't phrase it as a precise question yet. Write it as loosely as you see it. It is in scope; it becomes an open question once an answer upstream makes it sharp.
- Non-goal — it lies beyond the goal. It goes under Non-goals and never comes back as a question.
The test between the first two is whether you can state the question precisely, not whether you can answer it. A spec with any open question tagged
blocks: planis writtenstatus: draft;/draft-planrefuses it until the question is settled. When the answerer is someone else, offer the questionnaire (step 7.5).- Open question — you can state it precisely now, even if nobody can answer it yet. Tag who answers it (
- Autonomy-contract probe (closing phase, optional) — once the work's shape is clear, optionally ask one question: "How autonomous should the build be — push hard to all criteria, or MVP-and-stop? Interrupt on every step, or only real forks?" and call autonomize as a library to record the answer as the per-task kickoff contract. Skip it when the implicit default (balanced / criteria-met / forks-only) obviously fits, or the user gave a terse preference — this is one optional question, never a mandatory gate. It is the implicit surface of autonomize's kickoff mode: the explicit
/autonomizecommand stays available independently.
Ground the spec. Invoke
skills/discover/SKILL.md:{ task_keywords: [<keywords from subject + interview answers>], scopes: [<detected language>, <detected domain>, "global"], kind: ["architectural-rule", "decision", "lesson", "project"], top_n: 15, render_bodies: true, include_recaps: false }Fold relevant prior knowledge into the spec's
Grounded contextsection. Cite by name; do not silently absorb.With a confirmed base, run the anchoring guard in prior-art.md: flag a known defect in the base instead of porting it.
6.5 Cold read (--cold only). Before writing, run draft-plan's cold read on the drafted spec with two lenses: comprehension and reuse. Readiness is for plans. Apply the fixes the user accepts, then write.
Write the new version file. Path:
.claude/specs/<slug>/v<N>.mdwhereN= previous active version + 1, or1for create flow.Use the frontmatter and body template in templates.md. Frontmatter is mandatory:
slug,version,status,supersedes(omit on v1),created,description,done_criteria,done_criteria_provisional. Body sections: Problem, Goals, Non-goals, User-facing behavior, Base implementation (only with a confirmed base), Technical approach, Constraints, Grounded context, Open questions (· answers: … · blocks: …), Not yet specified, Verification criteria, Changes from v<N-1>(evolve only). Sections with no content → write "not addressed during interview". Do not invent.
7.5 Questionnaire (an open question someone else must answer, or --questionnaire). The user can't answer it, so ask the user only about the send: who it goes to (role, what they know that the user doesn't) and anything they need back beyond the open questions. One exchange. Then write .claude/specs/<slug>/questionnaire-<recipient>.md:
Use the questionnaire template in templates.md.
Every open question with this answerer gets a question; each question asks one thing. Tell the user the path. The next /spec <slug> reads the filled file first (evolve flow).
- Update the previous active version's frontmatter (evolve flow only):
- Set
status: supersededinv<N-1>.md. - Add
superseded_by: v<N>.md. - Do not modify the body. Old versions are read-only after supersession.
- Set
- Abandon flow (when
--abandonwas passed):- Confirm: "Mark
<slug>v<N>abandoned? Status is irreversible without manual edit. (y/N)" - On
y: update the active version's frontmatter tostatus: abandoned, update INDEX. Do not write a new file. - On
n: stop without changes.
- Confirm: "Mark
Update INDEX.md. Path:
.claude/specs/INDEX.md. Format:# Specs index | Slug | Current | Status | Created | Description | |------|---------|--------|---------|-------------| | <slug> | v<N> | active | YYYY-MM-DD | <one-line from frontmatter> |One row per slug. The
Currentcolumn points at the latest non-abandoned version (active or — if all are superseded, which shouldn't happen — the highest). Sort rows byCreateddescending. Create the file lazily on first spec.INDEX is regenerated from frontmatter on every
/specinvocation — do not hand-edit. If the file drifts from the on-disk frontmatter, the next/specreconciles it.Close. Tell the user:
Wrote
.claude/specs/<slug>/v<N>.md. INDEX updated. Recommended: start a fresh session before/draft-plan <slug>— Claude's context is cleanest when each phase begins clean.Offer a changelog decision line — significant changes only. A new spec for a slug (v1) or a status transition (a spec going
active, or--abandon) is a significant planning-artifact change worth recording: offer "Spec'd <slug> — log a decision line to CHANGELOG? (y/N)". Ony, invokeupdate-changelog(it composes a◆decision line behind its own accept/edit/reject gate). Do not offer on a routine v→v+1 wording revision — that is authoring churn, already tracked by the version chain + INDEX (changelog-contract §5). spec is a doorway, not the writer; the propose-confirm gate is the backstop if the change turns out not changelog-worthy.
The versioning contract, done-criteria semantics and what /spec does not do: reference.md.
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.

