claude-code-sounds 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ryparker
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Plays sound effects when sessions start, prompts are submitted, responses finish, errors occur, and more.
10
10
 
11
- Ships with a **WC3 Orc Peon** theme. Bring your own sounds or create new themes.
11
+ Ships with a **WC3 Orc Peon** theme and a **Zelda: Ocarina of Time** theme. Bring your own sounds or create new themes.
12
12
 
13
13
  *"Something need doing?"*
14
14
 
@@ -20,7 +20,15 @@ Ships with a **WC3 Orc Peon** theme. Bring your own sounds or create new themes.
20
20
  npx claude-code-sounds
21
21
  ```
22
22
 
23
- That's it. Requires macOS (uses `afplay`) and Node.js 16+.
23
+ The interactive installer checks dependencies, lets you pick a theme, and optionally customize which sounds map to each hook — all in the terminal.
24
+
25
+ Requires macOS (uses `afplay`) and Node.js 16+.
26
+
27
+ For scripted or CI usage, skip all prompts with `--yes`:
28
+
29
+ ```bash
30
+ npx claude-code-sounds --yes
31
+ ```
24
32
 
25
33
  <details>
26
34
  <summary>Alternative: install from source</summary>
@@ -38,15 +46,16 @@ The bash installer requires `jq` (`brew install jq`).
38
46
  ## Usage
39
47
 
40
48
  ```bash
41
- npx claude-code-sounds # Install default theme (wc3-peon)
42
- npx claude-code-sounds <theme> # Install a specific theme
49
+ npx claude-code-sounds # Interactive install
50
+ npx claude-code-sounds --yes # Install defaults, skip all prompts
43
51
  npx claude-code-sounds --list # List available themes
44
52
  npx claude-code-sounds --uninstall # Remove all sounds and hooks
