2.0 KiB
2.0 KiB
CLAUDE CODE HOOKS COMPATIBILITY
OVERVIEW
Full Claude Code settings.json hook compatibility layer. Intercepts OpenCode events to execute external scripts/commands.
Config Sources (priority): .claude/settings.local.json > .claude/settings.json (project) > ~/.claude/settings.json (global)
STRUCTURE
claude-code-hooks/
├── index.ts # Barrel export
├── claude-code-hooks-hook.ts # Main factory
├── config.ts # Claude settings.json loader
├── config-loader.ts # Extended plugin config
├── pre-tool-use.ts # PreToolUse hook executor
├── post-tool-use.ts # PostToolUse hook executor
├── user-prompt-submit.ts # UserPromptSubmit executor
├── stop.ts # Stop hook executor
├── pre-compact.ts # PreCompact executor
├── transcript.ts # Tool use recording
├── tool-input-cache.ts # Pre→post input caching
├── todo.ts # Todo integration
├── session-hook-state.ts # Active state tracking
├── types.ts # Hook & IO type definitions
├── plugin-config.ts # Default config constants
└── handlers/ # Event handlers (5 files)
HOOK LIFECYCLE
| Event | Timing | Can Block | Context Provided |
|---|---|---|---|
| PreToolUse | Before exec | Yes (exit 2) | sessionId, toolName, toolInput, cwd |
| PostToolUse | After exec | Warn (exit 1) | + toolOutput, transcriptPath |
| UserPromptSubmit | On message | Yes (exit 2) | sessionId, prompt, parts, cwd |
| Stop | Session end | Inject | sessionId, parentSessionId, cwd |
| PreCompact | Before summarize | No | sessionId, cwd |
EXIT CODES
0: Pass (continue)1: Warn (continue + system message)2: Block (abort operation)
ANTI-PATTERNS
- Heavy PreToolUse: Runs before EVERY tool — keep scripts fast
- Blocking non-critical: Prefer PostToolUse warnings
- Ignoring exit codes: Return
2to block sensitive tools