spec-kit is GitHub’s official toolkit for spec-driven development (SDD). The idea is a deliberate inversion: instead of writing code and treating any spec as documentation that rots, you make the specification the source of truth and treat code as something generated from it. The tooling that enforces that loop is a Python CLI called Specify plus a set of slash commands your AI agent runs. Crucially, spec-kit is not itself an agent. It is the scaffolding that gives whatever agent you already use (Copilot, Claude Code, Cursor, Gemini CLI, and more) a structured workflow.
What problem it solves
Most AI coding sessions drift. You describe a feature, the agent writes code, and three prompts later nobody can say what the agreed behavior was. spec-kit fixes the drift by forcing artifacts to exist before code: a constitution that sets project principles, a spec that captures requirements, a plan that nails the technical approach, and a task list that sequences the work. Each is a real file in your repo, reviewable in a PR, and regenerable when reality changes. That is the durable value, and it is the reason a “toolkit” can hit six figures of stars without shipping a model of its own.
The workflow
The commands map to phases:
/speckit.constitutionwrites.specify/memory/constitution.md, your project’s governing principles./speckit.specifyproduces a feature spec underspecs/<feature>/spec.md./speckit.plangeneratesplan.md,data-model.md, andcontracts/./speckit.tasksbreaks the plan intotasks.mdwith dependencies and parallel markers./speckit.implementexecutes the tasks.
A /speckit.clarify step in between is optional but recommended for under-specified areas. The output is a tree (.specify/ for memory, templates, and scripts; specs/NNN-feature/ for the per-feature artifacts) that you typically commit so the whole team shares one source of truth.
Install
spec-kit installs through uv, not pip directly:
# Persistent install
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# Or run ephemerally
uvx specify init my-project --ai claude
The --ai flag (or --integration) selects your agent. The supported list is long: Copilot, Claude Code, Gemini CLI, Cursor, Cline, Windsurf, Roo Code, Codex CLI, Kiro, opencode, Qwen Code, and many more, with a generic fallback for anything not listed. Templates are bundled in the wheel, so air-gapped installs work.
Why the agent-agnostic design matters
This is the angle worth dwelling on. spec-kit does not bet on one agent winning. It adapts the same SDD artifacts to each host through that host’s own extension mechanism (skills for Claude Code, slash commands for Copilot, rules for Cursor). If you switch agents, the spec, plan, and tasks come with you. That portability is rare and is the practical reason teams adopt it over a workflow welded to a single tool.
When it fits, and when it does not
It fits multi-step features where getting alignment wrong is expensive, teams that want AI work to leave a reviewable paper trail, and shops with compliance needs (the preset system can enforce audits and templates). It is overkill for a one-file script or a throwaway prototype, where the ceremony costs more than it saves. And it does not write the code for you: you still iterate with your agent through clarify, plan, and implement. spec-kit structures the conversation, it does not replace it.
How it compares
| Project | What it is | Backing |
|---|---|---|
| github/spec-kit | SDD toolkit, agent-agnostic, slash-command workflow | GitHub official |
| BMAD-METHOD (bmad-code-org) | Agentic agile method with role agents | Community |
| taskmaster (eyaltoledano/claude-task-master) | Task-management layer for AI coding | Community |
| Kiro (AWS) | Spec-driven IDE/agent | Vendor product |
The differentiators for spec-kit are the official GitHub backing and the explicit neutrality toward agents. BMAD and taskmaster overlap on the “structure the work” goal but bind tighter to a particular flow or tool.
Gotchas from the issue tracker
The release pace is brisk (0.10.x shipping multiple times in early June 2026), and the live issues cluster around one theme: extension and template state sync across agents.
- Switching a project from Copilot to Claude could leave a declared git extension uninstalled because the skill file did not land in
.claude/skills/. The 0.10.0 release made the git extension opt-in to defuse this. specify integration usecould overwrite a team’s customized scripts when they were tracked in the manifest, because the hash check could not always tell a bundled default from a deliberate customization.- Preset skill overrides were sometimes skipped in marketplace mode, so a preset’s commands silently did nothing.
The pattern: spec-kit is solid at generating artifacts and rougher at keeping multi-agent installs in sync. If you run more than one agent against the same repo, expect to re-check that extensions registered correctly after upgrades.
Related reading
spec-kit targets agents like anomalyco/opencode and pairs naturally with skills collections such as anthropics/skills and obra/superpowers, which encode the how of execution while spec-kit pins down the what.