ruminate について
ruminateは、ClaudeとCodexの過去の会話から記録価値のある知見を抽出するエージェントスキルで、reflectやmeditateを補完します。会話を並列分析し、頻度と影響で絞り込んで重複を除き、候補を確認用に提示します。
主な機能
- 01ClaudeとCodexの会話の抽出
- 02会話バッチの並列分析
- 03ユーザーの好み・技術知見・作業パターンの特定
- 04頻度と影響に基づく知見の選別
- 05重複を除いた候補の提示
活用シーン
- 01過去の会話から脳の記録を補う
- 02繰り返し現れるユーザーの好みを把握する
- 03コードベース固有の知見や注意点を記録する
- 04脳に含まれる古い情報を特定して修正する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ poteto/ noodle --skill ruminateインストール後、Claude Code で/ruminateを入力して読み込まれたか確認します。
同梱ファイルscripts/extract-conversations.py
詳細
Ruminate
これまで記録されていなかった、知る価値のある知識を会話履歴から掘り起こします。reflect(現在のセッション)やmeditate(脳の保管庫の監査)を補完し、両プロバイダーにまたがる過去の会話アーカイブ全体を調べます。
プロセス
Tasksを使って進捗を追跡します。 以下の各ステップに対してタスクを作成し(TaskCreate)、開始時にin_progress、完了時にcompletedに設定します(TaskUpdate)。各ステップの後にTaskListを確認します。
1. 脳を読む
脳のスナップショットを作成します:sh .claude/skills/meditate/scripts/snapshot.sh brain/ /tmp/brain-snapshot-ruminate.md。各分析エージェントにスナップショットのパスを渡します。これにより、ruminateオーケストレーターのコンテキストに脳全体を読み込まずに済みます。
2. 会話を特定する
両方のプロバイダーのルートを見つけます。
- Claudeのプロジェクトディレクトリ:
~/.claude/projects/-<cwd-with-dashes-replacing-slashes>/ - Codexのセッションルート:
~/.codex/sessions/
たとえば、/Users/lauren/code/noodleはClaudeでは
~/.claude/projects/-Users-lauren-code-noodle/に対応し、Codexでは~/.codex/sessions/を使用します。
3. 会話を抽出する
抽出スクリプトを実行して、両方のJSONL形式を読みやすいテキストに解析し、バッチに分割します。
SKILL_DIR="$(dirname "$(realpath "$0")")/.." # adjust path as needed
CLAUDE_DIR="$HOME/.claude/projects/-<project-slug>"
CODEX_DIR="$HOME/.codex/sessions"
OUT_DIR="/tmp/ruminate-$(date +%s)"
python3 "$SKILL_DIR/scripts/extract-conversations.py" "$OUT_DIR" \
--claude-dir "$CLAUDE_DIR" \
--codex-dir "$CODEX_DIR" \
--cwd "$PWD" \
--batches N
抽出した会話の合計数(Claude + Codex)に基づいてNを選びます。会話20件あたり約1バッチ、最小2、最大10とします。
4. 分析チームを起動する
N人のエージェント(各バッチに1人、ステップ3のバッチ数に合わせる)でエージェントチーム(TeamCreate)を作成します。それぞれsubagent_type: general-purposeおよびmodel: opusを指定します。N人すべてを並列で実行します。
各エージェントへのプロンプトには、以下を含めます。
- バッチのマニフェストパス(
$OUT_DIR/batches/batch_N.txt) - 出力パス(
$OUT_DIR/findings_N.md) - 脳にすでに記録されているトピックの一覧(ステップ1でまとめたもの)。エージェントが既知の知識を除外できるようにします
- 抽出された各ファイルにはプロバイダー/ソースのメタデータヘッダー(
[PROVIDER]、[CWD]、[SOURCE_FILE])が含まれており、証拠のコンテキストとして使用するよう注意を促すリマインダー - 各会話から以下を抽出する指示:
- ユーザーによる訂正:ユーザーがアシスタントの進め方、コード、または理解を訂正した箇所
- 繰り返し現れる好み:ユーザーが明示的に求めたこと、または繰り返し異議を唱えたこと
- 技術的な学び:コードベース固有の知識、注意点、発見したパターン
- 作業パターン:ユーザーが好む作業の進め方
- 不満:問題点、無駄な作業、うまくいかなかったこと
- 求められたスキル:ユーザーが必要だと表明した機能
エージェントは、構造化された調査結果を出力ファイルに書き込みます。
5. 統合する
すべてのエージェントが完了したら、調査結果ファイルをすべて読みます。既存の脳の内容と照合し、バッチ間で重複を除去します。
頻度と影響度で絞り込みます。 調査結果の大半は追加する価値がありません。提示する前に、以下の基準で絞り込みます。
- 頻度:複数の会話で話題になったか、ユーザーが同じ間違いを繰り返し訂正していたか。一度きりの訂正は、通常、脳に記録する価値はありません。脳には個別の出来事ではなく、パターンを記録します。
- 事実の正確性:脳に記録された内容が、現在誤っていないか。(例:ルールが無効になったのに、脳には有効と記載されている。)これは頻度にかかわらず、常に修正する価値があります。
- 影響度:これを記録しなければ、今後のセッションで同じ無駄な作業が繰り返されるか。一度5分かかった注意点は影響度が低く、3回にわたる訂正を招いたパターンは影響度が高いです。
積極的に除外します。 ノイズを含む9件より、重要度の高い3件を提示するほうが適切です。一度しか起きておらず、事実の訂正でもない調査結果は除外します。
6. 提示して適用する
調査結果を、finding、frequency/evidence、proposed action の列を含む表にまとめてユーザーに提示します。各調査結果が単発のものか、繰り返し見られる傾向なのかを正直に示します。何を追加する価値があるかは、ユーザーに判断してもらいます。
スキル固有の学びは該当するスキルに反映します。 特定のスキルの進め方、プロンプト、エッジケース、トラブルシューティングに関する調査結果があるか確認します。該当する場合は、スキルの SKILL.md または references/ を直接更新します。既存の内容との重複や矛盾を避けるため、まずスキルを読みます。
ユーザーが承認した変更のみ適用します。brain の記述規約に従います。
- 1 ファイルにつき 1 つのトピックとし、ディレクトリに整理します
[[wikilinks]]を使って関連するノートをつなぎます- すべての変更後に
brain/index.mdを更新します - 新しいノートの作成より、既存のノートの更新を優先します
7. クリーンアップする
一時的な抽出ディレクトリを削除します。
rm -rf "$OUT_DIR"
ガイドライン
- 厳選します。 会話の大半は、シグナルが弱いものです。自動タスク、些細なやり取り、すでに記録されている知識などです。本当に新しく、影響のある内容だけを取り上げます。
- 既存の内容を優先して更新します。 調査結果が既存の脳の原則における特殊ケースである場合は、新しいノートを作成せず、既存のノートを更新します。
- ユーザーの言葉を引用します。 調査結果がユーザーによる直接の修正に基づく場合は、ユーザーの言葉とソースファイルのパスを含めます。何が重要かを示す最も強いシグナルとなるためです。
- 分析が完了したらエージェントを終了します。 アイドル状態のまま残さないでください。