Summary
Port the hook system from extensions to presets, enabling post-install automation and preset composition.
Context
Extensions have a sophisticated hook system (extensions.py:1509-1884):
- Event-based hooks (
after_spec, after_tasks, etc.)
- Conditional hook execution
- Config-based hook conditions
- Hook lifecycle management
Presets have no hook support.
Requirements
- Define relevant hook events for presets (e.g.,
after_install, after_resolve)
- Port HookExecutor pattern to PresetManager
- Add hooks section to preset manifest
- Implement hook registration/execution lifecycle
Related
- Reverse parity: extensions → presets