| name | create-verifier |
| description | Use when creating a new verifier — a Jinja-template coding-rule "angle" checked by `lorist check` and validated by `lorist validate`. Covers the one-angle-one-lens model, the 7-part template structure, the shared output-contract include, per-folder `.lorist.md.j2` domain gates, and where the file can live. |
Creating a verifier
A verifier is one Jinja template (*.md.j2) describing a single coding rule (one
angle, one lens). lorist check renders it and runs it as its own judge
that investigates the target project read-only and emits one structured
AngleFinding. lorist validate checks the template against the spec below —
run it after writing one.
Only the lorist command is on PATH — you never run the runner script directly.
The one rule that matters most
One verifier owns exactly one concern. Judge only that lens; leave every
adjacent concern to the angle that owns it. Overlap causes double-blocking. If you
can't name the single concern in one sentence, split it into multiple verifiers.
Structure — the 7-part template
An angle inherits the read-only tool set (read, grep, find, ls) from the base
cascade — it declares no tools and investigates when fs-backed. Override only to
narrow: put tools: [] in frontmatter to make it single-call (judge {{ inputs }}
only), or tools: [..] to override the inherited set.
# Verification angle: <one-line concern>
<one or two sentences: the failure mode this angle guards against>.
## What to flag — resolve each gate in order; flag only if every answer is Yes
1. **<Gate name>** — <a concrete yes/no question>? · N → <why that means pass>.
2. **<Gate name>** — <the next checkable condition>? · N → <pass reason>.
...
N. **Grounded** — Can you cite the evidence at exact `file:line`? · N → cannot ground
it; pass.
Fail (`passed: false`) only when every gate is Yes. Cite the `file:line`s and name the
concrete fix.
## What NOT to flag
- <adjacent concern, stated in self-contained prose the isolated judge can act on>.
{% include 'verifiers/_angle_finding_output.md.j2' %}
State the flag criteria as an ordered chain of yes/no gates: individually checkable
conditions where the first No short-circuits to pass and a finding is raised only when
every gate answers Yes. This makes the bar explicit and auditable instead of leaving it to
narrative judgment; it replaces the old free-prose "Investigation steps" + bulleted "What
to flag". The last gate is always grounding (cite exact file:line). For a holistic angle
whose core is a real judgment call, make the earlier gates the checkable preconditions
(scoped? grounded? not exempt?) and let the final gate carry the judgment — don't fake
mechanization. The base framing (_staff_engineer) owns how the
gates map to passed/confidence; the angle only authors the gates.
Hard rules (all enforced by lorist validate):
- Title is exactly
# Verification angle: <concern>.
- Both
## What to flag and ## What NOT to flag are present; the former is the gate
chain, the latter names each excluded concern in self-contained prose the isolated
judge can act on — never by a topic/verifier slug, which is inert to a single
isolated call.
- No literal
"passed": in the body — that trips the inline-schema check.
- End with
{% include 'verifiers/_angle_finding_output.md.j2' %}. Never restate
the JSON AngleFinding schema inline — the partial owns it.
Where it goes and how it's selected
Put the angle under a topic/domain folder in the collection (python/, shell/,
python/tui/, …); folders nest freely. check auto-selects which folders apply
via per-folder .lorist.md.j2 gates (YAML applies-when: with deps-any /
imports-any / files-any) — add or extend a gate so your domain is picked for the
right projects. A folder with no gate always applies. Explicit --path/--include
bypasses gating (also how a project-local .md.j2 rule is run).
Name the file kebab-case after the concern (pathlib.md.j2, error-flags.md.j2).
Run it
cd <project>
lorist validate --path verifiers/<topic>/<name>.md.j2
lorist check --no-domain-gates --path verifiers/<topic>/<name>.md.j2 --show-passed
Point it at code that both satisfies and violates the rule to confirm the angle
passes clean code and blocks the violation without bleeding into adjacent concerns.