When Ethan commits a fix in one project (like today's 'Silence Livewire emit/system probe exceptions' in jekelinspections), a post-commit hook greps his other active projects for the same anti-pattern and generates a single tablet card listing where the same fix likely applies. It turns a one-off bugfix into a fleet-wide sweep without him remembering which other repos share the flaw.
Create ~/.claude/tools/cross-project-fix-propagator as a bash script wired to a shared post-commit hook (or driven off the existing git-commit digest that feeds commit-whisper). On each commit, extract changed symbols/patterns from `git show --stat` + `git diff` (e.g. exception-class names, method signatures touched), then `git grep -l` those tokens across ~/russ-telegram, ~/joyos-labs-monitor, ~/linkedin-engine, ~/bys-website, ~/joyos-lab-staging. If >=1 other repo matches, write a markdown card to ~/Tablet/cards/ (same path convention as commit-socratic-tablet-brief) titled 'Fix from
## What I created
**`~/bin/cross-project-fix-propagator`** (95 lines, executable) — on each commit it:
1. Extracts the distinctive symbols the fix touched (CamelCase types / snake_case identifiers ≥6 chars from the `+/-` diff lines, filtering out language keywords).
2. `git grep`s those symbols across your other active repos (`russ-telegram`, `joyos-labs-monitor`, `linkedin-engine`, `bys-website`, `joyos-lab-staging`, `jekelinspections` — the source repo is auto-excluded).
3. If ≥1 other repo matches, writes one markdown card to `~/Tablet/cards/` titled *"Fix from `<repo>` may apply in: `<matches>`"* with `file:line` hits per repo (Syncthing auto-syncs to the tablet — the old `tablet-sync` API is deprecated, so no push step needed).
4. Dedupes via a signature cache at `~/.claude/state/propagated.json` so the same sweep never re-cards.
**Wired into `~/.config/git/hooks/post-commit`** — fires detached (`setsid nohup`) alongside the existing `commit-whisper`, so it never adds commit latency. I restructured the hook so both tools fire independently rather than one short-circuiting the other.
**Guards:** single-flight `flock`, skips initial commits, and `[no-propagate]` in a commit subject suppresses it.
**Verified:** sandboxed E2E — a fix in a mock `jekelinspections` touching `SystemProbeException` correctly produced a card pointing at `bys-website:app.py:2`, excluded the source repo, skipped the nonexistent repo, and a rerun was deduped