spec-first
Skill0 starsChanged 35 days agoMITView on GitHub
Write a spec and get explicit human approval before implementing any feature, change, or bug fix. Use whenever the user asks to build, add, change, refactor, or fix something that touches source code. Not for answering questions, read-only exploration, or fixes the user explicitly wants applied immediately.
12 other projects use a version of this.
Adopted by
Most recently taken up by
- voyager67/AgentFieldkittheir own version, first seen Nov 8, 2026
- zzusp/doc-first-devtheir own version, first seen Nov 8, 2026
- vindreshsingh/engineering-skillstheir own version, first seen Oct 20, 2026
- omega1119/groundworktheir own version, first seen Oct 20, 2026
- soilSpoon/skillstheir own version, first seen Oct 20, 2026
- marcin-urbanski/claude-skillstheir own version, first seen Oct 17, 2026
Other versions12 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 12
- rohunvora/my-claude-skills★ 6same name
- zzusp/doc-first-dev★ 6same name
- genfeedai/genfeed.ai★ 4same name
- MissingPackage/nightshift★ 3same name
- 223mle/skills★ 1same name
- soilSpoon/skills★ 1same name
- Jinbae10/skills★ 0same name
- marcin-urbanski/claude-skills★ 0same name
- omega1119/groundwork★ 0same name
- paulowsousa/spec-first★ 0same name
2 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 repository2 other files it gives its agents.
- pr-per-storySkill
- worktree-storySkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 8 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 9 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
When the user asks for a feature, change, or fix, do NOT start writing code.
- Distinctive: line 9
Write a spec first, present it, and wait for explicit approval.
- Distinctive: line 14
Investigate before writing: Read the files the change will touch and note how the existing code works.
- Distinctive: line 22
Keep the spec under one page: if it will not fit, the feature is too big, propose splitting it into smaller specs instead.
- Distinctive: line 27
Do not write, edit, or scaffold any implementation code until the user replies with explicit approval ("approved", "go ahead", "yes, build …
- Distinctive: line 75
Never write implementation code before explicit approval.
- Distinctive: line 77
Never mark an acceptance criterion as met without having run the verification command in this session.
- Distinctive: line 79
Never widen scope beyond the approved spec without a new approval.
“Common” is measured: kept by at least 6 in 10 of the 9 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-First: No Code Before an Approved Spec
When the user asks for a feature, change, or fix, do NOT start writing code. Write a spec first, present it, and wait for explicit approval. A prompt is a wish; a spec is a contract.
Workflow
- Investigate before writing. Read the files the change will touch and note how the existing code works. If a decision materially shapes the spec (data model, API surface, new dependency), ask the user before drafting, not after.
- Write the spec to
specs/<slug>.md, where<slug>is a short kebab-case name for the task (e.g.specs/rate-limit-login.md). Create thespecs/directory if it does not exist. Use the template below. Keep the spec under one page: if it will not fit, the feature is too big, propose splitting it into smaller specs instead. - Present it and stop. Show the spec (or a faithful summary plus the file path) and ask: "Approve this spec, or want changes?" Then WAIT. Do not write, edit, or scaffold any implementation code until the user replies with explicit approval ("approved", "go ahead", "yes, build it"). Silence, follow-up questions, or partial answers are not approval.
- After approval, the spec is the contract. Implement exactly what it says. If reality contradicts the spec mid-implementation (an API that does not exist, a wrong assumption), stop, update the spec file, and re-request approval for the delta before continuing. Never expand scope silently, "while I was in there" improvements belong in a future spec, not this diff.
- Before declaring done, re-read the spec. Walk the acceptance criteria one by one, run the verification command, and report each criterion as met or not met.
Spec template
# <Title>
## Context
Why this change is needed, in 2-4 sentences. Link related code or issues.
## Scope
What will be built, and which files/modules it touches.
## Out of scope
Explicit non-goals, so nobody "helpfully" builds them.
## Acceptance criteria
- [ ] Machine-checkable statements ("GET /api/login returns 429 after
5 requests/minute"), never vibes ("works well", "feels fast").
## Verification
One command that proves the criteria, e.g.
npm test -- rate-limit && npx tsc --noEmitEdge cases
- Tiny change (typo, comment, one-line config): a one-paragraph spec in chat is enough, but still get a "yes" before editing.
- User says "skip the spec, just do it": comply, and note in one line that spec-first was skipped at their request.
- Vague request: draft the spec anyway with your best-guess scope and mark
every guess with
ASSUMPTION:so approval doubles as clarification. - A spec for this task already exists: re-read it and confirm it still stands instead of writing a duplicate.
Boundaries
- Never write implementation code before explicit approval. The only file you may create pre-approval is the spec itself.
- Never mark an acceptance criterion as met without having run the verification command in this session.
- Never widen scope beyond the approved spec without a new approval.
- Approval comes from the human, never from you deciding the spec "looks fine".
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.

