voice-attention — pull Jason back to the right window
Jason tabs across many Claude windows all day. This makes Claude speak the project folder name out loud so he knows which folder needs him.
Engine: macOS say (zero-dependency). Shared script: ~/.config/claude-hooks/voice-attention.py.
Folder name is always the live cwd basename (e.g. "subctl", "holace", "callscrub.io").
Mute globally with CLAUDE_VOICE_OFF=1; change voice with CLAUDE_VOICE_NAME (default Samantha).
Mode 1 — automated hooks (no action needed; already live)
Installed in ~/.claude, ~/.claude-jason, ~/.claude-titanium, ~/.claude-semfreak
(settings.json → hooks):
- Notification → "Hey. . needs your attention / permission / is waiting for you."
- Stop (loop detector) → if Stop fires ≥5× within 120s (e.g. a blocking
/goalhook re-firing), "Hey. . Claude may be stuck in a loop and needs you." Normal single completions stay silent.
Mode 2 — PROACTIVE (Claude pings on its own — permission granted)
When YOU need Jason and no hook will fire, run:
/usr/bin/python3 ~/.config/claude-hooks/voice-attention.py --say "<short reason>"
It speaks: "Hey. . ."
When to use it (genuine attention-needs only):
- A long-running task just finished and the next step is his call.
- You're blocked on a decision only he can make.
- You hit an error you can't resolve and need input.
- You're about to wait/idle on something and want him back.
When NOT to use it: routine progress, things you can decide yourself, or rapidly in succession (don't become noise). One ping per genuine attention-need. Keep the reason short and specific — it's spoken aloud.
Examples
# done with a long build, needs review
/usr/bin/python3 ~/.config/claude-hooks/voice-attention.py --say "the cutover plan is ready for your review"
# blocked on a decision
/usr/bin/python3 ~/.config/claude-hooks/voice-attention.py --say "needs your call on the deploy"
Notes
- The proactive command works from any profile/project (script path is profile-independent).
- To make this skill discoverable in the other 3 profiles too, copy/symlink this dir
into their
skills/(the proactive command already works everywhere regardless).