| name | tether |
| description | Tether (install/uninstall) gh-tools hooks to ~/.claude/settings.json. Renamed from 'hooks' to avoid clashing with Claude Code's. |
| allowed-tools | Read, Bash, TodoWrite, TodoRead |
| argument-hint | [install|uninstall|status] |
| model | haiku |
| disable-model-invocation | true |
gh-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 |
|---|
status | Check hook installation status and dependencies |
install | Add gh-tools hooks to settings.json |
uninstall | 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}"
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//hooks" ]];
}
PLUGIN_DIR=
[[ -z ]];
>&2
1
bash
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
/gh-tools:tether status
/gh-tools:tether install
/gh-tools:tether uninstall
Troubleshooting
| Issue | Cause | Solution |
|---|
| jq not found | jq not installed | brew install jq |
| 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 gh auth login |
| 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.