Files
oh-my-opencode/src/hooks/claude-code-hooks/AGENTS.md
T

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 2 to block sensitive tools