Local-dev hygiene — 3 advisory hooks

Three PreToolUse / PostToolUse hooks that catch session-30-04-2026's recurring frictions BEFORE they reach CI. All three are advisory (do not block), all opt-out via env var.

1 · playground-presence-warner

PreToolUse/Bash · 100 LOC · ORK_DISABLE_PLAYGROUND_WARNER
Trigger
Bash command matches git push or gh pr create
Skips
main / master / develop / dev · dependabot/* · renovate/* · release-please*
Check
Does docs/<branch-slug>/*.html exist? (slug = branch with /--)
If missing
Inject advisory context with mkdir/touch fix command. Push proceeds.
$ git push -u origin feat/m128-bundle-x-monitor-quickwins
[playground-presence-warner] Branch feat/m128-bundle-x-monitor-quickwins has no playground at
docs/feat--m128-bundle-x-monitor-quickwins/. The CI playground-check
job will reject this PR unless you add at least one HTML file there.
Quick fix: mkdir -p docs/feat--m128-bundle-x-monitor-quickwins
&& touch docs/feat--m128-bundle-x-monitor-quickwins/explorer.html
(Advisory — push not blocked.)

Why these three?

Friction this fixes3 of 5 PRs in the 2026-04-30 batch hit each of these issues
Total new code~300 LOC across 3 hooks · 0 new dependencies
Performance impact~5ms per push/merge/CLAUDE.md edit (advisory only)
Opt-out3 env vars · each hook independently disable-able
CoverageRegistered in dispatchers (sync-bash-dispatcher, unified-write-quality-dispatcher) — 0 new hook-spawn cost