Spec Kitty is an open-source CLI workflow for spec-driven development with AI coding agents.
It helps teams turn product intent into implementation with a repeatable path:
spec -> plan -> tasks -> spec-kitty next (agent loop) -> review -> merge.
AI coding workflows often break down on larger features:
- Requirements and design decisions drift over long agent sessions
- Parallel work is hard to coordinate across branches
- Review and acceptance criteria become inconsistent from one feature to the next
Spec Kitty addresses this with repository-native artifacts, work package workflows, and lane-aware git worktree isolation.
- Project Owners who need explicit approval boundaries and outcome accountability
- External Tech Lead Evaluators assessing delivery predictability and adoption fit
- External Architect Evaluators evaluating governance durability and boundary clarity
- External Product Manager Evaluators validating intent-to-delivery traceability
- Lead Developers coordinating implementation quality and handoffs
- Maintainers preserving operational consistency across features and agents
| Stakeholder Persona | Value Proposition |
|---|---|
| Project Owner | Faster onboarding with explicit governance checkpoints and acceptance accountability |
| External Tech Lead Evaluator | Deterministic, auditable multi-agent workflow with clear lifecycle guardrails |
| External Architect Evaluator | C4 + ADR traceability with explicit host authority and integration boundaries |
| External Product Manager Evaluator | Clear intent-to-artifact mapping and lower handoff ambiguity between product and engineering |
| Lead Developer | Structured work package flow, quality gates, and review-ready evidence trails |
| Maintainer | Stable operational model with bounded external integrations and trackable state transitions |
Try it now: pip install spec-kitty-cli && spec-kitty init my-project --ai claude
| Capability | What Spec Kitty provides |
|---|---|
| Spec-driven artifacts | Generates and maintains spec.md, plan.md, wps.yaml, and tasks.md in kitty-specs/<mission>/ |
| Work package execution | Uses canonical lifecycle lanes (planned, claimed, in_progress, for_review, in_review, approved, done, blocked, canceled) with doing as UI alias for in_progress |
| Parallel implementation model | Creates isolated git worktrees under .worktrees/; every mission executes through swim-lane worktrees, with exactly one worktree per computed swim lane |
| Live project visibility | Local dashboard for kanban and mission progress (spec-kitty dashboard) |
| Review resilience | Persisted versioned review artifacts, focused fix prompts, dirty-state classification, and arbiter checklists |
| Execution resilience | Interrupted merge recovery (merge --resume), crash recovery (implement --recover), stale-claim diagnostics (doctor) |
| Multi-agent support | Template and command generation for 13 slash-command AI agent integrations |
Quick Start β’ Claude Code Guide β’ Live Dashboard β’ 13 AI Agents β’ Full Docs
graph LR
A[π Specify<br/>WHAT to build] --> B[π― Plan<br/>HOW to build]
B --> C[π Tasks<br/>Work packages]
C --> D[β‘ spec-kitty next<br/>Agent loop]
D --> E[π Review<br/>Quality gates]
E --> F[π Merge<br/>Ship it]
style A fill:#e1f5ff
style B fill:#e1f5ff
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#e8f5e9
style F fill:#fce4ec
Current stable release line: v3.1.x (current release: 3.1.5 on main, GitHub Releases, and PyPI)
3.1.x highlights:
- Runtime loop is the primary workflow β
spec-kitty nextdrives implementation and review, and omitting--resultis a safe query-only mode - Review and merge resilience β focused fix prompts, persisted
review-cycle-N.mdartifacts,merge --resume,implement --recover, and stronger recovery diagnostics indoctor - Hosted auth and sync are first-class β browser-based
spec-kitty auth login, explicit SaaS rollout gating, and clearer tracker/discovery readiness checks - Charter bundle is now a validated contract β bundle health can be checked with
spec-kitty charter bundle validate, and worktrees read canonical charter outputs from the main checkout - Sparse-checkout failures are defended in depth β merge/implement preflights fail closed,
safe_commitrejects out-of-scope staging, andspec-kitty doctor sparse-checkout --fixrepairs legacy repos - Upgrade auto-commit is safer β rename-heavy migrations and directory-backed changes now commit cleanly during
spec-kitty upgradeinstead of tripping the staging backstop - Charter guidance is language-neutral by default β packaged defaults no longer bias planning toward pytest/junit, and scoped doctrine assets still load when no active language filter is available
- 13 slash-command agents are supported β including first-class Kiro support while retaining legacy
qcompatibility during the rebrand
Jump to: Getting Started β’ Examples β’ 13 AI Agents β’ CLI Reference β’ Worktrees β’ Troubleshooting
Spec Kitty now uses main as the stable 3.x release line.
The former 1.x line is deprecated and moves to 1.x-maintenance for maintenance-only fixes.
| Branch | Version | Status | Install |
|---|---|---|---|
| main | 3.1.x | Current stable line | pip install spec-kitty-cli |
| 1.x-maintenance | 1.x | Deprecated, maintenance-only | Install from a pinned maintenance tag or source checkout |
For users: install the stable line from PyPI with pip install spec-kitty-cli.
For existing 3.0.x users: upgrade to 3.1.x and run spec-kitty upgrade in each project β the charter rename, mission identity, and prompt-neutrality migrations remain automatic.
For existing 1.x or 2.x users: migrate to 3.1.x; 1.x-maintenance is maintenance-only and will no longer publish new PyPI releases.
Run multi-agent delivery with an external orchestrator while keeping workflow state and guardrails in spec-kitty. Core CLI orchestration is exposed as spec-kitty orchestrator-api; there is no in-core spec-kitty orchestrate shim.
Terminology note:
Mission Type= reusable blueprintMission= concrete tracked itemMission Run= runtime/session instance--missionis the canonical flag in 3.1.x;--featureis retained only as a hidden deprecated alias
# Verify host contract
spec-kitty orchestrator-api contract-version --json
# Use the reference external orchestrator
spec-kitty-orchestrator orchestrate --mission 034-my-mission --dry-run
spec-kitty-orchestrator orchestrate --mission 034-my-missionDocs:
- External provider runbook:
docs/how-to/run-external-orchestrator.md - Custom provider guide:
docs/how-to/build-custom-orchestrator.md
sequenceDiagram
participant Lead as π¨βπΌ Lead Architect
participant Claude as π€ Claude (Spec)
participant Cursor as π€ Cursor (Impl)
participant Gemini as π€ Gemini (Review)
participant Dashboard as π Live Kanban
Lead->>Claude: /spec-kitty.specify
Claude->>Dashboard: WP01-WP05 (planned)
par Parallel Work
Lead->>Cursor: implement WP01
Lead->>Cursor: implement WP02
end
Cursor->>Dashboard: WP01 β in_progress (Doing)
Cursor->>Dashboard: WP01 β for_review
Lead->>Gemini: /spec-kitty.review WP01
Gemini->>Dashboard: WP01 β done
Note over Dashboard: Real-time updates<br/>No branch switching
Key Benefits:
- π Parallel execution - Multiple WPs simultaneously
- π³ Worktree isolation - Each swim lane gets one worktree, and sequential WPs in the same swim lane reuse it
- π Full visibility - Dashboard shows who's doing what
- π Security boundary - Orchestration policy and transitions are validated at the host API boundary
Spec Kitty includes a live dashboard that automatically tracks your feature development progress. View your kanban board, monitor work package status, and see which agents are working on whatβall updating in real-time as you work.
Start the dashboard when you want it with /spec-kitty.dashboard or spec-kitty dashboard. The CLI starts the correct project dashboard if it is not already running, lets you request a specific port with --port <PORT> (defaults to auto-select from 3000-5000), can open the browser for you with --open, and stops the instance cleanly with --kill.
Key Features:
- π Kanban Board: Visual workflow across canonical lifecycle lanes (including
blockedandcanceled) withDoingrendered asin_progress - π Progress Tracking: Real-time completion percentages and task counts
- π₯ Multi-Agent Support: See which AI agents are working on which tasks
- π¦ Artifact Status: Track specification, plan, tasks, and other deliverables
- π Live Updates: Dashboard refreshes automatically as you work
Work packages flow through automated quality gates using the canonical 2.x lifecycle FSM. Agents move tasks between lanes, and the dashboard tracks state transitions in real-time.
stateDiagram-v2
[*] --> planned
planned --> claimed
claimed --> in_progress
in_progress --> for_review
in_progress --> approved: direct approval
for_review --> in_review: reviewer claims
in_review --> approved: approved
in_review --> done: approved + done
in_review --> in_progress: changes requested
in_review --> planned: replan
approved --> done
planned --> blocked
claimed --> blocked
in_progress --> blocked
for_review --> blocked
in_review --> blocked
approved --> blocked
blocked --> in_progress
planned --> canceled
claimed --> canceled
in_progress --> canceled
for_review --> canceled
in_review --> canceled
approved --> canceled
blocked --> canceled
Key Lane Transitions & CLI Commands:
planned β in_progress:/spec-kitty.implementorspec-kitty implement WP##in_progress β for_review: Automatic on completion, or manual via/spec-kitty.finalize WP##for_review β in_review: Automated by reviewer claimin_review β approved:/spec-kitty.review --approve WP##in_review β done:/spec-kitty.review --approve --done WP##in_progress β approved: Direct approval (bypasses review), seedocs/how-to/direct-approval.md
Lane terminology follows the glossary: see
glossary/contexts/orchestration.md#lane.
New to Spec Kitty? Here's the complete lifecycle from zero to shipping features:
# 1. Install the CLI
pip install spec-kitty-cli
# or
uv tool install spec-kitty-cli
# 2. Initialize your project
spec-kitty init my-project --ai claude
# 3. Verify setup (optional)
cd my-project
spec-kitty verify-setup # Checks that everything is configured correctly
# 4. View your dashboard
spec-kitty dashboard # Opens http://localhost:3000-5000What just happened:
- β
Created
.claude/commands/(or.gemini/,.cursor/, etc.) with 13 slash commands - β
Created
.kittify/directory with scripts, templates, and mission configuration - β Started real-time kanban dashboard (runs in background)
- β
Initialized git repository with proper
.gitignore
Important: If you've upgraded
spec-kitty-clivia pip/uv, runspec-kitty upgradein each of your projects to apply structural migrations.
cd your-project
spec-kitty upgrade # Upgrade to current versionThe upgrade command automatically migrates your project structure across versions:
| Version | Migration |
|---|---|
| 0.10.9 | Repair broken templates with bash script references (#62, #63, #64) |
| 0.10.8 | Move memory/ and AGENTS.md to .kittify/ |
| 0.10.6 | Simplify implement/review templates to use workflow commands |
| 0.10.2 | Update slash commands to Python CLI and flat structure |
| 0.10.0 | Remove bash scripts, migrate to Python CLI |
| 0.9.1 | Complete lane migration + normalize frontmatter |
| 0.9.0 | Flatten task lanes to frontmatter-only (no directory-based lanes) |
| 0.8.0 | Remove active-mission (missions now per-feature) |
| 0.7.3 | Update scripts for worktree feature numbering |
| 0.6.7 | Ensure software-dev and research missions present |
| 0.6.5 | Rename commands/ β command-templates/ |
| 0.5.0 | Install encoding validation git hooks |
| 0.4.8 | Add supported agent tooling directories to .gitignore |
| 0.2.0 | Rename .specify/ β .kittify/ and /specs/ β /kitty-specs/ |
Run
spec-kitty upgrade --verboseto see which migrations apply to your project.
# Preview changes without applying
spec-kitty upgrade --dry-run
# Show detailed migration information
spec-kitty upgrade --verbose
# Upgrade to specific version
spec-kitty upgrade --target 0.6.5
# Skip worktree upgrades (main project only)
spec-kitty upgrade --no-worktrees
# JSON output for CI/CD integration
spec-kitty upgrade --jsonRun spec-kitty upgrade after:
- Installing a new version of
spec-kitty-cli - Cloning a project that was created with an older version
- Seeing "Unknown mission" or missing slash commands
The upgrade command is idempotent - safe to run multiple times. It automatically detects your project's version and applies only the necessary migrations.
# Launch your chosen AI coding agent
claude # For Claude Code
# or
gemini # For Gemini CLI
# or
code # For GitHub Copilot / CursorVerify slash commands loaded:
Type /spec-kitty and you should see autocomplete with all 13 commands.
Still in main repo - Start with your project's governing principles:
/spec-kitty.charter
Create principles focused on code quality, testing standards,
user experience consistency, and performance requirements.
What this creates:
.kittify/memory/charter.md- Your project's architectural DNA- These principles will guide all subsequent development
- Missions do not have separate charters; the project charter is the single source of truth
Now begin the feature development cycle:
/spec-kitty.specify
Build a user authentication system with email/password login,
password reset, and session management. Users should be able to
register, login, logout, and recover forgotten passwords.
What this does:
- Creates
kitty-specs/auth-system/spec.mdwith user stories and mints a canonicalmission_id(ULID) inmeta.json - Enters discovery interview - Answer questions before continuing!
- All planning happens in the main repo (worktrees created later during implementation)
Note: Mission identity is a ULID (
mission_idinmeta.json). The three-digit numeric prefix (e.g.001-auth-system) is display-only and is only assigned at merge time. Branches and worktrees use the mission'smid8(first 8 chars of the ULID) for collision-free naming. See the mission identity migration runbook.
/spec-kitty.plan
Use Python FastAPI for backend, PostgreSQL for database,
JWT tokens for sessions, bcrypt for password hashing,
SendGrid for email delivery.
What this creates:
kitty-specs/001-auth-system/plan.md- Technical architecturekitty-specs/001-auth-system/data-model.md- Database schemakitty-specs/001-auth-system/contracts/- API specifications- Enters planning interview - Answer architecture questions!
/spec-kitty.research
Investigate best practices for password reset token expiration,
JWT refresh token rotation, and rate limiting for auth endpoints.
What this creates:
kitty-specs/001-auth-system/research.md- Research findings- Evidence logs for decisions made
/spec-kitty.tasks
What this creates:
kitty-specs/001-auth-system/tasks.md- Kanban checklistkitty-specs/001-auth-system/tasks/WP01.md- Work package prompts (flat structure)- Up to 10 work packages ready for implementation
Check your dashboard: You'll now see tasks in the planned lane.
spec-kitty next --agent <agent> --mission <slug>
What this does:
- Returns the next action for the mission (implement, review, decide) based on current WP states
- Your agent invokes
spec-kitty agent action implement <WP> --agent <name>per the returned action - Each call advances the WP through
planned β in_progress β for_review β approved - Repeat until all work packages reach
approved, then merge
Repeat until all work packages are done!
/spec-kitty.review
What this does:
- Auto-detects first WP with
lane: "for_review"(or specify WP ID) - Moves review execution to
lane: "in_progress"(displayed as "Doing") and shows the prompt - Agent reviews code and provides feedback or approval
- Shows commands to move to
lane: "done"(passed) orlane: "planned"(changes needed)
/spec-kitty.accept
What this does:
- Verifies all WPs have
lane: "done" - Checks metadata and activity logs
- Confirms no
NEEDS CLARIFICATIONmarkers remain - Records acceptance timestamp
/spec-kitty.merge --push
What this does:
- Switches to main branch
- Merges feature branch
- Pushes to remote (if
--pushspecified) - Cleans up worktree
- Deletes feature branch
π Feature complete! Return to main repo and start your next feature with /spec-kitty.specify
1οΈβ£ /spec-kitty.charter β In main repo (sets project principles)
2οΈβ£ /spec-kitty.specify β Create spec (in main repo)
3οΈβ£ /spec-kitty.plan β Define technical approach (in main repo)
4οΈβ£ /spec-kitty.tasks β Generate work packages (in main repo)
5οΈβ£ spec-kitty next --agent <agent> --mission <slug> β Agent loop: implement & review each WP
spec-kitty agent action implement <WP> --agent <name> β (per-WP: build the work package)
6οΈβ£ /spec-kitty.review β Review completed work
7οΈβ£ /spec-kitty.accept β Validate feature ready
8οΈβ£ /spec-kitty.merge β Merge to main + cleanup
/spec-kitty.research β After /plan: Investigate technical decisions
/spec-kitty.analyze β After /tasks: Cross-artifact consistency check
/spec-kitty.checklist β Anytime: Generate custom quality checklists
/spec-kitty.dashboard β Anytime: Open/restart the kanban dashboard
Important: Agent directories (.claude/, .codex/, .gemini/, etc.) should NEVER be committed to git.
These directories may contain:
- Authentication tokens and API keys
- User-specific credentials (auth.json)
- Session data and conversation history
Spec Kitty automatically protects you with multiple layers:
During spec-kitty init:
- β
Adds supported agent directories to
.gitignore - β
Creates
.claudeignoreto optimize AI scanning (excludes.kittify/templates)
Worktree Charter Sharing: When creating execution workspaces, Spec Kitty uses symlinks to share the charter:
.worktrees/my-feature-01J6XW9K-lane-a/.kittify/memory -> ../../../../.kittify/memory
This ensures all work packages follow the same project principles.
β DO commit:
.kittify/templates/- Command templates (source).kittify/missions/- Mission workflows.kittify/memory/charter.md- Project principles.gitignore- Protection rules
β NEVER commit:
.claude/,.gemini/,.cursor/, etc. - Agent runtime directories- Any
auth.jsonor credentials files
See AGENTS.md for complete guidelines.
Spec Kitty differentiates between the project that holds your entire codebase, the features you build within that project, and the mission that defines your workflow. Use these definitions whenever you write docs, prompts, or help text.
For glossary-first terminology (including semantic-integrity rules), see glossary/README.md.
Definition: The entire codebase (one Git repository) that contains all missions, features, and .kittify/ automation.
Examples:
- "spec-kitty project" (this repository)
- "priivacy_rust project"
- "my-agency-portal project"
Usage: Projects are initialized once with spec-kitty init. A project contains:
- One active mission at a time
- Multiple features (each with its own spec/plan/tasks)
- Shared automation under
.kittify/
Commands: Initialize with spec-kitty init for the current directory by default (or pass spec-kitty init my-project to create a project directory).
Definition: A single unit of work tracked by Spec Kitty. Every feature has its own spec, plan, tasks, and one or more swim-lane worktrees.
Mission identity (as of mission 083): A mission's canonical machine identity is
mission_idβ a ULID minted at creation and immutable for the lifetime of the mission. The three-digitmission_numberprefix shown in directory names is display-only metadata and is assigned at merge time. Selectors usemission_id,mid8(first 8 chars of the ULID), ormission_slug; ambiguous handles return a structured error. See the mission identity migration runbook.
Examples:
- "001-auth-system feature"
- "005-refactor-mission-system feature" (this document)
- "042-dashboard-refresh feature"
Structure:
- Specification:
/kitty-specs/<human-slug>/spec.md(directory listing showsNNN-<human-slug>oncemission_numberis assigned at merge) - Plan:
/kitty-specs/<human-slug>/plan.md - Tasks:
/kitty-specs/<human-slug>/tasks.md - Implementation: swim-lane worktrees such as
.worktrees/<human-slug>-<mid8>-lane-a/,.worktrees/<human-slug>-<mid8>-lane-b/, and so on (e.g..worktrees/my-feature-01J6XW9K-lane-a/)
Lifecycle:
/spec-kitty.specifyβ Create the feature and its branch/spec-kitty.planβ Document the technical design/spec-kitty.tasksβ Break work into packagesspec-kitty nextβ Drive the agent loop; your agent callsspec-kitty agent action implementper WP/spec-kitty.reviewβ Peer review/spec-kitty.acceptβ Validate according to gates/spec-kitty.mergeβ Merge and clean up
Commands: Always create features with /spec-kitty.specify.
Compatibility note: In current 2.x, feature slugs remain the practical artifact key for kitty-specs/ and worktrees.
Definition: A domain adapter that configures Spec Kitty (workflows, templates, validation). Missions are project-wide; all features in a project share the same active mission.
Examples:
- "software-dev mission" (ship software with TDD)
- "research mission" (conduct systematic investigations)
- "writing mission" (future workflow)
What missions define:
- Workflow phases (e.g., design β implement vs. question β gather findings)
- Templates (spec, plan, tasks, prompts)
- Validation rules (tests pass vs. citations documented)
- Path conventions (e.g.,
src/vs.research/)
Scope: Entire project. In current 2.x, mission is selected at init and remains fixed for the project lifecycle.
Runtime note: Mission-run identity (mission_id / mission_run_id) is the preferred runtime collaboration scope when available.
Commands:
- Select at init:
spec-kitty init my-project --mission research - Inspect:
spec-kitty mission current/spec-kitty mission list
| Term | Scope | Example | Key Command |
|---|---|---|---|
| Project | Entire codebase | "spec-kitty project" | spec-kitty init my-project |
| Feature | Unit of work | "001-auth-system feature" | /spec-kitty.specify "auth system" |
| Mission | Workflow adapter | "research mission" | spec-kitty init --mission research |
Q: What's the difference between a project and a feature?
A project is your entire git repository. A feature is one unit of work inside that project with its own spec/plan/tasks.
Q: Can I have multiple missions in one project?
Only one mission is active at a time in current 2.x. Select it during spec-kitty init.
Q: Should I create a new project for every feature?
No. Initialize a project once, then create as many features as you need with /spec-kitty.specify.
Q: What's a task? Tasks (T001, T002, etc.) are subtasks within a feature's work packages. They are not separate features or projects.
Learn from real-world workflows used by teams building production software with AI agents. Each playbook demonstrates specific coordination patterns and best practices:
-
Multi-Agent Feature Development Coordinate 3-5 AI agents on a single large feature using an external orchestrator plus host API
-
Parallel Implementation Tracking Monitor multiple teams/agents delivering features simultaneously with dashboard metrics
-
Dashboard-Driven Development Product trio workflow: PM + Designer + Engineers using live kanban visibility
-
Claude + Cursor Collaboration Blend different AI agents within a single spec-driven workflow
Browse our examples directory for additional workflows including:
- Agency client transparency workflows
- Solo developer productivity patterns
- Enterprise parallel development
- Research mission templates
Spec Kitty integrates with 14 AI tools. Thirteen tools receive project-local slash commands or prompt files written to an agent-specific directory (for example .claude/commands/ or .codex/prompts/). One tool β Mistral Vibe β uses the Agent Skills pipeline: Spec Kitty installs shared skills once under .agents/skills/spec-kitty.<command>/, and Vibe discovers them through project-local .vibe/config.toml skill_paths.
| Tool | Support | Notes |
|---|---|---|
| Claude Code | β | |
| GitHub Copilot | β | |
| Gemini CLI | β | |
| Cursor | β | |
| Qwen Code | β | |
| opencode | β | |
| Windsurf | β | |
| Kilo Code | β | |
| Auggie CLI | β | |
| Roo Code | β | |
| Codex CLI | β | Project-local prompts under .codex/prompts/. |
| Mistral Vibe | β | Agent Skills under .agents/skills/, registered through .vibe/config.toml skill_paths. |
| Kiro CLI (formerly Amazon Q Developer CLI) | β | Saved-prompt arguments work via $ARGUMENTS, but the full invocation must be shell-quoted (e.g. kiro '@speckit.specify my description'). See kirodotdev/Kiro#4141. |
| Amazon Q Developer CLI (legacy) | Legacy surface retained as q; rebranded to Kiro CLI, and custom arguments are still unsupported. |
The spec-kitty command supports the following user-facing commands. Planning commands begin with guided interviews, so be prepared to answer follow-up questions before files are touched.
| Command | Description |
|---|---|
init |
Initialize a new Spec Kitty project scaffold |
specify |
Create a mission scaffold under kitty-specs/ |
plan |
Scaffold plan.md for a mission |
tasks |
Finalize work-package metadata after task planning |
next |
Decide and emit the next runtime action for an agent |
accept |
Validate mission readiness before merging |
merge |
Merge a completed mission and clean up lane worktrees |
dashboard |
Start, inspect, or stop the Spec Kitty dashboard |
upgrade |
Upgrade a project to the current CLI/project contract |
verify-setup |
Verify tooling, mission files, and environment health |
doctor |
Run project health diagnostics and recovery checks |
auth |
Authenticate against the Spec Kitty SaaS surface |
charter |
Manage charter generation, sync, and validation |
tracker |
Task-tracker commands and hosted discovery flows |
orchestrator-api |
Host contract for external orchestrators |
| Argument/Option | Type | Description |
|---|---|---|
<project-name> |
Argument | Name for your new project directory. Omit it, or pass ., to initialize the current directory. |
--ai |
Option | Comma-separated AI assistant keys. Current init --help examples include codex, claude, gemini, cursor, qwen, opencode, windsurf, kilocode, auggie, roo, copilot, q, and kiro. |
--non-interactive, --yes |
Flag | Run without prompts. Suitable for CI/CD and automation; --ai is required in this mode. |
spec-kitty init creates project files only. It does not initialize Git, does not create commits, and missions are selected later during /spec-kitty.specify.
# Basic initialization in current directory (default)
spec-kitty init --ai claude
# Basic project initialization in a new directory
spec-kitty init my-project
# Initialize with specific AI assistant
spec-kitty init my-project --ai claude
# Initialize with Cursor support
spec-kitty init my-project --ai cursor
# Initialize with Windsurf support
spec-kitty init my-project --ai windsurf
# Initialize in current directory
spec-kitty init . --ai copilot
# Initialize multiple agents in one pass
spec-kitty init my-project --ai claude,codex
# Non-interactive setup for automation
spec-kitty init my-project --ai gemini --non-interactive
# Use a local template checkout during Spec Kitty development
SPEC_KITTY_TEMPLATE_ROOT=/path/to/spec-kitty spec-kitty init my-project --ai claude
# Check system requirements
spec-kitty verify-setup --diagnostics| Option | Description |
|---|---|
--dry-run |
Preview changes without applying them |
--force |
Skip confirmation prompts |
--target <version> |
Target version to upgrade to (defaults to current CLI version) |
--json |
Output results as JSON (for CI/CD integration) |
--verbose, -v |
Show detailed migration information |
--no-worktrees |
Skip upgrading worktrees (main project only) |
Examples:
# Upgrade to current version
spec-kitty upgrade
# Preview what would be changed
spec-kitty upgrade --dry-run
# Upgrade with detailed output
spec-kitty upgrade --verbose
# Upgrade to specific version
spec-kitty upgrade --target 0.6.5
# JSON output for scripting
spec-kitty upgrade --json
# Skip worktree upgrades
spec-kitty upgrade --no-worktreesThe spec-kitty agent namespace provides programmatic access to all workflow automation commands. All commands support --json output for agent consumption.
Feature Management:
spec-kitty agent mission create <name>β Create a new mission with worktree supportspec-kitty agent mission check-prerequisitesβ Validate project setup and mission contextspec-kitty agent mission setup-planβ Initialize the plan template for a missionspec-kitty agent context updateβ Update agent context filesspec-kitty agent mission acceptβ Run acceptance workflowspec-kitty agent mission mergeβ Merge the mission branch and clean up
Task Workflow:
spec-kitty agent action implement <id> --agent __AGENT__β Advance planned/claimed β in_progress β for_review automaticallyspec-kitty agent action review <id> --agent __AGENT__β Advance for_review β in_progress β planned/done automaticallyspec-kitty agent tasks list-tasksβ List all tasks grouped by lanespec-kitty agent tasks mark-status <id> --status <status>β Mark task statusspec-kitty agent tasks add-history <id> --note <message>β Add activity log entryspec-kitty agent tasks validate-workflow <id>β Validate task metadata
Workflow Commands:
spec-kitty agent action implement [WP_ID] --agent __AGENT__β Display WP prompt and auto-move toin_progress("Doing")spec-kitty agent action review [WP_ID] --agent __AGENT__β Display WP prompt for review and auto-move toin_progress("Doing")
Note: In generated agent command files, __AGENT__ is replaced at init time with the agent key (e.g., codex, claude). If you run commands manually, replace __AGENT__ with your agent name.
Example Usage:
# Create mission (agent-friendly)
spec-kitty agent mission create "Payment Flow" --json
# Display WP prompt and auto-move to in_progress ("Doing")
spec-kitty agent action implement WP01 --agent __AGENT__
# Run workflow to advance lanes
spec-kitty agent action implement WP01 --agent __AGENT__
# Validate workflow
spec-kitty agent tasks validate-workflow WP01 --json
# Accept mission
spec-kitty agent mission accept --json| Option | Description |
|---|---|
--port <number> |
Preferred port for the dashboard (falls back to first available port) |
--kill |
Stop the running dashboard for this project and clear its metadata |
Examples:
# Open dashboard (auto-detects port)
spec-kitty dashboard
# Open on specific port
spec-kitty dashboard --port 4000
# Stop dashboard
spec-kitty dashboard --kill| Option | Description |
|---|---|
--mission <slug> |
Mission slug to accept |
--mode <mode> |
Acceptance mode: auto, pr, local, or checklist (default: auto) |
--actor <name> |
Name to record as the acceptance actor |
--test <command> |
Validation command to execute (repeatable) |
--json |
Emit JSON instead of formatted text |
--lenient |
Skip strict metadata validation |
--no-commit |
Skip auto-commit; report only |
--allow-fail |
Return checklist even when issues remain |
Examples:
# Validate feature (auto-detect)
spec-kitty accept
# Validate specific mission
spec-kitty accept --mission 001-auth-system
# Get checklist only (no commit)
spec-kitty accept --mode checklist
# Accept with custom test validation
spec-kitty accept --test "pytest tests/" --test "npm run lint"
# JSON output for CI integration
spec-kitty accept --json| Option | Description |
|---|---|
--strategy <type> |
Merge strategy: merge, squash, or rebase (default: merge) |
--delete-branch / --keep-branch |
Delete or keep feature branch after merge (default: delete) |
--remove-worktree / --keep-worktree |
Remove or keep resolved swim-lane worktrees after merge (default: remove) |
--push |
Push to origin after merge |
--target <branch> |
Target branch to merge into (default: main) |
--dry-run |
Show what would be done without executing |
Examples:
# Standard merge and push
spec-kitty merge --push
# Squash commits into one
spec-kitty merge --strategy squash --push
# Keep branch for reference
spec-kitty merge --keep-branch --push
# Preview merge without executing
spec-kitty merge --dry-run
# Merge to different target
spec-kitty merge --target develop --pushVerifies that the current environment matches Spec Kitty expectations:
- Checks for
.kittify/directory structure - Validates agent command files exist
- Confirms dashboard can start
- Reports any configuration issues
Example:
cd my-project
spec-kitty verify-setupShows project health and diagnostics information:
- Active mission
- Available features
- Dashboard status
- Git configuration
- Agent command availability
Example:
spec-kitty diagnosticsAfter running spec-kitty init, your AI coding agent will have access to these slash commands for structured development.
π Quick Reference: See the command order flowchart above for a visual workflow guide.
Workflow sequence for spec-driven development:
| # | Command | Description |
|---|---|---|
| 1 | /spec-kitty.charter |
(First in main repo) Create or update project governing principles and development guidelines |
| 2 | /spec-kitty.specify |
Define what you want to build (requirements and user stories; creates worktree) |
| 3 | /spec-kitty.plan |
Create technical implementation plans with your chosen tech stack |
| 4 | /spec-kitty.research |
Run Phase 0 research scaffolding to populate research.md, data-model.md, and evidence logs |
| 5 | /spec-kitty.tasks |
Generate actionable task lists and work package prompts in flat tasks/ directory |
| 6 | spec-kitty next |
Drive the agent loop: returns the next action (implement, review, decide) per WP based on mission state |
| 7 | /spec-kitty.review |
Display WP prompt for review, auto-move to in_progress ("Doing"), show next steps |
| 8 | /spec-kitty.accept |
Run final acceptance checks, record metadata, and verify feature complete |
| 9 | /spec-kitty.merge |
Merge feature into main branch and clean up worktree |
Optional commands for enhanced quality and development:
| Command | When to Use |
|---|---|
/spec-kitty.analyze |
Optional, after /spec-kitty.tasks, before starting the spec-kitty next loop: Cross-artifact consistency & coverage analysis |
/spec-kitty.checklist |
Optional, anytime after /spec-kitty.plan: Generate custom quality checklists that validate requirements completeness, clarity, and consistency |
/spec-kitty.dashboard |
Anytime (runs in background): Open the real-time kanban dashboard in your browser. Automatically starts with spec-kitty init and updates as you work. |
π Quick Start: See the Getting Started guide for practical examples of worktree usage in context.
Spec Kitty uses an opinionated swim-lane worktree model for parallel feature development. Think of each computed lane as a swim lane on the board: that swim lane owns one long-lived branch and one long-lived worktree, and sequential WPs stay in that swim lane instead of creating a fresh worktree per WP.
graph TD
Main[main branch<br/>π Clean production code]
WT1[.worktrees/001-auth-lane-a<br/>π Shared foundation swim lane]
WT2[.worktrees/001-auth-lane-b<br/>πΎ Parallel API swim lane]
WT3[.worktrees/002-dashboard-lane-a<br/>π Dashboard swim lane]
Main --> WT1
Main --> WT2
Main --> WT3
WT1 -.->|π Parallel work| WT2
WT2 -.->|β
No conflicts| WT3
style Main fill:#e8f5e9
style WT1 fill:#e1f5ff
style WT2 fill:#fff3e0
style WT3 fill:#f3e5f5
Why this works:
- Planning stays in the main checkout, so artifacts remain visible and auditable
- Sequential WPs in the same swim lane reuse the same worktree instead of spinning up a new one
- Independent swim lanes still run in parallel in separate directories with separate branches
- If task finalization computes one swim lane, the feature uses one worktree
- Main branch stays clean without manual
git checkoutjuggling
my-project/ # Main repo (main branch)
βββ .worktrees/
β βββ 001-auth-system-lane-a/ # Feature 1 swim lane A (shared by sequential WPs)
β βββ 001-auth-system-lane-b/ # Feature 1 swim lane B (parallel work)
β βββ 002-dashboard-lane-a/ # Single-swim-lane feature
βββ .kittify/
βββ kitty-specs/
βββ ... (main branch files)
- Planning commands run in the primary repo root
- Implementation branches live under
.worktrees/ - Trust the path printed by Spec Kitty instead of guessing the worktree name
- Swim-lane features reuse
.worktrees/<feature>-lane-<id>when multiple WPs share a swim lane - One computed swim lane means one worktree for the whole feature
- Automatic cleanup removes swim-lane worktrees after merge
# ========== IN MAIN REPO ==========
/spec-kitty.charter # Step 1: Establish project governance (one time per project)
# ========== PLAN IN MAIN REPO ==========
/spec-kitty.specify # Step 2: Create the feature artifacts
/spec-kitty.plan # Step 3: Design technical implementation
/spec-kitty.research # Step 4 (as needed): Research technologies, patterns, etc.
/spec-kitty.tasks # Step 5: Break plan into actionable tasks
/spec-kitty.analyze # Step 6 (optional): Check cross-artifact consistency
# ========== RUN AGENT LOOP (implement + review each WP) ==========
spec-kitty next --agent <agent> --mission <slug> # Step 7: Start the agent loop
# Your agent calls: spec-kitty agent action implement WP01 --agent <name>
# Then: spec-kitty agent action review WP01 --agent <name>
# Repeat for each WP until all are done.
# ========== IN EXECUTION WORKSPACE ==========
# spec-kitty next handles dispatch to agent action implement/review for each WP
/spec-kitty.review # Step 9: Review and refine completed work
/spec-kitty.accept # Step 10: Acceptance checks & final metadata
/spec-kitty.merge --push # Step 11: Merge to main + cleanup swim-lane worktrees
# ========== BACK IN MAIN REPO ==========
# Ready for next feature!Spec Kitty supports missions: curated bundles of templates, commands, and guardrails for different domains. Two missions ship out of the box:
- Software Dev Kitty β the original Spec-Driven Development workflow for shipping application features (default).
- Deep Research Kitty β a methodology-focused workflow for evidence gathering, analysis, and synthesis.
Each mission lives under .kittify/missions/<mission-key>/ and provides:
- Mission-specific templates (
spec-template.md,plan-template.md,tasks-template.md, etc.) - Command guidance tuned to the domain (
specify,plan,tasks,implement,review,accept) - Optional charters to bias the agent toward best practices
Choose your mission during initialization:
# Select mission interactively
spec-kitty init my-project --ai claude
# Or specify mission directly
spec-kitty init my-project --ai claude --mission software-dev
spec-kitty init research-project --ai claude --mission researchAfter initialization, mission selection is recorded in project metadata:
# View active mission
spec-kitty mission current
# Project metadata
cat .kittify/metadata.yamlNote: In current 2.x, missions are selected during spec-kitty init and remain active for the project lifecycle.
| Variable | Description |
|---|---|
SPEC_KITTY_TEMPLATE_ROOT |
Optional. Point to a local checkout whose templates/, scripts/, and memory/ directories should seed new projects (handy while developing Spec Kitty itself). |
SPECIFY_TEMPLATE_REPO |
Optional. Override the GitHub repository slug (owner/name) to fetch templates from when you explicitly want a remote source. |
SPEC_KITTY_NON_INTERACTIVE |
Force non-interactive init behavior. Equivalent to passing --non-interactive / --yes. |
SPEC_KITTY_ENABLE_SAAS_SYNC |
Opt in to hosted auth, tracker, and sync flows. Leave unset for local-only workflows. |
SPEC_KITTY_SAAS_URL |
Override the SaaS base URL used by spec-kitty auth, tracker discovery, and hosted sync flows. |
CODEX_HOME |
Required when using the Codex CLI so it loads project-specific prompts. Point it to your projectβs .codex/ directoryβset it manually with export CODEX_HOME=\"$(pwd)/.codex\" or automate it via direnv on Linux/macOS/WSL. |
- Linux/macOS (or WSL2 on Windows)
- AI coding agent: Claude Code, GitHub Copilot, Gemini CLI, Cursor, Qwen CLI, opencode, Codex CLI, Mistral Vibe, Windsurf, or Kiro CLI (formerly Amazon Q Developer CLI)
- 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.
The stable 3.x line now lives on main and publishes from semantic tags in the form vX.Y.Z.
Prerelease testing builds can also publish from main using tags such as vX.Y.ZaN.
The release workflow publishes both GitHub release artifacts and the PyPI package.
- Configure PyPI Trusted Publishing for
spec-kitty-cliagainst.github/workflows/release.yml. - Keep
1.x-maintenancemaintenance-only; do not use it for new PyPI releases.
git checkout main
git pull origin main
git checkout -b release/vX.Y.Z
# Update pyproject.toml to a release version (example: X.Y.Z or X.Y.ZaN)
# Add CHANGELOG.md entry under: ## [X.Y.Z] - YYYY-MM-DD (or prerelease ## [X.Y.ZaN] - YYYY-MM-DD)python scripts/release/validate_release.py --mode branch --tag-pattern "v*.*.*"
python -m pytest
python -m build
twine check dist/*
rm -rf dist/ build/git add pyproject.toml CHANGELOG.md
git commit -m "chore(release): prepare X.Y.Z"
git push origin release/vX.Y.ZAfter review, merge into main with a linear-history strategy (rebase).
git checkout main
git pull origin main
git tag vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.ZFor prereleases, use the exact prerelease tag instead:
git tag vX.Y.ZaN -m "Release vX.Y.ZaN"
git push origin vX.Y.ZaNThis triggers .github/workflows/release.yml.
gh release view vX.Y.Z
python -m pip index versions spec-kitty-clirelease-readiness.yml: runs on PRs tomain(and2.xif the maintenance branch is still active) to validate version/changelog/tests.release.yml: runs on stable and prereleasev*.*.*tags and performs:- test execution
- release metadata validation
- artifact build and checksums
- PyPI publication via Trusted Publishing
- GitHub Release creation with changelog notes, marked as prerelease when the tag is a prerelease
Validation fails: "Version does not advance beyond latest tag"
- Check latest tag:
git tag --list 'v*.*.*' --sort=-version:refname | head -1 - Bump
pyproject.tomlto a higher semantic version
Validation fails: "CHANGELOG.md lacks a populated section"
- Add
## [X.Y.Z]with release notes inCHANGELOG.md
Tag already exists:
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
git tag vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.ZInstalling a prerelease from PyPI:
python -m pip install --upgrade --pre spec-kitty-clipython -m pip install --upgrade "spec-kitty-cli==X.Y.ZaN"
RELEASE_CHECKLIST.mddocs/how-to/2-1-main-cutover-checklist.mdscripts/release/README.md.github/workflows/release.yml
- Complete Spec-Driven Development Methodology - Deep dive into the full process
- Getting Started Guide - Step-by-step walkthrough from installation to feature completion
If you're contributing to Spec Kitty or working with the source code directly, you'll need to install it in development mode:
# Clone the repository
git clone https://github.com/Priivacy-ai/spec-kitty.git
cd spec-kitty
# Install in editable mode with development dependencies
pip install -e ".[test]"
# When running spec-kitty init, set the template root to your local checkout:
export SPEC_KITTY_TEMPLATE_ROOT=$(pwd)
spec-kitty init <PROJECT_NAME> --ai=claude
# Or use the --template-root flag directly (no env var needed):
spec-kitty init <PROJECT_NAME> --ai=claude --template-root=/path/to/spec-kittyThe CLI searches for templates in this order:
- Packaged resources: Built-in templates from the installed
spec-kitty-cli - Environment override:
SPEC_KITTY_TEMPLATE_ROOTfor local development or source checkouts - Remote repository:
SPECIFY_TEMPLATE_REPOwhen you explicitly want a remote template source
For development installs from source, set SPEC_KITTY_TEMPLATE_ROOT to your checkout before running spec-kitty init.
This error occurs when spec-kitty init cannot locate the template files. Here's how to diagnose and fix it:
For PyPI installations:
# Reinstall the package
pip install --upgrade spec-kitty-cli
# Verify templates are bundled
python -c "from importlib.resources import files; print(files('specify_cli').joinpath('templates'))"For development installations:
# Make sure you installed in editable mode from the repo root
cd /path/to/spec-kitty
pip install -e .
# Option 1: Use environment variable
export SPEC_KITTY_TEMPLATE_ROOT=$(pwd)
spec-kitty init my-project --ai=claude
# Option 2: Use --template-root flag (no env var needed)
spec-kitty init my-project --ai=claude --template-root=$(pwd)
# Option 3: Verify the path exists
ls -la ./templates/commandsFor moved repositories: If you cloned the spec-kitty repo and moved the directory, update the environment variable:
export SPEC_KITTY_TEMPLATE_ROOT=/new/path/to/spec-kitty
spec-kitty init my-project --ai=claudeDebugging with verbose output:
# Use --debug flag to see which paths were checked
spec-kitty init my-project --ai=claude --debug --template-root=/path/to/spec-kittyIf you're having issues with Git authentication on Linux, you can install Git Credential Manager:
#!/usr/bin/env bash
set -e
echo "Downloading Git Credential Manager v2.6.1..."
wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb
echo "Installing Git Credential Manager..."
sudo dpkg -i gcm-linux_amd64.2.6.1.deb
echo "Configuring Git to use GCM..."
git config --global credential.helper manager
echo "Cleaning up..."
rm gcm-linux_amd64.2.6.1.deb- Spec Kitty maintainers (contributors)
For support, please open a GitHub issue. We welcome bug reports, feature requests, and questions about using Spec-Driven Development.
This project is heavily influenced by and based on the work and research of John Lam.
This project is licensed under the terms of the MIT open source license. Please refer to the LICENSE file for the full terms.


