Install once. Add language or policy templates in seconds. Get reliable automation with clear feedback and logs—without surprises.
npm install -g @c-p-b/cc-hooks
cc-hooks init &&cc-hooks install typescript
Works on macOS and Linux. Windows users: use WSL/WSL2.
npm install -g @c-p-b/cc-hooks
cc-hooks
cc-hooks init
cc-hooksinstall typescript
typescript-format
, python-lint
, session-context
, git-commit-msg
cc-hooks init
Adds the orchestrator to your Claude settings across all events.
cc-hooks install typescript cc-hooks install typescript-format cc-hooks install python-lint cc-hooks install session-context cc-hooks install git-commit-msg
Templates live in the package under templates/
for easy discovery.
cc-hooks show --verbose
Shows events, commands, timeouts, and priorities. Bundles are grouped automatically when present.
cc-hooks logs
for quick visibility (filter, tail)CC_HOOKS_DEBUG
for deep diagnosticsprintf 'export const x=[1,2,3]\n' > demo.ts echo '{"session_id":"demo","transcript_path":"/tmp/demo.jsonl","cwd":"'"$(pwd)"'","hook_event_name":"PostToolUse","tool_name":"Write","tool_input":{"file_path":"demo.ts"}}' | cc-hooks run
typescript-format
blocks on Prettier issuestypescript
reports non-blocking warningsecho '{"session_id":"demo","transcript_path":"/tmp/demo.jsonl","cwd":"'"$(pwd)"'","hook_event_name":"SessionStart","source":"startup"}' | cc-hooks run
session-context
prints git status and recent commits (becomes context)
git add -A && git commit -m "bad message" echo '{"session_id":"demo","transcript_path":"/tmp/demo.jsonl","cwd":"'"$(pwd)"'","hook_event_name":"Stop"}' | cc-hooks run
git-commit-msg
blocks non-conventional messages and suggests a fix
Keep cc-hooks logs -f
running in another terminal to watch results in real time.
Create my-hook.json
in your project:
{ "name": "my-guardrail", "description": "Block TODOs in user prompts", "command": ["sh", "-c", "jq -er '.prompt|test(\"TODO\")|not' > /dev/null || { echo 'Prompt contains TODO – please remove it' 1>&2; exit 2; }"], "events": ["UserPromptSubmit"], "outputFormat": "text", "exitCodeMap": { "0": "success", "2": "blocking-error", "default": "non-blocking-error" }, "message": "Prompt check failed", "timeout": 10 }
cc-hooks install ./my-hook.json cc-hooks show --verbose
Prefer structured hooks for richer decisions and diagnostics.
cc-hooks run
reads stdincc-hooks logs
to view, filter, or tailtypescript
— ESLint, Prettier, tests, coveragepython
— Ruff lintinggit
— Conventional commit validationsession
— Context, init, transcript savinganalysis
— Code quality & patternsautomation
— Script runners & processorsWant installers for your team? Add JSON files under templates/
or publish a Git repo with a hook.json
.