53
+ npx claude-code-sounds --help # Show help
45
54
  ```
46
55
 
47
56
  ## WC3 Orc Peon Theme
48
57
 
49
- 55 sounds from Warcraft 3 Orc units mapped across 11 Claude Code lifecycle events.
58
+ 57 sounds from Warcraft 3 Orc units mapped across 11 Claude Code lifecycle events.
50
59
 
51
60
  > After installing, preview all sounds with `./preview.sh` or a specific category with `./preview.sh start`
52
61
 
@@ -79,11 +88,12 @@ npx claude-code-sounds --uninstall # Remove all sounds and hooks
79
88
  </details>
80
89
 
81
90
  <details>
82
- <summary><b>stop</b> — Claude finished responding (8 sounds)</summary>
91
+ <summary><b>stop</b> — Claude finished responding (9 sounds)</summary>
83
92
 
84
93
  | Sound | Quote | Unit |
85
94
  |---|---|---|
86
- | `zug-zug.wav` | *"Zug zug"* | Peon |
95
+ | `zug-zug.wav` | *"Zug zug"* | Grunt |
96
+ | `get-em.wav` | *"Get 'em!"* | Peon |
87
97
  | `ok.wav` | *"OK"* | Peon |
88
98
  | `i-can-do-that.wav` | *"I can do that"* | Peon |
89
99
  | `be-happy-to.wav` | *"Be happy to"* | Peon |
@@ -108,12 +118,13 @@ npx claude-code-sounds --uninstall # Remove all sounds and hooks
108
118
  </details>
109
119
 
110
120
  <details>
111
- <summary><b>subagent</b> — Spawning a subagent (6 sounds)</summary>
121
+ <summary><b>subagent</b> — Spawning a subagent (7 sounds)</summary>
112
122
 
113
123
  | Sound | Quote | Unit |
114
124
  |---|---|---|
115
125
  | `work-work.wav` | *"Work, work"* | Peon |
116
- | `zug-zug.wav` | *"Zug zug"* | Peon |
126
+ | `zug-zug.wav` | *"Zug zug"* | Grunt |
127
+ | `get-em.wav` | *"Get 'em!"* | Peon |
117
128
  | `ill-try.wav` | *"I'll try"* | Peon |
118
129
  | `why-not.wav` | *"Why not?"* | Peon |
119
130
  | `for-the-horde.wav` | *"For the Horde!"* | Grunt |
@@ -193,6 +204,147 @@ npx claude-code-sounds --uninstall # Remove all sounds and hooks
193
204
 
194
205
  </details>
195
206
 
207
+ ## Zelda: Ocarina of Time Theme
208
+
209
+ 47 sounds from Navi, Link, Ganondorf, and iconic OOT jingles mapped across 11 Claude Code lifecycle events.
210
+
211
+ *"Hey! Listen!"*
212
+
213
+ <details open>
214
+ <summary><b>start</b> — Session starting, Navi greets you (5 sounds)</summary>
215
+
216
+ | Sound | Description | Source |
217
+ |---|---|---|
218
+ | `hey.wav` | *"Hey!"* | Navi |
219
+ | `hello.wav` | *"Hello!"* | Navi |
220
+ | `listen.wav` | *"Listen!"* | Navi |
221
+ | `great-fairy-laugh.wav` | *(magical laugh)* | Great Fairy |
222
+ | `open-chest.wav` | *(opening big chest)* | SFX |
223
+
224
+ </details>
225
+
226
+ <details>
227
+ <summary><b>prompt</b> — User submitted a prompt, adventure continues (5 sounds)</summary>
228
+
229
+ | Sound | Description | Source |
230
+ |---|---|---|
231
+ | `hey.wav` | *"Hey!"* | Navi |
232
+ | `look.wav` | *"Look!"* | Navi |
233
+ | `menu-select.wav` | *(menu select)* | SFX |
234
+ | `dialogue-next.wav` | *(continue dialogue)* | SFX |
235
+ | `get-heart.wav` | *(get heart)* | SFX |
236
+
237
+ </details>
238
+
239
+ <details>
240
+ <summary><b>stop</b> — Claude finished responding (5 sounds)</summary>
241
+
242
+ | Sound | Description | Source |
243
+ |---|---|---|
244
+ | `secret-discovered.wav` | *(secret jingle)* | SFX |
245
+ | `get-item.wav` | *(get small item)* | SFX |
246
+ | `get-rupee.wav` | *(get rupee)* | SFX |
247
+ | `open-small-chest.wav` | *(open small chest)* | SFX |
248
+ | `song-correct.wav` | *(song played correctly)* | SFX |
249
+
250
+ </details>
251
+
252
+ <details>
253
+ <summary><b>permission</b> — Permission prompt, waiting for approval (5 sounds)</summary>
254
+
255
+ | Sound | Description | Source |
256
+ |---|---|---|
257
+ | `watch-out.wav` | *"Watch out!"* | Navi |
258
+ | `hey.wav` | *"Hey!"* | Navi |
259
+ | `listen.wav` | *"Listen!"* | Navi |
260
+ | `pause-menu.wav` | *(pause menu open)* | SFX |
261
+ | `z-target.wav` | *(Z-target enemy)* | SFX |
262
+
263
+ </details>
264
+
265
+ <details>
266
+ <summary><b>subagent</b> — Spawning a subagent (5 sounds)</summary>
267
+
268
+ | Sound | Description | Source |
269
+ |---|---|---|
270
+ | `sword-draw.wav` | *(draw sword)* | SFX |
271
+ | `link-attack.wav` | *(attack shout)* | Adult Link |
272
+ | `link-strong-attack.wav` | *(strong attack)* | Adult Link |
273
+ | `hey.wav` | *"Hey!"* | Navi |
274
+ | `spin-attack.wav` | *(spin attack)* | SFX |
275
+
276
+ </details>
277
+
278
+ <details>
279
+ <summary><b>idle</b> — Waiting for user input (5 sounds)</summary>
280
+
281
+ | Sound | Description | Source |
282
+ |---|---|---|
283
+ | `hey.wav` | *"Hey!"* | Navi |
284
+ | `listen.wav` | *"Listen!"* | Navi |
285
+ | `watch-out.wav` | *"Watch out!"* | Navi |
286
+ | `low-health.wav` | *(low health beep)* | SFX |
287
+ | `snore.wav` | *(Talon snoring)* | Talon |
288
+
289
+ </details>
290
+
291
+ <details>
292
+ <summary><b>error</b> — Tool call failed (4 sounds)</summary>
293
+
294
+ | Sound | Description | Source |
295
+ |---|---|---|
296
+ | `error.wav` | *(error sound)* | SFX |
297
+ | `song-error.wav` | *(wrong note)* | SFX |
298
+ | `link-hurt.wav` | *(Link hurt)* | Adult Link |
299
+ | `ganondorf-laugh.wav` | *(Ganondorf laughing)* | Ganondorf |
300
+
301
+ </details>
302
+
303
+ <details>
304
+ <summary><b>end</b> — Session ending (3 sounds)</summary>
305
+
306
+ | Sound | Description | Source |
307
+ |---|---|---|
308
+ | `item-fanfare.wav` | *(item fanfare)* | SFX |
309
+ | `secret-discovered.wav` | *(secret jingle)* | SFX |
310
+ | `dialogue-done.wav` | *(dialogue finished)* | SFX |
311
+
312
+ </details>
313
+
314
+ <details>
315
+ <summary><b>task-completed</b> — Task marked done (2 sounds)</summary>
316
+
317
+ | Sound | Description | Source |
318
+ |---|---|---|
319
+ | `item-fanfare.wav` | *(item fanfare)* | SFX |
320
+ | `secret-discovered.wav` | *(secret jingle)* | SFX |
321
+
322
+ </details>
323
+
324
+ <details>
325
+ <summary><b>compact</b> — Context compaction, health running low (4 sounds)</summary>
326
+
327
+ | Sound | Description | Source |
328
+ |---|---|---|
329
+ | `low-health.wav` | *(low health beep)* | SFX |
330
+ | `pause-close.wav` | *(pause menu close)* | SFX |
331
+ | `watch-out.wav` | *"Watch out!"* | Navi |
332
+ | `error.wav` | *(error sound)* | SFX |
333
+
334
+ </details>
335
+
336
+ <details>
337
+ <summary><b>teammate-idle</b> — Teammate went idle (4 sounds)</summary>
338
+
339
+ | Sound | Description | Source |
340
+ |---|---|---|
341
+ | `hey.wav` | *"Hey!"* | Navi |
342
+ | `listen.wav` | *"Listen!"* | Navi |
343
+ | `watch-out.wav` | *"Watch out!"* | Navi |
344
+ | `low-health.wav` | *(low health beep)* | SFX |
345
+
346
+ </details>
347
+
196
348
  ## Hook Events
197
349
 
198
350
  | Event | Hook | When |
@@ -221,6 +373,7 @@ Defines metadata and maps source files to hook categories:
221
373
  {
222
374
  "name": "My Theme",
223
375
  "description": "A short description",
376
+ "srcBase": "MyTheme",
224
377
  "sounds": {
225
378
  "start": {
226
379
  "description": "Session starting",
@@ -232,13 +385,16 @@ Defines metadata and maps source files to hook categories:
232
385
  }
233
386
  ```
