Spec-kit
๐ค What is Spec-Driven Development?
Spec-Driven Development flips the script on traditional software development. For decades, code has been king โ specifications were just scaffolding we built and discarded once the โreal workโ of coding began. Spec-Driven Development changes this: specifications become executable, directly generating working implementations rather than just guiding them.
โก Get Started
1. Install Specify CLI
Choose your preferred installation method:
Option 1: Persistent Installation (Recommended)
Install once and use everywhere:
1 | uv tool install specify-cli --from git+https://github.com/github/spec-kit.git |
Then use the tool directly:
1 | specify init <PROJECT_NAME> |
To upgrade Specify, see the Upgrade Guide for detailed instructions. Quick upgrade:
1 | uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git |
Option 2: One-time Usage
Run directly without installing:
1 | uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME> |
Benefits of persistent installation:
- Tool stays installed and available in PATH
- No need to create shell aliases
- Better tool management with
uv tool list,uv tool upgrade,uv tool uninstall - Cleaner shell configuration
2. Establish project principles
Launch your AI assistant in the project directory. The /speckit.* commands are available in the assistant.
Use the /speckit.constitution command to create your projectโs governing principles and development guidelines that will guide all subsequent development.
1 | /speckit.constitution Create principles focused on code quality, testing standards, user experience consistency, and performance requirements |
3. Create the spec
Use the /speckit.specify command to describe what you want to build. Focus on the what and why, not the tech stack.
1 | /speckit.specify Build an application that can help me organize my photos in separate photo albums. Albums are grouped by date and can be re-organized by dragging and dropping on the main page. Albums are never in other nested albums. Within each album, photos are previewed in a tile-like interface. |
4. Create a technical implementation plan
Use the /speckit.plan command to provide your tech stack and architecture choices.
1 | /speckit.plan The application uses Vite with minimal number of libraries. Use vanilla HTML, CSS, and JavaScript as much as possible. Images are not uploaded anywhere and metadata is stored in a local SQLite database. |
5. Break down into tasks
Use /speckit.tasks to create an actionable task list from your implementation plan.
1 | /speckit.tasks |
6. Execute implementation
Use /speckit.implement to execute all tasks and build your feature according to the plan.
1 | /speckit.implement |
For detailed step-by-step instructions, see our comprehensive guide.
๐ฝ๏ธ Video Overview
Want to see Spec Kit in action? Watch our video overview!
๐ค Supported AI Agents
| Agent | Support | Notes |
|---|---|---|
| Qoder CLI | โ | |
| Amazon Q Developer CLI | โ ๏ธ | Amazon Q Developer CLI does not support custom arguments for slash commands. |
| Amp | โ | |
| Auggie CLI | โ | |
| Claude Code | โ | |
| CodeBuddy CLI | โ | |
| Codex CLI | โ | |
| Cursor | โ | |
| Gemini CLI | โ | |
| GitHub Copilot | โ | |
| IBM Bob | โ | IDE-based agent with slash command support |
| Jules | โ | |
| Kilo Code | โ | |
| opencode | โ | |
| Qwen Code | โ | |
| Roo Code | โ | |
| SHAI (OVHcloud) | โ | |
| Windsurf | โ |
๐ง Specify CLI Reference
The specify command supports the following options:
Commands
| Command | Description |
|---|---|
init |
Initialize a new Specify project from the latest template |
check |
Check for installed tools (git, claude, gemini, code/code-insiders, cursor-agent, windsurf, qwen, opencode, codex, shai, qoder) |
specify init Arguments & Options
| Argument/Option | Type | Description |
|---|---|---|
<project-name> |
Argument | Name for your new project directory (optional if using --here, or use . for current directory) |
--ai |
Option | AI assistant to use: claude, gemini, copilot, cursor-agent, qwen, opencode, codex, windsurf, kilocode, auggie, roo, codebuddy, amp, shai, q, bob, or qoder |
--script |
Option | Script variant to use: sh (bash/zsh) or ps (PowerShell) |
--ignore-agent-tools |
Flag | Skip checks for AI agent tools like Claude Code |
--no-git |
Flag | Skip git repository initialization |
--here |
Flag | Initialize project in the current directory instead of creating a new one |
--force |
Flag | Force merge/overwrite when initializing in current directory (skip confirmation) |
--skip-tls |
Flag | Skip SSL/TLS verification (not recommended) |
--debug |
Flag | Enable detailed debug output for troubleshooting |
--github-token |
Option | GitHub token for API requests (or set GH_TOKEN/GITHUB_TOKEN env variable) |
Examples
1 | # Basic project initialization |
Available Slash Commands
After running specify init, your AI coding agent will have access to these slash commands for structured development:
Core Commands
Essential commands for the Spec-Driven Development workflow:
| Command | Description |
|---|---|
/speckit.constitution |
Create or update project governing principles and development guidelines |
/speckit.specify |
Define what you want to build (requirements and user stories) |
/speckit.plan |
Create technical implementation plans with your chosen tech stack |
/speckit.tasks |
Generate actionable task lists for implementation |
/speckit.implement |
Execute all tasks to build the feature according to the plan |
Optional Commands
Additional commands for enhanced quality and validation:
| Command | Description |
|---|---|
/speckit.clarify |
Clarify underspecified areas (recommended before /speckit.plan; formerly /quizme) |
/speckit.analyze |
Cross-artifact consistency & coverage analysis (run after /speckit.tasks, before /speckit.implement) |
/speckit.checklist |
Generate custom quality checklists that validate requirements completeness, clarity, and consistency (like โunit tests for Englishโ) |
Environment Variables
| Variable | Description |
|---|---|
SPECIFY_FEATURE |
Override feature detection for non-Git repositories. Set to the feature directory name (e.g., 001-photo-albums) to work on a specific feature when not using Git branches.**Must be set in the context of the agent youโre working with prior to using /speckit.plan or follow-up commands. |
๐ Core Philosophy
Spec-Driven Development is a structured process that emphasizes:
- Intent-driven development where specifications define the โwhatโ before the โhowโ
- Rich specification creation using guardrails and organizational principles
- Multi-step refinement rather than one-shot code generation from prompts
- Heavy reliance on advanced AI model capabilities for specification interpretation
๐ Development Phases
| Phase | Focus | Key Activities |
|---|---|---|
| 0-to-1 Development (โGreenfieldโ) | Generate from scratch |
|
| Creative Exploration | Parallel implementations |
|
| Iterative Enhancement (โBrownfieldโ) | Brownfield modernization |
|
๐ฏ Experimental Goals
Our research and experimentation focus on:
Technology independence
- Create applications using diverse technology stacks
- Validate the hypothesis that Spec-Driven Development is a process not tied to specific technologies, programming languages, or frameworks
Enterprise constraints
- Demonstrate mission-critical application development
- Incorporate organizational constraints (cloud providers, tech stacks, engineering practices)
- Support enterprise design systems and compliance requirements
User-centric development
- Build applications for different user cohorts and preferences
- Support various development approaches (from vibe-coding to AI-native development)
Creative & iterative processes
- Validate the concept of parallel implementation exploration
- Provide robust iterative feature development workflows
- Extend processes to handle upgrades and modernization tasks
๐ง Prerequisites
- Linux/macOS/Windows
- Supported AI coding agent.
- uv for package management
- Python 3.11+
- Git
If you encounter issues with an agent, please open an issue so we can refine the integration.
๐ Learn More
- Complete Spec-Driven Development Methodology - Deep dive into the full process
- Detailed Walkthrough - Step-by-step implementation guide
๐ Detailed Process
Click to expand the detailed step-by-step walkthrough
You can use the Specify CLI to bootstrap your project, which will bring in the required artifacts in your environment. Run:
1 | specify init <project_name> |
Or initialize in the current directory:
1 | specify init . |

