Agent skill
global-hook-setup
Use when setting up global hooks for Claude Code enforcement. Load when ~/.claude/hooks/ is missing or incomplete, or when explicitly requested. Installs 7 project-agnostic hooks (state transitions, git hygiene, outcome tracking). Run once per machine.
Install this agent skill to your Project
npx add-skill https://github.com/ingpoc/SKILLS/tree/main/global-hook-setup
SKILL.md
Global Hook Setup
One-time setup for global Claude Code hooks. These hooks work across all projects.
Purpose
Installs 8 project-agnostic hooks that enforce DESIGN-v2 determinism:
- State machine integrity
- Git hygiene
- Learning layer (outcome tracking)
- Session checkpoints
When to Use
| Situation | Action |
|---|---|
| First time setup | Run full setup |
| ~/.claude/hooks/ missing | Run full setup |
| After updating hooks | Re-run setup |
| Manual verification | Run verify script |
Quick Check
# Check if global hooks exist
ls ~/.claude/hooks/
Expected output:
verify-state-transition.py
require-commit-before-tested.py
require-outcome-update.py
link-feature-to-trace.py
markdownlint-fix.sh
remind-decision-trace.sh
session-end.sh
feature-commit.sh
Setup Steps
1. Install Hooks
~/.claude/skills/global-hook-setup/scripts/setup-global-hooks.sh
This creates:
~/.claude/hooks/directory- 8 hook files
- Executable permissions (chmod +x)
2. Verify Installation
~/.claude/skills/global-hook-setup/scripts/verify-global-hooks.sh
Hooks Installed
| Hook | Event | Purpose | Blocks? |
|---|---|---|---|
verify-state-transition.py |
PreToolUse | Valid state transitions only | Yes |
require-commit-before-tested.py |
PreToolUse | Git clean before tested | Yes |
require-outcome-update.py |
PreToolUse | Update trace outcome | Yes |
link-feature-to-trace.py |
PostToolUse | Auto-link features | No |
markdownlint-fix.sh |
PostToolUse | Auto-fix .md linting | No |
remind-decision-trace.sh |
SessionEnd | Remind to log decisions | No |
session-end.sh |
SessionEnd | Checkpoint commit | No |
feature-commit.sh |
CLI utility | Feature commit helper | N/A |
Note: feature-commit.sh is a CLI utility (not a hook). Use: ~/.claude/hooks/feature-commit.sh <feature-id> [message]
Settings.json Configuration
Setup script configures ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{"type": "command", "command": "python3 ~/.claude/hooks/verify-state-transition.py"},
{"type": "command", "command": "python3 ~/.claude/hooks/require-commit-before-tested.py"},
{"type": "command", "command": "python3 ~/.claude/hooks/require-outcome-update.py"}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{"type": "command", "command": "python3 ~/.claude/hooks/link-feature-to-trace.py"},
{"type": "command", "command": "/bin/bash ~/.claude/hooks/markdownlint-fix.sh"}
]
}
],
"SessionEnd": [
{
"hooks": [
{"type": "command", "command": "/bin/bash ~/.claude/hooks/session-end.sh"},
{"type": "command", "command": "/bin/bash ~/.claude/hooks/remind-decision-trace.sh"}
]
}
]
}
}
Exit Criteria (Code Verified)
# Directory exists
[ -d ~/.claude/hooks ]
# All hooks exist and executable
[ -x ~/.claude/hooks/verify-state-transition.py ]
[ -x ~/.claude/hooks/require-commit-before-tested.py ]
[ -x ~/.claude/hooks/require-outcome-update.py ]
[ -x ~/.claude/hooks/link-feature-to-trace.py ]
[ -x ~/.claude/hooks/markdownlint-fix.sh ]
[ -x ~/.claude/hooks/remind-decision-trace.sh ]
[ -x ~/.claude/hooks/session-end.sh ]
[ -x ~/.claude/hooks/feature-commit.sh ]
# Verify script passes
~/.claude/skills/global-hook-setup/scripts/verify-global-hooks.sh
Scripts
| Script | Purpose |
|---|---|
setup-global-hooks.sh |
Main setup (install + configure + validate) |
configure-settings.py |
Configure settings.json with hook entries |
validate-settings.py |
Validate hooks configured in settings.json |
verify-global-hooks.sh |
Verify hook files exist |
install-hooks.sh |
Copy from templates |
Troubleshooting
| Problem | Solution |
|---|---|
| Hooks not found | Re-run setup script |
| Permission denied | Run: chmod +x ~/.claude/hooks/* |
| Verification fails | Check hook syntax, ensure python3 available |
| Already exists | Setup is idempotent, safe to re-run |
Next Steps
After global hooks: Set up project-specific hooks with project-hook-setup skill.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
scroll-storyteller
Use when creating interactive scroll-based storytelling experiences with mouse-following spotlight effects, animated SVG art, and the Anthropic design language. Load for explainer pages, product showcases, visual narratives, or any content needing immersive scroll storytelling with organic shapes and smooth animations. Supports GSAP-powered or lightweight CSS-only animations.
enforcement
Use when implementing hooks that BLOCK invalid actions, creating quality gates for state transitions, or enforcing tested:true verification. Load when designing enforcement mechanisms. Uses exit code 2 to block, JSON permissionDecision:deny, or updatedInput modification. Rules are instructions; hooks are enforcement.
async-programming-skill
This skill provides async/await patterns and best practices for concurrent programming
postgresql-skill
This skill provides PostgreSQL-specific patterns for database design, optimization, and transaction management
token-efficient
Use when processing 50+ items, analyzing CSV/log files, executing code in sandbox, or searching for tools. Load for data processing tasks. Achieves 98%+ token savings via in-sandbox execution, progressive disclosure, and pagination. Supports heredocs for multi-line bash.
mcp-builder
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Didn't find tool you were looking for?