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 +21 -0
- package/README.md +167 -11
- package/bin/cli.js +750 -74
- package/package.json +1 -1
- package/themes/wc3-peon/download.sh +2 -1
- package/themes/wc3-peon/theme.json +5 -2
- package/themes/zelda-oot/download.sh +67 -0
- package/themes/zelda-oot/theme.json +110 -0
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
|
-
|
|
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 #
|
|
42
|
-
npx claude-code-sounds
|
|
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
|
-
|
|
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 (
|
|
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"* |
|
|
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 (
|
|
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"* |
|
|
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
|
|
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.
|
|
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.
|