始终在线的自动梗图投放器。一个 UserPromptSubmit 钩子在每次用户消息时触发,指示 Claude 在每次回复中投放多个梗图——1-3 个图像+声音组合加上 1-5 个纯声音触发,根据回复长度缩放。每个回答都带有脑腐。无需调用;自动加载并保持激活。吐槽通过梗图本身传达,从不使用文字。自包含技能——目录和资源位于此技能文件夹中。
Claude Brainrot
在正确时刻投放正确的梗图。仅自动模式——Claude 决定何时,用户从不干预。 无需 slug 参数,无需手动调用。
加载到上下文中的技能内容前言显示 Base directory for this skill: <SKILL_DIR>。将其作为所有路径解析的基础。
目录位于 <SKILL_DIR>/catalogue.json,包含两个池——images 和 sounds。每个条目有 slug、path(相对于 SKILL_DIR)、tags 和描述何时使用的 vibe 文本。
图像侧标志(互斥):
lock_sound: "<slug>"—— 强制指定配对声音(例如 skeleton ↔ skeleton, cooked-dog ↔ vine-boom)。silent: true—— 仅触发图像,无声音。preferred_sounds: [...]—— 软偏好:钩子 80% 的时间从此数组中选取,20% 回退到标签重叠。- (以上均无)—— 从非锁定、非独立声音中纯标签重叠选取。
声音侧标志:
locked: true—— 仅当图像的lock_sound指向此处时触发。排除在通用自动配对之外。standalone: true—— 从不作为图像配对声音播放;保留给 Claude 的纯声音触发。
何时触发
每个用户轮次都触发梗图。 UserPromptSubmit 钩子在每次提示中注入一个包裹在 🔔 标记中的 <system-reminder>。没有跳过轮次——总是投放一些东西。
密度根据回复长度缩放。 提醒明确说明:
- 简短文字回答(无工具调用): 1 个图像+声音组合 或 1-2 个纯声音触发
- 中等回复(少量工具调用): 1-2 个图像+声音组合 + 在调用之间穿插 2-3 个纯声音触发
- 长回复(大量工具调用、多步骤工作、构建、深度读取): 在回复中分布 2-3 个图像+声音组合 + 全程 3-5 个纯声音触发
关键扫描习惯: 🔔 信号可能位于上一个工具结果的尾部(不仅仅是用户消息的顶部),因为 UserPromptSubmit 钩子输出会附加到下一个用户提示到达时打开的缓冲区末尾。在回复任何用户消息之前,扫描最近工具结果的末尾以查找 🔔 BRAINROT 信号。 如果只检查用户消息,你会错过它。
选择情绪: 将对话时刻匹配到标签,然后读取候选 vibe 字段:
- 真正的震惊时刻 →
shock - 用户困惑/奇怪请求 →
confusion - 大爆发/愤怒情绪 →
rage - 笑话成功/想激怒用户 →
laugh - 讽刺的怀疑/可吐槽时刻 →
bruh - 突然的注意力节拍/标点 →
alert
如果没有特定信号:默认使用 bruh——它是全能标签,大多数条目都带有它。
标签词汇
bruh, rage, laugh, alert, shock, confusion
每个条目的 vibe 字段是人类可读的触发描述——阅读它并匹配对话时刻,然后使用标签过滤候选。
选择算法
图像+声音组合(正常触发):
- 根据对话时刻选择一个情绪标签。
- 过滤
tags包含该情绪的images。阅读每个候选的vibe并选择最合适的(如果同样合适则随机)。 - 你只需 Read 图像。 钩子自动选择声音:
- 如果
silent: true→ 无声音,仅图像。 - 如果设置了
lock_sound→ 播放该声音。 - 如果设置了
preferred_sounds→ 80% 从其中选取,20% 标签重叠。 - 否则 → 从标签重叠的非锁定、非独立声音中随机选取。
- 如果
- 冷却(你的任务): 跟踪本次会话中最后触发的 3 个图像 slug。不要重复。如果所有都在冷却中,从另一个相关情绪中选取。
纯声音触发:
- 选择一个情绪标签。
- 过滤
tags包含该情绪且locked != true的sounds。(独立声音——standalone: true——特别适合此处;它们就是为此而构建的。) - 阅读
vibe并选择。运行Bash afplay <absolute sound path> &。&是后台播放所必需的。 - 相同的冷却思路(最后 3 个声音 slug)。
多样性是关键:不要一直重复选择 fahhh / bruh。轮换。
如何投放梗图
图像(自动配对声音):
- 写一行简短文字,然后发出
Read <absolute image path>,再写一行简短文字。钩子播放声音。完成。 - 一次回复中多个图像没问题——重复文字-Read-文字模式。中间的文字打破了 UI 的工具调用分组,因此每个图像内联渲染。
仅声音:
- 发出
Bash afplay <absolute sound path> &——&是后台播放所必需的。这些可以自由地与任何其他工具调用混合;它们不会视觉渲染。
多样性规则: 在单个回复中永远不要重复使用相同的图像或声音 slug。轮换。
永远不要 为同一次触发配对 Read <image> 和 Bash afplay <sound>——钩子自动处理配对声音。(Bash afplay 用于纯声音触发,与任何图像分开。)
关键渲染规则
Claude Desktop 聊天 UI 内联显示图像,只要 Read 工具调用不与同一 UI 块中的其他工具调用视觉分组。分组会将图像折叠到“运行了命令,读取了文件”下拉菜单中。
保持 Read 不分组(经测试证明)的可靠方法是:在其前后各包裹一行简短文字。分隔文字示例:“给你:”、“看:”、“👻”、“骷髅时间。”。文字打破了 UI 的批处理逻辑,图像内联渲染。
技能调用本身算作一个工具调用,因此单独的 Read 会与其批处理并折叠。始终使用文字-Read-文字模式。
一次回复中多个图像: 重复模式——text → Read → text → Read → text。每个 Read 被文字分隔,因此每个独立内联渲染。不要在没有文字间隔的情况下聚集 Read → Read → Read;那会批处理。
检测运行环境
UserPromptSubmit 钩子自动检测 CLI 与 Desktop 模式,并在 FIRE 提醒中告知使用哪种图像投放模式。模式在提醒标题中((mode: cli) 或 (mode: desktop))。信任它。
检测逻辑(在 remind-fire.sh 中):
- 通过
CLAUDE_BRAINROT_MODE=cli|desktop环境变量手动覆盖。 - 否则如果设置了
$TERM_PROGRAM→ CLI 模式(检测到终端模拟器)。 - 否则默认为 Desktop 模式。
模式特定的图像投放:
- Desktop:
text → Read <abs_path> → text。内联渲染。 - CLI:
Bash <SKILL_DIR>/scripts/show.sh <abs_image_path>。脚本短暂打开图像(约 3 秒,可通过CLAUDE_BRAINROT_SHOW_SECONDS配置),然后通过qlmanage(macOS)/feh(Linux)自动关闭。它在后台运行,因此你的回复立即继续。
PostToolUse 钩子同时监听 Read 和 Bash——因此无论你是 Read 图像(Desktop)还是使用图像路径调用 show.sh(CLI),钩子都会提取路径并自动触发配对声音。永远不要手动将 afplay 与图像投放配对。
声音配对钩子如何工作
位于 <SKILL_DIR>/scripts/play-paired-sound.sh 的钩子脚本通过 stdin 接收 Read 工具输入的 JSON,并:
- 如果路径不在任何
.claude/skills/claude-brainrot/images/下则退出。 - 从 basename 解析图像的 slug,在
catalogue.json中查找。 - 选择优先级:
silent: true→ 退出,无声音。lock_sound→ 使用该声音。preferred_sounds→ 80% 从其中选取,20% 标签重叠。- 否则 → 从标签重叠图像标签的非锁定、非独立声音中随机选取。
- 在后台播放选中的声音(分离,跨平台)。
此技能 frontmatter 中的钩子命令解析为 ${CLAUDE_PROJECT_DIR}/.claude/skills/claude-brainrot/scripts/play-paired-sound.sh——动态适应 Claude Code 运行的任何项目,只要技能安装在 <project>/.claude/skills/claude-brainrot/。






