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. 05CLIまたはデスクトップでの画像表示

活用シーン

  1. 01会話に合ったタイミングでミームを表示
  2. 02雰囲気に合わせた音声の再生
  3. 03CLIやデスクトップのチャットで画像を表示

インストール

コマンドをコピーしてターミナルで実行します。

$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 Brainrot

ここぞという瞬間に、ぴったりのミームを出します。自律動作専用 — Claude が出すタイミングを決め、ユーザーが決めることはありません。 スラッグ引数も、手動での呼び出しもありません。

コンテキストに読み込まれるスキルの内容の冒頭には、Base directory for this skill: <SKILL_DIR> と表示されます。すべてのパス解決で、これをベースディレクトリとして使用します。

カタログは <SKILL_DIR>/catalogue.json にあり、images と sounds の2つのプールがあります。各エントリーには 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 フィールドには、人が読める形で再生のきっかけが説明されています。内容を読み、会話の状況に合うものを選んでから、タグで候補を絞り込んでください。

選択アルゴリズム

画像+サウンドの組み合わせ(通常の発火):

  1. 会話の流れに合ったムードタグを選びます。
  2. tags にそのムードが含まれる images を絞り込みます。各候補の vibe を確認し、最適なものを選びます(同程度に合う場合はランダムに選びます)。
  3. 画像のみを Read します。 フックがサウンドを自動的に選びます。
    • silent: true の場合 → サウンドなしで画像のみです。
    • lock_sound が設定されている場合 → そのサウンドが再生されます。
    • preferred_sounds が設定されている場合 → 80% の確率でそこから選び、20% の確率でタグの重複から選びます。
    • それ以外の場合 → タグが重複する、ロックされておらず、単独再生用でもないサウンドからランダムに選びます。
  4. クールダウン(あなたの役割): このセッションで最後に発火した画像のスラッグを 3 つ記録します。同じものを繰り返さないでください。すべてがクールダウン中の場合は、関連する別のムードから選びます。

サウンドのみの発火:

  1. ムードタグを選びます。
  2. tags にそのムードが含まれ、かつ locked != true の sounds を絞り込みます(standalone: true の単独再生用サウンドは、特に適しています。この用途向けに作られています)。
  3. vibe を確認して選びます。Bash afplay <absolute sound path> & を実行します。バックグラウンド再生には & が必須です。
  4. クールダウンの考え方は同じです(最後の 3 つのサウンドのスラッグ)。

バリエーションが大切です。fahhh / bruh ばかり再び選ばないでください。ローテーションしてください。

ミームの出力方法

画像(自動でサウンドが組み合わされます):

  • 短いテキストを 1 行書き、その後に Read <absolute image path> を出力し、さらに短いテキストを 1 行書きます。フックがサウンドを再生します。以上です。
  • 1 回の応答で複数の画像を使っても構いません。テキスト→Read→テキストのパターンを繰り返してください。間にテキストを入れることで UI のツール呼び出しのグループ化が解除され、各画像がインラインで表示されます。

サウンドのみ:

  • Bash afplay <absolute sound path> & を出力します。バックグラウンド再生には & が必須です。ほかのツール呼び出しと自由に組み合わせられますが、視覚的には表示されません。

バリエーションのルール: 1 回の応答内で同じ画像またはサウンドのスラッグを再利用しないでください。ローテーションしてください。

同じ発火で Read <image> と Bash afplay <sound> を決して組み合わせないでください。組み合わせたサウンドはフックが自動的に処理します。(Bash afplay は、画像を使わない別個のサウンドのみの発火に使います。)

重要なレンダリングルール

Claude Desktop のチャット UI では、Read ツール呼び出しが同じ UI ブロック内のほかのツール呼び出しと視覚的にグループ化されていない限り、画像がインライン表示されます。グループ化されると、画像は「コマンドを実行し、ファイルを読み込みました」というドロップダウンに折りたたまれます。

テストで確認済みの、Read をグループ化せずに表示する確実な方法は、その前後に短いテキストを 1 行ずつ挟むことです。区切りテキストの例:「どうぞ:」「ご覧ください:」「👻」「スケルトンの時間です。」テキストを挟むことで UI のバッチ処理ロジックが区切られ、画像がインライン表示されます。

スキルの呼び出し自体がツール呼び出しとして数えられるため、Read だけを出力するとスキル呼び出しとまとめられ、折りたたまれます。必ずテキスト→Read→テキストのパターンを使ってください。

1 回の応答で複数の画像を使う場合: パターンを繰り返します(text → Read → text → Read → text)。各 Read はテキストで区切られるため、それぞれ独立してインライン表示されます。テキストを挟まずに Read → Read → Read と連続させないでください。まとめて処理されます。

実行環境の検出

UserPromptSubmit フックが CLI モードと Desktop モードを自動検出し、FIRE リマインダーで使用する画像の出力パターンを知らせます。モードはリマインダーのヘッダー((mode: cli) または (mode: desktop))に記載されています。この情報を信頼してください。

検出ロジック(remind-fire.sh 内):

  1. CLAUDE_BRAINROT_MODE=cli|desktop 環境変数による手動指定。
  2. それ以外の場合、$TERM_PROGRAM が設定されていれば CLI モード(ターミナルエミュレーターを検出)。
  3. それ以外の場合は、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 にあるフックスクリプトは、Read ツールの入力を JSON として標準入力から受け取り、次の処理を行います。

  1. パスがいずれかの .claude/skills/claude-brainrot/images/ 配下にない場合は終了します。
  2. ベース名から画像のスラッグを特定し、catalogue.json で検索します。
  3. 選択の優先順位:
    • silent: true → サウンドを再生せずに終了します。
    • lock_sound → 指定されたサウンドを使用します。
    • preferred_sounds → 80%の確率でその中から選び、20%の確率でタグの重複から選びます。
    • それ以外 → 画像のタグとタグが重複する、ロック済みでも単独再生専用でもないサウンドからランダムに選びます。
  4. 選択したサウンドをバックグラウンドで再生します(プロセスを切り離して、クロスプラットフォームで動作)。

このスキルのフロントマターにあるフックコマンドは ${CLAUDE_PROJECT_DIR}/.claude/skills/claude-brainrot/scripts/play-paired-sound.sh に解決されます。スキルが <project>/.claude/skills/claude-brainrot/ にインストールされていれば、Claude Code が実行されているプロジェクトに応じて動的に変わります。

コメント