Lint your specs
like you lint your code.
The SpecScore CLI validates features, requirements, and acceptance criteria from the command line. Run it locally, wire it into CI, or let your AI agent call it. Open source, no account, no telemetry.
$ specscore lint apply-discount.md ✓ R1 has acceptance criteria ✓ R2 has acceptance criteria ✗ R3 no acceptance criteria ✗ link "Related Feature: discount-tiers" not found ✗ section "Open Questions" missing 3 problems exit 1
60-second install.
$ curl -fsSL https://specscore.md/install/get-cli | shPS> powershell -c "irm https://specscore.md/install/get-cli.ps1 | iex"$ brew install specscore/tap/specscore$ go install github.com/specscore/specscore-cli/cmd/specscore@mainRequires Go 1.26 or newer. This installs the latest development build from main — may include changes not yet in a tagged release.
To pin a specific version, swap @main for a tag like@v0.4.2, or use @latest for the most recent tagged release.
What you get.
Lint
Validate structure, metadata, cross-references, and AC uniqueness. Reports pass/fail per requirement with fix suggestions.
Score
Rate spec completeness on a 0–100 scale. Flags missing actors, triggers, error states, security models, and rate limits.
CI-ready
Non-zero exit on failure. Wire specscore lint into your CI pipeline alongside ESLint, Prettier, and your test suite.
No telemetry
The CLI doesn't phone home. Specs and scores stay on your machine. No account, no API key, no cloud dependency.
Portable
Single binary. macOS, Linux, Windows. No runtime dependencies. Works on any directory of Markdown specs.
Open source
MIT-licensed. The source is atspecscore/specscore-cli. Free forever.
Use it with your AI agent.
The CLI is the engine underneath both Claude Code plugins. If your agent writes specs, the CLI tells it whether they're any good — before the agent writes a single line of code.