new-automation · git:20261023.9f9eaf2 · 2026-10-23 · sha256 742061ce0a5cb5b0
new-automation git:20261023.9f9eaf2A
Immutable. This exact content never changes and is served at /api/v1/blob/742061ce0a5cb5b0.
--- # GENERATED by scripts/kernel/sync.py from skills/new-automation/SKILL.md - do not edit name: new-automation description: Use when something should happen in reaction to an event (session start or end, a tool call, a file change, a new inbox item, a routine finishing, a webhook) rather than on a schedule. Interview, automation spec from template, hook or sweep wiring, lint, dry run. disable-model-invocation: true --- # New automation Today is !`date +%F`. Request: `$ARGUMENTS` ## Procedure 1. **Interview**: which event (`SessionEnd | SessionStart | PreToolUse | FileChanged(path) | inbox:new(type) | routine:done(name) | webhook`)? Under what condition? What runs, and is it deterministic (script) or judgment (skill)? Tier? Can it block, or only observe? 2. **Classify**: hook-backed events are compiled into `hooks/hooks.json` by sync; inbox- and routine-backed ones are evaluated by the sweep. Check the automations folder and the hooks file for an existing rule first. 3. **Scaffold** an automation spec from `templates/automation.yaml`, `enabled: false`. A blocking guard must be a script under `hooks/` that exits 2 with a reason and fails open on parse errors. 4. **Wire**: `python3 scripts/kernel/sync.py` (hooks merged into the engine adapters); receipts go to the runtime's `logs/runs/<name>/` if the action is more than a guard. 5. **Lint**: `python3 scripts/kernel/lint.py`. 6. **Dry run**: fire the event once by hand (e.g. echo a JSON payload into the script) and confirm the expected exit code and output; then set `enabled: true`. 7. Report the spec path, the event, and the dry-run evidence.