skills/hook-manager/SKILL.md
Discover and install automation hooks for Claude Code and Opencode. This skill should be used when users ask to "list hooks", "install a hook", "show available hooks", "enable hook", "what hooks are available", or need help managing agent automation hooks.
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.
Help users discover, install, and diagnose automation hooks from the bopen-tools collection.
| Hook | Event | Description | Recommendation |
|------|-------|-------------|----------------|
| protect-env-files | PreToolUse | Blocks edits to .env files (security) | Recommended |
| uncommitted-reminder | Stop | Shows uncommitted changes when agent stops | Optional |
| auto-git-add | PostToolUse | Auto-stages files after edits | Optional |
| time-dir-context | UserPromptSubmit | Adds timestamp/dir/branch to prompts | Optional |
| lint-on-save | PostToolUse | Runs lint:fix after file edits | Optional |
| lint-on-start | SessionStart | Runs linting on session start | Optional |
| auto-test-on-save | PostToolUse | Runs tests after file edits | Optional |
| protect-shadcn-components | PreToolUse | Protects shadcn UI components | Optional |
Hooks live in the plugin cache. The exact version path segment varies; use a glob to locate them:
# Claude Code
ls ~/.claude/plugins/cache/bopen-tools/user/.claude/hooks/
# Opencode
ls ~/.opencode/plugins/cache/bopen-tools/user/.claude/hooks/
To install a hook, copy its JSON file to the correct hooks directory and inform the user to restart their agent.
Claude Code:
mkdir -p ~/.claude/hooks
cp ~/.claude/plugins/cache/bopen-tools/user/.claude/hooks/<hook-name>.json ~/.claude/hooks/
Opencode:
mkdir -p ~/.opencode/hooks
cp ~/.opencode/plugins/cache/bopen-tools/user/.claude/hooks/<hook-name>.json ~/.opencode/hooks/
After copying, tell the user: restart Claude Code (or Opencode) for the hook to take effect.
# Claude Code
ls ~/.claude/hooks/
# Opencode
ls ~/.opencode/hooks/
When a user asks what hooks to install without specifying a use case:
protect-env-files first — it is a security safeguard with no downsides.auto-git-add, uncommitted-reminderbun lint:fix: lint-on-save, lint-on-startprotect-shadcn-componentstime-dir-contextBlocks Write/Edit on .env* files. No performance cost. Recommended universally.
Runs on Stop event; exits with code 2 if uncommitted changes exist, feeding the message back to the agent.
Runs git add -A after Write/Edit/MultiEdit. Stages only; never commits. 5s timeout.
Injects Context: <timestamp> | <cwd> | Branch: <branch> into every UserPromptSubmit.
Runs bun lint:fix. Requires lint:fix in package.json and bun + jq on PATH.
Runs tests after file edits. Can be slow on large suites — confirm user wants this before installing.
Blocks edits to shadcn/ui component files. Only relevant when project uses shadcn/ui.
See the hook catalog above for all available hooks and their configurations.
development
This skill should be used when the user asks to "design a business card", "make a printable PDF", "render HTML to PDF", "generate a postcard", "build print collateral", "set up an HTML print pipeline", or needs help with bleed, safe areas, font embedding, or QR generation for print. Provides a Playwright-based pipeline with multiple bundled templates and theme variants for business cards (minimal, watercolor light, watercolor dark) and instructions for adding new templates.
tools
Get recent tweets from an X/Twitter user. Use when user asks "what has @username posted", "recent tweets from", "user's X posts", "show timeline for", "what is @user saying". Requires X_BEARER_TOKEN.
data-ai
Get X/Twitter user profile by username. Use when user asks "who is @username", "get X profile", "lookup Twitter user", "find X account", "user details", "follower count for". Requires X_BEARER_TOKEN.
data-ai
Search recent X/Twitter posts by query. Returns RAW TWEETS (last 7 days). Use when user asks "search X for", "find tweets about", "what are people saying about", "Twitter search", "raw tweets about". For AI summaries/sentiment, use x-research instead. Requires X_BEARER_TOKEN.