An open API service indexing awesome lists of open source software.

https://github.com/karanb192/claude-code-hooks

๐Ÿช A growing collection of useful Claude Code hooks. Copy, paste, customize.
https://github.com/karanb192/claude-code-hooks

ai-tools anthropic automation claude claude-code claude-code-hooks cli developer-tools hooks notifications security

Last synced: 11 days ago
JSON representation

๐Ÿช A growing collection of useful Claude Code hooks. Copy, paste, customize.

Awesome Lists containing this project

README

          

# claude-code-hooks

๐Ÿช Ready-to-use hooks for Claude Code โ€” safety, automation, notifications, and more.

[![GitHub stars](https://img.shields.io/github/stars/karanb192/claude-code-hooks?style=social)](https://github.com/karanb192/claude-code-hooks)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://img.shields.io/badge/tests-262%20passing-brightgreen)](hook-scripts/tests)

### ๐ŸŽฌ Quick Demo


Protecting Secrets
Blocking Dangerous Commands


Hook blocking .env read
Hook blocking dangerous commands

A growing collection of tested, documented hooks you can copy, paste, and customize.

---

## ๐Ÿ“‘ Table of Contents

- [Hooks](#-hooks)
- [Quick Start](#-quick-start)
- [Safety Levels](#-safety-levels)
- [Testing](#-testing)
- [Contributing](#-contributing)

---

## ๐Ÿช Hooks

### Pre-Tool-Use

Runs **before** Claude executes a tool. Can block or modify the operation.

| Hook | Matcher | Description |
|------|---------|-------------|
| [block-dangerous-commands](hook-scripts/pre-tool-use/block-dangerous-commands.js) | `Bash` | Blocks dangerous shell commands (rm -rf ~, fork bombs, curl\|sh) |
| [protect-secrets](hook-scripts/pre-tool-use/protect-secrets.js) | `Read\|Edit\|Write\|Bash` | Prevents reading/modifying/exfiltrating sensitive files |

### Post-Tool-Use

Runs **after** Claude executes a tool. Can react to results.

| Hook | Matcher | Description |
|------|---------|-------------|
| [auto-stage](hook-scripts/post-tool-use/auto-stage.js) | `Edit\|Write` | Automatically git stages files after Claude modifies them |

### Notification

Fires when Claude needs user attention.

| Hook | Matcher | Description |
|------|---------|-------------|
| [notify-permission](hook-scripts/notification/notify-permission.js) | `permission_prompt\|idle_prompt` | Sends Slack alerts when Claude needs input |

### Utils

Tools to help you build and debug hooks.

| Tool | Language | Description |
|------|----------|-------------|
| [event-logger](hook-scripts/utils/event-logger.py) | Python | Logs all hook events to inspect payload structures |

> ๐Ÿ’ก **Building a new hook?** Use `event-logger.py` to discover what data Claude Code provides for each event before writing your own hooks.

---

## ๐Ÿš€ Quick Start

**1. Copy the hook script:**
```bash
mkdir -p ~/.claude/hooks
cp hook-scripts/pre-tool-use/block-dangerous-commands.js ~/.claude/hooks/
```

**2. Add to `.claude/settings.json`:**
```json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "node ~/.claude/hooks/block-dangerous-commands.js"
}
]
}
]
}
}
```

**3. Restart Claude Code** โ€” the hook is now active.

> ๐Ÿ’ก **Tip:** Use multiple hooks together. Combine `block-dangerous-commands` + `protect-secrets` for comprehensive safety.

---

## ๐Ÿ›ก๏ธ Safety Levels

Security hooks support configurable safety levels:

| Level | What's Blocked | Use Case |
|-------|----------------|----------|
| `critical` | Catastrophic only (rm -rf ~, fork bombs, dd to disk) | Maximum flexibility |
| `high` | + Risky (force push main, secrets exposure, git reset --hard) | **Recommended** |
| `strict` | + Cautionary (any force push, sudo rm, docker prune) | Maximum safety |

**To change:** Edit the `SAFETY_LEVEL` constant at the top of each hook.

```javascript
const SAFETY_LEVEL = 'strict'; // or 'critical', 'high'
```

---

## ๐Ÿงช Testing

All hooks include comprehensive tests:

```bash
# Run all tests
npm test

# Run specific hook tests
node --test hook-scripts/tests/pre-tool-use/block-dangerous-commands.test.js
```

**Test coverage:**
- โœ… Unit tests for core functions
- โœ… Integration tests for stdin/stdout flow
- โœ… Config validation tests

---

## ๐Ÿ“– Configuration Reference

See the [official Claude Code hooks documentation](https://docs.anthropic.com/en/docs/claude-code/hooks) for:

- All hook events and their lifecycles
- Input/output JSON formats
- Matcher patterns
- Environment variables

---

## ๐Ÿค Contributing

Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

**Ideas for new hooks:**

| Hook | Event | Description |
|------|-------|-------------|
| `protect-tests` | PreToolUse | Block test deletion/disabling |
| `auto-format` | PostToolUse | Run prettier/black/gofmt after edits |
| `branch-guard` | PreToolUse | Block changes on main/master branch |
| `context-snapshot` | PreCompact | Preserve context before compaction |
| `session-summary` | Stop | Generate summary on session end |
| `ntfy-notify` | Notification | Free mobile push via [ntfy.sh](https://ntfy.sh) |
| `discord-notify` | Notification | Discord webhook alerts |
| `cost-tracker` | PostToolUse | Track token usage and estimate costs |
| `tts-alerts` | Notification | Voice notifications via say/espeak |
| `rules-injector` | UserPromptSubmit | Auto-inject CLAUDE.md rules |
| `rate-limiter` | PreToolUse | Limit tool calls per minute |
| `context-injector` | SessionStart | Inject project context on session start |

---

## ๐Ÿ“„ License

MIT ยฉ [karanb192](https://github.com/karanb192)