ADLC
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.

ADLC lifecycle — read the theory for P1

What it defends against

F1Premature 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]
FlagDescription
--llmCheap-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).
--jsonMachine-readable output for orchestrators. All other output is suppressed.
--prompt-onlyPrint 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 2

Go deeper

Specs-as-tests and why unverifiable criteria are dangerous: Tests Are the Spec.

On this page