Files
oh-my-openagent/src/hooks/AGENTS.md
YeonGyu-Kim a2c2922d0a fix(publish): add --tag for prerelease versions
npm requires --tag flag when publishing prerelease versions.
Extracts tag from version string (e.g., 'beta' from '3.0.0-beta.2').
2026-01-09 15:44:06 +09:00

3.4 KiB

HOOKS KNOWLEDGE BASE

OVERVIEW

22+ lifecycle hooks intercepting/modifying agent behavior. Context injection, error recovery, output control, notifications.

STRUCTURE

hooks/
├── anthropic-context-window-limit-recovery/  # Auto-compact at token limit (556 lines)
├── auto-slash-command/         # Detect and execute /command patterns
├── auto-update-checker/        # Version notifications, startup toast
├── background-notification/    # OS notify on task complete
├── claude-code-hooks/          # settings.json PreToolUse/PostToolUse/etc (408 lines)
├── comment-checker/            # Prevent excessive AI comments
│   ├── filters/                # docstring, directive, bdd, shebang
│   └── output/                 # XML builder, formatter
├── compaction-context-injector/ # Preserve context during compaction
├── directory-agents-injector/  # Auto-inject AGENTS.md
├── directory-readme-injector/  # Auto-inject README.md
├── edit-error-recovery/        # Recover from edit failures
├── empty-message-sanitizer/    # Sanitize empty messages
├── interactive-bash-session/   # Tmux session management
├── keyword-detector/           # ultrawork/search keyword activation
├── non-interactive-env/        # CI/headless handling
├── preemptive-compaction/      # Pre-emptive at 85% usage
├── prometheus-md-only/         # Restrict prometheus to read-only
├── ralph-loop/                 # Self-referential dev loop
├── rules-injector/             # Conditional rules from .claude/rules/
├── session-recovery/           # Recover from errors (432 lines)
├── sisyphus-orchestrator/      # Main orchestration hook (660 lines)
├── start-work/                 # Initialize Sisyphus work session
├── task-resume-info/           # Track task resume state
├── think-mode/                 # Auto-detect thinking triggers
├── thinking-block-validator/   # Validate thinking block format
├── agent-usage-reminder/       # Remind to use specialists
├── context-window-monitor.ts   # Monitor usage (standalone)
├── session-notification.ts     # OS notify on idle
├── todo-continuation-enforcer.ts # Force TODO completion (413 lines)
└── tool-output-truncator.ts    # Truncate verbose outputs

HOOK EVENTS

Event Timing Can Block Use Case
PreToolUse Before tool Yes Validate, modify input
PostToolUse After tool No Add context, warnings
UserPromptSubmit On prompt Yes Inject messages, block
Stop Session idle No Inject follow-ups
onSummarize Compaction No Preserve context

HOW TO ADD

  1. Create src/hooks/my-hook/
  2. Files: index.ts (createMyHook), constants.ts, types.ts (optional)
  3. Return: { PreToolUse?, PostToolUse?, UserPromptSubmit?, Stop?, onSummarize? }
  4. Export from src/hooks/index.ts

PATTERNS

  • Storage: JSON file for persistent state across sessions
  • Once-per-session: Track injected paths in Set
  • Message injection: Return { messages: [...] }
  • Blocking: Return { blocked: true, message: "..." } from PreToolUse

ANTI-PATTERNS

  • Heavy computation in PreToolUse (slows every tool call)
  • Blocking without actionable message
  • Duplicate injection (track what's injected)
  • Missing try/catch (don't crash session)