# claude code开源技能 **Repository Path**: zhangning-git/claude-code-skill ## Basic Information - **Project Name**: claude code开源技能 - **Description**: claude code开源技能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-12 - **Last Updated**: 2026-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Claude Code Skills Claude Code 技能包集合,按平台组织,一条命令安装。 ## 目录结构 ``` ├── mac/ # macOS 专用技能 │ └── hooks-sounds/ # 跨平台声音通知 ├── linux/ # Linux 专用技能 │ └── hooks-sounds/ # 跨平台声音通知 ├── windows/ # Windows 专用技能 │ └── hooks-sounds/ # 跨平台声音通知(内置 winsound) └── shared/ # 跨平台通用技能(待添加) ``` --- ## hooks-sounds — 跨平台声音通知 为 Claude Code 全部 27 个 hook 事件播放声音提示。macOS 使用内置 afplay,Linux 自动检测 PulseAudio/ALSA/FFmpeg,Windows 使用 winsound。 ### 一键安装 #### macOS ```bash git clone https://gitee.com/zhangning-git/claude-code-skill.git /tmp/claude-code-skill && \ mkdir -p ~/.claude/skills/hooks-sounds && \ cp -r /tmp/claude-code-skill/mac/hooks-sounds/* ~/.claude/skills/hooks-sounds/ && \ bash ~/.claude/skills/hooks-sounds/setup.sh && \ rm -rf /tmp/claude-code-skill ``` #### Linux 先确保安装了音频播放器: ```bash # Debian/Ubuntu sudo apt install pulseaudio-utils python3 # RHEL/CentOS/Fedora sudo dnf install pulseaudio-utils python3 ``` 然后一键安装: ```bash git clone https://gitee.com/zhangning-git/claude-code-skill.git /tmp/claude-code-skill && \ mkdir -p ~/.claude/skills/hooks-sounds && \ cp -r /tmp/claude-code-skill/linux/hooks-sounds/* ~/.claude/skills/hooks-sounds/ && \ bash ~/.claude/skills/hooks-sounds/setup.sh && \ rm -rf /tmp/claude-code-skill ``` > Linux 下会自动按 `paplay → aplay → ffplay → mpg123` 顺序检测可用播放器。 #### Windows Windows 使用 Python 内置的 `winsound` 模块播放声音,无需额外安装音频库。 **前提**:安装 Python 3([python.org](https://www.python.org/downloads/)),安装时勾选 "Add Python to PATH"。 **PowerShell(推荐)**,分步执行: ```powershell git clone https://gitee.com/zhangning-git/claude-code-skill.git $env:TEMP\claude-code-skill ``` ```powershell New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.claude\skills\hooks-sounds" | Out-Null ``` ```powershell Copy-Item -Recurse -Force "$env:TEMP\claude-code-skill\windows\hooks-sounds\*" "$env:USERPROFILE\.claude\skills\hooks-sounds\" ``` ```powershell python "$env:USERPROFILE\.claude\skills\hooks-sounds\setup.py" ``` ```powershell Remove-Item -Recurse -Force "$env:TEMP\claude-code-skill" ``` **CMD**,分步执行: ```cmd git clone https://gitee.com/zhangning-git/claude-code-skill.git %TEMP%\claude-code-skill ``` ```cmd mkdir %USERPROFILE%\.claude\skills\hooks-sounds ``` ```cmd xcopy /E /Y %TEMP%\claude-code-skill\windows\hooks-sounds\* %USERPROFILE%\.claude\skills\hooks-sounds\ ``` ```cmd python %USERPROFILE%\.claude\skills\hooks-sounds\setup.py ``` ```cmd rmdir /S /Q %TEMP%\claude-code-skill ``` 也可指定项目路径: ```cmd python %USERPROFILE%\.claude\skills\hooks-sounds\setup.py D:\your-project ``` > Windows 仅使用 `.wav` 格式(winsound 不支持 MP3)。 安装器会自动: 1. 检测 Python 3 和音频播放器 2. 在 `.claude/hooks/config/` 创建项目配置文件 3. 将全部 27 个 hook 事件写入 `.claude/settings.local.json` 安装完成后重启 Claude Code 会话即可生效。 ### 使用 hook 触发时自动播放对应声音,无需手动操作。以下是管理方法。 #### 禁用单个事件声音 编辑 `.claude/hooks/config/hooks-config.json`,将对应项设为 `true`: ```json { "disablePreToolUseHook": true, "disablePostToolUseHook": true, "disableNotificationHook": true } ``` 可禁用的全部事件: | 配置项 | 事件 | |--------|------| | `disablePreToolUseHook` | 工具调用前 | | `disablePostToolUseHook` | 工具调用成功后 | | `disablePostToolUseFailureHook` | 工具调用失败 | | `disablePermissionRequestHook` | 权限请求 | | `disablePermissionDeniedHook` | 权限被拒 | | `disableUserPromptSubmitHook` | 用户提交消息 | | `disableNotificationHook` | 系统通知 | | `disableStopHook` | 回合结束 | | `disableStopFailureHook` | 回合异常结束 | | `disableSubagentStartHook` | 子代理启动 | | `disableSubagentStopHook` | 子代理停止 | | `disablePreCompactHook` | 压缩前 | | `disablePostCompactHook` | 压缩后 | | `disableSessionStartHook` | 会话开始 | | `disableSessionEndHook` | 会话结束 | | `disableSetupHook` | 项目初始化 | | `disableConfigChangeHook` | 配置变更 | | `disableInstructionsLoadedHook` | 指令文件加载 | | `disableTaskCreatedHook` | 任务创建 | | `disableTaskCompletedHook` | 任务完成 | | `disableTeammateIdleHook` | 队友空闲 | | `disableElicitationHook` | MCP 输入请求 | | `disableElicitationResultHook` | MCP 输入返回 | | `disableWorktreeCreateHook` | 工作树创建 | | `disableWorktreeRemoveHook` | 工作树移除 | | `disableCwdChangedHook` | 目录切换 | | `disableFileChangedHook` | 文件变更 | | `disableLogging` | 日志记录 | 配置优先级:`hooks-config.local.json` > `hooks-config.json` > 默认(全部启用)。 `.local.json` 文件 git-ignored,可用于个人覆盖。 #### 同时触发的事件 某些场景下多个事件会连续触发,只禁用一个可能仍有声音。常见联动关系: | 场景 | 触发事件(按顺序) | 如需完全静默 | |------|-------------------|-------------| | 打开 Claude Code | SessionStart → InstructionsLoaded(可能多次) | 两个都禁 | | 工具调用 | PreToolUse → PostToolUse 或 PostToolUseFailure | 至少禁 PreToolUse | | 需要权限的工具 | PreToolUse → PermissionRequest → PostToolUse | 禁 PermissionRequest | | 子代理任务 | SubagentStart → PreToolUse/PostToolUse(多次)→ SubagentStop | 禁 SubagentStart/Stop | | 会话压缩 | PreCompact → PostCompact | 两个都禁 | | 退出 Claude Code | SessionEnd → Stop | 禁 SessionEnd | | MCP 输入 | Elicitation → ElicitationResult | 两个都禁 | | Git 提交 | PreToolUse(Bash)自动检测 `git commit` | 使用 `disablePreToolUseHook` | > **提示**:如果禁用了某个事件但还能听到声音,检查同一场景下的其他事件是否也在触发。 #### 临时关闭所有声音 在 `.claude/settings.local.json` 中设置: ```json { "disableAllHooks": true } ``` #### Agent 集成 在 agent frontmatter 中添加以下 hooks(支持 6 个事件:PreToolUse、PostToolUse、PermissionRequest、PostToolUseFailure、Stop、SubagentStop): ```yaml hooks: PreToolUse: - type: command command: python3 ${CLAUDE_PROJECT_DIR}/.claude/skills/hooks-sounds/scripts/hooks.py --agent=my-agent timeout: 5000 async: true ``` #### 自定义声音 替换 `~/.claude/skills/hooks-sounds/sounds/{事件名}/` 下的 `.wav` 或 `.mp3` 文件即可。 #### 日志 运行日志写入 `.claude/hooks/logs/hooks-log.jsonl`,用于调试。设置 `"disableLogging": true` 关闭。 ### Git Commit 专用声音 当执行 `git commit` 命令时,自动播放 `pretooluse-git-committing.wav`,区别于普通 PreToolUse 声音。 ### 故障排除 | 症状 | 检查 | |------|------| | 没有声音 | `disableAllHooks` 是否为 `true`;事件是否在 config 中被禁用 | | Linux 无声音 | 安装 PulseAudio:`sudo apt install pulseaudio-utils` | | 日志不写入 | `disableLogging` 是否为 `true` | | 某个 hook 不触发 | 检查 `.claude/settings.local.json` 是否包含该事件 | | 禁用了事件但仍有声音 | 同一场景可能触发多个事件,检查"同时触发的事件"表格 |