SpecKeep is distributed as a single binary via GitHub Releases.
Linux:
VERSION=v0.5.1
curl -fsSL "https://raw.githubusercontent.com/bzdvdn/speckeep/${VERSION}/scripts/install.sh" | bash -s -- --version "${VERSION}"Windows (PowerShell):
$version="v0.5.1"
$env:SPECKEEP_VERSION=$version
powershell -ExecutionPolicy Bypass -c "iwr -useb https://raw.githubusercontent.com/bzdvdn/speckeep/$version/scripts/install.ps1 | iex"To also add the install directory to PATH:
- Linux: add
--add-to-pathor setSPECKEEP_ADD_TO_PATH=1 - Windows: set
$env:SPECKEEP_ADD_TO_PATH=1or run the script with-AddToPath
Initializes a SpecKeep workspace in the target project.
Examples:
speckeep init
speckeep init my-project --lang en --shell sh
speckeep init my-project --lang en --shell sh --specs-dir .speckeep/specifications --archive-dir .speckeep/artifacts/archive --constitution-file docs/constitution.md
speckeep init my-project --docs-lang ru --agent-lang en --comments-lang en --shell powershell --agents claude --agents cursorImportant flags:
--gitinitializes a Git repository when true; default is enabled--langsets the base language; default isen--shellselects the generated workflow script family; required:shorpowershell--specs-diroverrides the specs directory (advanced)--archive-diroverrides the archive directory (advanced)--constitution-fileoverrides the constitution file path (advanced)--docs-langsets the generated documentation language--agent-langsets the generated prompt and agent guidance language--comments-langrecords the preferred code comment language--agentsgenerates project-local agent command files
Refreshes only SpecKeep-managed generated artifacts in an existing project.
This command updates:
.speckeep/spk.yaml.speckeep/skills/manifest.yaml.speckeep/templates/**.speckeep/scripts/**- project-local agent command files
- the managed SpecKeep guidance block inside
AGENTS.md
This command does not update:
- the constitution file (
project.constitution_file, default:CONSTITUTION.md) - contents under
specs_dir/**(but it can safely move the directory with--specs-dir) - contents under
specs_dir/<slug>/plan/** - contents under
archive_dir/**(but it can safely move the directory with--archive-dir)
Lean artifact layout is now the default for generated guidance and readiness checks. Existing feature packages may still contain legacy summary.md, spec.digest.md, or plan.digest.md, but refresh no longer requires them and new workspaces do not depend on them.
Examples:
speckeep refresh my-project
speckeep refresh my-project --shell powershell --agents claude --dry-run
speckeep refresh my-project --agent-lang ru --jsonImportant flags:
--lang,--docs-lang,--agent-lang,--comments-langoverride the existing configured languages--shelloverrides the generated workflow script family--constitution-fileoverrides the configured constitution file path (and safely moves the existing file when possible)--specs-diroverridespaths.specs_dir(and safely moves the existing specs directory when possible)--archive-diroverridespaths.archive_dir(and safely moves the existing archive directory when possible)--agentsoverrides enabled project-local agent targets--dry-runreports pending managed changes without writing them--jsonoutputs the refresh result as JSON
Adds one or more agent targets to an existing SpecKeep project.
speckeep add-agent my-project --agents claude --agents codexLists enabled agent targets from .speckeep/spk.yaml.
Disables one or more agent targets and removes their generated files.
Removes orphaned agent artifacts that no longer match enabled targets in config.
Adds or updates one skill in .speckeep/skills/manifest.yaml.
For git sources, --ref is required to keep installs reproducible and avoid floating branch drift.
For git sources, SpecKeep materializes a checkout under .speckeep/skills/checkouts/<id>. This is a runtime cache of the skill source, and SpecKeep maintains a managed block for it in the root .gitignore.
Use --no-install to update only manifest/AGENTS and skip immediate install into agent skill folders.
Examples:
speckeep add-skill my-project --id architecture --from-local skills/architecture
speckeep add-skill my-project --id openai-docs --from-git https://example.com/skills.git --ref v1.2.3 --path skills/openai-docsLists configured skills from .speckeep/skills/manifest.yaml.
Use --json for machine-readable output.
Removes one skill from .speckeep/skills/manifest.yaml.
Use --no-install to skip immediate reconciliation of installed skills in agent folders.
Installs enabled skills from .speckeep/skills/manifest.yaml into target agent skill folders.
By default, uses enabled targets from .speckeep/spk.yaml. Override with --targets codex,opencode.
For git-backed skills, this command can rehydrate missing .speckeep/skills/checkouts/<id> from manifest data (location + ref) before installation. This helps when a checkout was deleted locally. If the upstream git source is unavailable, the manifest alone is not enough to reconstruct the skill contents.
Important flags:
--dry-runreports pending changes without writing them--jsonoutputs install results as JSON--include-disabledinstalls disabled skills too
Equivalent subcommand:
speckeep skills install my-projectRestores git-backed checkouts in .speckeep/skills/checkouts/ from .speckeep/skills/manifest.yaml without installing skills into agent folders.
Useful when the local checkouts were deleted but manifest.yaml still has the location and pinned ref.
If the upstream git source is unavailable, the command cannot reconstruct the contents from the manifest alone.
Use --json for machine-readable output.
Equivalent subcommand:
speckeep skills restore my-projectSynchronizes skill-managed artifacts only:
.speckeep/skills/manifest.yaml- managed root
.gitignoreblock for.speckeep/skills/checkouts/ - managed SpecKeep block in
AGENTS.md(including skills section)
Important flags:
--dry-runreports pending changes without writing them--jsonoutputs sync results as JSON
Equivalent subcommand:
speckeep skills sync my-projectIf your active feature folders still contain summary.md, spec.digest.md, or plan.digest.md:
- you can keep them temporarily; current prompts and checks ignore them by default
- treat
tasks.mdas the main operational entrypoint forimplementandverify - move the important recap material into
tasks.md## Implementation Context - keep
.speckeep/constitution.summary.mdas the compact policy layer - run
speckeep refresh . --dry-runfirst to preview managed guidance changes before normalizing older feature packages
Checks workspace health.
doctor reports:
errorfor missing required files or invalid config valueswarningfor orphaned agent artifacts still present on diskwarningfor non-standard Git branch namesokwhen the workspace is healthy
Use --json for machine-readable output in automation and CI.
Displays a visual dashboard of all active features in the project.
The dashboard includes:
- Feature slug
- Current workflow phase
- Implementation progress percentage
- Status (READY/BLOCKED)
- Current Git branch (with
!!warning if there is a mismatch with the feature slug)
speckeep dashboardShows a detailed workflow view for one feature.
The text view includes:
- current phase and
ready_for - inspect and verify status when reports exist
- task progress when
tasks.mdexists - grouped workflow findings
- a short
focushint for the next likely action
Use --json to return structured state plus feature-local findings.
Repairs safe feature-local SpecKeep issues.
Current repair scope includes:
- migrating flat spec artifacts (
specs/<slug>.md) to the canonical directory layout (specs/active/<slug>/spec.md) - migrating plan artifacts from the old
plans/<slug>/layout tospecs/active/<slug>/
Use --dry-run to preview changes and --json for structured output.
Lists workflow status across all discovered features.
The text view summarizes:
- phase and
ready_for - inspect and verify verdicts
- task progress
- grouped issue counts
- artifact presence
Use --json for machine-readable output.
Runs safe project-wide SpecKeep migrations.
Current migration scope focuses on canonicalizing legacy inspect report paths across the project.
Lists spec slugs from specs_dir/ (default: specs/active/).
Prints one spec file by slug.
Shows feature readiness and the exact next action for one feature.
Output includes artifact presence, inspect and verify verdict, task progress, the exact next slash command, and a compact structured-check summary when phase-specific readiness checks produce categorized findings.
Use --all to check every feature in one table. Exits with code 1 when any feature is blocked.
Use --json for machine-readable output suitable for CI, including check_summary and check_findings when available.
speckeep check export-report
speckeep check export-report my-project --json
speckeep check my-project --all
speckeep check my-project --all --jsonScans for traceability annotations in the codebase.
Annotations follow the format:
// @sk-task <TASK_ID>: <Description> (<AC_ID>)for implementation code.// @sk-test <TASK_ID>: <TestName> (<AC_ID>)for test evidence.
Placement rule:
- a trace marker must sit above a concrete owning declaration or behavior block, not at file level.
- do not place it above
package,import, a file-header comment, or any line that does not belong to a concrete function/method/type/test. - if multiple tests/cases verify the same task,
@sk-test <slug>#<TASK_ID>must appear on each such test/case. - stack guide: Go
//abovefunc/type/Test...; Python#as the first line insidedef/class/test_*; JS/TS//above declarations and as the first line insidetest()/it()callbacks; Java/C#/C/C++ comments above method/class/test blocks.
This command identifies links between implementation code, task IDs from tasks.md, and acceptance criteria from spec.md.
Use slug to filter findings for a specific feature.
Use --tests to show only test evidence.
Use --json for machine-readable output.
speckeep trace
speckeep trace export-report
speckeep trace export-report --tests
speckeep trace export-report my-project --jsonCreates a demo workspace at the given path (default: ./speckeep-demo).
The workspace is pre-populated with an example feature (export-report) at the implement phase — spec, inspect report, plan, tasks, and data model are all present. Suggests /spk.scope, /spk.challenge, and /spk.handoff to try immediately.
speckeep demo
speckeep demo ./my-demo --agents claudeBundles all artifacts for one feature into a single markdown document.
Reads and concatenates: spec, inspect report, plan, tasks, data model, research, challenge report, and verify report (skips missing files). Useful for sharing full feature context with a reviewer or a new agent session.
Use --output <file> to write to a file instead of stdout.
speckeep export export-report
speckeep export export-report my-project --output export-report-bundle.mdLists archived features from archive_dir/ (default: specs/archived/).
Shows one entry per slug (most recent snapshot) with status, archived date, and reason. Entries are sorted by date descending. Status values are color-coded: completed in green, deferred in yellow, abandoned and rejected in red.
Flags:
--status— filter by archive status:completed,superseded,abandoned,rejected,deferred--since <YYYY-MM-DD>— filter to archives on or after this date--json— output as JSON for automation and CI
speckeep list-archive
speckeep list-archive my-project --status deferred
speckeep list-archive my-project --since 2026-01-01
speckeep list-archive my-project --json