approvelisted
Install: claude install-skill mifunedev/openharness
# Approve — the critic-before-commitment gate
The **approve** gate, composed by `/spec critique` in `AGENTS.md § The Workflow` — the
`approve|deny` decision point. It
answers one question: *do the critic findings clear this spec to build, or must it
go back to planning?* — and emits exactly one verdict the `/autopilot` runner
routes on.
**Core principle: gate the spec before anything is committed.** This embodies
critic-before-commitment: the cheapest thing to revise is the spec itself, so the
gate runs while ONLY local artifacts exist (`.oh/tasks/<slug>/prd.md`, `prd.json`,
`critique.md`) — **before** the GitHub issue, branch, or PR. A `DENIED` is therefore
fully reversible (`rm -rf .oh/tasks/<slug>/`); no GitHub-side state is created until
after `APPROVED`. (Mirrors `/ship-spec` Stage 4, which encodes the same HALT gate
inline; this node makes it a reusable decision.)
This is the **decision** half of the pair. The `critique` node runs the critics and
writes `critique.md`; `/approve` only *reads* that artifact and decides. It does not
run the critics itself — if `critique.md` is absent, the gate cannot decide (see
*Honest exits* below).
---
## Inputs
| Arg | Meaning |
|-----|---------|
| `<slug>` | The task slug — locates `.oh/tasks/<slug>/critique.md` (the critic findings) and `.oh/tasks/<slug>/prd.md`. Required. |
| `--auto` | Unattended mode (e.g. under `/autopilot`): never prompt a human; the SEVERITY auto-gate alone decides. Without it, a borderline finding may su