Specter SDD for VS CodeBring the spec→test→implement loop into your editor. In Spec-Driven Development, the specification is the source of truth, not the code. Tests trace to acceptance criteria through Get StartedNew to Specter? Open the built-in walkthrough directly in VS Code:
It covers install, generating specs from your code, closing gaps with AI, annotating tests, and locking coverage into CI, all without leaving the editor. Prefer a written guide?
Human Intent, AI ExecutionSpecter's schema is deliberately detailed, constraints, acceptance criteria, tiers, provenance, coverage thresholds. Writing all of that by hand for every module would be impractical, and that was never the intention. The intended workflow is a collaboration between you and your AI coding assistant:
Specter validates the artifacts in front of it, not the order you wrote them in. It checks that every spec parses and resolves. It measures coverage from the The core mission: guide your AI coding assistant through spec → test → implement → eval in the right order, every time, with your intent preserved throughout. The Problem This SolvesWhen you work with AI coding tools, two things go wrong silently: Coverage gaps you can't see. You write a spec with eight requirements. The AI implements six. Tests pass for those six. The other two are simply absent, no error, no warning, no indicator anywhere. You find out in production. Specs that change after tests are written. A requirement gets clarified, tightened, or removed. The test that covered it still says Specter SDD surfaces both problems in the editor, continuously, as you work. FeaturesKnow what's covered without running a reportA CodeLens above each requirement in your spec file tells you whether a test covers it: a check mark when at least one does, a slashed circle when none does. There are two states, not three. An earlier version of this page promised a gray "intentionally excluded" state, and spec-vscode 5.0.0 retracted it: Catch spec errors before you saveMistakes in Write
|
| Setting | Default | Description |
|---|---|---|
specter.binaryPath |
"" |
Path to the specter binary. Leave empty to auto-resolve: a CLI on PATH or at ~/.specter/bin/specter is used when its version is one the extension supports, and otherwise the extension uses its own copy under ~/.specter/cli. A path set here must be a working binary that answers --version, but it is not checked against the supported range, because it is your explicit choice. A path that does not exist is ignored and resolution continues. Machine-scoped; workspace settings are ignored. |
specter.autoDownload |
true |
Download the extension's own CLI copy when no supported CLI is found. |
specter.version |
"" |
Version of the extension's own CLI copy. Empty means "match the extension version"; latest tracks the newest GitHub release. A supported CLI on PATH is used regardless. Machine-scoped; workspace settings are ignored. |
specter.showInsightsOnFailure |
true |
Open Insights panel automatically when a spec fails threshold. |
Commands
| Command | What it does |
|---|---|
Specter: Open Insights Panel |
Plain-English health cards for all failing specs |
Specter: Copy Spec Context for AI |
Copy current spec as a structured AI prompt preamble |
Specter: Run Sync |
Re-run the full coverage pipeline manually |
Specter: Run Reverse Compiler |
Generate draft specs from your source code |
Specter: Add CLI to Shell PATH |
Install a copy of the CLI at ~/.specter/bin/specter if none is there, and append ~/.specter/bin to your shell rc file so specter works in external terminals. An existing file there is left alone. When you already have a working CLI on PATH, in the supported range or not, the command does nothing, so it never puts a copy ahead of yours. |
Specter: Re-download CLI |
Force a fresh download of the extension's own CLI copy (recovery if it is broken). Your ~/.specter/bin/specter is not touched. |
Specter: Show Output Log |
Open the Specter output channel with download/coverage error details |
Specter: Reveal in Tree View |
Jump to the current spec in the Coverage sidebar |
Using specter from external terminals
The extension keeps its own CLI copy under ~/.specter/cli, one file per version, and never changes a CLI you installed yourself. ~/.specter/bin/specter is yours: the extension creates it only when you run the shell PATH command and nothing is there, and it never replaces it afterward. VS Code's integrated terminal gets ~/.specter/bin prepended automatically. External terminals (iTerm, Windows Terminal, tmux, etc.) don't, you'd need to type the full path. If you have no CLI of your own on PATH, typing specter there yourself needs that copy to exist, so run the shell PATH command once. The extension's own commands that open a terminal, such as Run Reverse Compiler and View Diff, use the CLI the extension resolved and need no setup.
Run Specter: Add CLI to Shell PATH from the command palette once, and the extension will append an idempotent export to your shell's rc file (.bashrc on Linux, .bash_profile on macOS, .zshrc for zsh, config.fish for fish). Restart your terminal and specter works from anywhere.
The command is idempotent, running it again when the path is already set tells you so and makes no changes.
Links
- QuickStart, zero to working pipeline in 5 minutes
- Getting Started, full walkthrough from zero specs to 100% coverage
- AI Prompts, ready-to-use prompts for every stage of the SDD loop
- CLI Reference
- Specter on GitHub
- Mastering Spec-Driven Development, the methodology behind the tool
- Report an issue