npm requires --tag flag when publishing prerelease versions. Extracts tag from version string (e.g., 'beta' from '3.0.0-beta.2').
3.4 KiB
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
- Create
src/hooks/my-hook/ - Files:
index.ts(createMyHook),constants.ts,types.ts(optional) - Return:
{ PreToolUse?, PostToolUse?, UserPromptSubmit?, Stop?, onSummarize? } - 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)