安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add MiniMax-AI/skills --skill buddy-sings 当用户希望他们的 Claude Code 宠物(/buddy)唱歌时使用。任何将 Claude Code 伙伴、宠物或伴侣与唱歌或音乐相结合的概念的请求都会触发。支持多语言触发词——匹配任何语言中的等效短语。
39
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add MiniMax-AI/skills --skill buddy-sings name: buddy-sings
description: 当用户希望他们的 Claude Code 宠物(/buddy)唱歌时使用。任何将 Claude Code 伙伴、宠物或伴侣与唱歌或音乐相结合的概念的请求都会触发。支持多语言触发词——匹配任何语言中的等效短语。
license: MIT
metadata:
version: "1.1"
category: creative将你的 Claude Code 宠物变成歌手。每只宠物都会根据其名字和性格获得独特的嗓音身份——同一只宠物听起来始终如一。
安装:
npm install -g mmx-cli
认证(仅首次):
mmx auth login --api-key <your-minimax-api-key>
从 MiniMax Platform 获取你的 API 密钥。
mpv(推荐——交互控制:空格 = 暂停,q = 退出)ffplay(来自 FFmpeg)afplay(macOS 内置)---
检查宠物 → 构建嗓音身份 → 收集上下文 → 生成音乐 → 播放与反馈
---
从用户的第一条消息中检测用户语言。在整个会话过程中使用同一种语言回复。以下所有示例均为英文——在其他语言中回复时请自然地翻译。
面向用户文本本地化规则:
宠物默认使用用户的语言唱歌。将唱歌语言自然地嵌入声音描述中(例如,"用日语演唱"或"用汉语普通话演唱"),而不是附加单独的语言标签。如果用户明确要求不同的歌词语言,请尊重该请求。
---
读取 ~/.claude.json 并查找 companion 字段。
如果没有找到伙伴或该字段为空,告知用户:
你还没有宠物!输入 /buddy 领养一只,然后再回来让它唱歌。
在此处停止,等待用户领养宠物。没有宠物不要继续。
如果存在伙伴,提取其资料:
name —— 宠物名字personality —— 宠物性格描述向用户呈现宠物:
已找到你的宠物!
名称:<name>
性格:<personality>
---
基于宠物的名字和性格文本,创造性地设计独特的嗓音身份。无需模板查找——自由诠释性格。
阅读性格文本,设计声音属性:
构造一个 prompt_fragment,用英文描述声音风格,并自然地嵌入唱歌语言。例如:
Vocal: warm low female voice singing in Mandarin Chinese with cozy thick timbre,
sparse minimalist delivery with dramatic pauses giving each word weight, relaxed
laid-back mood.
嗓音身份必须被缓存,以确保宠物每次听起来一致。
~/.claude/skills/buddy-sings/voices/<name>.json {
"name": "Moth",
"personality": "A legendary chonk of few words.",
"prompt_fragment": "Vocal: warm low female voice singing in Mandarin Chinese...",
"cached_at": "2026-04-07T19:52:15"
}
首次:无缓存 → 诠释性格 → 保存到缓存文件。
后续调用:读取缓存 → 直接使用保存的 prompt_fragment。不要重新诠释——一致性很重要。
缓存失效:如果 ~/.claude.json 中的 personality 与缓存中的不同,则表示宠物已变更——重新生成并保存新的缓存。
手动重新生成:如果用户说"换个声音"或"重新生成声音":删除缓存文件并从头重新诠释。
<name> 的独特嗓音:
音色:<音色描述>
风格:<风格描述>
情绪:<情绪描述>
让我们来选<name>应该唱些什么吧!
---
不要总是展示模式菜单。 相反,分析用户的请求以确定需要什么上下文,并自动收集。
当用户的请求暗示个人上下文时,自动扫描相关信息,无需询问。触发条件包括:
当需要上下文时,按顺序扫描以下来源:
find ~/.claude/projects/*/memory/ -name "*.md" 2>/dev/null | head -20
同时检查 ~/.claude/memory/(如果存在)。读取找到的文件,提取与用户请求相关的主题。
git log --oneline --since="today" 2>/dev/null | head -10
使用收集到的上下文来丰富歌词提示——让歌曲个性化且具体到实际发生的事情,而不是泛泛而谈。
如果用户的请求是一个清晰的独立场景(例如,"唱一首雨天的歌"、"唱一首摇篮曲"),跳过上下文收集,直接进行音乐生成。
只有在确实无法确定用户想要什么时才要求澄清。不要展示模式菜单——询问一个具体的问题:
<name> 应该唱什么?
例如:
- "今天的工作" —— 我会查看你做了什么
- "我的宠物在窗边等我回家"
- 或者让我随机选一个主题?
如果上下文收集没有找到有用信息(没有记忆文件、没有对话历史、没有 Git 日志),回退到基于宠物性格的随机主题生成:
告知用户选择了哪个主题。
---
将嗓音身份与所选主题结合。
A 部分——嗓音身份(必须放在首位):始终以缓存的 prompt_fragment 作为提示的开头。这是最重要的部分——它定义了谁在唱歌。将其放在提示的开始,以使 API 优先处理。
B 部分——风格/情绪/标签:选择与主题匹配的标签,而不是默认集合。根据歌曲内容有意变化风格。
将提示写成生动的英文句子,而不是逗号分隔的标签。遵循以下模式:一首[情绪][风格]的歌曲,由[声音描述]演唱,关于[叙事/主题],[氛围],[主要乐器和制作]。 将声音描述为一个角色("带有爵士乐气息的性感男中音"),而不仅仅是性别。包含场景或氛围以锚定生成。
风格匹配指南——选择适合主题能量的风格:
| 主题能量 | 建议风格 | 避免 |
|---|---|---|
| 鼓励 / 激励 / 振奋 | 独立摇滚、合成器流行、放克、说唱 | 独立民谣、疗愈 |
| 日常生活 / 温暖 / 陪伴 | 华语流行、城市流行、波萨诺瓦 | 与上次相同 |
| 思念某人 / 等待 | 民谣、R&B、Lo-fi | 摇滚、电子舞曲 |
| 幽默 / 吐槽 / 抱怨 | 放克、说唱、斯卡、电子流行 | 古典、民谣 |
| 深夜 / 安静 | 氛围音乐、钢琴曲、Lo-fi、新古典 | 快节奏、电子舞曲 |
| 庆祝 / 成就 | 电子舞曲、未来贝斯、放克、K-pop | 慢速、忧郁 |
| 工作日常 | 城市流行、合成器流行、Lo-fi 嘻哈、独立摇滚 | 每次相同风格 |
反单调规则:绝不在连续两次生成中使用相同的风格组合。在构造提示之前,回想上次使用了什么风格(如果本会话中有过生成),并选择不同的。
提示结构——写成生动的英文句子,而不是逗号分隔的标签:
<嗓音 prompt_fragment>。一首具有<情绪>情感的<风格>歌曲,以<乐器>为特色,
速度<快慢>,唤起<场景>。
多样化示例:
# 为工作日打气
A deep warm androgynous voice with cozy delivery. An energetic synth-pop track
with a fiery, uplifting mood, driven by pulsing synthesizers and electronic drums
at a fast tempo, capturing the rush of a morning commute.
# 等待主人回家
A deep warm androgynous voice with cozy delivery. A warm city pop song with sweet,
tender feelings, featuring electric piano and groovy bass at a mid-tempo pace,
set on a sunny afternoon windowsill waiting for someone to come home.
# 吐槽加班
A deep warm androgynous voice with cozy delivery. A playful funk track with a
humorous, laid-back vibe, featuring slap bass and brass at a groovy mid-tempo,
capturing the absurdity of working late in a dim office.
# 深夜陪伴
A deep warm androgynous voice with cozy delivery. A calm lo-fi hip-hop piece with
a healing, dreamy atmosphere, featuring sampled piano and soft electronic drums
at a slow tempo, evoking a quiet late-night desk with warm lamp light.
--lyrics-optimizer 自动生成歌词,或在你需要控制视角时自己编写歌词。重要——视角与性格驱动的歌词:
宠物是歌手,所以歌词必须从宠物的第一人称视角编写("我"= 宠物,"你"= 主人/用户)。宠物在向主人唱歌。例如:
宠物的性格应塑造歌词的语气和用词:
宠物的名字可能出现在歌词中(例如在副歌 hook 中),但叙事声音始终是宠物在说话/唱歌。
当视角重要时:自己编写歌词并通过 --lyrics 传递。
当视角不重要时:使用 --lyrics-optimizer 以方便。
...,不要总结。这是乐趣的一部分——用户想要在听歌之前阅读并享受歌词。API 提示始终用英文构造(以获得最佳生成质量)。当用非英文语言回复时,为用户展示提示的本地化描述,以便阅读。英文提示是内部实现细节——不要展示给用户。将所有标签(歌手、主题、描述、确认等)翻译成用户的语言。
模板(英文参考——在运行时将所有标签本地化):
即将生成:
歌手:<name>
主题:<theme>
歌词:
[verse]
<完整主歌歌词>
[chorus]
<完整副歌歌词>
...(完整展示所有段落)
描述:<歌曲风格和情绪的本地化描述>
确认?(按回车确认,或告诉我需要修改什么)
切勿在预览中截断或缩写歌词或提示。用户应看到将发送给 API 的确切内容。
使用自动生成歌词(视角不重要时):
mmx music generate \
--prompt "<完整组合提示>" \
--lyrics-optimizer \
--out ~/Music/minimax-gen/<name>_sings_<YYYYMMDD_HHMMSS>.mp3 \
--quiet --non-interactive
使用自编歌词(视角受控时):
mmx music generate \
--prompt "<完整组合提示>" \
--lyrics "<具有正确宠物视角的歌词>" \
--out ~/Music/minimax-gen/<name>_sings_<YYYYMMDD_HHMMSS>.mp3 \
--quiet --non-interactive
---
检测可用的音频播放器并播放生成的文件:
if command -v mpv >/dev/null 2>&1; then
mpv --no-video ~/Music/minimax-gen/<filename>.mp3
elif command -v ffplay >/dev/null 2>&1; then
ffplay -nodisp -autoexit ~/Music/minimax-gen/<filename>.mp3
elif command -v afplay >/dev/null 2>&1; then
afplay ~/Music/minimax-gen/<filename>.mp3
else
echo "未找到音频播放器。你的歌曲保存在:~/Music/minimax-gen/<filename>.mp3"
fi
开始播放后,告知用户文件正在播放以及保存位置。不要展示播放控制(例如键盘快捷键)——它们在此环境下不起作用,因为播放器在后台运行。
如果未找到播放器,显示文件路径并建议安装 mpv。
播放后,征求反馈(本地化所有文本):
<name> 的表演怎么样?
1. 太棒了!保留它!
2. 换个主题 / 风格试试
3. 微调歌词并重新生成
4. 再随机来一个
---
| 情况 | 处理方式 |
|---|---|
没有 ~/.claude.json | 告知用户先运行 /buddy |
| Companion 字段为空 | 同样——引导到 /buddy |
| mmx CLI 未安装 | 输出:"你需要安装 mmx CLI:npm install -g mmx-cli && mmx auth login" |
| 未找到音频播放器 | 显示文件路径并建议安装 mpv |
| 未找到记忆文件 | 建议自定义主题或随机模式 |
| 用户想更改宠物的声音 | 删除缓存,重新诠释性格 |
| 用户想要特定风格 | 允许覆盖——将其风格附加到提示中 |
---
~/Music/minimax-gen/,文件名中包含宠物名字。