Automation & Workflows · Blog Post
Spec Kit: GitHub's answer to vibe-coding — specs your agent can execute
A one-line prompt produces a one-afternoon prototype. GitHub's spec-kit makes the specification the artifact — constitution, spec, plan, tasks — and turns your coding agent into the thing that executes it.
By Mehadi Hasan 7 min read
What it is
Spec Kit is GitHub's official, MIT-licensed toolkit for spec-driven development — at the time of writing it sits above 125k stars, which makes it one of the most-starred AI development tools on GitHub, full stop. The core idea: instead of prompting an agent with "build me a photo organizer" and hoping, you make the specification itself the executable artifact. The spec generates the plan, the plan generates the tasks, and the agent implements against all three.
It ships as a Python CLI called specify that scaffolds a set of slash commands into whichever coding agent you use — Claude Code, GitHub Copilot, Cursor, Gemini CLI, Codex, Windsurf, Roo Code, and 30+ others. The methodology is the product; the CLI just installs it.
At a glance
The repo is actively maintained by GitHub itself — 1,700+ commits and a steady release cadence — and explicitly supports both greenfield (zero-to-one builds) and brownfield work (adding features to or modernizing an existing codebase). That second case is the one most "AI project generators" quietly ignore.
How the workflow works
Once initialized, your agent gains a family of /speckit.* commands that you run in order:
- /speckit.constitution — establish the project's non-negotiable principles once (code quality bars, testing standards, performance targets)
- /speckit.specify — describe what you're building and why: requirements and user stories, deliberately free of tech-stack decisions
- /speckit.plan — now bring the stack: architecture, frameworks, and constraints turn the spec into a technical plan
- /speckit.tasks — decompose the plan into an actionable, reviewable task list
- /speckit.implement — the agent executes the tasks against the spec, plan, and constitution
Three optional passes tighten the loop when the stakes are higher: /speckit.clarify interrogates underspecified requirements before planning, /speckit.analyze checks cross-artifact consistency before implementation, and /speckit.checklist generates custom quality gates.
The separation between step 2 and step 3 is the whole trick. Because the spec is stack-agnostic, you can hand the same spec a different plan — swap Flask for Next.js, try a parallel implementation — without rewriting the requirements. The spec outlives any single implementation attempt.
Installation
You need Python 3.11+, Git, and uv (or pipx). Then:
Install the specify CLI
uv tool install specify-cli
Then initialize a project — new directory or the repo you're already in — and tell it which agent you use:
Initialize for your agent
specify init my-project --integration claude # or: copilot, cursor, gemini, codex, windsurf, roocode … specify integration list # see all 30+ supported agents
Init drops the /speckit.* command files in the right place for your agent (.claude/commands/ for Claude Code) plus the templates and scripts the workflow uses. From there everything happens inside your normal agent session.
Using it day to day
A realistic session for a real feature looks like: /speckit.specify with two paragraphs about the user problem, a read-through of the generated spec (this is where you edit — it's Markdown, not magic), /speckit.clarify if the agent flagged open questions, then plan → tasks → implement. The artifacts live in your repo, so the spec review can happen in a pull request like any other code review.
Where it earns its overhead is anything beyond a small feature: multi-day builds, features touching several subsystems, or work you'll hand between agents or teammates. The spec becomes the shared source of truth instead of a chat scrollback nobody can replay.
Pricing
Entirely free and MIT-licensed — no hosted service, no paid tier, no account. The only cost is the token usage of whichever coding agent executes the workflow, and the structured process arguably reduces that by cutting failed attempts and rework.
My take
Spec Kit is the most credible answer I've seen to the real failure mode of agentic coding: not bad code, but code that solves the wrong problem because the requirements only ever existed in your head. Forcing the "what and why" onto disk before any stack talk catches misunderstandings when they cost minutes, not days. And because it's from GitHub with 30+ agent integrations, it isn't a bet on any one assistant.
The honest caveat: for small, well-understood changes the ceremony is overhead — a bug fix does not need a constitution. It also pairs naturally with Superpowers, which governs how the agent works task-to-task while Spec Kit governs what gets built. I reach for Spec Kit at the "this would take me more than a day" threshold and skip it below that.
Frequently asked questions
Is Spec Kit only for GitHub Copilot?
No — it's agent-agnostic by design. The specify CLI generates the right command files for 30+ assistants including Claude Code, Copilot, Cursor, Gemini CLI, Codex, Windsurf, and Roo Code; you pick the target with the --integration flag at init time (run specify integration list to see them all).
Do I have to run every command in the workflow?
Only four are core: /speckit.specify, /speckit.plan, /speckit.tasks, and /speckit.implement. /speckit.constitution is worth doing once per project, and /speckit.clarify, /speckit.analyze, and /speckit.checklist are optional refinement passes for when the spec matters more than speed.
Does it work on existing codebases or only new projects?
Both — the README explicitly covers greenfield (zero-to-one) and brownfield (adding features or modernizing existing systems) development. On an existing repo you run specify init inside the project directory and it scaffolds alongside your code.
What do I need installed?
Python 3.11+, Git, the uv package manager (or pipx), and at least one supported AI coding agent. The CLI itself installs with one command: uv tool install specify-cli.