Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Attention Ring

Claude Code stops and waits for you. You are in another window and do not notice. Ten minutes later you come back and it has been sitting on a permission prompt the whole time.

This plugin rings a sound every 30 seconds until you answer, and stops the moment you do.

Install

claude plugin marketplace add mindantic/claude-plugins
claude plugin install attention-ring@mindantic

Then test it:

/attention-ring

What rings

Notification Default
Claude needs your permission rings
A background session needs your input rings
Claude is idle and waiting for a prompt silent
A background agent finished silent

The last two are off because they are status, not a question. Turn either on in the plugin's settings.

What stops it

Submitting a prompt stops every ringer and starts a 30 second quiet window, so answering one prompt does not immediately trigger the bell for the next one. Any tool finishing, the turn ending, or the session ending stops that session's ringer only. A session that is busy working can never silence a different session that is waiting.

If you never answer, it gives up after 5 minutes.

Settings

Open /plugin, pick attention-ring, and choose Configure.

Option Default Notes
sound bundled chime WAV is safest. MP3 works on macOS, and on Linux with ffplay
interval 30 Seconds between rings, 5 to 600
duration 300 Total seconds before giving up, 30 to 3600
volume 1 Multiplier on the file's own level, macOS only
ring_on_idle off Ring when Claude is idle and waiting
ring_on_agent_completed off Ring when a background agent finishes

Platform support

Platform Player Formats
macOS afplay, built in WAV, MP3, AIFF, M4A
Linux paplay, aplay, or ffplay WAV everywhere, MP3 with ffplay
Windows powershell.exe WAV only

With no player on PATH the plugin exits quietly rather than failing. Run the test command to find out which one it picked.

Sound

assets/ring.wav is a two-tone chime, A5 into E6 with exponential decay, generated by assets/make-ring-wav.py. It is original work under the same MIT license as the code, so you can ship it, fork it, or replace it. Run the script to regenerate or retune it.

Troubleshooting

CLAUDE_RING_DEBUG=1

Logs every decision to ${TMPDIR:-/tmp}/claude-ring-<uid>.log: the notification type, whether a ring started, and why one was suppressed.

The plugin never writes outside its own temp files. Locks live at ${TMPDIR:-/tmp}/claude-ring-<uid>-<session>.lock, which is per user, so it is safe on a shared machine.

Development

./scripts/selftest.sh          # 24 checks, runs silently in a temp sandbox
claude plugin validate .
python3 assets/make-ring-wav.py

The self test covers ringing and not ringing per notification type, per-session lock isolation and that a stopped ringer actually dies, the snooze window, config clamping, the no-jq fallback path, and cleanup when the sound file is missing. It runs at volume 0, so it makes no noise.

License

MIT

About

Rings a sound until you answer Claude Code. A notification bell plugin that stops the moment you respond.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages