review
Harmonia review stage - hierarchical review under the review lead with gates and receipts. Use ONLY when explicitly invoked as /harmonia:review.
SKILL.mdskills/review/SKILL.md
GitHubYour working contract is the rules; their digest is injected at session start - read ${CLAUDE_PLUGIN_ROOT}/core/RULES.md in full only if that digest is not in your context.
Read the review stage from ${CLAUDE_PLUGIN_ROOT}/core/lifecycle.yaml (already in context if the flow runner loaded it - do not re-read) - the panel roster and lens name list live there and are authoritative - do not hardcode them; each lens file under ${CLAUDE_PLUGIN_ROOT}/core/lenses/ carries its own trigger rules in frontmatter, which are authoritative for dispatch.
- Workspace:
bash ${CLAUDE_PLUGIN_ROOT}/bin/workspace.sh resolve --repo .(later stage: never mints; surface ambiguity or no-active-task and stop). - Gates before judgment:
bash ${CLAUDE_PLUGIN_ROOT}/bin/check-criteria.sh --run --workspace <ws> --repo .- executes every- run:criterion the scope declares, from the repo root, and prints the whole set it ran with each command verbatim. A failing criterion FAILS the review - this gate is hard; exit 3 means there was no scope declaration to run. Keep the order: the receipt audit passes only once acriteria-runreceipt fresh for this tree is on disk.bash ${CLAUDE_PLUGIN_ROOT}/bin/verify-receipts.sh --workspace <ws> --repo .- missing or stale receipts FAIL the review.
- Dispatch the reviewer (review lead) by path with every artifact this stage declares
in, plus the rest of the lead's charterconsumes:list - both are authoritative and neither is restated here. The lead convenes the panel declared by this stage, dispatches lenses whose frontmatter triggers match the diff (security auto-fires on its fixed list), runs seats per${CLAUDE_PLUGIN_ROOT}/core/patterns/panel.mdwith model-diverse dispatch, and writes one attributedverdict.mdto the workspace. - A test-immutability violation recorded in the workspace is treated like a missing receipt: the review fails.
Pass workspace paths, not prose recaps. Orchestrate only.