234
387
 
388
+ - **`srcBase`** — subdirectory under the temp dir where downloaded files live (e.g., `"Orc"`, `"OOT"`)
389
+ - **`src`** — path relative to `$2/<srcBase>/` where the file is found after download
390
+
235
391
  ### `download.sh`
236
392
 
237
393
  Downloads the sound files. Receives two arguments:
238
394
  - `$1` — target sounds directory (`~/.claude/sounds`)
239
395
  - `$2` — temp directory for downloads
240
396
 
241
- The script should download and extract files so they're accessible at `$2/Orc/<src path>` (matching the `src` values in `theme.json`).
397
+ The script should download and extract files so they're accessible at `$2/<srcBase>/<src path>` (matching the `srcBase` and `src` values in `theme.json`).
242
398
 
243
399
  ## How It Works
244
400
 
@@ -270,4 +426,4 @@ This removes all sound files, the hook script, and the hooks config from `settin
270
426
 
271
427
  ## Disclaimer
272
428
 
273
- Sound files are downloaded from third-party sources at install time and are not included in this repository. All game audio is property of Blizzard Entertainment.
429
+ Sound files are downloaded from third-party sources at install time and are not included in this repository. Warcraft audio is property of Blizzard Entertainment. Zelda audio is property of Nintendo.