suspec-cli
Deterministic checks over explicit files. Facts and exit codes, no verdict.
The whole surface
three invocations · --json on anyNo interactive mode, dashboard, or scaffolding. Exit codes: 0 clean · 1 warning · 2 blocking.
Install suspec-cli
Requires Node.js 22.6 or newer and pnpm 10.
# not on npm — install from source
$ git clone https://github.com/jcosta33/suspec-cli
$ cd suspec-cli
$ corepack enable
$ pnpm install --frozen-lockfile
$ pnpm link --global
# sanity check — prints checks contract 0.21.0
$ suspec check --contract
A suspec check session, end to end
# a spec, by explicit path — its own kind's lint
$ suspec check ./spec.md # exit 0 — clean
# a review packet, reconciled against its companions
$ suspec check ./review.md --spec ./spec.md --task ./task.md
C016 blocking — review.md: Supported on AC-003 with an empty evidence cell
$ echo $? # 2 — blocking
# a required companion missing is never a shallower check
$ suspec check ./review.md # blocking — a review requires --spec; exit 2
$ suspec check --contract --json # the contract, for other tools
Invocations
The artifact's kind is read from its own type: frontmatter, never from its filename or location. Every invocation takes --json — the same facts, structured: check id, severity, message, location.
suspec check <artifact> [<artifact>...]
Artifacts
suspec check <path> [<path>...]
Check named artifacts. Batches return the highest severity.
suspec check <review> --spec <spec> [--task <task>]
Review
suspec check <review> --spec <spec> [--task <task>]
Reconcile a review packet against explicit spec and task paths.
suspec check --contract
Contract
suspec check --contract
Print contract 0.21.0 as JSON: check id, name, and severity.
Cheap checks before expensive judgment
What the checker earns its keep on: facts a lazy or dishonest reviewer cannot fake. It checks shape, references, and evidence binding without another model call. It does not prove the evidence is true.
C012
Coverage
Every in-scope requirement needs a coverage row.
C013
Command match
Evidence must match the spec's Verify with: command.
C016
Supported needs evidence
Supported without evidence blocks.
C020
Reference resolves
Task references must resolve.
lint
Per-artifact lint
Artifact type selects its lint rules.
exit 2
Missing companion blocks
Missing --spec or --task blocks with exit 2.
What it does not do
No resolution
Every path is explicit. No discovery.
No gate
It reports facts. Humans gate merges.
No verdicts
Humans own the decision. The checker validates evidence binding.
No execution
It validates recorded evidence; it runs no tests or agents.
No writes
Read-only. No scaffolds or managed state.
Do you need the CLI?
No step requires it. Suspec works by hand; install the skills, then add the checker when the work earns a deterministic floor.
npx skills add jcosta33/suspec-skills -g
Reference repository
Source, issues, and install notes live on GitHub. The checks contract itself lives in the canon repo: checks/checks.yaml (opens in new tab).
Running shell-less? suspec-mcp carries the same check surface over MCP