@mcptoolshop/claude-sfx 0.1.1 → 1.0.0

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/README.md CHANGED
@@ -1,13 +1,15 @@
1
- <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.jpg" width="400" alt="Claude-SFX">
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://www.npmjs.com/package/@mcptoolshop/claude-sfx"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-sfx" alt="npm version"></a>
11
+ <a href="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <a href="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx"><img src="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx/branch/main/graph/badge.svg" alt="codecov"></a>
11
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
12
14
  <a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
13
15
  </p>
@@ -177,6 +179,14 @@ Zero audio files. Every sound is synthesized at runtime from math:
177
179
 
178
180
  The entire package is ~2,800 lines of TypeScript with zero production dependencies. Sounds are generated as PCM buffers, encoded to WAV in memory, and played through the OS native audio player (PowerShell on Windows, afplay on macOS, aplay on Linux).
179
181
 
182
+ ## Security & Privacy
183
+
184
+ **Data touched:** `~/.claude-sfx/config.json` (preferences), `.claude/settings.json` (hook registration). Audio buffers are generated in memory and never written to disk unless you run `export`.
185
+
186
+ **Data NOT touched:** source code, git history, network, credentials, environment variables. No telemetry is collected or sent. No audio files are downloaded — every sound is synthesized locally from math.
187
+
188
+ **Permissions:** filesystem read/write for config and hooks, OS audio player invocation. See [SECURITY.md](SECURITY.md) for the full policy.
189
+
180
190
  ## Requirements
181
191
 
182
192
  - Node.js 18+
@@ -186,3 +196,7 @@ The entire package is ~2,800 lines of TypeScript with zero production dependenci
186
196
  ## License
187
197
 
188
198
  [MIT](LICENSE)
199
+
200
+ ---
201
+
202
+ Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
package/README.pt-BR.md CHANGED
@@ -1,54 +1,56 @@
1
- <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.md">English</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.md">English</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.jpg" width="400" alt="Claude-SFX">
7
7
  </p>
8
-
8
+
9
9
  <p align="center">
10
- <a href="https://www.npmjs.com/package/claude-sfx"><img src="https://img.shields.io/npm/v/claude-sfx" alt="npm version"></a>
10
+ <a href="https://www.npmjs.com/package/@mcptoolshop/claude-sfx"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-sfx" alt="npm version"></a>
11
+ <a href="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <a href="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx"><img src="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx/branch/main/graph/badge.svg" alt="codecov"></a>
11
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
12
14
  <a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
13
15
  </p>
