brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
spec-kitSpec Kit is GitHub's open-source toolkit that installs a set of agent commands into a project so a coding agent builds features from a written specification: specify, plan, tasks, implement, then converge against the spec. It also ships optional processes for bug fixing and for assessing an idea. Use when someone asks to "set up Spec Kit", "run specify init…
Independent GitHub snapshot · Automated classification · Original documentation governs
Spec Kit has two parts. The specify CLI runs in the terminal and scaffolds a project: templates and scripts under .specify/, plus one command or skill per process step in the chosen agent's folder. The steps themselves (/speckit-specify, /speckit-plan, and so on) are run inside the agent's chat, one at a time, with a human reviewing each result. Three processes are available and independent of each other: Spec-Driven Development (built in), bug fixing, and idea assessment (both opt-in extensions).
# Recommended: from PyPI with uv
uv tool install specify-cli
# Pin a release for reproducible setups
uv tool install specify-cli==1.0.13
# Without uv
pipx install specify-cli
# Verify
specify version
specify check
uv itself installs with brew install uv on macOS or winget install --id=astral-sh.uv -e on Windows; other platforms are covered in the uv installation guide at https://docs.astral.sh/uv/.
To try Spec Kit without installing it, run a single command through uvx:
uvx --from specify-cli specify init orders-portal --integration claude
# New directory
specify init orders-portal --integration claude
cd orders-portal
# Existing repository: commit or stash first, then run from the repo root
specify init --here --force --integration claude
# CI or an agent harness: never wait on an interactive picker
specify init --here --force --non-interactive --ignore-agent-tools --integration codex --script sh
| Option | Meaning |
|---|---|
--integration claude | Target agent. Without it, interactive runs prompt and non-interactive runs fall back to copilot. |
--here | Initialize the current directory |
--force | Allow a non-empty directory; may replace files at managed paths |
--script sh | Helper script flavor: sh (Bash), ps (PowerShell) or py (Python) |
--non-interactive | Use defaults instead of prompting |
--ignore-agent-tools | Skip the check that the agent's CLI is installed |
--preset compliance | Install a preset by its ID during initialization |
specify integration list prints every integration key.
The steps are the same everywhere; the spelling is not. specify init prints the right form at the end.
| Agent | Key | Installed into | Invocation |
|---|---|---|---|
| Claude Code | claude | .claude/skills/ | /speckit-specify |
| GitHub Copilot | copilot | .github/skills/ | /speckit-specify |
| Cursor | cursor-agent | .cursor/skills/ | /speckit-specify |
| OpenAI Codex | codex | .agents/skills/ | $speckit-specify |
| Gemini CLI | gemini | .gemini/commands/ | /speckit.specify |
The official reference pages write commands in the dotted form (/speckit.plan, /speckit.bug.assess). Translate to the form the agent uses. The rest of this skill uses the hyphenated slash form.
Run the constitution once per project, then one pass per feature.
/speckit-constitution Preserve public API compatibility. Every database migration ships with a rollback. All new code has unit tests.
/speckit-specify Add CSV export to the orders page. Export only the rows the signed-in user can see, keep the current filters, and do not change the JSON API.
/speckit-clarify Focus on which columns are exported and how dates are formatted.
/speckit-plan Reuse the existing Express routes and PostgreSQL views. Stream the file; do not build it in memory.
/speckit-checklist
/speckit-tasks
/speckit-analyze
/speckit-implement
/speckit-converge
| Step | What it does | Writes |
|---|---|---|
constitution | Records project principles that later steps are checked against | .specify/memory/constitution.md |
specify | Turns a description of what and why into a specification; no tech stack here | specs/001-csv-export/spec.md, checklists/requirements.md |
clarify (optional) | Asks up to five questions and folds the answers into the spec | spec.md |
plan | Technical design from the spec and the given stack | plan.md, research.md, data-model.md, quickstart.md, contracts/ |
checklist (optional) | Requirement-quality checklist for a human reviewer | checklists/ |
tasks | Dependency-ordered task list grouped by user story | tasks.md |
analyze (optional) | Read-only consistency report across spec, plan and tasks | nothing |
implement | Executes tasks.md; asks before proceeding if checklist items are unchecked | source code |
converge | Compares the code with the artifacts; append-only | new tasks in tasks.md, or nothing |
converge ends in one of two states. Converged means no gaps and tasks.md is untouched. Tasks appended means gaps were added as new tasks: run /speckit-implement and /speckit-converge again until it reports Converged.
For a large feature, scope each implementation run:
/speckit-implement Implement only the Setup and Foundational phases. Stop before the user-story phases.
The active feature is the directory recorded in .specify/feature.json, not the checked-out Git branch. Set SPECIFY_FEATURE_DIRECTORY to point commands at another feature. Numbered Git branches are provided by the optional git extension (specify extension add git).
specify extension add bug
/speckit-bug-assess "Submitting the login form with an empty password returns HTTP 500 instead of a validation error." slug=login-empty-password
/speckit-bug-fix slug=login-empty-password
/speckit-bug-test slug=login-empty-password
| Step | Edits source code | Writes |
|---|---|---|
bug-assess | No | .specify/bugs/login-empty-password/assessment.md |
bug-fix | Yes, within the assessed files; anything else is logged as a deviation | fix.md |
bug-test | No | test.md with verdict verified, partial or failed |
bug-assess also accepts a stack trace or an issue URL. partial means part of the verification was not exercised; supply the missing reproduction and test again.
specify extension add assess
/speckit-assess-intake "Let field technicians work offline and sync when they reconnect." slug=offline-mode
/speckit-assess-research slug=offline-mode
/speckit-assess-define slug=offline-mode
/speckit-assess-shape slug=offline-mode
/speckit-assess-decide slug=offline-mode
Artifacts land in .specify/assessments/offline-mode/: intake.md, research.md, problem.md, concept.md, decision.md. The decision is go, needs-clarification or kill. No source code is changed. A go can be handed to /speckit-specify.
specify self check # is a newer release available? read-only
specify self upgrade # upgrade the CLI in place (uv tool or pipx installs)
specify integration upgrade claude # refresh the agent's command files after a CLI upgrade
specify extension update # refresh installed extensions
specify integration status # health report; add --json for scripts
specify extension list
specify integration switch codex # replace the default agent
Request: "Set up Spec Kit in this repo and use it to add CSV export to the orders page."
git switch -c adopt-spec-kit
specify init --here --force --integration claude --script sh
specify integration status
Output (shortened):
Integration status: OK
Default integration: claude
Installed integrations: claude
Modified managed files: 0
Missing managed files: 0
Then, in the agent's chat, one step at a time:
/speckit-constitution Preserve public API compatibility. Follow the existing service boundaries. Run the existing unit and integration suites.
/speckit-specify Add CSV export to the orders page. Export only rows visible to the signed-in user and keep the current filters.
/speckit-plan Reuse the Express routes and the orders_view PostgreSQL view. Stream the response.
/speckit-tasks
/speckit-implement
/speckit-converge
Result: .specify/ and .claude/skills/speckit-* are added in one reviewable commit. The feature produces specs/001-csv-export/ with spec.md, plan.md, research.md, data-model.md, quickstart.md and tasks.md. The first /speckit-converge appends two tasks (missing test for the date filter, missing authorization check on the export route); after a second implement pass it prints Converged.
Request: "Checkout totals are wrong when a coupon and free shipping are combined. Fix it properly."
specify extension add bug
/speckit-bug-assess "Order total is 4.99 too high when coupon SPRING15 is applied to a cart that qualifies for free shipping. Steps: add 3 items over 60.00, apply SPRING15, open checkout." slug=coupon-shipping-total
/speckit-bug-fix slug=coupon-shipping-total
/speckit-bug-test slug=coupon-shipping-total
Result: .specify/bugs/coupon-shipping-total/assessment.md names the cause (free-shipping threshold evaluated after the discount) and the two files involved. fix.md lists the change and the regression test that was added. test.md ends with the verdict verified because the original reproduction steps were re-run, not only the unit suite.
specify ... runs in the terminal. Everything starting with /speckit or $speckit is typed into the agent's chat.spec.md multiply through the plan, tasks and code.specify. Requirements go into /speckit-specify; frameworks, databases and architecture go into /speckit-plan.analyze or a checklist reports a gap, go back to specify, clarify or plan and regenerate; do not patch tasks.md by hand to hide it.implement.--force on an existing repository can overwrite files at paths Spec Kit manages. Start from a clean working tree on a separate branch and read the diff.specify integration switch or use, extension commands are re-registered for the new agent; restart the agent if a command does not appear.community catalog is for discovery only. Read an extension's source and release archive before installing it with specify extension add and --from, and never mark an unvetted catalog as install-allowed..specify/feature.json is machine-local and already ignored by the generated .specify/.gitignore.taskstoissues needs a GitHub origin remote and GitHub MCP tools, and is moving to the github extension.spec-driven-dev skill is lighter. Spec Kit does not run CI, deploy, or replace code review.