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.

The ADLC lifecycle, with P1 highlighted. Read the theory for P1

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] [--tier cheap|mid|frontier] [--json] [--prompt-only]
FlagDescription
--llmLLM pass on VERIFIED criteria to catch vacuous methods ("works correctly", "run tests"). Demoted criteria become WISH. Requires a provider env var (see core).
--tierModel tier for the --llm pass: cheap (default), mid, or frontier.
--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