Watches the linkedin-engine repo's git commits and, when a commit message matches a 'shippable insight' pattern (feat:, ship:, or contains 'launched'/'live'), automatically drafts a LinkedIn post using the existing commit-to-linkedin-draft tool, runs it through linkedin-draft-enrich, and queues it as a pending STDB post awaiting Ethan's tablet approval. Closes the loop between 'I just shipped something cool' and 'I should post about this' — the friction that kills 90% of dev marketing.
Create ~/bin/commit-to-linkedin-whisper as a post-commit hook installer + watcher. Hook in linkedin-engine/.git/hooks/post-commit calls ~/bin/commit-to-linkedin-whisper $(git log -1 --format='%H|%s|%b'). Script: (1) regex-match subject for ship signals, exit 0 if no match; (2) pipe commit + diff stat to commit-to-linkedin-draft; (3) pipe output through linkedin-draft-enrich; (4) insert into linkedin-engine STDB as status='pending_review' via stdb CLI; (5) notify-focus 'LinkedIn draft ready from commit
## Summary
**Created:**
- `~/bin/commit-to-linkedin-whisper` (90 lines, executable) — the bridge script
- `~/linkedin-engine/.git/hooks/post-commit` (3 lines, executable) — non-blocking, backgrounded so it never fails a commit
- `~/Tablet/Inbox/linkedin-drafts/` — tablet inbox dir for morning-brief approval
- `~/.cache/commit-to-linkedin-whisper.log` — debug log
**Flow on a new commit in `~/linkedin-engine`:**
1. Hook fires post-commit, backgrounds, passes `<sha>|<subject>|<body>` to the script
2. Script regex-matches `^(feat|ship)(\(|:)|launched|live` on the subject. No match → silent `exit 0`
3. Match → invokes existing `commit-to-linkedin-draft "10 minutes ago"` (which auto-runs `linkedin-draft-enrich` at the end)
4. Composes a post body from the draft JSON and inserts into linkedin-engine STDB `posts` table with `status='pending'` and `style='commit_whisper'` (matching the existing schema; `pending` is the column's "awaiting review" state per `generate.py`)
5. Drops `~/Tablet/Inbox/linkedin-drafts/<short-sha>.md` for tablet approval
6. Fires `notify-focus` on the desktop
**Verified:**
- Non-shippable subject (`chore: bump deps`) silently bails
- Shippable subject (`feat: ship the whisper bridge`) generates content, writes tablet markdown, logs the run
- STDB insert fails gracefully when the remote DB is unreachable / table is private (pre-existing infra concern, not a script bug — same SQL pattern `scripts/generate.py` uses)
**Subcomman