op-hookslisted
Install: claude install-skill TimTGelhard/ACHRON-spine
# op-hooks — automation via settings.json
Hooks are how the *harness* enforces automatic behavior. Not Claude. Not CLAUDE.md. The harness runs them deterministically on events.
## Index
| Question / situation | Atomic file |
|---|---|
| Where do settings live — global / project / local? Cascade rules? | `~/.achron-spine/chapters/persistence/14a-settings-cascade.md` |
| What should I actually hook? Starter set, anti-hooks, verifying | `~/.achron-spine/chapters/persistence/14b-hook-recipes.md` |
| What hooks does Achron Spine ship out of the box? | `~/.claude/settings.json` (read directly) — or have the user run `/spine` for a formatted view (its Hooks section) |
## Spine-shipped hooks (default install)
| Script | Event | What it does |
|---|---|---|
| `block-env-staging.sh` | `PreToolUse` (Bash · `if Bash(git add*)`) | Blocks staging `.env*` files; surfaces the path it caught |
| `block-env-commit.sh` | `PreToolUse` (Bash · `if Bash(git commit*)`) | Backstop for the above — blocks the commit itself if a `.env*` slipped past staging |
| `notify-long-task.sh` | `Notification` | Desktop notification (macOS `osascript`, Linux `notify-send`, fallback terminal bell) when a turn waits on the user |
| `spine-writeback.sh` | `Stop` | Heartbeat on each turn into the active section plan, cross-session-note cue capture, long-session signal |
| `typecheck-after-edit.sh` | `PostToolUse` — **opt-in via `/onboard --deep`** | Runs the project's typechecker (TS / Python / Go / Rust / C# /