spec · owainlewis — Claude Code skill: a spec that replaces the ticket
The skill writes one implementation-ready spec for one change: required behavior, technical design, failure handling and acceptance checks.
npx skills add owainlewis/blueprint --skill spec -a claude-codeWhat spec does
The spec skill turns a request into a specification you can build from without guessing. The source is docs/<feature-slug>/spec.md, a GitHub issue, or another document you supply. When a source exists, the skill updates it instead of opening a second ticket. With no source it falls back to the Markdown path above. It publishes to a tracker only when asked.
The process runs in five steps. First it reads the request, repository instructions, requirements, architecture and the relevant implementation, verifying claims about current behavior. Then it pins down the outcome and scope, asking about unresolved choices that could shift behavior, data, interfaces, security or cost. Next it writes the spec in a fixed shape: outcome and scope, required behavior with REQ-n references, technical design, acceptance and proof in an AC-n table, open decisions. It closes by checking that a fresh agent could implement the spec without inventing a consequential decision. Then it stops and does not plan tasks.
One detail matters: the skill carries disable-model-invocation: true. The model will not call it on its own, so you start it by hand. Schema changes, indexes, migrations, transaction boundaries and rollback are covered only where they affect the change. Small fixes that are already decided can ship with their task description and checks.
What it helps with
- settle a feature's behavior before code starts
- agree on technical design and scope of a change
- spell out failure recovery and partial failures
- tie acceptance conditions to concrete checks
- keep the spec as a record of decisions after delivery
Example prompts for the agent
- /spec add CSV export for the report
- /spec move billing to a new provider
- /spec update docs/export/spec.md for partial failures
How to install spec
1Skills CLI (Vercel)
npx skills add owainlewis/blueprint --skill spec -a claude-code2Manually: put the files in place
~/.claude/skills/spec/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/spec/
1Skills CLI (Vercel)
npx skills add owainlewis/blueprint --skill spec -a codex2Manually: put the files in place
.agents/skills/spec/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add owainlewis/blueprint --skill spec -a cursor2Manually: put the files in place
.cursor/skills/spec/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install owainlewis/blueprint spec2Manually: put the files in place
.github/skills/spec/SKILL.md1Skills CLI (Vercel)
npx skills add owainlewis/blueprint --skill spec -a gemini-cli2Platform CLI
gemini skills install https://github.com/owainlewis/blueprint --path skills/specManually: put the files in place
.devin/skills/spec/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add owainlewis/blueprint --skill spec -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about spec
How do I install spec in Claude?
Run npx skills add owainlewis/blueprint --skill spec -a claude-code. The skill lands in ~/.claude/skills/spec/SKILL.md.
What does spec do?
It writes one specification for one coherent change: required behavior, technical design, failure handling and acceptance checks. The spec is the ticket.
Can spec be invoked automatically?
No. It sets disable-model-invocation: true, so you have to start the skill yourself.
Source text
SKILL.md · MIT
--- name: spec description: "Defines one feature or major change: required behavior, technical design, failure handling, and acceptance checks. Use when consequential decisions must be settled before delivery. The spec is the ticket." user-invocable: true argument-hint: "<feature, change, issue, or brief>" disable-model-invocation: true --- # Spec Write one implementation-ready specification for one coherent change. The spec is the ticket: its source may be `docs/<feature-slug>/spec.md`, a GitHub issue, or another user-supplied document. Update the supplied source; do not create a duplicate ticket or document. Without a supplied source, use the Markdown path above. Publish to a tracker only when asked. ## Process 1. Read the request, repository instructions, requirements, architecture, and relevant implementation. Reuse settled decisions and verify claims about current behavior. 2. Define the outcome and scope. Ask about unresolved choices that could change behavior, data, interfaces, security, compatibility, operations, cost, or proof. Leave reversible local mechanics to implementation. 3. Write the spec using the shape below. Explain the change from current behavior; link shared requirements and architecture instead of restating them. 4. Check that a fresh agent could implement it without inventing a consequential decision. Trace success, denial, invalid input, and partial failure where relevant. 5. Stop with the spec ready for review. Do not plan tasks or implement it. ## Spec shape ### Outcome and scope State the problem, affected user or caller, desired result, constraints, and non-goals. ### Required behavior Describe inputs, actions, observable results, permissions, business rules, and failure recovery. Reference applicable `REQ-n` IDs. Settle feature-specific product details here. ### Technical design Explain changed responsibilities, interfaces, data, and execution order. Use concrete types, payloads, state tables, or diagrams when they remove ambiguity. Cover schema changes, indexes, migrations, transaction boundaries, concurrency, retries, cancellation, security, compatibility, observability, rollout, and rollback only where they affect the change. State important choices, their reasons, and their costs. Name any required change to system architecture. Do not silently override an accepted rule. Record the proposed architecture change for review before delivery. ### Acceptance and proof Pair each observable condition and affected architectural rule with a check. | ID | Done when | How to check | |---|---|---| | AC-1 | Concrete result | Command, automated scenario, or manual check | Preserve existing `AC-n`, `REQ-n`, and `INV-n` references. Never reuse or renumber IDs. Do not invent executable commands for code that does not exist; define the scenario and expected result instead. ### Open decisions State missing answers, recommended defaults when justified, and whether they block delivery. Write None when settled. Do not hide unknowns behind placeholders. ## Lifecycle State the decision status and delivery status separately. After delivery, retain the spec as a record of the feature decisions and acceptance checks. Link delivered PRs and proof without claiming unrun checks passed. Record consequential changes made during delivery; do not erase the reasoning. Keep current product and system rules in requirements and architecture. ## Boundaries One spec may lead to several tasks and pull requests. Use `/plan` when splitting helps delivery. Small, decided fixes can use their task description and checks without a formal spec. Do not require root documents for a local change that does not need them. ## Return Report the source, main decision and tradeoff, and any blocking question.
© owainlewis · MIT · owainlewis/blueprint
Similar skills
All skills for Agent setup: memory, context, orchestration →spec by other authors comes first.