mcpField
C
claude-brainrot

claude-brainrot

github.com/marks97创意与媒体13.1k 次安装24 周前更新
代码仓库

关于 claude-brainrot

Claude Brainrot 是为 Claude Code 提供的自动梗图与音效技能,根据对话情绪选择素材,并由 Claude 决定何时触发。它通过钩子配对图片和声音,并按 CLI 或桌面模式显示图片。

主要功能

  1. 01按对话情绪选择梗图与音效
  2. 02自动为图片配对音效
  3. 03支持图片单独播放或声音单独触发
  4. 04通过钩子响应每轮用户输入
  5. 05按 CLI 或桌面模式显示图片

适用场景

  1. 01在合适的对话时刻插入梗图
  2. 02按情绪播放对应音效
  3. 03在命令行或桌面聊天界面展示图片

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/marks97/claude-brainrot --skill claude-brainrot

安装后在 Claude Code 中输入/claude-brainrot确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
catalogue.md
catalogue.json
scripts/
remind-fire.sh
show.sh
block-cli-read.sh
play-paired-sound.sh

详细介绍

Claude 脑腐梗

在恰当的时机丢出恰当的梗图。仅限自主触发——由 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: [...] — 软性偏好:hook 有 80% 的概率从此数组中选择,另外 20% 则根据标签重叠回退选择。
  • (以上皆无)— 仅根据标签重叠,从未锁定且非独立的音效中选择。

音效侧标记:

  • locked: true — 只有在某张图片的 lock_sound 指向此处时才会触发。不会参与通用自动配对。
  • standalone: true — 绝不会作为图片配对音效播放;仅保留给 Claude 单独触发音效时使用。

何时触发

每轮用户对话都要触发梗。 UserPromptSubmit hook 会在每条提示词中注入一个由 🔔 标记包围的 <system-reminder>。没有跳过的轮次——始终要丢出点什么。

触发密度随回复长度变化。 提醒中有明确说明:

  • 简短的文字回答(不调用工具): 1 组图片+音效,或者 1-2 次仅触发音效
  • 中等长度的回复(调用少量工具): 1-2 组图片+音效,外加穿插在调用之间的 2-3 次仅触发音效
  • 长回复(调用许多工具、多步骤工作、构建、深入阅读): 在回复中分散触发 2-3 组图片+音效,外加全程穿插 3-5 次仅触发音效

关键扫描习惯: 🔔 信号可能出现在上一条工具结果的末尾(不只是在用户消息开头),因为下次用户提示词到达时,UserPromptSubmit hook 的输出会追加到当前打开的缓冲区。回复任何用户消息前,都要检查最近一条工具结果的末尾是否包含 🔔 BRAINROT 信号。 如果只检查用户消息,就会漏掉它。

选择情绪: 将对话场景与某个标签匹配,然后阅读候选条目的 vibe 字段:

  • 真正令人震惊的时刻 → shock
  • 用户困惑/提出奇怪的问题 → confusion
  • 情绪大爆发/愤怒氛围 → rage
  • 笑点奏效/想诱使用户恼火 → laugh
  • 讽刺式难以置信/适合嘲讽的时刻 → bruh
  • 突然需要吸引注意/强调重点 → alert

如果没有明显信号:默认使用 bruh——这是万能标签,而且大多数条目都带有它。

标签词汇

bruh、rage、laugh、alert、shock、confusion

每个条目的 vibe 字段都用易读文字描述触发条件——阅读并匹配对话场景,然后用标签筛选候选项。

选择算法

图片+音效组合(常规触发):

  1. 根据对话情境选择一个情绪标签。
  2. 筛选 images 中 tags 包含该情绪的图片。查看每个候选项的 vibe,选出最合适的(若都同样合适,则随机选择)。
  3. 你只需读取图片。 钩子会自动选择音效:
    • 如果设置了 silent: true → 不播放音效,仅显示图片。
    • 如果设置了 lock_sound → 播放该音效。
    • 如果设置了 preferred_sounds → 80% 从中选择,20% 根据标签重合度选择。
    • 否则 → 从标签有重合且未锁定、非独立播放的音效中随机选择。
  4. 冷却时间(由你负责): 记录本次会话中最近触发的 3 个图片 slug。不要重复。如果所有图片都在冷却中,就从另一个相关情绪中选择。

