Cc-skills hooks
Install/uninstall gh-tools hooks to ~/.claude/settings.json. TRIGGERS - gh hooks, github hooks, install gh hook, webfetch guard hook.
git clone https://github.com/terrylica/cc-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/terrylica/cc-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/gh-tools/skills/hooks" ~/.claude/skills/terrylica-cc-skills-hooks-18ae26 && rm -rf "$T"
plugins/gh-tools/skills/hooks/SKILL.mdgh-tools Hooks Manager
Manage gh-tools hook installation in
~/.claude/settings.json.
This hook soft-blocks WebFetch requests to github.com URLs and suggests using the
gh CLI instead for better data access.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
Actions
| Action | Description |
|---|---|
| Check hook installation status and dependencies |
| Add gh-tools hooks to settings.json |
| Remove gh-tools hooks from settings.json |
Why Use gh CLI Instead of WebFetch?
| Aspect | WebFetch | gh CLI |
|---|---|---|
| Authentication | None | gh auth token |
| Data format | HTML scraping | Native JSON API |
| Rate limits | Strict (anonymous) | Higher (authenticated) |
| Pagination | Manual | Automatic |
| Metadata | Limited | Full (labels, etc.) |
Execution
Parse
$ARGUMENTS and run the management script:
/usr/bin/env bash << 'GH_TOOLS_HOOKS_SCRIPT' set -euo pipefail ACTION="${ARGUMENTS:-status}" # Auto-detect plugin root detect_plugin_root() { if [[ -n "${CLAUDE_PLUGIN_ROOT:-}" ]]; then echo "$CLAUDE_PLUGIN_ROOT" return fi local marketplace="$HOME/.claude/plugins/marketplaces/cc-skills/plugins/gh-tools" if [[ -d "$marketplace/hooks" ]]; then echo "$marketplace" return fi local cache_base="$HOME/.claude/plugins/cache/cc-skills/gh-tools" if [[ -d "$cache_base" ]]; then local latest latest=$(ls -1 "$cache_base" 2>/dev/null | grep -E '^[0-9]+\.[0-9]+' | sort -V | tail -1) if [[ -n "$latest" && -d "$cache_base/$latest/hooks" ]]; then echo "$cache_base/$latest" return fi fi echo "" } PLUGIN_DIR="$(detect_plugin_root)" if [[ -z "$PLUGIN_DIR" ]]; then echo "ERROR: Cannot detect gh-tools plugin installation" >&2 exit 1 fi bash "$PLUGIN_DIR/scripts/manage-hooks.sh" "$ACTION" GH_TOOLS_HOOKS_SCRIPT
Post-Action Reminder
After install/uninstall operations:
IMPORTANT: Restart Claude Code session for changes to take effect.
The hooks are loaded at session start. Modifications to settings.json require a restart.
Examples
# Check current installation status /gh-tools:hooks status # Install the WebFetch enforcement hook /gh-tools:hooks install # Uninstall hooks /gh-tools:hooks uninstall
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| jq not found | jq not installed | |
| Plugin root not found | Plugin not installed | Re-install via marketplace |
| Hooks not working | Session not restarted | Restart Claude Code session |
| gh not authenticated | gh CLI not set up | Run |
| WebFetch still allowed | Hook not triggered | Check settings.json has hooks entry |
Reference
Post-Execution Reflection
After this skill completes, check before closing:
- Did the command succeed? — If not, fix the instruction or error table that caused the failure.
- Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
- Was a workaround needed? — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.
Only update if the issue is real and reproducible — not speculative.