← All skills
hook-manager
40 / 100 · High risk
Only if you trust the author.
By b-open-io/prompts (GitHub) · other · 15 stars · scanned at commit f4b302a
List, enable, or disable individual core hooks and check their prerequisites. Use for "list hooks", "enable a hook", "disable a hook", "hook setup", "hooks config", or a [BOPEN-HOOKS-SETUP] directive. For the full harness view, use setup.
Works with any agent that supports SKILL.md skills.
What this skill can do
Changes files outside its own folder
This is disclosed by the author in the skill's SKILL.md or README. It runs automatically when the plugin is installed.
Found in 25 places.
Show 17 more
- skills/hook-manager/README.md, line 37
cp ~/.opencode/plugins/cache/core/user/.claude/hooks/<hook-name>.json ~/.opencode/hooks/ - skills/hook-manager/README.md, line 46
cp ~/.claude/plugins/cache/core/user/.claude/hooks/protect-env-files.json ~/.claude/hooks/ - skills/hook-manager/README.md, line 49
cp ~/.claude/plugins/cache/core/user/.claude/hooks/uncommitted-reminder.json ~/.claude/hooks/ - skills/hook-manager/README.md, line 50
cp ~/.claude/plugins/cache/core/user/.claude/hooks/auto-git-add.json ~/.claude/hooks/ - skills/hook-manager/README.md, line 53
cp ~/.claude/plugins/cache/core/user/.claude/hooks/time-dir-context.json ~/.claude/hooks/ - skills/hook-manager/README.md, line 56
cp ~/.claude/plugins/cache/core/user/.claude/hooks/lint-on-save.json ~/.claude/hooks/ - skills/hook-manager/README.md, line 57
cp ~/.claude/plugins/cache/core/user/.claude/hooks/lint-on-start.json ~/.claude/hooks/ - skills/hook-manager/README.md, line 64
cp ~/.opencode/plugins/cache/core/user/.claude/hooks/protect-env-files.json ~/.opencode/hooks/ - skills/hook-manager/README.md, line 67
cp ~/.opencode/plugins/cache/core/user/.claude/hooks/uncommitted-reminder.json ~/.opencode/hooks/ - skills/hook-manager/README.md, line 68
cp ~/.opencode/plugins/cache/core/user/.claude/hooks/auto-git-add.json ~/.opencode/hooks/ - skills/hook-manager/README.md, line 71
cp ~/.opencode/plugins/cache/core/user/.claude/hooks/time-dir-context.json ~/.opencode/hooks/ - skills/hook-manager/README.md, line 74
cp ~/.opencode/plugins/cache/core/user/.claude/hooks/lint-on-save.json ~/.opencode/hooks/ - skills/hook-manager/README.md, line 75
cp ~/.opencode/plugins/cache/core/user/.claude/hooks/lint-on-start.json ~/.opencode/hooks/ - skills/hook-manager/README.md, line 82
rm ~/.claude/hooks/<hook-name>.json - skills/hook-manager/README.md, line 87
rm ~/.opencode/hooks/<hook-name>.json - hooks/hammertime.py, line 637
with open(os.path.expanduser(debug_path), "a") as f: - hooks/tests/test_damage_control.sh, line 86
input=$(jq -n '{tool_name:"Bash", tool_input:{command:"rm /tmp/x && cat ~/.claude/plugins/foo"}}')
and 5 more places
Runs commands on your computer
The author does not mention this. It runs automatically when the plugin is installed.
Found in 34 places.
Show 17 more
- hooks/claude-hooks.json, line 14
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/repo-freshness.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.cla - hooks/claude-hooks.json, line 25
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/prompt-router.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.clau - hooks/claude-hooks.json, line 37
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse-bash.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.cl - hooks/claude-hooks.json, line 47
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/damage-control.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.cla - hooks/claude-hooks.json, line 57
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/agent-browser-solo.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/ - hooks/claude-hooks.json, line 67
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/roster-guard.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.claud - hooks/claude-hooks.json, line 77
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/skill-activity.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.cla - hooks/claude-hooks.json, line 89
"command": "BOPEN_HOOK_SCRIPT=\"${CLAUDE_PLUGIN_ROOT}/hooks/hammertime.py\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.claude/ - hooks/codex-hooks.json, line 9
"command": "BOPEN_HOOK_SCRIPT=\"${PLUGIN_ROOT}/hooks/session-context.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.codex/plu - hooks/codex-hooks.json, line 14
"command": "BOPEN_HOOK_SCRIPT=\"${PLUGIN_ROOT}/hooks/repo-freshness.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.codex/plug - hooks/codex-hooks.json, line 25
"command": "BOPEN_HOOK_SCRIPT=\"${PLUGIN_ROOT}/hooks/browser-intent.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.codex/plug - hooks/codex-hooks.json, line 37
"command": "BOPEN_HOOK_SCRIPT=\"${PLUGIN_ROOT}/hooks/pretooluse-bash.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.codex/plu - hooks/codex-hooks.json, line 47
"command": "BOPEN_HOOK_SCRIPT=\"${PLUGIN_ROOT}/hooks/damage-control.sh\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.codex/plug - hooks/codex-hooks.json, line 58
"command": "BOPEN_HOOK_SCRIPT=\"${PLUGIN_ROOT}/hooks/hammertime.py\"; if [ ! -f \"$BOPEN_HOOK_SCRIPT\" ]; then BOPEN_HOOK_SCRIPT=$(ls -t \"$HOME/.codex/plugins/ - hooks/hammertime.py, line 619
subprocess.Popen( - hooks/hammertime.py, line 621
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, - hooks/hammertime.py, line 648
result = subprocess.run(
and 14 more places
Sends data to these websites: example.com
The author does not mention this. It runs automatically when the plugin is installed.
Found in 20 places.
Show 17 more
- hooks/agent-browser-solo.sh, line 147
ctx="Page content for ${url}, fetched via agent-browser (WebFetch was skipped — do not retry it; this content is complete). - hooks/claude-hooks.json, line 53
"matcher": "WebFetch", - hooks/hammertime.py, line 63
import urllib.request - hooks/hammertime.py, line 475
req = urllib.request.Request( - hooks/hammertime.py, line 487
with urllib.request.urlopen(req, timeout=10) as resp: - hooks/manifest.json, line 9
"matcher": "WebFetch", - hooks/manifest.json, line 12
"summary": "Services WebFetch through a real browser instead of plain HTTP.", - hooks/manifest.json, line 13
"description": "Intercepts WebFetch and fetches the page with agent-browser (headless Chrome) in an isolated session, delivering JS-rendered extracted text to t - hooks/manifest.json, line 83
"description": "Detects prompts that involve browser work (URLs, navigation, form filling, login, screenshots, SPAs) and injects static guidance preferring agen - hooks/tests/test_agent_browser_solo.sh, line 42
fetch_input=$(jq -n '{tool_name:"WebFetch", tool_input:{url:"https://example.com/docs"}}') - hooks/tests/test_agent_browser_solo.sh, line 66
search_input=$(jq -n '{tool_name:"WebSearch", tool_input:{query:"anything"}}') - hooks/tests/test_validate.sh, line 87
if jq -r '.. | strings? // empty' "$ROOT/claude-hooks.json" | grep -q WebFetch; then - hooks/tests/test_validate.sh, line 88
PASS=$((PASS + 1)); printf ' PASS claude WebFetch matcher present\n' - hooks/tests/test_validate.sh, line 90
FAIL=$((FAIL + 1)); failures+=("claude missing WebFetch"); printf ' FAIL claude WebFetch\n' - hooks/tests/test_validate.sh, line 93
if jq -r '.. | strings? // empty' "$ROOT/claude-hooks.json" | grep -q WebSearch; then - hooks/tests/test_validate.sh, line 94
FAIL=$((FAIL + 1)); failures+=("claude still matches WebSearch"); printf ' FAIL claude should not intercept WebSearch\n' - hooks/tests/test_validate.sh, line 96
PASS=$((PASS + 1)); printf ' PASS claude does not intercept WebSearch\n'
Downloads and installs other software
The author does not mention this. It runs automatically when the plugin is installed.
Found in 3 places.
Can call paid AI services billed to you
The author does not mention this. It runs automatically when the plugin is installed.
Found in 1 place.
Reads your saved credentials, such as SSH keys or .env files
The author does not mention this. It runs automatically when the plugin is installed.
Found in 2 places.
Safer alternatives
Low-risk skills in the same category (other) that look related. Check that one does what you need.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'hook-manager' ] || [ -L ~/.agents/skills/'hook-manager' ]; then echo 'A skill folder named hook-manager already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/b-open-io/prompts' "$d" && git -C "$d" checkout --quiet 'f4b302aadb0c99023b03e1f1b38ffed3697fbedf' -- 'skills/hook-manager' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/hook-manager' ~/.agents/skills/'hook-manager' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'hook-manager' ~/.claude/skills/'hook-manager' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for b-open-io/prompts shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/b-open-io/prompts/)
Score history
| Date | Version | Score |
|---|
| 2026-11-08 | f4b302a | 40 |
| 2026-11-06 | f4b302a | 40 |