---
user-invocable: false
name: doctrine
description: The operating doctrine, self-contained in this folder. Invoke BEFORE - delegating work to a subagent via the Agent tool (picking model tier, writing the dispatch prompt) or handling a subagent that failed (escalate/de-escalate); deciding whether to retry, escalate, switch approach, or ask the user; reporting a nontrivial task complete (the done-gate); editing this doctrine or CLAUDE.md; recording a lesson about the harness.
---

# Doctrine — the operating institution, one folder

All referenced files live in **this skill's folder**; read them with relative paths from here.
The three always-on laws live in the user's `~/.claude/CLAUDE.md` router; this bundle carries
the depth. Content lives in the numbered files — this SKILL.md only routes; never duplicate
rule text into it.

## Route by moment

| Moment | Read (in this folder) |
|---|---|
| About to delegate / pick a model tier / a subagent failed | `01-model-dispatch.md`, then fill a template from `03-delegation-templates.md` |
| Retry? escalate? done? ask the user? direction feels wrong? | `02-judgment.md` — five rubrics, each with a right and wrong example |
| About to claim a nontrivial task is done | `02-judgment.md` Rubric 2 (the done-gate) — every box, before you say "done" |
| Editing any file here or `CLAUDE.md`; recording a lesson | `04-maintenance.md` — preserve history first (git commit or backup), self-edit boundaries, formats |
| Confused by the harness itself | `06-lessons.md` first (it may already be paid for), then `00-diagnosis.md` |
| First session in a new environment, or sharing this bundle | `INSTALL.md` |
| Why these rules exist; environment-specific warnings | `00-diagnosis.md`, `05-letter.md` |

## Dispatch pre-send checklist (all four, or don't send)

- [ ] Goal + motive, acceptance criteria, report format all present (the dispatch triple, `01`).
- [ ] `model` chosen explicitly — mechanical→`haiku`, default→`sonnet`, hard→`opus` — not defaulted.
- [ ] Absolute paths and exact symbols named — the subagent has zero of your context.
- [ ] Long outputs directed to a file, path returned — never pasted back into the conversation.

## Quick reference

```
Would raw output ≫ the answer?           → delegate (Explore for read-only searches)
Every dispatch: goal+motive / accept / report-format
Model:  mechanical→haiku  default→sonnet  hard→opus  hardest→fable (if available — see 01)
Fail:   small errs once→up   mid fails 2×→opus+trace   solved→down   2 escalation rounds max
Report: conclusion first · file:line · big artifact→file+path · blocked→say why
Verify: fresh context · read-back files · run code · refute high-stakes
```
