Files
2026-08-19 11:03:16 +02:00

4.8 KiB

speckit

A fully local Spec-Driven Development (SDD) workflow CLI — a rebuild of the idea behind github/spec-kit in a single zero-dependency Python file.

Instead of prompting an AI agent (or yourself) ad hoc, every feature walks a gated artifact pipeline:

constitution  →  specify  →  clarify  →  plan  →  tasks  →  implement  →  converge
(principles)     spec.md    resolve      plan.md   tasks.md   check off     gap check
                            markers                            boxes

Gates are mechanical: plan refuses to run without spec.md, tasks without plan.md, and check validates section structure, clarification markers (cap: 3) and checklist state. No accounts, no API keys, no network — just files.

Requirements

Python 3. Nothing else at runtime (pytest only for developing speckit itself).

Quickstart

python3 speckit.py init myproject --agent claude   # scaffold (drop --agent for plain)
cd myproject
python3 ../speckit.py specify "pantry meal planner" # → specs/001-pantry-meal-planner/spec.md
#   (or: specify prompt.txt --name "pantry planner" — reads the brief from the file)
# ... fill spec.md: stories, requirements, success criteria, assumptions ...
python3 ../speckit.py clarify                       # list open [NEEDS CLARIFICATION: …] markers
python3 ../speckit.py plan                          # → plan.md   (gate: spec.md exists)
python3 ../speckit.py tasks                         # → tasks.md  (gate: plan.md exists)
python3 ../speckit.py status                        # phases + task progress per feature
python3 ../speckit.py check                         # validate current feature (exit 0/1)

A worked example lives in examples/pantry-planner/ — a real feature driven through the entire pipeline.

Commands

Command What it does
init <name> [--agent claude] Scaffold <name>/ with .speckit/ state + templates, memory/constitution.md, empty specs/; --agent claude also installs /speckit.* command prompts into .claude/commands/
specify <description or file> [--name "…"] [--timestamp] Create specs/NNN-slug/spec.md and make it the current feature. The argument can be a quoted description or a path to a file containing the prompt (e.g. specify prompt.txt). Slug = first 4 words (sequential 001, 002, … or YYYYMMDD-HHMMSS- prefix); --name overrides it
switch <NNN or slug> Re-point the current feature
plan Seed plan.md for the current feature — refuses while spec.md is missing
tasks Seed tasks.md — refuses while plan.md is missing
status All features, per-phase artifact presence, * current marker, N done / M open task counts
check Validate the current feature: required sections, marker cap (>3 fails), checklist warnings; exit 0 clean / 1 findings
clarify List every [NEEDS CLARIFICATION: …] marker with file:line
checklist <name> Seed a reviewer-owned quality checklist into checklists/<name>.md; unchecked items make check warn (never fail)
converge Append-only gap check: spec stories missing from tasks.md get new checkboxes under ### Convergence; idempotent
constitution [--amend "…" [--major]] Show the constitution version, or append a dated amendment with a semver bump

Global: --color {auto,always,never} (before the subcommand) — colors only on a real terminal by default.

All commands except init find the project by walking up from the current directory to the nearest .speckit/ — they work from anywhere inside a project (exit 2 outside one).

Working with an AI agent

init --agent claude installs four prompt files into .claude/commands/, so a Claude Code session inside the project gets /speckit.specify, /speckit.plan, /speckit.tasks and /speckit.implement — each prompt tells the agent to run the CLI, fill the seeded artifact properly, and respect the phase gates (implement additionally: work tasks.md top-to-bottom, test-first, check boxes only after verification). The same files work as a howto if you drive the workflow by hand.

Scaffolded project layout

myproject/
  .speckit/state.json        # project name, current feature, feature list
  .speckit/templates/        # your copy of the 5 templates (edit freely)
  .claude/commands/          # agent prompts (with --agent claude)
  memory/constitution.md     # standing principles, semver-versioned
  specs/001-some-feature/
    spec.md  plan.md  tasks.md  checklists/*.md

Developing speckit itself

python3 -m pytest -q        # 51 tests, run from the repo root

Everything lives in speckit.py (stdlib only); document templates in templates/, agent prompts in templates/commands/, tests in tests/test_speckit.py (strictly TDD).