# Voice Attention

> Audibly get Jason's attention via macOS TTS when he may be tabbed away. TWO modes. (1) Automated hooks (already installed in all 4 Claude profiles) speak on the Notification event (Claude needs permission / is waiting for input) and on rapid-repeat Stop fires (loop detector). (2) PROACTIVE — Jason granted Claude standing permission (2026-06-04) to ping him on its own initiative when it genuinely needs him and no hook will fire: a long task finished, blocked on a decision, hit an unresolved error, or about to wait. Use this skill whenever you need Jason's attention and he might not be looking at this window.

- Skill: `webdevtodayjason/voice-attention` (Agent Skill)
- Install (CLI): `npx skillmds@latest add webdevtodayjason/voice-attention`
- Raw SKILL.md: https://api.skillmd.com/api/skills/webdevtodayjason/voice-attention/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: webdevtodayjason (https://skillmd.com/u/webdevtodayjason)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/webdevtodayjason/voice-attention

---


# 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. <folder>. needs your attention / permission / is waiting for you."
- **Stop** (loop detector) → if Stop fires ≥5× within 120s (e.g. a blocking `/goal`
  hook re-firing), "Hey. <folder>. 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:

```bash
/usr/bin/python3 ~/.config/claude-hooks/voice-attention.py --say "<short reason>"
```

It speaks: **"Hey. <current folder>. <your reason>."**

**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

```bash
# 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).

