Hook manager
List, add, remove, and validate Claude Code lifecycle hook entries in settings.json, routed through /aida extension management. Use for structured CRUD on the hooks block. For general settings.json edits or other harness behavior changes, use the native settings/config flow instead.From its SKILL.md
npx -y skills add aida-core/aida-core-plugin --skill hook-managerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.8 KB, as published. Nobody here has run it
Hook Manager
Manages Claude Code lifecycle hook configurations. Hooks are shell commands that execute automatically at specific points in the Claude Code lifecycle, providing deterministic control over formatting, logging, blocking, and notifications.
Activation
This skill activates when:
- User invokes
/aida hook list - User invokes
/aida hook add - User invokes
/aida hook remove - User invokes
/aida hook validate - Hook management is needed
Operations
List Hooks
Show all configured hooks across settings files.
python {base_directory}/scripts/manage.py --execute \
--context='{"operation": "list", "scope": "all"}'
Scopes:
user-- User-level hooks onlyproject-- Project-level hooks onlylocal-- Local overrides onlyall-- All hooks (default)
Add Hook
Add a new hook using the two-phase API.
Phase 1: Gather Context
python {base_directory}/scripts/manage.py \
--get-questions \
--context='{"operation": "add", "description": "..."}'
Returns questions about event type, scope, and whether to use a built-in template.
Phase 2: Execute
python {base_directory}/scripts/manage.py --execute \
--context='{"operation": "add", "event": "PostToolUse", "matcher": "Write|Edit", "command": "prettier --write", "scope": "project"}'
Built-in templates:
| Template | Event | Purpose |
|---|---|---|
formatter | PostToolUse | Auto-format after writes |
logger | PostToolUse | Log commands for audit |
blocker | PreToolUse | Block sensitive file writes |
notifier | Notification | Desktop notifications |
Remove Hook
Remove a hook by event and matcher.
python {base_directory}/scripts/manage.py --execute \
--context='{"operation": "remove", "event": "PostToolUse", "matcher": "Write|Edit", "scope": "project"}'
Validate Hooks
Validate hook configurations for correctness.
python {base_directory}/scripts/manage.py --execute \
--context='{"operation": "validate", "scope": "all"}'
Checks:
- Hook structure (required fields)
- Event names are valid
- Commands are safe (warns about dangerous patterns)
Two-Phase API
Phase 1: get_questions(context)
Analyzes the operation context and returns:
- questions: List of questions needing user input
- inferred: Values inferred from the description
Phase 2: execute(context, responses)
Executes the operation with user responses and returns:
- success: Whether the operation succeeded
- message: Human-readable result message
- Operation-specific data (hooks list, added hook, etc.)
Hook Configuration Locations
| Scope | Path | Use Case |
|---|---|---|
user | ~/.claude/settings.json | Personal hooks |
project | .claude/settings.json | Shared team hooks |
local | .claude/settings.local.json | Local overrides |
Path Resolution
Script entry point:
{base_directory}/scripts/manage.py
Reference docs:
{base_directory}/references/hooks-reference.md
Resources
Scripts
| Script | Purpose |
|---|---|
scripts/manage.py | Two-phase API entry point |
scripts/_paths.py | Path setup for shared utils |
scripts/operations/hooks.py | Hook operations |