skills/hook-manager/SKILL.md
Manage bopen-tools plugin hooks — list, enable, disable, diagnose, and run first-time setup. This skill should be used when the user asks to "list hooks", "disable a hook", "enable a hook", "hook setup", "which hooks are running", "turn off the publish gate", "hooks config", or when session context contains a [BOPEN-HOOKS-SETUP] directive.
npx skillsauth add b-open-io/prompts hook-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage the hooks that ship with the bopen-tools plugin. The catalog source of
truth is hooks/manifest.json in the installed plugin — read it live rather
than trusting a memorized list:
cat "$(ls -d ~/.claude/plugins/cache/b-open-io/bopen-tools/*/ | sort -V | tail -1)hooks/manifest.json"
Each entry carries name, event, matcher, tier, runtimes, summary, and
description. Hooks register automatically when the plugin is installed;
this skill controls which ones actually run.
Per-hook enable/disable lives in a JSON config. Resolution order (first file
with an explicit true/false verdict for a hook wins):
$BOPEN_HOOKS_CONFIG — explicit override (tests, scripts)<project>/.claude/bopen-hooks.json — per-project~/.claude/bopen-tools/hooks-config.json — per-user{
"version": 1,
"hooks": {
"bouncer": true,
"damage-control": true,
"publish-gate": true,
"agent-browser-solo": true,
"session-context": true,
"hammertime": true,
"browser-intent": true
}
}
A hook is disabled ONLY by an explicit false. Missing files, missing keys,
or unparseable JSON all mean enabled — a broken config must never silently
switch the guards off. Changes take effect on the next hook invocation; no
restart is required.
When session context carries [BOPEN-HOOKS-SETUP], the user has no config
yet. Do not interrupt their task; offer setup at a natural pause. The flow:
tier: "guard" —
they prevent work loss, secret exposure, and unticketed publishes.tier: "workflow".~/.claude/bopen-tools/hooks-config.json with the full hooks map —
include every hook with an explicit boolean, even the all-defaults case.
Writing the file is what dismisses the setup notice permanently.Edit the user config (or project config for repo-scoped changes) with the Read and Write tools — read, flip the boolean, write back. Create the file from the template above when it does not exist. Never edit files inside the plugin cache; updates overwrite them.
Expect a confirmation prompt on every config write: damage-control treats these files as ask-tier so guards can never be disarmed without the user's explicit yes (on Codex the write is denied outright — have the user edit the file themselves). This is by design; do not route around it.
Warn before disabling guards: bouncer stops git reset --hard-class work
loss, damage-control enforces zero-access paths like .env, publish-gate
blocks unticketed npm/on-chain publishes. Disabling them is the user's call,
but say plainly what protection goes away.
When a hook misbehaves or the user asks "why did X get blocked/skipped":
# Which config verdict applies to a hook?
for f in "$BOPEN_HOOKS_CONFIG" ./.claude/bopen-hooks.json ~/.claude/bopen-tools/hooks-config.json; do
[ -f "$f" ] && echo "$f: $(jq -r '.hooks["<name>"] // "no verdict"' "$f")"
done
# Prerequisites
command -v jq || echo "jq missing — hooks fail open without it"
command -v agent-browser || echo "agent-browser missing — agent-browser-solo falls back to native WebFetch"
[ -n "$LINEAR_API_KEY" ] || echo "LINEAR_API_KEY unset — publish-gate fails closed on gated publishes"
command -v python3 || echo "python3 missing — hammertime and JSON escaping degrade"
Skill(bopen-tools:hammertime) and
the hammertime:manage skill — for rule-level tuning beyond on/off.hooks/ directory; read it before guessing.~/.claude — hooks ship with the plugin and
update through claude plugin update bopen-tools@b-open-io.hooks/*.sh, claude-hooks.json, or anything in the plugin
cache.tools
This skill should be used when a Claude Code session needs to keep working after Anthropic usage runs out, or when the user asks to run the Claude Code harness on GPT-5.6 Sol. Trigger phrases include "my Anthropic usage ran out", "I'm out of Claude usage", "usage limit reached, what now", "keep working on another model", "run Claude Code on GPT-5.6 Sol", "use GPT-5.6 Sol as the model", "set up claudex", "claudex isn't working", "route the harness through CLIProxyAPI", or "bill against my ChatGPT/Codex subscription". It stands up a local proxy so the Claude Code CLI runs on OpenAI's Codex backend as an escape hatch, and diagnoses that setup when it drifts. macOS + Homebrew.
testing
This skill should be used when the user asks to "open Visual Wayfinder", "answer a Wayfinder ticket visually", "turn this decision into a configurator", "show Wayfinder choices as a dashboard", "prototype the Wayfinder questionnaire", or wants interactive choice cards, tradeoff controls, rankings, ranges, toggles, and consequence previews for one active Wayfinder decision. It wraps the Wayfinder skill and JSON Render; it never replaces the tracker or resolves more than the active decision.
development
This skill should be used when the user asks to "make a visual proposal", "write this up so I can share it", "present these options visually", "diagram the trade-offs", "turn this plan into something reviewable", or requests a shareable design pitch, architecture proposal, RFC, options comparison, or visual roadmap for work that has not been built. It produces one self-contained, theme-aware HTML page led by grounded diagrams. Use visual-review instead for completed code changes; do not use this skill for internal task tracking.
tools
This skill should be used when the user asks to "add plugin settings", "make a plugin configurable", "store per-project plugin configuration", "use settings.local.json", "create a plugin state file", "expose skill settings in Agent Master", or "add a skill interface". Distinguishes official Claude Code settings from project-owned configuration and documents bOpen Agent Master skill interface discovery.