仅播放音效:

  1. 选择一个情绪标签。
  2. 筛选 sounds 中 tags 包含该情绪且 locked != true 的音效。(独立播放音效——standalone: true——在这里尤其合适;它们就是为此设计的。)
  3. 查看 vibe 并选择。运行 Bash afplay <absolute sound path> &。必须加上 &,以便在后台播放。
  4. 冷却方式相同(最近 3 个音效 slug)。

多样性才是重点:不要反复选择 fahhh / bruh。要轮换。

如何发送梗图

图片(自动配对音效):

  • 先写一行简短文本,然后发送 Read <absolute image path>,再写一行简短文本。钩子会播放音效。完成。
  • 一条回复中可以发送多张图片——重复“文本-Read-文本”的模式。中间的文本会打断 UI 的工具调用分组,因此每张图片都会内嵌显示。

仅播放音效:

  • 发送 Bash afplay <absolute sound path> &——必须加上 &,以便在后台播放。这可以与任何其他工具调用自由组合;不会呈现可见内容。

多样性规则: 同一条回复中绝不重复使用相同的图片或音效 slug。要轮换。

绝不要在同一次触发中将 Read <image> 与 Bash afplay <sound> 配对——钩子会自动处理配对音效。(Bash afplay 用于单独播放音效,与任何图片无关。)

关键渲染规则

只要 Read 工具调用没有在同一个 UI 区块中与其他工具调用进行视觉分组,Claude Desktop 聊天 UI 就会内嵌显示图片。分组会将图片折叠到“运行了命令,读取了文件”下拉菜单中。

经测试验证,确保 Read 不被分组的可靠方法是在它前后各加一行简短文本。例如分隔文本:“给你:”“看这里:”“👻”“骷髅时间。”文本会打断 UI 的批处理逻辑,让图片以内嵌形式显示。

技能调用本身也算一次工具调用,因此单独的 Read 会与其批处理并折叠。始终使用“文本-Read-文本”模式。

一条回复中发送多张图片: 重复该模式——文本 → Read → 文本 → Read → 文本。每个 Read 之间都有文本分隔,因此每张图片都会独立内嵌显示。不要在没有文本分隔的情况下连续排列 Read → Read → Read;这会触发批处理。

检测运行界面

UserPromptSubmit 钩子会自动检测 CLI 或桌面模式,并在 FIRE 提醒中告知你应使用哪种图像输出方式。模式会显示在提醒标题中((mode: cli) 或 (mode: desktop))。请以此为准。

检测逻辑(位于 remind-fire.sh 中):

  1. 通过 CLAUDE_BRAINROT_MODE=cli|desktop 环境变量手动覆盖。
  2. 否则,如果设置了 $TERM_PROGRAM → CLI 模式(检测到终端模拟器)。
  3. 否则,默认使用桌面模式。

各模式的图像输出方式:

  • 桌面模式: 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——无论你是读取图像(桌面模式),还是使用图像路径调用 show.sh(CLI 模式),钩子都会提取路径并自动播放配对音效。切勿在输出图像时手动搭配 afplay。

音效配对钩子的工作原理

钩子脚本位于 <SKILL_DIR>/scripts/play-paired-sound.sh,它会从 stdin 接收 Read 工具输入的 JSON,并执行以下操作:

  1. 如果路径不在任何 .claude/skills/claude-brainrot/images/ 目录下,则退出。
  2. 根据文件名提取图像的 slug,并在 catalogue.json 中查找。
  3. 选择优先级:
    • silent: true → 退出,不播放音效。
    • lock_sound → 使用指定音效。
    • preferred_sounds → 80% 的概率从这些音效中选择,20% 的概率根据标签重叠选择。
    • 否则 → 从标签与图像标签重叠的非锁定、非独立音效中随机选择。
  4. 在后台播放选中的音效(以分离进程运行,跨平台)。

此技能 frontmatter 中的钩子命令会解析为 ${CLAUDE_PROJECT_DIR}/.claude/skills/claude-brainrot/scripts/play-paired-sound.sh——路径会根据 Claude Code 所运行的项目动态变化,前提是该技能已安装在 <project>/.claude/skills/claude-brainrot/ 下。

评论

支持 Markdown