spec-kit

CLI Tool

github/spec-kit

Toolkit for Spec-Driven Development with AI agent integration.

Overview

Spec Kit is an open-source CLI toolkit that enables Spec-Driven Development. It provides commands to create specifications, generate implementation plans, and execute tasks with AI coding agents. The tool helps developers focus on product scenarios and predictable outcomes.

README Preview

\n    \n    🌱 Spec Kit\n    Build high-quality software faster.\n\n\n\n    An open source toolkit that allows you to focus on product scenarios and predictable outcomes instead of vibe coding every piece from scratch.\n\n\n\n    \n    \n    \n    \n\n\n---\n\n## Table of Contents\n\n- [🤔 What is Spec-Driven Development?](#-what-is-spec-driven-development)\n- [⚡ Get Started](#-get-started)\n- [📽️ Video Overview](#️-video-overview)\n- [🧩 Community Extensions](#-community-extensions)\n- [🎨 Community Presets](#-community-presets)\n- [🚶 Community Walkthroughs](#-community-walkthroughs)\n- [🛠️ Community Friends](#️-community-friends)\n- [🤖 Supported AI Coding Agent Integrations](#-supported-ai-coding-agent-integrations)\n- [🔧 Specify CLI Reference](#-specify-cli-reference)\n- [🧩 Making Spec Kit Your Own: Extensions & Presets](#-making-spec-kit-your-own-extensions--presets)\n- [📚 Core Philosophy](#-core-philosophy)\n- [🌟 Development Phases](#-development-phases)\n- [🎯 Experimental Goals](#-experimental-goals)\n- [🔧 Prerequisites](#-prerequisites)\n- [📖 Learn More](#-learn-more)\n- [📋 Detailed Process](#-detailed-process)\n- [🔍 Troubleshooting](#-troubleshooting)\n- [💬 Support](#-support)\n- [🙏 Acknowledgements](#-acknowledgements)\n- [📄 License](#-license)\n\n## 🤔 What is Spec-Driven Development?\n\nSpec-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.\n\n## ⚡ Get Started\n\n### 1. Install Specify CLI\n\nChoose your preferred installation method:\n\n> **Important:** The only official, maintained packages for Spec Kit are published from this GitHub repository. Any packages with the same name on PyPI are **not** affiliated with this project and are 

FAQ (5)

Troubleshooting
Why is constitution.md not referenced in SKILL.md when running 'specify init --ai codex'?

This is a bug in Specify CLI v0.8.0 where the initialization with Codex AI omitted the instruction to read .specify/memory/constitution.md. Upgrade to the latest version, as this has been fixed.

GitHub Issue #2650
Troubleshooting
Why is CLAUDE.md not generated when I run 'specify init --ai claude'?

This is a known bug in SpecKit v0.4.1. As a workaround, manually create CLAUDE.md in your project root with the following content:

## Claude's Role
Read `.specify/memory/constitution.md` first. It is the authoritative source of truth for this project. Everything in it is non-negotiable.

## SpecKit Commands
- `/speckit.specify` — generate spec
- `/speckit.plan` — generate plan
- `/speckit.tasks` — generate task list
- `/speckit.implement` — execute plan

## On Ambiguity
If a spec is missing, incomplete, or conflicts with the constitution — stop and ask. Do not infer. Do not proceed.

This file ensures Claude Code is aware of the SpecKit methodology and constitution at session start. Track the official fix at https://github.com/github/spec-kit/issues/1983.

GitHub Issue #1983
Troubleshooting
Why does `specify bundle install` fail for a pinned older component after the catalog advertises a newer version?

Upgrade to a Spec Kit release containing exact catalog-release and bundle-pin resolution (the multi-version catalog and bundler fixes). The install-allowed catalog must retain the older release in its version-specific releases metadata, including its URL, checksum, and requirements; the top-level fields still identify the current release. Then run specify bundle install. The bundler resolves each component's exact pinned version from the winning trusted source, validates the checksum and downloaded ID/version, and no longer substitutes the current release. To select a release manually, use specify <family> add <id> --version <version>; inspect available releases with specify <family> info <id> --versions. For bundles, specify bundle add <id> --version <version> selects the bundle release itself and does not override component pins in bundle.yml. If no trusted install-allowed source contains the requested version, the command fails explicitly. Discovery-only community catalogs remain current-tip listings and cannot be used as historical install sources.

GitHub Issue #4719
Troubleshooting
How to prevent AI agents from flooding PR reviews with repetitive per-comment replies?

Add a 'Responding to PR Review Comments' section to AGENTS.md with these rules: (1) Post one top-level summary comment per review round, not per review comment. (2) Use inline replies only for disagreement, deferral, or non-obvious fixes. (3) Never click 'Resolve conversation'. (4) Avoid emoji, celebratory text, or restating reviewer's items. (5) Re-request review once after all feedback is addressed. Also require agent self-disclosure (agent name, model, human actor).

GitHub Issue #2849
How-to
How to authenticate Specify with GitHub CLI (gh) credentials without storing a token?

Specify does not yet have a native github-cli auth mode (proposed in issue #4953). As a workaround, use the existing token_env mode: in ~/.specify/auth.json, configure the GitHub provider with "auth": "token_env" and "token_env": "GH_TOKEN", then run commands with the token resolved on demand: GH_TOKEN="$(gh auth token)" specify <command>. This avoids storing a token at rest in auth.json, though it requires exporting the variable per invocation or via a shell profile. The planned github-cli mode would run gh auth token automatically (cached once per host per run, no shell, with timeout and error handling for missing/unauthenticated gh), configured via "auth": "github-cli".

GitHub Issue #4953