Tether (install/uninstall) gh-tools hooks to ~/.claude/settings.json. Renamed from 'hooks' to avoid clashing with Claude Code's.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add terrylica/cc-skills --skill tether --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Tether?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/terrylica-tether-9076bf5c)More formats (shields.io, HTML) on the badges page.
---
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
---
<!-- SKILL-PLUGIN-ROOT-OK: diagnostic block that probes for the variable on purpose -->
# 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:
```bash
/usr/bin/env bash << 'GH_TOOLS_HOOKS_SCRIPT'
set -euo pipefail
ACTION="${ARGUMENTS:-status}"
# Auto-detect plugin root
# Note: $CLAUDE_PLUGIN_ROOT is injected into hook/MCP processes only, not skills.
# For skill scripts, use: cc-plugin-root <plugin-name>
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
```bash
# Check current installation status
/gh-tools:tether status
# Install the WebFetch enforcement hook
/gh-tools:tether install
# Uninstall hooks
/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
- [ADR: gh-tools WebFetch Enforcement](/docs/adr/2026-01-03-gh-tools-webfetch-enforcement.md)
## Post-Execution Reflection
After this skill completes, check before closing:
1. **Did the command succeed?** — If not, fix the instruction or error table that caused the failure.
2. **Did parameters or output change?** — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
3. **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.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!