speckit-specify — Claude Code skill: spec from a description
Turns a plain-language feature description into a spec folder: short name, number, spec.md from the template, and a path saved in .specify/feature.json.
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a claude-codeWhat speckit-specify does
The skill reads whatever you typed after the invocation and builds a spec draft from it. It pulls the meaningful keywords out of the description and forms a 2–4 word short name in action-noun form, something like add-user-auth or fix-payment-timeout. Then it creates a directory under specs/, copies the active spec-template into it as spec.md, and writes the path to .specify/feature.json so later commands in the chain can find the feature without guessing from the git branch name.
The directory number comes from .specify/init-options.json: with feature_numbering: timestamp you get a timestamp prefix, with sequential or no value at all you get the next free three-digit number. If the file still carries the deprecated branch_numbering key, the skill prints a one-line warning. Branch name and directory name are independent here, and they do not have to match.
Before writing anything, the skill checks .specify/extensions.yml for before_specify hooks. Mandatory ones (optional: false) it runs itself and waits for the result; optional ones it only surfaces as a command for you. A YAML file that fails to parse is not skipped quietly — the skill reports the parser error and says no hooks were checked. One invocation creates exactly one feature. The project needs the spec-kit structure with a .specify/ directory.
What it helps with
- turn a spoken feature idea into a spec file
- give a feature a short name and a numbered folder
- drop the right spec.md template in before work starts
- link a feature to later commands through .specify/feature.json
- run mandatory pre-spec hooks
Example prompts for the agent
- /speckit-specify Add OAuth2 login for the API
- /speckit-specify Fix the payment processing timeout
- /speckit-specify Build an analytics dashboard
How to install speckit-specify
1Skills CLI (Vercel)
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a claude-code2Manually: put the files in place
~/.claude/skills/speckit-specify/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/speckit-specify/
1Skills CLI (Vercel)
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a codex2Manually: put the files in place
.agents/skills/speckit-specify/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a cursor2Manually: put the files in place
.cursor/skills/speckit-specify/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dceoy/speckit-agent-skills speckit-specify2Manually: put the files in place
.github/skills/speckit-specify/SKILL.md1Skills CLI (Vercel)
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a gemini-cli2Platform CLI
gemini skills install https://github.com/dceoy/speckit-agent-skills --path skills/speckit-specifyManually: put the files in place
.devin/skills/speckit-specify/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -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 speckit-specify
How do I install speckit-specify in Claude?
Run npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a claude-code. The skill lands at ~/.claude/skills/speckit-specify/SKILL.md.
What does speckit-specify do?
It creates or updates a feature specification from a natural-language description: generates a short name, makes a folder under specs/, copies the spec.md template there, and saves the path in .specify/feature.json.
What does the skill need to work?
A spec-kit project structure with a .specify/ directory. Hooks come from .specify/extensions.yml, and folder numbering from .specify/init-options.json.