Toolkit
spec-lint
Audits a spec for acceptance criteria that lack a concrete verification method.
spec-lint
ADLC phase: P1 Interrogate · Gate: every acceptance criterion names how it will be checked.
What it defends against
F1 — Premature satisfaction (theory ↗)
A spec whose criteria can't be checked lets a model declare victory early. spec-lint
turns unverifiable criteria into blocking failures.
Usage
adlc spec-lint <spec.md> [--llm] [--json] [--prompt-only]| Flag | Description |
|---|---|
--llm | Cheap-tier LLM pass on VERIFIED criteria to catch vacuous methods ("works correctly", "run tests"). Demoted criteria become WISH. Requires a provider env var (see core). |
--json | Machine-readable output for orchestrators. All other output is suppressed. |
--prompt-only | Print the exact LLM prompt and exit 0 — works with zero API keys; paste into any harness. |
Exit codes
0 — gate passes: every criterion names a verification method (or no criteria found; warns loudly).1 — operational error (bad input, unreadable file, or LLM call failed).2 — gate fails: one or more criteria are wishes (line numbers printed).
Example
$ adlc spec-lint spec.md
✗ 2 criteria have no verification method (lines 14, 22)
exit 2Go deeper
Specs-as-tests and why unverifiable criteria are dangerous: Tests Are the Spec.