{"id":30900006,"url":"https://github.com/github/spec-kit","last_synced_at":"2026-06-03T23:00:43.886Z","repository":{"id":312968486,"uuid":"1042367133","full_name":"github/spec-kit","owner":"github","description":"💫 Toolkit to help you get started with Spec-Driven Development","archived":false,"fork":false,"pushed_at":"2026-05-30T00:52:42.000Z","size":8863,"stargazers_count":107033,"open_issues_count":433,"forks_count":9472,"subscribers_count":577,"default_branch":"main","last_synced_at":"2026-05-30T01:05:56.228Z","etag":null,"topics":["ai","copilot","development","engineering","prd","spec","spec-driven"],"latest_commit_sha":null,"homepage":"https://github.github.com/spec-kit/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/github.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-21T22:54:31.000Z","updated_at":"2026-05-30T01:04:47.000Z","dependencies_parsed_at":"2025-09-03T06:08:43.542Z","dependency_job_id":"c88be9b2-f664-463f-8ec3-1bc9be282d6c","html_url":"https://github.com/github/spec-kit","commit_stats":null,"previous_names":["github/spec-kit"],"tags_count":151,"template":false,"template_full_name":null,"purl":"pkg:github/github/spec-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fspec-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fspec-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fspec-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fspec-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/github","download_url":"https://codeload.github.com/github/spec-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/github%2Fspec-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33883102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","copilot","development","engineering","prd","spec","spec-driven"],"created_at":"2025-09-09T05:00:52.908Z","updated_at":"2026-06-03T23:00:43.876Z","avatar_url":"https://github.com/github.png","language":"Python","funding_links":[],"categories":["Python","AI","Shell","🤖 AI \u0026 Machine Learning","Popular Frameworks","🧭 Core \u0026 Foundations","🤖 AI Agents","Specs, Agent Files \u0026 Workflow Design","AI \u0026 LLM","🛠️ Tools","AI开源项目","🚀 AI Tools for Vim, Neovim, and Terminal","HarmonyOS","AI driven development","Resources","AI 相关","Development Workflows \u0026 Agents","관련 프로젝트","🧠 Workflow Systems \u0026 Spec-Driven Development","Configuration \u0026 Rules","Extensions, Skills \u0026 Rules","Awesome Tools"],"sub_categories":["Specification-First Development Frameworks","T2 · Spec-Driven Development \u0026 Context Engineering","LLM Apps \u0026 Interfaces","Spec Driven Development","AI Skills","Windows Manager","Spec Tools","Other IDEs","Quality Standards","실행","Methodologies \u0026 Spec-Driven Workflows","Specification Driven Development (SDD)"],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./media/logo_large.webp\" alt=\"Spec Kit Logo\" width=\"200\" height=\"200\"/\u003e\n    \u003ch1\u003e🌱 Spec Kit\u003c/h1\u003e\n    \u003ch3\u003e\u003cem\u003eBuild high-quality software faster.\u003c/em\u003e\u003c/h3\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eAn open source toolkit that allows you to focus on product scenarios and predictable outcomes instead of vibe coding every piece from scratch.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/github/spec-kit/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/github/spec-kit\" alt=\"Latest Release\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/github/spec-kit/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/github/spec-kit?style=social\" alt=\"GitHub stars\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/github/spec-kit/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/github/spec-kit\" alt=\"License\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.github.io/spec-kit/\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-GitHub_Pages-blue\" alt=\"Documentation\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\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](#-community)\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 \u0026 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- [💬 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\nRequires **[uv](https://docs.astral.sh/uv/)** ([install uv](./docs/install/uv.md)). Replace `vX.Y.Z` with the latest tag from [Releases](https://github.com/github/spec-kit/releases):\n\n```bash\nuv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z\n```\n\nSee the [Installation Guide](./docs/installation.md) for alternative methods, verification, upgrade, and troubleshooting.\n\n### 2. Initialize a project\n\n```bash\nspecify init my-project --integration copilot\ncd my-project\n```\n\nTo check for updates or upgrade the installed CLI, use the self-management commands. See the [Upgrade Guide](./docs/upgrade.md) for detailed scenarios and customization options.\n\n```bash\n# Check whether a newer release is available (read-only — does not modify anything)\nspecify self check\n\n# Preview what would run, without actually upgrading\nspecify self upgrade --dry-run\n\n# Upgrade in place to the latest stable release (auto-detects uv tool vs pipx install)\nspecify self upgrade\n\n# Or pin a specific release tag (replace vX.Y.Z[suffix] with your desired release tag)\nspecify self upgrade --tag vX.Y.Z[suffix]\n```\n\nBare `specify self upgrade` executes immediately, matching the no-prompt behavior of commands like `pip install -U` and `npm update`. For `uv tool` installs, it runs `uv tool install specify-cli --force --from \u003cgit ref\u003e` under the hood so pinned release tags work, including dev, alpha/beta/rc, or build metadata suffixes. `uvx` (ephemeral) runs and source checkouts are detected and produce path-specific guidance instead of running an installer. Set `SPECIFY_UPGRADE_TIMEOUT_SECS` to cap how long the installer subprocess may run (default: no timeout — interrupt with `Ctrl+C` if needed).\n\n### 3. Establish project principles\n\nLaunch your coding agent in the project directory. Most agents expose spec-kit as `/speckit.*` slash commands; Codex CLI in skills mode uses `$speckit-*` instead.\n\nUse the **`/speckit.constitution`** command to create your project's governing principles and development guidelines that will guide all subsequent development.\n\n```bash\n/speckit.constitution Create principles focused on code quality, testing standards, user experience consistency, and performance requirements\n```\n\n### 4. Create the spec\n\nUse the **`/speckit.specify`** command to describe what you want to build. Focus on the **what** and **why**, not the tech stack.\n\n```bash\n/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.\n```\n\n### 5. Create a technical implementation plan\n\nUse the **`/speckit.plan`** command to provide your tech stack and architecture choices.\n\n```bash\n/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.\n```\n\n### 6. Break down into tasks\n\nUse **`/speckit.tasks`** to create an actionable task list from your implementation plan.\n\n```bash\n/speckit.tasks\n```\n\n### 7. Execute implementation\n\nUse **`/speckit.implement`** to execute all tasks and build your feature according to the plan.\n\n```bash\n/speckit.implement\n```\n\nFor detailed step-by-step instructions, see our [comprehensive guide](./spec-driven.md).\n\n## 📽️ Video Overview\n\nWant to see Spec Kit in action? Watch our [video overview](https://www.youtube.com/watch?v=a9eR1xsfvHg\u0026pp=0gcJCckJAYcqIYzv)!\n\n[![Spec Kit video header](/media/spec-kit-video-header.jpg)](https://www.youtube.com/watch?v=a9eR1xsfvHg\u0026pp=0gcJCckJAYcqIYzv)\n\n## 🌍 Community\n\nExplore community-contributed resources on the [Spec Kit docs site](https://github.github.io/spec-kit/):\n\n- [Extensions](https://github.github.io/spec-kit/community/extensions.html) — commands, hooks, and capabilities\n- [Presets](https://github.github.io/spec-kit/community/presets.html) — template and terminology overrides\n- [Walkthroughs](https://github.github.io/spec-kit/community/walkthroughs.html) — end-to-end SDD scenarios\n- [Friends](https://github.github.io/spec-kit/community/friends.html) — projects that extend or build on Spec Kit\n\n\u003e [!NOTE]\n\u003e Community contributions are independently created and maintained by their respective authors. Review source code before installation and use at your own discretion.\n\nWant to contribute? See the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md) or the [Presets Publishing Guide](presets/PUBLISHING.md).\n\n## 🤖 Supported AI Coding Agent Integrations\n\nSpec Kit works with 30+ AI coding agents — both CLI tools and IDE-based assistants. See the full list with notes and usage details in the [Supported AI Coding Agent Integrations](https://github.github.io/spec-kit/reference/integrations.html) guide.\n\nRun `specify integration list` to see all available integrations in your installed version.\n\n## Available Slash Commands\n\nAfter running `specify init`, your AI coding agent will have access to these slash commands for structured development. For integrations that support skills mode, passing `--integration \u003cagent\u003e --integration-options=\"--skills\"` installs agent skills instead of slash-command prompt files.\n\n### Core Commands\n\nEssential commands for the Spec-Driven Development workflow:\n\n| Command                  | Agent Skill            | Description                                                                |\n| ------------------------ | ---------------------- | -------------------------------------------------------------------------- |\n| `/speckit.constitution`  | `speckit-constitution` | Create or update project governing principles and development guidelines   |\n| `/speckit.specify`       | `speckit-specify`      | Define what you want to build (requirements and user stories)              |\n| `/speckit.plan`          | `speckit-plan`         | Create technical implementation plans with your chosen tech stack          |\n| `/speckit.tasks`         | `speckit-tasks`        | Generate actionable task lists for implementation                          |\n| `/speckit.taskstoissues` | `speckit-taskstoissues`| Convert generated task lists into GitHub issues for tracking and execution |\n| `/speckit.implement`     | `speckit-implement`    | Execute all tasks to build the feature according to the plan               |\n\n### Optional Commands\n\nAdditional commands for enhanced quality and validation:\n\n| Command              | Agent Skill            | Description                                                                                                                          |\n| -------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |\n| `/speckit.clarify`   | `speckit-clarify`      | Clarify underspecified areas (recommended before `/speckit.plan`; formerly `/quizme`)                                                |\n| `/speckit.analyze`   | `speckit-analyze`      | Cross-artifact consistency \u0026 coverage analysis (run after `/speckit.tasks`, before `/speckit.implement`)                             |\n| `/speckit.checklist` | `speckit-checklist`    | Generate custom quality checklists that validate requirements completeness, clarity, and consistency (like \"unit tests for English\") |\n\n## 🔧 Specify CLI Reference\n\nFor full command details, options, and examples, see the [CLI Reference](https://github.github.io/spec-kit/reference/overview.html).\n\n## 🧩 Making Spec Kit Your Own: Extensions \u0026 Presets\n\nSpec Kit can be tailored to your needs through two complementary systems — **extensions** and **presets** — plus project-local overrides for one-off adjustments:\n\n| Priority | Component Type                                    | Location                         |\n| -------: | ------------------------------------------------- | -------------------------------- |\n|      ⬆ 1 | Project-Local Overrides                           | `.specify/templates/overrides/`  |\n|        2 | Presets — Customize core \u0026 extensions             | `.specify/presets/templates/`    |\n|        3 | Extensions — Add new capabilities                 | `.specify/extensions/templates/` |\n|      ⬇ 4 | Spec Kit Core — Built-in SDD commands \u0026 templates | `.specify/templates/`            |\n\n- **Templates** are resolved at **runtime** — Spec Kit walks the stack top-down and uses the first match.\n- Project-local overrides (`.specify/templates/overrides/`) let you make one-off adjustments for a single project without creating a full preset.\n- **Extension/preset commands** are applied at **install time** — when you run `specify extension add` or `specify preset add`, command files are written into agent directories (e.g., `.claude/commands/`).\n- If multiple presets or extensions provide the same command, the highest-priority version wins. On removal, the next-highest-priority version is restored automatically.\n- If no overrides or customizations exist, Spec Kit uses its core defaults.\n\n### Extensions — Add New Capabilities\n\nUse **extensions** when you need functionality that goes beyond Spec Kit's core. Extensions introduce new commands and templates — for example, adding domain-specific workflows that are not covered by the built-in SDD commands, integrating with external tools, or adding entirely new development phases. They expand *what Spec Kit can do*.\n\n```bash\n# Search available extensions\nspecify extension search\n\n# Install an extension\nspecify extension add \u003cextension-name\u003e\n```\n\nFor example, extensions could add Jira integration, post-implementation code review, V-Model test traceability, or project health diagnostics.\n\nSee the [Extensions reference](https://github.github.io/spec-kit/reference/extensions.html) for the full command guide. Browse the [community extensions](https://github.github.io/spec-kit/community/extensions.html) for what's available.\n\n### Presets — Customize Existing Workflows\n\nUse **presets** when you want to change *how* Spec Kit works without adding new capabilities. Presets override the templates and commands that ship with the core *and* with installed extensions — for example, enforcing a compliance-oriented spec format, using domain-specific terminology, or applying organizational standards to plans and tasks. They customize the artifacts and instructions that Spec Kit and its extensions produce.\n\n```bash\n# Search available presets\nspecify preset search\n\n# Install a preset\nspecify preset add \u003cpreset-name\u003e\n```\n\nFor example, presets could restructure spec templates to require regulatory traceability, adapt the workflow to fit the methodology you use (e.g., Agile, Kanban, Waterfall, jobs-to-be-done, or domain-driven design), add mandatory security review gates to plans, enforce test-first task ordering, or localize the entire workflow to a different language. The [pirate-speak demo](https://github.com/mnriem/spec-kit-pirate-speak-preset-demo) shows just how deep the customization can go. Multiple presets can be stacked with priority ordering.\n\nSee the [Presets reference](https://github.github.io/spec-kit/reference/presets.html) for the full command guide, including resolution order and priority stacking.\n\n### When to Use Which\n\n| Goal | Use |\n| --- | --- |\n| Add a brand-new command or workflow | Extension |\n| Customize the format of specs, plans, or tasks | Preset |\n| Integrate an external tool or service | Extension |\n| Enforce organizational or regulatory standards | Preset |\n| Ship reusable domain-specific templates | Either — presets for template overrides, extensions for templates bundled with new commands |\n\n## 📚 Core Philosophy\n\nSpec-Driven Development is a structured process that emphasizes:\n\n- **Intent-driven development** where specifications define the \"*what*\" before the \"*how*\"\n- **Rich specification creation** using guardrails and organizational principles\n- **Multi-step refinement** rather than one-shot code generation from prompts\n- **Heavy reliance** on advanced AI model capabilities for specification interpretation\n\n## 🌟 Development Phases\n\n| Phase                                    | Focus                    | Key Activities                                                                                                                                                     |\n| ---------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **0-to-1 Development** (\"Greenfield\")    | Generate from scratch    | \u003cul\u003e\u003cli\u003eStart with high-level requirements\u003c/li\u003e\u003cli\u003eGenerate specifications\u003c/li\u003e\u003cli\u003ePlan implementation steps\u003c/li\u003e\u003cli\u003eBuild production-ready applications\u003c/li\u003e\u003c/ul\u003e |\n| **Creative Exploration**                 | Parallel implementations | \u003cul\u003e\u003cli\u003eExplore diverse solutions\u003c/li\u003e\u003cli\u003eSupport multiple technology stacks \u0026 architectures\u003c/li\u003e\u003cli\u003eExperiment with UX patterns\u003c/li\u003e\u003c/ul\u003e                         |\n| **Iterative Enhancement** (\"Brownfield\") | Brownfield modernization | \u003cul\u003e\u003cli\u003eAdd features iteratively\u003c/li\u003e\u003cli\u003eModernize legacy systems\u003c/li\u003e\u003cli\u003eAdapt processes\u003c/li\u003e\u003c/ul\u003e                                                                |\n\n## 🎯 Experimental Goals\n\nOur research and experimentation focus on:\n\n### Technology independence\n\n- Create applications using diverse technology stacks\n- Validate the hypothesis that Spec-Driven Development is a process not tied to specific technologies, programming languages, or frameworks\n\n### Enterprise constraints\n\n- Demonstrate mission-critical application development\n- Incorporate organizational constraints (cloud providers, tech stacks, engineering practices)\n- Support enterprise design systems and compliance requirements\n\n### User-centric development\n\n- Build applications for different user cohorts and preferences\n- Support various development approaches (from vibe-coding to AI-native development)\n\n### Creative \u0026 iterative processes\n\n- Validate the concept of parallel implementation exploration\n- Provide robust iterative feature development workflows\n- Extend processes to handle upgrades and modernization tasks\n\n## 🔧 Prerequisites\n\n- **Linux/macOS/Windows**\n- [Supported](#-supported-ai-coding-agent-integrations) AI coding agent.\n- [uv](https://docs.astral.sh/uv/) for package management (recommended) or [pipx](https://pipx.pypa.io/) for persistent installation\n- [Python 3.11+](https://www.python.org/downloads/)\n- [Git](https://git-scm.com/downloads)\n\nIf you encounter issues with an agent, please open an issue so we can refine the integration.\n\n## 📖 Learn More\n\n- **[Complete Spec-Driven Development Methodology](./spec-driven.md)** - Deep dive into the full process\n- **[Detailed Walkthrough](#-detailed-process)** - Step-by-step implementation guide\n\n---\n\n## 📋 Detailed Process\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to expand the detailed step-by-step walkthrough\u003c/summary\u003e\n\nYou can use the Specify CLI to bootstrap your project, which will bring in the required artifacts in your environment. Run:\n\n```bash\nspecify init \u003cproject_name\u003e\n```\n\nOr initialize in the current directory:\n\n```bash\nspecify init .\n# or use the --here flag\nspecify init --here\n# Skip confirmation when the directory already has files\nspecify init . --force\n# or\nspecify init --here --force\n```\n\n![Specify CLI bootstrapping a new project in the terminal](./media/specify_cli.gif)\n\nIn an interactive terminal, you will be prompted to select the coding agent integration you are using. In non-interactive sessions, such as CI or piped runs, `specify init` defaults to GitHub Copilot unless you pass `--integration`. You can also proactively specify the integration directly in the terminal:\n\n```bash\nspecify init \u003cproject_name\u003e --integration copilot\nspecify init \u003cproject_name\u003e --integration gemini\nspecify init \u003cproject_name\u003e --integration codex\n\n# Or in current directory:\nspecify init . --integration copilot\nspecify init . --integration codex --integration-options=\"--skills\"\n\n# or use --here flag\nspecify init --here --integration copilot\nspecify init --here --integration codex --integration-options=\"--skills\"\n\n# Force merge into a non-empty current directory\nspecify init . --force --integration copilot\n\n# or\nspecify init --here --force --integration copilot\n```\n\nThe CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, Forge, Goose, or Mistral Vibe 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:\n\n```bash\nspecify init \u003cproject_name\u003e --integration copilot --ignore-agent-tools\n```\n\n### **STEP 1:** Establish project principles\n\nGo to the project folder and run your coding agent. In our example, we're using `claude`.\n\n![Bootstrapping Claude Code environment](./media/bootstrap-claude-code.gif)\n\nYou will know that things are configured correctly if you see the `/speckit.constitution`, `/speckit.specify`, `/speckit.plan`, `/speckit.tasks`, and `/speckit.implement` commands available.\n\nThe 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:\n\n```text\n/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.\n```\n\nThis step creates or updates the `.specify/memory/constitution.md` file with your project's foundational guidelines that the coding agent will reference during specification, planning, and implementation phases.\n\n### **STEP 2:** Create project specifications\n\nWith 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.\n\n\u003e [!IMPORTANT]\n\u003e Be as explicit as possible about *what* you are trying to build and *why*. **Do not focus on the tech stack at this point**.\n\nAn example prompt:\n\n```text\nDevelop Taskify, a team productivity platform. It should allow users to create projects, add team members,\nassign tasks, comment and move tasks between boards in Kanban style. In this initial phase for this feature,\nlet's call it \"Create Taskify,\" let's have multiple users but the users will be declared ahead of time, predefined.\nI want five users in two different categories, one product manager and four engineers. Let's create three\ndifferent sample projects. Let's have the standard Kanban columns for the status of each task, such as \"To Do,\"\n\"In Progress,\" \"In Review,\" and \"Done.\" There will be no login for this application as this is just the very\nfirst testing thing to ensure that our basic features are set up. For each task in the UI for a task card,\nyou should be able to change the current status of the task between the different columns in the Kanban work board.\nYou should be able to leave an unlimited number of comments for a particular card. You should be able to, from that task\ncard, assign one of the valid users. When you first launch Taskify, it's going to give you a list of the five users to pick\nfrom. There will be no password required. When you click on a user, you go into the main view, which displays the list of\nprojects. When you click on a project, you open the Kanban board for that project. You're going to see the columns.\nYou'll be able to drag and drop cards back and forth between different columns. You will see any cards that are\nassigned to you, the currently logged in user, in a different color from all the other ones, so you can quickly\nsee yours. You can edit any comments that you make, but you can't edit comments that other people made. You can\ndelete any comments that you made, but you can't delete comments anybody else made.\n```\n\nAfter 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.\n\nOnce 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.\n\nThe produced specification should contain a set of user stories and functional requirements, as defined in the template.\n\nAt this stage, your project folder contents should resemble the following:\n\n```text\n.\n├── .specify\n│   ├── memory\n│   │   └── constitution.md\n│   ├── scripts\n│   │   └── bash\n│   │       ├── check-prerequisites.sh\n│   │       ├── common.sh\n│   │       ├── create-new-feature.sh\n│   │       ├── setup-plan.sh\n│   │       └── setup-tasks.sh\n│   └── templates\n│       ├── plan-template.md\n│       ├── spec-template.md\n│       └── tasks-template.md\n└── specs\n    └── 001-create-taskify\n        └── spec.md\n```\n\n### **STEP 3:** Functional specification clarification (required before planning)\n\nWith the baseline specification created, you can go ahead and clarify any of the requirements that were not captured properly within the first shot attempt.\n\nYou should run the structured clarification workflow **before** creating a technical plan to reduce rework downstream.\n\nPreferred order:\n\n1. Use `/speckit.clarify` (structured) – sequential, coverage-based questioning that records answers in a Clarifications section.\n2. Optionally follow up with ad-hoc free-form refinement if something still feels vague.\n\nIf you intentionally want to skip clarification (e.g., spike or exploratory prototype), explicitly state that so the agent doesn't block on missing clarifications.\n\nExample free-form refinement prompt (after `/speckit.clarify` if still needed):\n\n```text\nFor each sample project or project that you create there should be a variable number of tasks between 5 and 15\ntasks for each one randomly distributed into different states of completion. Make sure that there's at least\none task in each stage of completion.\n```\n\nYou should also ask Claude Code to validate the **Review \u0026 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:\n\n```text\nRead 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.\n```\n\nIt'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**.\n\n### **STEP 4:** Generate a plan\n\nYou 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:\n\n```text\nWe are going to generate this using .NET Aspire, using Postgres as the database. The frontend should use\nBlazor server with drag-and-drop task boards, real-time updates. There should be a REST API created with a projects API,\ntasks API, and a notifications API.\n```\n\nThe output of this step will include a number of implementation detail documents, with your directory tree resembling this:\n\n```text\n.\n├── CLAUDE.md\n├── .specify\n│   ├── memory\n│   │   └── constitution.md\n│   ├── scripts\n│   │   └── bash\n│   │       ├── check-prerequisites.sh\n│   │       ├── common.sh\n│   │       ├── create-new-feature.sh\n│   │       ├── setup-plan.sh\n│   │       └── setup-tasks.sh\n│   └── templates\n│       ├── CLAUDE-template.md\n│       ├── plan-template.md\n│       ├── spec-template.md\n│       └── tasks-template.md\n└── specs\n    └── 001-create-taskify\n        ├── contracts\n        │   ├── api-spec.json\n        │   └── signalr-spec.md\n        ├── data-model.md\n        ├── plan.md\n        ├── quickstart.md\n        ├── research.md\n        └── spec.md\n```\n\nCheck 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).\n\nAdditionally, 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:\n\n```text\nI want you to go through the implementation plan and implementation details, looking for areas that could\nbenefit from additional research as .NET Aspire is a rapidly changing library. For those areas that you identify that\nrequire further research, I want you to update the research document with additional details about the specific\nversions that we are going to be using in this Taskify application and spawn parallel research tasks to clarify\nany details using research from the web.\n```\n\nDuring 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:\n\n```text\nI think we need to break this down into a series of steps. First, identify a list of tasks\nthat you would need to do during implementation that you're not sure of or would benefit\nfrom further research. Write down a list of those tasks. And then for each one of these tasks,\nI want you to spin up a separate research task so that the net results is we are researching\nall of those very specific tasks in parallel. What I saw you doing was it looks like you were\nresearching .NET Aspire in general and I don't think that's gonna do much for us in this case.\nThat's way too untargeted research. The research needs to help you solve a specific targeted question.\n```\n\n\u003e [!NOTE]\n\u003e 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.\n\n### **STEP 5:** Have Claude Code validate the plan\n\nWith 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:\n\n```text\nNow I want you to go and audit the implementation plan and the implementation detail files.\nRead through it with an eye on determining whether or not there is a sequence of tasks that you need\nto be doing that are obvious from reading this. Because I don't know if there's enough here. For example,\nwhen I look at the core implementation, it would be useful to reference the appropriate places in the implementation\ndetails where it can find the information as it walks through each step in the core implementation or in the refinement.\n```\n\nThis 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.\n\nYou can also ask Claude Code (if you have the [GitHub CLI](https://docs.github.com/en/github-cli/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.\n\n\u003e [!NOTE]\n\u003e 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 in `.specify/memory/constitution.md` as the foundational piece that it must adhere to when establishing the plan.\n\n### **STEP 6:** Generate task breakdown with /speckit.tasks\n\nWith 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:\n\n```text\n/speckit.tasks\n```\n\nThis step creates a `tasks.md` file in your feature specification directory that contains:\n\n- **Task breakdown organized by user story** - Each user story becomes a separate implementation phase with its own set of tasks\n- **Dependency management** - Tasks are ordered to respect dependencies between components (e.g., models before services, services before endpoints)\n- **Parallel execution markers** - Tasks that can run in parallel are marked with `[P]` to optimize development workflow\n- **File path specifications** - Each task includes the exact file paths where implementation should occur\n- **Test-driven development structure** - If tests are requested, test tasks are included and ordered to be written before implementation\n- **Checkpoint validation** - Each user story phase includes checkpoints to validate independent functionality\n\nThe 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.\n\n### **STEP 7:** Implementation\n\nOnce ready, use the `/speckit.implement` command to execute your implementation plan:\n\n```text\n/speckit.implement\n```\n\nThe `/speckit.implement` command will:\n\n- Validate that all prerequisites are in place (constitution, spec, plan, and tasks)\n- Parse the task breakdown from `tasks.md`\n- Execute tasks in the correct order, respecting dependencies and parallel execution markers\n- Follow the TDD approach defined in your task plan\n- Provide progress updates and handle errors appropriately\n\n\u003e [!IMPORTANT]\n\u003e The coding agent will execute local CLI commands (such as `dotnet`, `npm`, etc.) - make sure you have the required tools installed on your machine.\n\nOnce 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 coding agent for resolution.\n\n\u003c/details\u003e\n\n---\n\n## 💬 Support\n\nFor support, please open a [GitHub issue](https://github.com/github/spec-kit/issues/new). We welcome bug reports, feature requests, and questions about using Spec-Driven Development.\n\n## 🙏 Acknowledgements\n\nThis project is heavily influenced by and based on the work and research of [John Lam](https://github.com/jflam).\n\n## 📄 License\n\nThis project is licensed under the terms of the MIT open source license. Please refer to the [LICENSE](./LICENSE) file for the full terms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithub%2Fspec-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgithub%2Fspec-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgithub%2Fspec-kit/lists"}