- Add src/agents/AGENTS.md with agent module documentation - Update root AGENTS.md with latest generation timestamp (2025-12-28T17:15:00+09:00, commit f5b74d5) - Update src/features/AGENTS.md with builtin-commands and claude-code-plugin-loader documentation - Update src/hooks/AGENTS.md with thinking-block-validator hook documentation 🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
4.3 KiB
4.3 KiB
HOOKS KNOWLEDGE BASE
OVERVIEW
Lifecycle hooks that intercept/modify agent behavior. Inject context, enforce rules, recover from errors, notify on events.
STRUCTURE
hooks/
├── agent-usage-reminder/ # Remind to use specialized agents
├── anthropic-auto-compact/ # Auto-compact Claude at token limit
├── auto-update-checker/ # Version update notifications
├── background-notification/ # OS notify on background task complete
├── claude-code-hooks/ # Claude Code settings.json integration
├── comment-checker/ # Prevent excessive AI comments
│ ├── filters/ # Filtering rules (docstring, directive, bdd, etc.)
│ └── output/ # Output formatting
├── compaction-context-injector/ # Inject context during compaction
├── directory-agents-injector/ # Auto-inject AGENTS.md files
├── directory-readme-injector/ # Auto-inject README.md files
├── empty-message-sanitizer/ # Sanitize empty messages
├── interactive-bash-session/ # Tmux session management
├── keyword-detector/ # Detect ultrawork/search keywords
├── non-interactive-env/ # CI/headless environment handling
├── preemptive-compaction/ # Pre-emptive session compaction
├── rules-injector/ # Conditional rules from .claude/rules/
├── session-recovery/ # Recover from session errors
├── think-mode/ # Auto-detect thinking triggers
├── thinking-block-validator/ # Validate thinking blocks in messages
├── context-window-monitor.ts # Monitor context usage (standalone)
├── empty-task-response-detector.ts
├── session-notification.ts # OS notify on idle (standalone)
├── todo-continuation-enforcer.ts # Force TODO completion (standalone)
└── tool-output-truncator.ts # Truncate verbose outputs (standalone)
HOOK CATEGORIES
| Category | Hooks | Purpose |
|---|---|---|
| Context Injection | directory-agents-injector, directory-readme-injector, rules-injector, compaction-context-injector | Auto-inject relevant context |
| Session Management | session-recovery, anthropic-auto-compact, preemptive-compaction, empty-message-sanitizer | Handle session lifecycle |
| Output Control | comment-checker, tool-output-truncator | Control agent output quality |
| Notifications | session-notification, background-notification, auto-update-checker | OS/user notifications |
| Behavior Enforcement | todo-continuation-enforcer, keyword-detector, think-mode, agent-usage-reminder | Enforce agent behavior |
| Environment | non-interactive-env, interactive-bash-session, context-window-monitor | Adapt to runtime environment |
| Compatibility | claude-code-hooks | Claude Code settings.json support |
HOW TO ADD A HOOK
- Create directory:
src/hooks/my-hook/ - Create files:
index.ts: ExportcreateMyHook(input: PluginInput)constants.ts: Hook name constanttypes.ts: TypeScript interfaces (optional)storage.ts: Persistent state (optional)
- Return event handlers:
{ PreToolUse?, PostToolUse?, UserPromptSubmit?, Stop?, onSummarize? } - Export from
src/hooks/index.ts - Register in main plugin
HOOK EVENTS
| Event | Timing | Can Block | Use Case |
|---|---|---|---|
| PreToolUse | Before tool exec | Yes | Validate, modify input |
| PostToolUse | After tool exec | No | Add context, warnings |
| UserPromptSubmit | On user prompt | Yes | Inject messages, block |
| Stop | Session idle | No | Inject follow-ups |
| onSummarize | During compaction | No | Preserve critical context |
COMMON PATTERNS
- Storage: Use
storage.tswith JSON file for persistent state across sessions - Once-per-session: Track injected paths in Set to avoid duplicate injection
- Message injection: Return
{ messages: [...] }from event handlers - Blocking: Return
{ blocked: true, message: "reason" }from PreToolUse
ANTI-PATTERNS (HOOKS)
- Heavy computation in PreToolUse: Slows every tool call
- Blocking without clear reason: Always provide actionable message
- Duplicate injection: Track what's already injected per session
- Ignoring errors: Always try/catch, log failures, don't crash session