Installs into .claude/skills of the current project.
Are you the author of To Spec?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/pawel-kica-to-spec)
---
name: to-spec
description: "Turn the current conversation into a spec. No interview, just synthesis. Trigger 'to spec'."
---
This skill takes the current conversation context and codebase understanding and produces a spec (you may know this document as a PRD). Do NOT interview the user; just synthesize what you already know.
## Process
1. Explore the repo to understand the current state of the codebase, if you haven't already. Use the project's domain glossary vocabulary throughout the spec, and respect any ADRs in the area you're touching.
2. Sketch out the seams at which you're going to test the feature. Existing seams should be preferred to new ones. Use the highest seam possible. If new seams are needed, propose them at the highest point you can. The fewer seams across the codebase, the better - the ideal number is one.
Check with the user that these seams match their expectations.
3. Write the spec using the template below.
<spec-template>
> Disclaimer: this spec is a snapshot from planning, YYYY-MM-DD (fill with today's date). Great for context
> and intent, but a lot could change since. Code is the source of truth. The older the spec, the less it matches reality.
## Problem Statement
The problem that the user is facing, from the user's perspective.
## Solution
The solution to the problem, from the user's perspective.
## Architecture
Show modifications to the following areas (user scans for this section to understand the scope of the work):
- Database / Migrations
- Models / Serializers
- API endpoints
- Any other CRITICAL areas
Show example code/snippets for each area, if possible. If nothing important, for each section just say "None".
## User Stories
A LONG, numbered list of user stories. Each user story should be in the format of:
1. As an <actor>, I want a <feature>, so that <benefit>
<user-story-example>
1. As a mobile bank customer, I want to see balance on my accounts, so that I can make better informed decisions about my spending
</user-story-example>
This list of user stories should be extremely extensive and cover all aspects of the feature.
## Implementation Decisions
A list of implementation decisions that were made. This can include:
- The modules that will be built/modified
- The interfaces of those modules that will be modified
- Technical clarifications from the developer
- Architectural decisions
- Schema changes
- API contracts
- Specific interactions
Do NOT include specific file paths or code snippets. They may end up being outdated very quickly.
Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it within the relevant decision and note briefly that it came from a prototype. Trim to the decision-rich parts, not a working demo, just the important bits.
## Testing Decisions
A list of testing decisions that were made. Include:
- A description of what makes a good test (only test external behavior, not implementation details)
- Which modules will be tested
- Prior art for the tests (i.e. similar types of tests in the codebase)
## Out of Scope
A description of the things that are out of scope for this spec.
## Further Notes
Any further notes about the feature.
</spec-template>
## After the spec
Always run these steps automatically, in order.
4. Skill `/spec-review` (read and execute this skill)
5. Print the path to the spec and copy it to the clipboard.
### Internal Instructions
- Always English.
- Seams + Testing Decisions only when the user asked for TDD. Otherwise skip both. Don't ask user to confirm seams or testing decisions.
- Spec goes to `~/.claude/specs/<name>/spec.md`, artifacts flat beside it. Never write into a repo at this stage.