# speckit-specify

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.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2600 installs · ★ 153
- Author: github-spec-kit
- License: AGPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/dceoy/speckit-agent-skills/tree/HEAD/skills/speckit-specify/SKILL.md
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/skills/speckit-specify

## What it 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.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/speckit-specify/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/speckit-specify/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/speckit-specify/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/speckit-specify/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install dceoy/speckit-agent-skills speckit-specify
```

2. **Manually: put the files in place**
- File: `.github/skills/speckit-specify/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/dceoy/speckit-agent-skills --path skills/speckit-specify
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/speckit-specify/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add dceoy/speckit-agent-skills --skill speckit-specify -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/dceoy/speckit-agent-skills/tree/HEAD/skills/speckit-specify/SKILL.md

## When to use it
- 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
- /speckit-specify Add OAuth2 login for the API
- /speckit-specify Fix the payment processing timeout
- /speckit-specify Build an analytics dashboard

## Similar
- [specify](https://affpapa.org/en/nevibecode/skills/specify.md) — skill · 2700 installs
- [feature-forge](https://affpapa.org/en/nevibecode/skills/feature-forge.md) — skill · 4200 installs
- [elicit](https://affpapa.org/en/nevibecode/skills/elicit.md) — skill · 2700 installs
- [distill](https://affpapa.org/en/nevibecode/skills/distill.md) — skill · 2600 installs
- [prompt-optimizer](https://affpapa.org/en/nevibecode/skills/daymade-prompt-optimizer.md) — skill · 2100 installs
- [spark](https://affpapa.org/en/nevibecode/skills/spark.md) — skill · 541 installs

From the same set: [dceoy/speckit-agent-skills](https://affpapa.org/en/nevibecode/by/dceoy/speckit-agent-skills.md) — 10 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
