brewtools:manager
Manager
Manager mode has TWO independent layers. Keep them straight:
- SOFT codewords (
++m/++mp/++rr/++r) — autonomous, hook-driven, ALWAYS fire. AUserPromptSubmithook (hooks/manager-prompt.mjs) watches every prompt; when it sees a codeword it injects the matching block asadditionalContextfor that one turn. This is NOT enabled/disabled by this skill — it works regardless of skill state. The skill only explains it (status) and customizes its TEXT (mode/edit/reset). Detection order (longest-prefix first):
++mp→ Manager + Plan Mode (planmode) — writes the task graph, uses the tasks tool; tested first (prefix collision with++m).++m→ Manager mode (full) — delegate-everything prompt.++rr→ Regression Review discipline (review-regression) — after each significant phase: no regression + project standard + correctness; two-phase review→double-check→fix; final cross-review at task end. Tested after++m, before++r.++r→ Review discipline (review-double) — two-phase multi-agent review→double-check→fix after each significant change; codeword-only (no ambient/wall injection).- When the HARD wall is ON, the Manager (full) block is ALSO auto-injected on EVERY turn — no codeword needed. Codewords and wall injection are independent.
- HARD wall — opt-in, this skill only, PER-PROJECT, INSTALLED-INTO-THE-PROJECT, persistent. The wall is NOT a plugin hook.
ondoes two things: it installs a self-containedPreToolUseguard into THIS project (copies the guard file + idempotently registers it in<cwd>/.claude/settings.local.json) and arms it by flippingstate.hard=true. The registered guard then physically denies mutating tools (Write/Edit/Bash/WebFetch/...) in the main session, leaving only delegate/read/track. Subagents stay fully free (agent_idlinchpin).offonly flipsstate.hard=false(disarm) — registration stays, the guard no-ops.uninstallremoves the registration. The wall lives in project state + project settings, defaults OFF, persists untiloff/uninstall. There is no codeword for the wall.The two layers are orthogonal: the wall enforces delegation by removing hands; the codewords/prompt-text shape the Manager mindset. Either can be used alone.
INSTALL-ONCE + STATE-GATE (the safety crux): the guard is registered once in
settings.local.json(a personal, gitignored file) but is gated at runtime by projectstate.json {hard}. Registration is the persistent plumbing;state.hardis the live kill-switch. This split exists because while the wall is armed it DENIES Edit/Bash on arbitrary files — sooffmust NOT touchsettings.local.json(that edit would be blocked). Insteadoffflipsstate.json, and the guard is self-exempt for thewriteStatenode command (path anchor), so the state flip always succeeds even atlevel strict. Conclusion:state.jsonis the runtime on/off; registration is harmless inert plumbing left in place.