14
-
15
- Feedback de áudio procedural para [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Cada chamada de ferramenta, edição de arquivo, pesquisa, envio para o Git e despacho de agente recebe um som distinto — sintetizado a partir de cálculos matemáticos, e não de arquivos de áudio.
16
-
17
- ## Início Rápido
18
-
16
+
17
+ Feedback de áudio procedural para [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Cada chamada de ferramenta, edição de arquivo, pesquisa, envio para o Git e despacho de agente recebe um som distinto — sintetizado a partir de cálculos matemáticos, e não de arquivos de áudio.
18
+
19
+ ## Início Rápido
20
+
19
21
  ```bash
20
- npm install -g claude-sfx
22
+ npm install -g @mcptoolshop/claude-sfx
21
23
  cd your-project
22
24
  claude-sfx init # install hooks into .claude/settings.json
23
25
  claude-sfx demo # hear all 7 verbs
24
26
  ```
25
-
26
- Pronto. O Claude Code agora emitirá sons enquanto estiver em execução.
27
-
28
- ## Por que o feedback de áudio?
29
-
30
- Quando um agente de IA lê, escreve, pesquisa e implanta em seu nome, você perde a visibilidade. Você está apenas olhando para o texto passando na tela. O feedback de áudio restaura a consciência:
31
-
32
- - **Acessibilidade** — ouça as mudanças de estado, erros e conclusões sem precisar observar o terminal.
33
- - **Fluxo** — saiba se um teste foi aprovado ou se um envio foi concluído sem precisar alternar entre diferentes contextos.
34
- - **Presença** — o agente parece um colaborador, e não uma caixa preta.
35
-
36
- ## Os 7 Verbos
37
-
38
- Cada ação do Claude Code corresponde a um dos 7 verbos principais. Modificadores (status, escopo, direção) alteram o som sem comprometer a coerência.
39
-
40
- | Verbo | Gatilhos | Som |
41
- | --- | --- | --- |
42
- | **intake** | `Read`, `WebFetch`, `WebSearch` | Onda senoidal ascendente — algo chegando |
43
- | **transform** | `Edit` | Pulso texturizado por FM — remodelando |
44
- | **commit** | `Write`, `NotebookEdit`, `git commit` | Tom de sino agudo — selado |
45
- | **navigate** | `Grep`, `Glob` | Sinal sonár — escaneando |
46
- | **execute** | `Bash`, `npm test`, `tsc` | Ruído + tom — ação mecânica |
47
- | **move** | `mv`, `cp`, criação de subagente | Sopro de vento — deslocamento de ar |
48
- | **sync** | `git push`, `git pull` | Sopro dramático + âncora tonal |
49
-
50
- ### Modificadores
51
-
27
+
28
+ Pronto. O Claude Code agora emitirá sons enquanto estiver em execução.
29
+
30
+ ## Por que o feedback de áudio?
31
+
32
+ Quando um agente de IA lê, escreve, pesquisa e implanta em seu nome, você perde a visibilidade. Você está apenas olhando para o texto passando na tela. O feedback de áudio restaura a consciência:
33
+
34
+ - **Acessibilidade** — ouça as mudanças de estado, erros e conclusões sem precisar observar o terminal.
35
+ - **Fluxo** — saiba se um teste foi aprovado ou se um envio foi concluído sem precisar alternar entre diferentes contextos.
36
+ - **Presença** — o agente parece um colaborador, e não uma caixa preta.
37
+
38
+ ## Os 7 Verbos
39
+
40
+ Cada ação do Claude Code corresponde a um dos 7 verbos principais. Modificadores (status, escopo, direção) alteram o som sem comprometer a coerência.
41
+
42
+ | Verbo | Gatilhos | Som |
43
+ |---|---|---|
44
+ | **intake** | `Read`, `WebFetch`, `WebSearch` | Onda senoidal ascendente — algo chegando |
45
+ | **transform** | `Edit` | Pulso texturizado por FM — remodelando |
46
+ | **commit** | `Write`, `NotebookEdit`, `git commit` | Tom de estalo agudo — finalizado |
47
+ | **navigate** | `Grep`, `Glob` | Ping de sonar — escaneando |
48
+ | **execute** | `Bash`, `npm test`, `tsc` | Ruído + tom — ação mecânica |
49
+ | **move** | `mv`, `cp`, criação de subagente | Sopro de vento — deslocamento de ar |
50
+ | **sync** | `git push`, `git pull` | Sopro dramático + âncora tonal |
51
+
52
+ ### Modificadores
53
+
52
54
  ```bash
53
55
  claude-sfx play navigate --status ok # bright ping (octave harmonic)
54
56
  claude-sfx play navigate --status err # low detuned ping (dissonance)
@@ -57,60 +59,60 @@ claude-sfx play sync --direction up # rising whoosh (push)
57
59
  claude-sfx play sync --direction down # falling whoosh (pull)
58
60
  claude-sfx play intake --scope remote # longer tail (distance feel)
59
61
  ```
60
-
61
- ### Detecção Inteligente de Bash
62
-
63
- O manipulador de eventos inspeciona os comandos Bash para escolher o som correto:
64
-
65
- | Comando Bash | Verbo | Status |
66
- | --- | --- | --- |
67
- | `git push` | sync (para cima) | com base no código de saída |
68
- | `git pull` | sync (para baixo) | com base no código de saída |
69
- | `npm test`, `pytest` | executar | com base no código de saída |
70
- | `tsc`, `npm run build` | executar | com base no código de saída |
71
- | `mv`, `cp` | mover | — |
72
- | `rm` | mover | aviso |
73
- | tudo o mais | executar | com base no código de saída |
74
-
75
- ## Perfis
76
-
77
- Conjuntos de sons que alteram todo o comportamento com um único parâmetro.
78
-
79
- | Perfil | Comportamento |
80
- | --- | --- |
81
- | **minimal** (default) | Tons de onda senoidal — sutis, profissionais, para uso diário |
82
- | **retro** | Sons de onda quadrada em 8 bits — divertidos, mas controlados |
83
-
62
+
63
+ ### Detecção Inteligente de Bash
64
+
65
+ O manipulador de eventos inspeciona os comandos Bash para escolher o som correto:
66
+
67
+ | Comando Bash | Verbo | Status |
68
+ |---|---|---|
69
+ | `git push` | sync (para cima) | com base no código de saída |
70
+ | `git pull` | sync (para baixo) | com base no código de saída |
71
+ | `npm test`, `pytest` | execução | com base no código de saída |
72
+ | `tsc`, `npm run build` | execução | com base no código de saída |
73
+ | `mv`, `cp` | movimento | — |
74
+ | `rm` | movimento | aviso |
75
+ | tudo o mais | execução | com base no código de saída |
76
+
77
+ ## Perfis
78
+
79
+ Paletas de som que alteram todo o "caráter" com um único parâmetro.
80
+
81
+ | Perfil | Caráter |
82
+ |---|---|
83
+ | **minimal** (default) | Tons de onda senoidal — sutis, profissionais, para uso diário |
84
+ | **retro** | Ruídos de onda quadrada em 8 bits — divertidos, mas controlados |
85
+
84
86
  ```bash
85
87
  claude-sfx demo --profile retro # hear retro palette
86
88
  claude-sfx preview minimal # audition all sounds + modifiers
87
89
  claude-sfx config set profile retro # change default globally
88
90
  claude-sfx config repo retro # use retro in current directory only
89
91
  ```
90
-
91
- ### Perfis Personalizados
92
-
93
- Copie `profiles/minimal.json`, edite os parâmetros de síntese e carregue-o:
94
-
92
+
93
+ ### Perfis Personalizados
94
+
95
+ Copie `profiles/minimal.json`, edite os parâmetros de síntese e carregue-o:
96
+
95
97
  ```bash
96
98
  claude-sfx play navigate --profile ./my-profile.json
97
99
  ```
98
-
99
- Cada número no arquivo JSON corresponde diretamente ao motor de síntese — forma de onda, frequência, duração, envelope (ADSR), profundidade de modulação por frequência (FM), largura de banda, ganho.
100
-
101
- ## Anti-Irritação
102
-
103
- O que diferencia um produto de um brinquedo.
104
-
105
- | Recurso | Comportamento |
106
- | --- | --- |
107
- | **Debounce** | O mesmo verbo dentro de 200ms → um som |
108
- | **Rate limit** | Máximo de 8 sons em uma janela de 10 segundos |
109
- | **Quiet hours** | Todos os sons são suprimidos durante as horas configuradas |
110
- | **Mute** | Alternância instantânea, persiste após a reinicialização da sessão |
111
- | **Volume** | Controle de ganho de 0 a 100 |
112
- | **Per-verb disable** | Desative verbos específicos que você não deseja |
113
-
100
+
101
+ Cada número no JSON corresponde diretamente ao motor de síntese — forma de onda, frequência, duração, envelope (ADSR), profundidade de modulação por frequência (FM), largura de banda, ganho.
102
+
103
+ ## Prevenção de Irritação
104
+
105
+ O que diferencia um produto de um brinquedo.
106
+
107
+ | Recurso | Comportamento |
108
+ |---|---|
109
+ | **Debounce** | Mesmo verbo dentro de 200ms → um som |
110
+ | **Rate limit** | Máximo de 8 sons por janela de 10 segundos |
111
+ | **Quiet hours** | Todos os sons são suprimidos durante as horas configuradas |
112
+ | **Mute** | Alternância instantânea, persiste após a reinicialização da sessão |
113
+ | **Volume** | Controle de ganho de 0 a 100 |
114
+ | **Per-verb disable** | Desative verbos específicos que você não deseja |
115
+
114
116
  ```bash
115
117
  claude-sfx mute # instant silence
116
118
  claude-sfx unmute
@@ -120,27 +122,27 @@ claude-sfx config set quiet-end 07:00 # until 7am
120
122
  claude-sfx disable navigate # no more search pings
121
123
  claude-sfx enable navigate # bring it back
122
124
  ```
123
-
124
- ## Ambiente (Operações de Longa Duração)
125
-
126
- Para comandos que levam um tempo (compilações, implantações, grandes conjuntos de testes):
127
-
125
+
126
+ ## Ambiente (Operações de Longa Duração)
127
+
128
+ Para comandos que levam um tempo (compilações, implantações, grandes conjuntos de testes):
129
+
128
130
  ```bash
129
131
  claude-sfx ambient-start # low drone fades in
130
132
  # ... operation runs ...
131
133
  claude-sfx ambient-resolve # drone stops, resolution stinger plays
132
134
  claude-sfx ambient-stop # stop drone silently (no stinger)
133
135
  ```
134
-
135
- ## Sons da Sessão
136
-
136
+
137
+ ## Sons da Sessão
138
+
137
139
  ```bash
138
140
  claude-sfx session-start # two-note ascending chime (boot)
139
141
  claude-sfx session-end # two-note descending chime (closure)
140
142
  ```
141
-
142
- ## Todos os Comandos
143
-
143
+
144
+ ## Todos os comandos
145
+
144
146
  ```
145
147
  Setup:
146
148
  init Install hooks into .claude/settings.json
@@ -163,26 +165,38 @@ Config:
163
165
  disable / enable <verb> Toggle specific verbs
164
166
  export [dir] [--profile] Export all sounds as .wav files
165
167
  ```
166
-
167
- ## Como Funciona
168
-
169
- Nenhum arquivo de áudio. Cada som é sintetizado em tempo de execução a partir de cálculos matemáticos:
170
-
171
- - **Osciladores** — senoidal, quadrado, dente de serra, triangular, ruído branco
172
- - **Envelopes ADSR** — ataque, decaimento, sustentação, liberação
173
- - **Síntese FM** modulação de frequência para texturas
174
- - **Filtro de variável de estado** — ruído filtrado em banda para efeitos sonoros
175
- - **Varreduras de frequência** — interpolação linear para movimento
176
- - **Limitador de volume** — compressão "soft-knee", limite máximo
177
-
178
- O pacote completo tem aproximadamente 2.800 linhas de código TypeScript e não possui dependências para produção. Os sons são gerados como buffers PCM, codificados em WAV na memória e reproduzidos através do reprodutor de áudio nativo do sistema operacional (PowerShell no Windows, afplay no macOS, aplay no Linux).
179
-
180
- ## Requisitos:
181
-
182
- - Node.js 18 ou superior
183
- - Claude Code
184
- - Saída de áudio do sistema (alto-falantes ou fones de ouvido)
185
-
186
- ## Licença:
187
-
188
- [MIT](LICENSE)
168
+
169
+ ## Como Funciona
170
+
171
+ Nenhum arquivo de áudio. Cada som é sintetizado em tempo de execução a partir de cálculos matemáticos:
172
+
173
+ - **Osciladores** — seno, quadrado, dente de serra, triângulo, ruído branco
174
+ - **Envelopes ADSR** — ataque, decaimento, sustentação, liberação
175
+ - **Síntese por modulação de frequência (FM)** — para textura
176
+ - **Filtro de estado variável** — ruído filtrado em banda para sons de "whoosh"
177
+ - **Varreduras de frequência** — interpolação linear para movimento
178
+ - **Limitador de volume** — compressão "soft-knee", limite máximo
179
+
180
+ Todo o pacote tem aproximadamente 2.800 linhas de TypeScript, sem dependências de produção. Os sons são gerados como buffers PCM, codificados para WAV na memória e reproduzidos através do reprodutor de áudio nativo do sistema operacional (PowerShell no Windows, afplay no macOS, aplay no Linux).
181
+
182
+ ## Segurança e Privacidade
183
+
184
+ **Dados acessados:** `~/.claude-sfx/config.json` (preferências), `.claude/settings.json` (registro de hooks). Os buffers de áudio são gerados na memória e nunca são gravados em disco, a menos que você execute o comando `export`.
185
+
186
+ **Dados NÃO acessados:** código-fonte, histórico do Git, rede, credenciais, variáveis de ambiente. Nenhuma informação de telemetria é coletada ou enviada. Nenhum arquivo de áudio é baixado; todos os sons são sintetizados localmente a partir de cálculos matemáticos.
187
+
188
+ **Permissões:** leitura/escrita no sistema de arquivos para configurações e hooks, invocação do reprodutor de áudio do sistema operacional. Consulte o arquivo [SECURITY.md](SECURITY.md) para a política completa.
189
+
190
+ ## Requisitos
191
+
192
+ - Node.js 18 ou superior
193
+ - Claude Code
194
+ - Saída de áudio do sistema (alto-falantes ou fones de ouvido)
195
+
196
+ ## Licença
197
+
198
+ [MIT](LICENSE)
199
+
200
+ ---
201
+
202
+ Desenvolvido por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
package/README.zh.md CHANGED
@@ -1,54 +1,56 @@
1
- <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.md">English</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
- </p>
4
-
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.md">English</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
5
  <p align="center">
6
6
  <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.jpg" width="400" alt="Claude-SFX">
7
7
  </p>
8
-
8
+
9
9
  <p align="center">
10
- <a href="https://www.npmjs.com/package/claude-sfx"><img src="https://img.shields.io/npm/v/claude-sfx" alt="npm version"></a>
10
+ <a href="https://www.npmjs.com/package/@mcptoolshop/claude-sfx"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-sfx" alt="npm version"></a>
11
+ <a href="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
12
+ <a href="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx"><img src="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx/branch/main/graph/badge.svg" alt="codecov"></a>
11
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
12
14
  <a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
13
15
  </p>
14
-
15
- 对于 [Claude Code](https://docs.anthropic.com/en/docs/claude-code),我们提供了程序化的音频反馈。 每次工具调用、文件编辑、搜索、git推送以及代理任务都会产生不同的声音,这些声音是通过数学算法合成的,而不是音频文件。
16
-
17
- ## 快速开始
18
-
16
+
17
+ 对于 [Claude Code](https://docs.anthropic.com/en/docs/claude-code),我们提供程序级的音频反馈。 每次工具调用、文件编辑、搜索、git推送以及代理分发都会产生不同的声音——这些声音是通过数学算法合成的,而不是音频文件。
18
+
19
+ ## 快速开始
20
+
19
21
  ```bash
20
- npm install -g claude-sfx
22
+ npm install -g @mcptoolshop/claude-sfx
21
23
  cd your-project
22
24
  claude-sfx init # install hooks into .claude/settings.json
23
25
  claude-sfx demo # hear all 7 verbs
24
26
  ```
25
-
26
- 就此完成了。现在,Claude Code 在工作时会发出声音。
27
-
28
- ## 为什么使用音频反馈?
29
-
30
- 当 AI 代理代表您读取、编写、搜索和部署时,您会失去可见性。 您只是盯着屏幕上滚动的文本。 音频反馈可以恢复您的意识:
31
-
32
- - **可访问性**:无需观看终端,即可听到状态变化、错误和完成情况。
33
- - **流畅性**:无需切换上下文,即可知道测试是否通过或推送是否成功。
34
- - **沉浸感**:代理感觉更像是一个协作者,而不是一个黑盒子。
35
-
36
- ## 7 种动词
37
-
38
- Claude Code 的每个操作都对应于 7 种核心动词中的一种。 修饰符(状态、范围、方向)会改变声音,但不会破坏其连贯性。
39
-
40
- | 动词 | 触发器 | 声音 |
41
- | --- | --- | --- |
42
- | **intake** | `Read`, `WebFetch`, `WebSearch` | 逐渐上升的正弦波——表示即将到来 |
43
- | **transform** | `Edit` | FM 调制脉冲——表示重塑 |
44
- | **commit** | `Write`, `NotebookEdit`, `git commit` | 清晰的敲击声——表示已完成 |
45
- | **navigate** | `Grep`, `Glob` | 声纳回声——表示扫描 |
46
- | **execute** | `Bash`, `npm test`, `tsc` | 噪声爆发 + 声音——表示机械动作 |
47
- | **move** | `mv`、`cp`、子代理启动 | 气流声——表示空气移动 |
48
- | **sync** | `git push`, `git pull` | 戏剧性的气流声 + 音调锚 |
49
-
50
- ### 修饰符
51
-
27
+
28
+ 就这些了。现在,Claude Code 在工作时会播放声音。
29
+
30
+ ## 为什么使用音频反馈?
31
+
32
+ 当 AI 代理代表您读取、编写、搜索和部署时,您会失去可见性。 您会盯着屏幕上滚动的文本。 音频反馈可以恢复您的意识:
33
+
34
+ - **可访问性**:无需观看终端,即可听到状态变化、错误和完成情况。
35
+ - **流畅性**:无需切换上下文,即可知道测试是否通过或推送是否成功。
36
+ - **沉浸感**:代理感觉更像一个合作者,而不是一个黑盒子。
37
+
38
+ ## 7 种核心动作
39
+
40
+ 每个 Claude Code 动作都对应于 7 种核心动作中的一种。 修饰符(状态、范围、方向)会改变声音,但不会破坏其连贯性。
41
+
42
+ | 动作 | 触发器 | 声音 |
43
+ |---|---|---|
44
+ | **intake** | `Read`, `WebFetch`, `WebSearch` | 轻微上升的正弦波——表示某个内容正在进入 |
45
+ | **transform** | `Edit` | 具有 FM 特征的脉冲波——表示正在进行重塑 |
46
+ | **commit** | `Write`, `NotebookEdit`, `git commit` | 清晰的敲击声——表示已完成 |
47
+ | **navigate** | `Grep`, `Glob` | 声纳回声——表示正在扫描 |
48
+ | **execute** | `Bash`, `npm test`, `tsc` | 噪声爆发 + 声音——表示机械动作 |
49
+ | **move** | `mv`、`cp`、子代理启动 | 气流声——表示空气移动 |
50
+ | **sync** | `git push`, `git pull` | 戏剧性的气流声 + 音调锚 |
51
+
52
+ ### 修饰符
53
+
52
54
  ```bash
53
55
  claude-sfx play navigate --status ok # bright ping (octave harmonic)
54
56
  claude-sfx play navigate --status err # low detuned ping (dissonance)
@@ -57,60 +59,60 @@ claude-sfx play sync --direction up # rising whoosh (push)
57
59
  claude-sfx play sync --direction down # falling whoosh (pull)
58
60
  claude-sfx play intake --scope remote # longer tail (distance feel)
59
61
  ```
60
-
61
- ### 智能 Bash 检测
62
-
63
- 处理程序会检查 Bash 命令,以选择正确的声音:
64
-
65
- | Bash 命令 | 动词 | 状态 |
66
- | --- | --- | --- |
67
- | `git push` | sync (向上) | 来自退出码 |
68
- | `git pull` | sync (向下) | 来自退出码 |
69
- | `npm test`, `pytest` | execute (执行) | 来自退出码 |
70
- | `tsc`, `npm run build` | execute (执行) | 来自退出码 |
71
- | `mv`, `cp` | move (移动) | — |
72
- | `rm` | move (移动) | warn (警告) |
73
- | 其他所有情况 | execute (执行) | 来自退出码 |
74
-
75
- ## 配置文件
76
-
77
- 这些配置文件会改变整个声音,只需一个标志即可。
78
-
79
- | 配置文件 | 声音风格 |
80
- | --- | --- |
81
- | **minimal** (default) | 正弦波声音——微妙、专业、日常使用 |
82
- | **retro** | 方波 8 位声音——有趣但可控 |
83
-
62
+
63
+ ### 智能 Bash 检测
64
+
65
+ 处理程序会检查 Bash 命令以选择正确的声音:
66
+
67
+ | Bash 命令 | 动作 | 状态 |
68
+ |---|---|---|
69
+ | `git push` | sync (成功) | 根据退出码 |
70
+ | `git pull` | sync (失败) | 根据退出码 |
71
+ | `npm test`, `pytest` | 执行 | 根据退出码 |
72
+ | `tsc`, `npm run build` | 执行 | 根据退出码 |
73
+ | `mv`, `cp` | 移动 | — |
74
+ | `rm` | 移动 | 警告 |
75
+ | 其他所有情况 | 执行 | 根据退出码 |
76
+
77
+ ## 配置文件
78
+
79
+ 这些配置文件会改变整个声音,只需一个标志即可。
80
+
81
+ | 配置文件 | 声音特征 |
82
+ |---|---|
83
+ | **minimal** (default) | 正弦波声音——微妙、专业、日常使用 |
84
+ | **retro** | 方波 8 位声音——有趣但可控 |
85
+
84
86
  ```bash
85
87
  claude-sfx demo --profile retro # hear retro palette
86
88
  claude-sfx preview minimal # audition all sounds + modifiers
87
89
  claude-sfx config set profile retro # change default globally
88
90
  claude-sfx config repo retro # use retro in current directory only
89
91
  ```
90
-
91
- ### 自定义配置文件
92
-
93
- 复制 `profiles/minimal.json`,编辑合成参数,然后加载它:
94
-
92
+
93
+ ### 自定义配置文件
94
+
95
+ 复制 `profiles/minimal.json`,编辑合成参数,然后加载它:
96
+
95
97
  ```bash
96
98
  claude-sfx play navigate --profile ./my-profile.json
97
99
  ```
98
-
99
- JSON 中的每个数字都直接映射到合成引擎,包括波形、频率、持续时间、包络(ADSR)、FM 深度、带宽和增益。
100
-
101
- ## 防厌烦
102
-
103
- 区分产品和玩具的关键。
104
-
105
- | 功能 | 行为 |
106
- | --- | --- |
107
- | **Debounce** | 相同动词在 200 毫秒内出现产生一个声音 |
108
- | **Rate limit** | 每 10 秒最多 8 个声音 |
109
- | **Quiet hours** | 在配置的时间段内,所有声音都会被抑制 |
110
- | **Mute** | 即时切换,重启会话后仍然有效 |
111
- | **Volume** | 0–100 增益控制 |
112
- | **Per-verb disable** | 可以关闭您不想听到的特定动词的声音 |
113
-
100
+
101
+ JSON 中的每个数字都直接映射到合成引擎——波形、频率、持续时间、包络(ADSR)、FM 深度、带宽、增益。
102
+
103
+ ## 防干扰
104
+
105
+ 区分产品和玩具的关键。
106
+
107
+ | 功能 | 行为 |
108
+ |---|---|
109
+ | **Debounce** | 相同动作在 200 毫秒内重复播放一个声音 |
110
+ | **Rate limit** | 每 10 秒最多 8 个声音 |
111
+ | **Quiet hours** | 在配置的时间段内,所有声音都会被抑制 |
112
+ | **Mute** | 即时切换,重启会话后仍然有效 |
113
+ | **Volume** | 0–100 增益控制 |
114
+ | **Per-verb disable** | 您可以关闭不想听到的特定动作 |
115
+
114
116
  ```bash
115
117
  claude-sfx mute # instant silence
116
118
  claude-sfx unmute
@@ -120,27 +122,27 @@ claude-sfx config set quiet-end 07:00 # until 7am
120
122
  claude-sfx disable navigate # no more search pings
121
123
  claude-sfx enable navigate # bring it back
122
124
  ```
123
-
124
- ## 环境声音(长时间运行的操作)
125
-
126
- 对于需要一段时间才能完成的命令(构建、部署、大型测试套件):
127
-
125
+
126
+ ## 环境音(长时间运行的操作)
127
+
128
+ 对于需要一段时间才能完成的命令(构建、部署、大型测试套件):
129
+
128
130
  ```bash
129
131
  claude-sfx ambient-start # low drone fades in
130
132
  # ... operation runs ...
131
133
  claude-sfx ambient-resolve # drone stops, resolution stinger plays
132
134
  claude-sfx ambient-stop # stop drone silently (no stinger)
133
135
  ```
134
-
135
- ## 会话声音
136
-
136
+
137
+ ## 会话声音
138
+
137
139
  ```bash
138
140
  claude-sfx session-start # two-note ascending chime (boot)
139
141
  claude-sfx session-end # two-note descending chime (closure)
140
142
  ```
141
-
142
- ## 所有命令
143
-
143
+
144
+ ## 所有命令
145
+
144
146
  ```
145
147
  Setup:
146
148
  init Install hooks into .claude/settings.json
@@ -163,26 +165,38 @@ Config:
163
165
  disable / enable <verb> Toggle specific verbs
164
166
  export [dir] [--profile] Export all sounds as .wav files
165
167
  ```
166
-
167
- ## 工作原理
168
-
169
- 没有音频文件。 每次声音都是在运行时通过数学算法合成的:
170
-
171
- - **振荡器** — 正弦波、方波、锯齿波、三角波、白噪声
172
- - **ADSR 包络线** — 攻击 (attack)、衰减 (decay)、维持 (sustain)、释放 (release)
173
- - **FM 综合** — 用于产生纹理的频率调制
174
- - **状态变量滤波器** — 用于产生“嗖嗖”声的带通滤波噪声
175
- - **频率扫描** — 用于产生运动效果的线性插值
176
- - **响度限制器** — 软压缩、硬限位
177
-
178
- 整个软件包包含约 2800 行 TypeScript 代码,且没有任何生产依赖。声音以 PCM 缓冲区生成,在内存中编码为 WAV 格式,并通过操作系统自带的音频播放器播放(Windows 上的 PowerShell,macOS 上的 afplay,Linux 上的 aplay)。
179
-
180
- ## 需求
181
-
182
- - Node.js 18+
183
- - Claude Code
184
- - 系统音频输出(扬声器或耳机)
185
-
186
- ## 许可证
187
-
188
- [MIT](LICENSE)
168
+
169
+ ## 工作原理
170
+
171
+ 没有音频文件。 每次声音都是在运行时通过数学算法合成的:
172
+
173
+ - **振荡器**:正弦波、方波、锯齿波、三角波、白噪声
174
+ - **ADSR 包络**:攻击、衰减、持续、释放
175
+ - **FM 合成**:用于纹理的频率调制
176
+ - **状态变量滤波器**:用于气流声的带通滤波噪声
177
+ - **频率扫描**:用于移动的线性插值
178
+ - **响度限制器**:软限压缩、硬限
179
+
180
+ 整个软件包约为 2800 行 TypeScript 代码,没有任何生产依赖项。 声音以 PCM 缓冲区生成,在内存中编码为 WAV 文件,并通过操作系统本地音频播放器播放(Windows 上的 PowerShell,macOS 上的 afplay,Linux 上的 aplay)。
181
+
182
+ ## 安全与隐私
183
+
184
+ **访问的数据:** `~/.claude-sfx/config.json`(偏好设置),`.claude/settings.json`(钩子注册)。音频缓冲区在内存中生成,除非您运行 `export` 命令,否则不会写入磁盘。
185
+
186
+ **未访问的数据:** 源代码、Git 历史记录、网络、凭据、环境变量。 不会收集或发送任何遥测数据。 不会下载任何音频文件,所有声音都是从数学公式本地合成的。
187
+
188
+ **权限:** 配置文件和钩子所需的读写文件系统权限,以及操作系统音频播放器的调用权限。 完整的权限策略请参见 [SECURITY.md](SECURITY.md)。
189
+
190
+ ## 要求
191
+
192
+ - Node.js 18+
193
+ - Claude Code
194
+ - 系统音频输出(扬声器或耳机)
195
+
196
+ ## 许可证
197
+
198
+ [MIT](LICENSE)
199
+
200
+ ---
201
+
202
+ 由 <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a> 构建。