SLOPSHOPPER

done-sound

Plays a chime when a long task finishes

newaudio
v0.1.0no licenseupdated 2026-10-16arjunkambj/claude-mods/done-sound
A shopper browsing a rack in a slop shop
README

Arjun's Claude Code mods

Four small mods for Claude Code. Install the ones you want.

ModWhat it does
codexClaude can hand a task to Codex (OpenAI's gpt-6.1-sol), like a code review or a bug hunt. It runs in the background so the chat isn't blocked.
imagegenClaude can make and edit images through Codex, and shows the finished images right in the chat.
devserver-limitStops Claude from starting a dev server when 2 are already running. Good for laptops with little memory.
done-soundPlays a chime when a task that took over a minute finishes.

Install

In a Claude Code terminal session, type one line per mod:

/plugin install codex --marketplace arjunkambj/claude-mods
/plugin install imagegen --marketplace arjunkambj/claude-mods
/plugin install devserver-limit --marketplace arjunkambj/claude-mods
/plugin install done-sound --marketplace arjunkambj/claude-mods

The first time, it asks to add the marketplace: press y. Then pick a scope (Enter picks "user", so it works in every project).

What you need

  • A Mac. imagegen and done-sound use macOS tools and sounds.
  • For codex and imagegen: the Codex CLI installed and signed in (codex login). Images count against your Codex plan.
Source 1 files
hooks/register.ts 22 lines
1import type { Register } from 'claude-code'
2
3// Only turns long enough that you may have looked away.
4const MIN_MS = 60_000
5// macOS's own Glass sound, read from the system so the mod ships no audio file.
6const SOUND = '/System/Library/Sounds/Glass.aiff'
7
8export const register: Register = on => {
9  on('turn.complete', async ($, e, next) => {
10    const result = await next(e)
11
12    if (!e.agentId && !e.isAborted && e.durationMs >= MIN_MS) {
13      void $.fs
14        .read(SOUND, { as: 'bytes' })
15        .then(({ base64 }) => $.audio.play({ base64, mime: 'audio/aiff' }))
16        .catch(() => undefined)
17    }
18
19    return result
20  })
21}
22