Specflow
Specflow is an enhanced fork of the
specifyCLI from GitHub Spec Kit, distributed as a single native binary (no Python prerequisites). It scaffolds the files your AI coding harness consumes — SpecKit slash-commands, spec / plan / tasks templates, a constitution, agents, and a backlog system — directly into an existing project, in one command.
Specflow does not call any LLM and does not orchestrate any agent at runtime. Your AI harness (Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot CLI, Windsurf, OpenCode, Antigravity) is what reads the generated files and acts on them.
This page is the canonical documentation. The same content is available as raw Markdown at
/llms.txt for LLM consumption — see llmstxt.org for the
convention.
Install
The fastest path on macOS or Linux:
curl -fsSL https://raw.githubusercontent.com/mkrlabs/specflow/main/install.sh | bashThe installer downloads the platform binary, verifies the SHA256 checksum, and places it in
/usr/local/bin (auto-elevating via sudo if needed). On non-writable prefixes with no terminal it
falls back to ~/.local/bin.
Pin a specific version:
curl -fsSL https://.../install.sh | VERSION=v0.7.1 bashCustom install dir:
curl -fsSL https://.../install.sh | PREFIX=$HOME/.local/bin bashOr via Homebrew (macOS / Linux):
brew tap mkrlabs/tap
brew install specflowManual download: pick the binary for your OS/arch from
GitHub Releases, chmod +x, place it on your
$PATH. On macOS clear the quarantine attribute with
xattr -d com.apple.quarantine /path/to/specflow.
Quickstart
Create a new project
specflow init my-project
cd my-projectThis scaffolds a tree configured for the Claude Code harness by default (.claude/,
.specflow/, AGENTS.md, tasks/backlog.md, …). Open the project in your harness and run the
/specflow.specify slash-command to start your first feature.
Add Specflow to an existing project
cd my-existing-project
specflow init --hereSpecflow merges its .gitignore block into your existing file (non-destructively, fenced with
# --- Specflow: gitignore --- markers). Other specflow-managed files use upgrade-aware semantics:
if you customize a generated file, specflow upgrade will preserve it unless you pass --force.
Pick a different harness
specflow init my-project --ai cursor
specflow init my-project --ai antigravity
specflow init my-project --ai gemini
# … etc.Eight harness targets are supported: claude (default), cursor, codex, gemini, windsurf,
copilot, opencode, antigravity. Each emits files in the convention that harness expects.
Other commands
specflow check # diagnose your environment
specflow check --project # also diagnose the current specflow project
specflow upgrade # update templates to the binary's version
specflow upgrade --dry-run # preview the upgrade plan
specflow upgrade --force # apply destructive changes (backs up customizations)
specflow self-update # upgrade the binary itself
specflow self-update --check # only report whether an update is available
specflow backlog configure # wire the backlog to a remote (GitHub Issues + Project V2)
specflow backlog sync # push backlog mutations to the remote
specflow --version # print version
specflow --help # full usageAvailable harnesses
| Key | Display name | Output root |
|---|---|---|
claude |
Claude Code | .claude/ |
cursor |
Cursor | .cursor/ |
codex |
Codex CLI | .codex/, .agents/ |
gemini |
Gemini CLI | .gemini/ |
windsurf |
Windsurf | .windsurf/ |
copilot |
GitHub Copilot CLI | .github/instructions/ |
opencode |
OpenCode | .opencode/ |
antigravity |
Antigravity | .agent/ |
All harnesses share the same source-of-truth content in templates/core/. The per-harness adapters
in src/infrastructure/harness/ map that core bundle to each harness's directory layout and
frontmatter conventions.
What makes Specflow different from upstream Spec Kit
Specflow is a fork of the official specify CLI with three additions:
1. Auto-chained pipeline
The generated specify skill chains clarify → plan → tasks → analyze → implement → review → merge
in a single session. Upstream stops at every step and asks the human to invoke the next one.
Specflow only stops twice: when clarification is genuinely required, and once before merging.
2. review phase post-implement
After implement, the generated workflow runs a dedicated review phase that checks structure
(architecture boundaries, silent error swallowing, leaked internal IDs, cache layering, test
coverage) and the quality gates (format, lint, typecheck, tests). If review flags something, the
loop is implement → review → fix → re-review — also automatic.
3. Backlog as product source of truth
The generated project ships with a tasks/backlog.md index plus per-task files under
tasks/backlog/NNN-slug.md (typed frontmatter: id, title, category, priority, complexity, status,
depends_on, spec, tags, created). A Product Owner agent gates every mutation.
specflow backlog sync pushes the backlog to a remote (GitHub Issues + Project V2 in v1; GitLab and
Bitbucket planned for later).
Design principles
- Agnostic of the user project's language — Python, TypeScript, Go, PHP, Rust… your project, your stack.
- Agnostic of the LLM — Claude, OpenAI, Gemini, local models, anything your harness supports.
- Agnostic of the AI harness — eight first-class targets today, with the same core content for all.
- Agnostic of the backlog source — local Markdown is the source of truth, with one-way sync to the remote of your choice.
- Single binary — distributed via
deno compilefor macOS arm64/x64, Linux arm64/x64, and Windows x64. No Python, nopip, no extra runtimes on the user's machine.
Repository
Source, releases, and issue tracker: github.com/mkrlabs/specflow.
The AGENTS.md file at the repo root is the canonical context document for any future Claude Code,
Codex, or other agent session contributing to the project itself.