← Latest Blog Posts

🎵 Spotify Podcast

Modern software development, often augmented by Large Language Models (LLMs), has been hampered by "vibe coding," where broad prompts result in imprecise or unexpected implementations. To combat this imprecision and lack of specification clarity, GitHub introduced Spec Kit, an open-source toolkit designed to establish a structured, verifiable development workflow. Spec Kit shifts software development to a Spec-Driven Development (SDD) approach, where the specification becomes the living, executable artifact that defines the intent of the build, ensuring that all stakeholders and AI tools align around a single source of truth.

Spec Kit operates by transforming ad hoc prompting into clearly defined, phased workflows. The kit includes a Command Line Interface (CLI) tool called specify, templates, and steering prompts, and is compatible with various coding agents like GitHub Copilot, Claude Code, and Gemini CLI. This approach aims to close the gaps between intent and implementation, leading to cleaner, safer, and more reliable code. Using the CLI, while optional, simplifies project scaffolding and the installation of initial dependencies and templates, which can also be downloaded directly from releases.

The Spec Kit workflow is rigorously organized into four gated phases with validation checkpoints. The first phase is Specify, where the developer describes the what and why of the build, focusing on user journeys and outcomes. The AI agent uses this input to generate the detailed specification document. Next, the Plan phase defines the tech stack and architectural constraints, resulting in a technical plan that must honor the non-negotiable principles established in the project's Constitution. The Constitution establishes fixed principles, such as testing requirements, technology stack, or delivery rules (e.g., static first delivery).

Following planning, the Tasks phase breaks down the spec and plan into small, actionable, and testable units. Finally, in the Implement phase, the AI incrementally tackles tasks, allowing the developer to review and refine each change. Spec Kit ensures total granular control over execution. The resulting artifacts—Specification, Plan, Constitution, and Tasks—are Markdown files, allowing for easy manual human editing. It is crucial that the developer, the "human in the loop," uses commands like /clarify to identify and fill in any blind spots or underspecified requirements within the spec.

Spec Kit’s deep technical integration with agents, such as Copilot within Visual Studio Code (VS Code) Insiders, is enabled by the use of Chat Modes. These Chat Modes function as programmable system prompts, and are triggered by shortcut prompts (slash commands like /specify). This reorganization allows the agent to understand exactly which programmatic behavior it should follow.

A key technical feature for optimizing the workflow is the use of Agent Handoffs, currently available in VS Code Insiders. A handoff is defined in the YAML front matter of the chat mode, and serves to tell the agent the logical next step upon completion of a task. For instance, after finishing the Constitution, the handoff suggests the "Build Specification" command.

Handoffs drastically improve the User Experience (UX) in VS Code by encoding the workflow sequence directly into the development environment. This eliminates the need for the developer to guess which command to run next (which is vital given the "command sprawl" of Spec Kit, such as /clarify, /analyze, /plan, etc.). A handoff can be configured to simply suggest the next step, requiring additional user input, or it can be configured with the send: true option to automatically send the prompt.

The process also leverages isolated Git branches for each iteration or feature, ensuring work is organized and changes can be rolled back. Spec Kit encourages iteration; the developer can use different models (like GPT-5, Claude Sonnet 4, Grok) for different phases—for example, GPT-5 for scaffolding and Sonnet 4 for creative code implementation. The ultimate goal is to create consistent software, as the spec and its associated artifacts (like contracts and plans) form a memory context for the system. This specification document, being a "living document," captures design decisions and lessons learned, allowing the project to be easily rebuilt or adapted to new technologies in the future.