claude-notify-hub 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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Claude Notify Hub Contributors
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 ADDED
@@ -0,0 +1,191 @@
1
+ # Claude Code Notify Hub
2
+
3
+ <div align="center">
4
+
5
+ Get notified instantly when Claude Code needs you
6
+
7
+ [中文文档](./README.zh-CN.md) | English
8
+
9
+ [![npm version](https://img.shields.io/npm/v/claude-notify-hub.svg)](https://www.npmjs.com/package/claude-notify-hub)
10
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
+
12
+ </div>
13
+
14
+ ## What is this?
15
+
16
+ Claude Code Notify Hub is a notification system that alerts you instantly when Claude Code needs your attention.
17
+
18
+ **Use Cases:**
19
+ - 🔔 Claude encounters an issue and needs your help
20
+ - ✅ Claude completes the task you assigned
21
+ - ⚠️ An error occurs during execution
22
+
23
+ **Supported Notification Methods:**
24
+ - 🗣️ **Voice Notifications** - Desktop alerts + text-to-speech (macOS/Windows/Linux)
25
+ - 📧 **Email Notifications** - Send to your email (Gmail, Outlook, QQ Mail, etc.)
26
+
27
+ ## Quick Start
28
+
29
+ ### Step 1: Installation
30
+
31
+ ```bash
32
+ npm install -g claude-notify-hub
33
+ ```
34
+
35
+ ### Step 2: Configuration
36
+
37
+ ```bash
38
+ claude-notify init
39
+ ```
40
+
41
+ Follow the prompts:
42
+
43
+ 1. **Select notification methods** (you can choose both):
44
+ - Voice notifications
45
+ - Email notifications
46
+
47
+ 2. **If you selected Voice notifications**:
48
+ - System will auto-detect your OS
49
+ - Choose whether to customize voice messages (optional)
50
+
51
+ 3. **If you selected Email notifications**:
52
+ - Select **587 (STARTTLS - Recommended for Gmail)**
53
+ - Enter your email address
54
+ - Enter password (Gmail requires app-specific password, see below)
55
+
56
+ ### Step 3: Test
57
+
58
+ ```bash
59
+ # Test all notifications
60
+ claude-notify test
61
+
62
+ # Or test individually
63
+ claude-notify test --voice
64
+ claude-notify test --email
65
+
66
+ # Test all four notification types (hear different sounds)
67
+ claude-notify test --voice --all-types
68
+ ```
69
+
70
+ **`--all-types` option:**
71
+
72
+ This option tests all four notification types sequentially with 1.5 second intervals:
73
+
74
+ 1. 🔔 **intervention** (needs help) → Ping sound (clear chime)
75
+ 2. ✅ **complete** (task done) → Glass sound (crisp glass)
76
+ 3. ⚠️ **error** (error occurred) → Basso sound (deep warning)
77
+ 4. 🎉 **subagent_complete** (subtask done) → Glass sound (crisp glass)
78
+
79
+ ### Step 4: Start Using
80
+
81
+ Once configured, **you don't need to do anything**!
82
+
83
+ When Claude Code runs:
84
+ - Needs your help → Auto notification
85
+ - Task completed → Auto notification
86
+ - Error occurs → Auto notification
87
+
88
+ ## Gmail Configuration
89
+
90
+ **Important: Gmail requires an app-specific password, not your regular login password!**
91
+
92
+ ### Get Gmail App-Specific Password:
93
+
94
+ 1. Go to [Google Account Settings](https://myaccount.google.com/)
95
+ 2. Click "Security"
96
+ 3. Enable "2-Step Verification" (if not already enabled)
97
+ 4. Find "App passwords" under "2-Step Verification"
98
+ 5. Select "Mail" and your device
99
+ 6. Copy the generated 16-character password
100
+
101
+ ### When configuring, select:
102
+
103
+ ```
104
+ ? Select SMTP port and security:
105
+ ❯ 587 (STARTTLS - Recommended for Gmail) ← Select this!
106
+ 465 (SSL/TLS)
107
+ 25 (No encryption - Not recommended)
108
+ ```
109
+
110
+ ## Other Email Services
111
+
112
+ ### QQ Mail
113
+
114
+ - Login to QQ Mail → Settings → Account → Enable SMTP service
115
+ - Get authorization code (not your QQ password)
116
+ - Select `587 (STARTTLS)` when configuring
117
+
118
+ ### Outlook
119
+
120
+ - Use your Outlook password directly
121
+ - Select `587 (STARTTLS)` when configuring
122
+
123
+ ## Common Commands
124
+
125
+ ```bash
126
+ # Reconfigure
127
+ claude-notify config
128
+
129
+ # Temporarily disable notifications
130
+ claude-notify disable
131
+
132
+ # Re-enable notifications
133
+ claude-notify enable
134
+
135
+ # Test notifications
136
+ claude-notify test
137
+ ```
138
+
139
+ ## Configuration File
140
+
141
+ Manual configuration if needed: `~/.config/claude-notify/config.json`
142
+
143
+ ## Troubleshooting
144
+
145
+ ### Voice notifications not working?
146
+
147
+ **Linux users** need to install TTS tools first:
148
+
149
+ ```bash
150
+ # Ubuntu/Debian
151
+ sudo apt-get install espeak
152
+
153
+ # Or
154
+ sudo apt-get install festival
155
+ ```
156
+
157
+ ### Email sending fails?
158
+
159
+ 1. Confirm you're using **app-specific password** (not login password)
160
+ 2. Confirm you selected the correct port (587 for Gmail)
161
+ 3. Check network connection
162
+
163
+ ### How to temporarily disable notifications?
164
+
165
+ ```bash
166
+ claude-notify disable
167
+ ```
168
+
169
+ Re-enable when needed:
170
+
171
+ ```bash
172
+ claude-notify enable
173
+ ```
174
+
175
+ ## Feedback
176
+
177
+ Have issues? [Submit an Issue](https://github.com/knightnemo/claude-notify-hub/issues)
178
+
179
+ ## License
180
+
181
+ MIT License
182
+
183
+ ---
184
+
185
+ <div align="center">
186
+
187
+ If this tool helps you, please give it a ⭐️
188
+
189
+ Made with ❤️ for Claude Code users
190
+
191
+ </div>
@@ -0,0 +1,191 @@
1
+ # Claude Code Notify Hub
2
+
3
+ <div align="center">
4
+
5
+ 让 Claude Code 在需要你时第一时间通知你
6
+
7
+ [English](./README.md) | 简体中文
8
+
9
+ [![npm version](https://img.shields.io/npm/v/claude-notify-hub.svg)](https://www.npmjs.com/package/claude-notify-hub)
10
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
+
12
+ </div>
13
+
14
+ ## 这是什么?
15
+
16
+ Claude Code Notify Hub 是一个通知系统,让你在 Claude Code 需要你的时候能立即收到提醒。
17
+
18
+ **适用场景:**
19
+ - 🔔 Claude 遇到问题需要你的帮助
20
+ - ✅ Claude 完成了你交给它的任务
21
+ - ⚠️ 执行过程中发生错误
22
+
23
+ **支持的通知方式:**
24
+ - 🗣️ **语音通知** - 电脑弹窗 + 语音播报(支持 macOS/Windows/Linux)
25
+ - 📧 **邮件通知** - 发送到你的邮箱(支持 Gmail、Outlook、QQ 邮箱等)
26
+
27
+ ## 你需要做什么?
28
+
29
+ ### 第一步:安装
30
+
31
+ ```bash
32
+ npm install -g claude-notify-hub
33
+ ```
34
+
35
+ ### 第二步:配置
36
+
37
+ ```bash
38
+ claude-notify init
39
+ ```
40
+
41
+ 跟着提示操作即可。你需要:
42
+
43
+ 1. **选择通知方式**(可以都选):
44
+ - 语音通知
45
+ - 邮件通知
46
+
47
+ 2. **如果选了语音通知**:
48
+ - 系统会自动检测你的操作系统
49
+ - 选择是否自定义语音内容(可选,默认即可)
50
+
51
+ 3. **如果选了邮件通知**:
52
+ - 选择 **587 (STARTTLS - Recommended for Gmail)**
53
+ - 输入你的邮箱地址
54
+ - 输入密码(Gmail 需要使用应用专用密码,见下方说明)
55
+
56
+ ### 第三步:测试
57
+
58
+ ```bash
59
+ # 测试所有通知
60
+ claude-notify test
61
+
62
+ # 或者单独测试
63
+ claude-notify test --voice
64
+ claude-notify test --email
65
+
66
+ # 测试所有四种通知类型(听到不同的音效)
67
+ claude-notify test --voice --all-types
68
+ ```
69
+
70
+ **`--all-types` 选项说明:**
71
+
72
+ 使用这个选项可以依次测试所有四种通知类型,每种间隔 1.5 秒,你会听到不同的音效:
73
+
74
+ 1. 🔔 **intervention**(需要干预)→ Ping 音效(清脆的叮咚声)
75
+ 2. ✅ **complete**(任务完成)→ Glass 音效(轻快的玻璃声)
76
+ 3. ⚠️ **error**(发生错误)→ Basso 音效(低沉的警告声)
77
+ 4. 🎉 **subagent_complete**(子任务完成)→ Glass 音效(轻快的玻璃声)
78
+
79
+ ### 第四步:开始使用
80
+
81
+ 配置完成后,**不需要做任何事情**!
82
+
83
+ 当 Claude Code 运行时:
84
+ - 需要你帮助时 → 自动发通知
85
+ - 任务完成时 → 自动发通知
86
+ - 出错时 → 自动发通知
87
+
88
+ ## Gmail 邮件配置说明
89
+
90
+ **重要:Gmail 需要应用专用密码,不能直接用登录密码!**
91
+
92
+ ### 获取 Gmail 应用专用密码:
93
+
94
+ 1. 前往 [Google 账户设置](https://myaccount.google.com/)
95
+ 2. 点击「安全性」
96
+ 3. 开启「两步验证」(如果还没开启)
97
+ 4. 在「两步验证」下方找到「应用专用密码」
98
+ 5. 选择「邮件」和你的设备
99
+ 6. 复制生成的 16 位密码
100
+
101
+ ### 配置时选择:
102
+
103
+ ```
104
+ ? Select SMTP port and security:
105
+ ❯ 587 (STARTTLS - Recommended for Gmail) ← 选这个!
106
+ 465 (SSL/TLS)
107
+ 25 (No encryption - Not recommended)
108
+ ```
109
+
110
+ ## 其他邮件服务
111
+
112
+ ### QQ 邮箱
113
+
114
+ - 登录 QQ 邮箱 → 设置 → 账户 → 开启 SMTP 服务
115
+ - 获取授权码(不是 QQ 密码)
116
+ - 配置时选择 `587 (STARTTLS)`
117
+
118
+ ### Outlook
119
+
120
+ - 直接使用你的 Outlook 密码
121
+ - 配置时选择 `587 (STARTTLS)`
122
+
123
+ ## 常用命令
124
+
125
+ ```bash
126
+ # 重新配置
127
+ claude-notify config
128
+
129
+ # 临时关闭通知
130
+ claude-notify disable
131
+
132
+ # 重新开启通知
133
+ claude-notify enable
134
+
135
+ # 测试通知
136
+ claude-notify test
137
+ ```
138
+
139
+ ## 配置文件位置
140
+
141
+ 如果需要手动修改配置:`~/.config/claude-notify/config.json`
142
+
143
+ ## 常见问题
144
+
145
+ ### 语音通知不工作?
146
+
147
+ **Linux 用户**需要先安装语音合成工具:
148
+
149
+ ```bash
150
+ # Ubuntu/Debian
151
+ sudo apt-get install espeak
152
+
153
+ # 或者
154
+ sudo apt-get install festival
155
+ ```
156
+
157
+ ### 邮件发送失败?
158
+
159
+ 1. 确认你使用的是**应用专用密码**(不是登录密码)
160
+ 2. 确认选择了正确的端口(Gmail 用 587)
161
+ 3. 检查网络连接
162
+
163
+ ### 如何临时关闭通知?
164
+
165
+ ```bash
166
+ claude-notify disable
167
+ ```
168
+
169
+ 需要时再开启:
170
+
171
+ ```bash
172
+ claude-notify enable
173
+ ```
174
+
175
+ ## 问题反馈
176
+
177
+ 遇到问题?[提交 Issue](https://github.com/knightnemo/claude-notify-hub/issues)
178
+
179
+ ## 开源协议
180
+
181
+ MIT License
182
+
183
+ ---
184
+
185
+ <div align="center">
186
+
187
+ 如果这个工具对你有帮助,请给它一个 ⭐️
188
+
189
+ Made with ❤️ for Claude Code users
190
+
191
+ </div>
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { program } = require('commander');
4
+ const packageJson = require('../package.json');
5
+ const init = require('../src/cli/init');
6
+ const test = require('../src/cli/test');
7
+ const config = require('../src/cli/config');
8
+ const send = require('../src/cli/send');
9
+
10
+ program
11
+ .name('claude-notify')
12
+ .description('An out-of-the-box notification system for Claude Code')
13
+ .version(packageJson.version);
14
+
15
+ program
16
+ .command('init')
17
+ .description('Initialize and configure Claude Code notifications')
18
+ .action(init);
19
+
20
+ program
21
+ .command('test')
22
+ .description('Test all enabled notification methods')
23
+ .option('-v, --voice', 'Test voice notification only')
24
+ .option('-e, --email', 'Test email notification only')
25
+ .option('-a, --all-types', 'Test all notification types (intervention, complete, error, subagent_complete)')
26
+ .action(test);
27
+
28
+ program
29
+ .command('config')
30
+ .description('Reconfigure notification settings')
31
+ .action(config);
32
+
33
+ program
34
+ .command('send')
35
+ .description('Send a notification (used by Claude Code hooks)')
36
+ .requiredOption('-t, --type <type>', 'Notification type (intervention|complete|error|subagent_complete)')
37
+ .option('-n, --notifier <notifier>', 'Specific notifier to use (voice|email)')
38
+ .option('-m, --message <message>', 'Custom message')
39
+ .option('-c, --context <context>', 'Additional context (JSON string)')
40
+ .action(send);
41
+
42
+ program
43
+ .command('enable')
44
+ .description('Enable Claude Code notifications')
45
+ .action(() => {
46
+ const configManager = require('../src/utils/config');
47
+ configManager.setEnabled(true);
48
+ console.log('✓ Claude Code notifications enabled');
49
+ });
50
+
51
+ program
52
+ .command('disable')
53
+ .description('Disable Claude Code notifications')
54
+ .action(() => {
55
+ const configManager = require('../src/utils/config');
56
+ configManager.setEnabled(false);
57
+ console.log('✓ Claude Code notifications disabled');
58
+ });
59
+
60
+ program.parse(process.argv);
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "claude-notify-hub",
3
+ "version": "1.0.0",
4
+ "description": "Get notified instantly when Claude Code needs you - Voice and Email notifications",
5
+ "main": "src/index.js",
6
+ "bin": {
7
+ "claude-notify": "./bin/claude-notify.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "src/",
12
+ "README.md",
13
+ "README.zh-CN.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "start": "node bin/claude-notify.js",
18
+ "test": "jest",
19
+ "test:watch": "jest --watch",
20
+ "test:coverage": "jest --coverage",
21
+ "lint": "eslint src/**/*.js bin/**/*.js",
22
+ "lint:fix": "eslint src/**/*.js bin/**/*.js --fix",
23
+ "format": "prettier --write \"**/*.{js,json,md}\"",
24
+ "prepare": "husky install"
25
+ },
26
+ "keywords": [
27
+ "claude",
28
+ "claude-code",
29
+ "notification",
30
+ "voice",
31
+ "email",
32
+ "cli",
33
+ "hooks",
34
+ "desktop-notification",
35
+ "tts",
36
+ "text-to-speech",
37
+ "smtp",
38
+ "gmail",
39
+ "alerts"
40
+ ],
41
+ "author": "knightnemo",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/knightnemo/claude-notify-hub.git"
46
+ },
47
+ "bugs": {
48
+ "url": "https://github.com/knightnemo/claude-notify-hub/issues"
49
+ },
50
+ "homepage": "https://github.com/knightnemo/claude-notify-hub#readme",
51
+ "engines": {
52
+ "node": ">=14.0.0"
53
+ },
54
+ "dependencies": {
55
+ "axios": "^1.6.0",
56
+ "boxen": "^5.1.2",
57
+ "chalk": "^4.1.2",
58
+ "cli-table3": "^0.6.3",
59
+ "commander": "^11.1.0",
60
+ "figures": "^3.2.0",
61
+ "inquirer": "^8.2.5",
62
+ "nodemailer": "^6.9.0",
63
+ "ora": "^5.4.1"
64
+ },
65
+ "devDependencies": {
66
+ "eslint": "^8.50.0",
67
+ "eslint-config-prettier": "^9.0.0",
68
+ "eslint-plugin-node": "^11.1.0",
69
+ "husky": "^8.0.3",
70
+ "jest": "^29.7.0",
71
+ "prettier": "^3.0.3"
72
+ },
73
+ "publishConfig": {
74
+ "access": "public"
75
+ }
76
+ }
@@ -0,0 +1,8 @@
1
+ const init = require('./init');
2
+
3
+ async function config() {
4
+ console.log('Reconfiguring Claude Code Notify...\n');
5
+ await init();
6
+ }
7
+
8
+ module.exports = config;