You will be prompted to select the AI agent you are using. You can also proactively specify it directly in the terminal:
1 | specify init <project_name> --ai claude |
The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, or Amazon Q Developer CLI installed. If you do not, or you prefer to get the templates without checking for the right tools, use --ignore-agent-tools with your command:
1 | specify init <project_name> --ai claude --ignore-agent-tools |
STEP 1: Establish project principles
Go to the project folder and run your AI agent. In our example, weโre using claude.

You will know that things are configured correctly if you see the /speckit.constitution, /speckit.specify, /speckit.plan, /speckit.tasks, and /speckit.implement commands available.
The first step should be establishing your projectโs governing principles using the /speckit.constitution command. This helps ensure consistent decision-making throughout all subsequent development phases:
1 | /speckit.constitution Create principles focused on code quality, testing standards, user experience consistency, and performance requirements. Include governance for how these principles should guide technical decisions and implementation choices. |
This step creates or updates the .specify/memory/constitution.md file with your projectโs foundational guidelines that the AI agent will reference during specification, planning, and implementation phases.
STEP 2: Create project specifications
With your project principles established, you can now create the functional specifications. Use the /speckit.specify command and then provide the concrete requirements for the project you want to develop.
[!IMPORTANT]
Be as explicit as possible about what you are trying to build and why. Do not focus on the tech stack at this point.
An example prompt:
1 | Develop Taskify, a team productivity platform. It should allow users to create projects, add team members, |
After this prompt is entered, you should see Claude Code kick off the planning and spec drafting process. Claude Code will also trigger some of the built-in scripts to set up the repository.
Once this step is completed, you should have a new branch created (e.g., 001-create-taskify), as well as a new specification in the specs/001-create-taskify directory.
The produced specification should contain a set of user stories and functional requirements, as defined in the template.
At this stage, your project folder contents should resemble the following:
1 | โโโ .specify |
STEP 3: Functional specification clarification (required before planning)
With the baseline specification created, you can go ahead and clarify any of the requirements that were not captured properly within the first shot attempt.
You should run the structured clarification workflow before creating a technical plan to reduce rework downstream.
Preferred order:
- Use
/speckit.clarify(structured) โ sequential, coverage-based questioning that records answers in a Clarifications section. - Optionally follow up with ad-hoc free-form refinement if something still feels vague.
If you intentionally want to skip clarification (e.g., spike or exploratory prototype), explicitly state that so the agent doesnโt block on missing clarifications.
Example free-form refinement prompt (after /speckit.clarify if still needed):
1 | For each sample project or project that you create there should be a variable number of tasks between 5 and 15 |
You should also ask Claude Code to validate the Review & Acceptance Checklist, checking off the things that are validated/pass the requirements, and leave the ones that are not unchecked. The following prompt can be used:
1 | Read the review and acceptance checklist, and check off each item in the checklist if the feature spec meets the criteria. Leave it empty if it does not. |
Itโs important to use the interaction with Claude Code as an opportunity to clarify and ask questions around the specification - do not treat its first attempt as final.
STEP 4: Generate a plan
You can now be specific about the tech stack and other technical requirements. You can use the /speckit.plan command that is built into the project template with a prompt like this:
1 | We are going to generate this using .NET Aspire, using Postgres as the database. The frontend should use |
The output of this step will include a number of implementation detail documents, with your directory tree resembling this:
1 | . |
Check the research.md document to ensure that the right tech stack is used, based on your instructions. You can ask Claude Code to refine it if any of the components stand out, or even have it check the locally-installed version of the platform/framework you want to use (e.g., .NET).
Additionally, you might want to ask Claude Code to research details about the chosen tech stack if itโs something that is rapidly changing (e.g., .NET Aspire, JS frameworks), with a prompt like this:
1 | I want you to go through the implementation plan and implementation details, looking for areas that could |
During this process, you might find that Claude Code gets stuck researching the wrong thing - you can help nudge it in the right direction with a prompt like this:
1 | I think we need to break this down into a series of steps. First, identify a list of tasks |
[!NOTE]
Claude Code might be over-eager and add components that you did not ask for. Ask it to clarify the rationale and the source of the change.
STEP 5: Have Claude Code validate the plan
With the plan in place, you should have Claude Code run through it to make sure that there are no missing pieces. You can use a prompt like this:
1 | Now I want you to go and audit the implementation plan and the implementation detail files. |
This helps refine the implementation plan and helps you avoid potential blind spots that Claude Code missed in its planning cycle. Once the initial refinement pass is complete, ask Claude Code to go through the checklist once more before you can get to the implementation.
You can also ask Claude Code (if you have the GitHub CLI installed) to go ahead and create a pull request from your current branch to main with a detailed description, to make sure that the effort is properly tracked.
[!NOTE]
Before you have the agent implement it, itโs also worth prompting Claude Code to cross-check the details to see if there are any over-engineered pieces (remember - it can be over-eager). If over-engineered components or decisions exist, you can ask Claude Code to resolve them. Ensure that Claude Code follows the constitution as the foundational piece that it must adhere to when establishing the plan.
STEP 6: Generate task breakdown with /speckit.tasks
With the implementation plan validated, you can now break down the plan into specific, actionable tasks that can be executed in the correct order. Use the /speckit.tasks command to automatically generate a detailed task breakdown from your implementation plan:
1 | /speckit.tasks |
This step creates a tasks.md file in your feature specification directory that contains:
- Task breakdown organized by user story - Each user story becomes a separate implementation phase with its own set of tasks
- Dependency management - Tasks are ordered to respect dependencies between components (e.g., models before services, services before endpoints)
- Parallel execution markers - Tasks that can run in parallel are marked with
[P]to optimize development workflow - File path specifications - Each task includes the exact file paths where implementation should occur
- Test-driven development structure - If tests are requested, test tasks are included and ordered to be written before implementation
- Checkpoint validation - Each user story phase includes checkpoints to validate independent functionality
The generated tasks.md provides a clear roadmap for the /speckit.implement command, ensuring systematic implementation that maintains code quality and allows for incremental delivery of user stories.
STEP 7: Implementation
Once ready, use the /speckit.implement command to execute your implementation plan:
1 | /speckit.implement |
The /speckit.implement command will:
- Validate that all prerequisites are in place (constitution, spec, plan, and tasks)
- Parse the task breakdown from
tasks.md - Execute tasks in the correct order, respecting dependencies and parallel execution markers
- Follow the TDD approach defined in your task plan
- Provide progress updates and handle errors appropriately
[!IMPORTANT]
The AI agent will execute local CLI commands (such asdotnet,npm, etc.) - make sure you have the required tools installed on your machine.
Once the implementation is complete, test the application and resolve any runtime errors that may not be visible in CLI logs (e.g., browser console errors). You can copy and paste such errors back to your AI agent for resolution.
๐ Troubleshooting
Git Credential Manager on Linux
If youโre having issues with Git authentication on Linux, you can install Git Credential Manager:
1 |
|
