| name | dreaming |
| description | 夜間ドリーミング。当日のClaude Codeセッションから学びを抽出する日次モード、設定ファイル群の重複・不整合・陳腐化を整理する週次モード、翌朝の採用反映モードを持つ。設定ファイルは直接編集せず提案レポートのみ生成。「ドリーミング」「日次ドリーミング」「ドリーミング採用」等で起動 |
| user-invocable | true |
| model | opus |
ドリーミング(夜間の学び抽出・設定コンソリデーション)
Claude Managed Agents の Dreaming(セッションとメモリを定期的に見直し、パターンを抽出してメモリをキュレーションする非同期プロセス)を、Claude Code のローカル環境で再現する運用。AGENTS.md の「学習ループ」(その場での同期的な恒久化)の補完として、複数セッションを横断しないと見えないパターンを夜間バッチで拾う。
大原則
- 提案のみ・直接編集禁止。設定ファイル(CLAUDE.md / AGENTS.md / rules / skills / memory)を夜間タスクが直接書き換えることは絶対にしない。差分案をレポートに書くまでが仕事。反映はユーザーが翌朝レビューして「採用」と言ってから(=確定操作は人間が握る半自動化)。
- レポート出力先は
~/.claude/dreaming/(なければ mkdir -p で作成)。ファイル名は日次が YYYY-MM-DD-HHMM-daily.md(実行時刻を含める)、週次が YYYY-MM-DD-weekly.md(いずれもJST)。日次を1日に複数回走らせる運用では、同じ日付の既存レポートが上書きで消えないよう、必ず時刻付きファイル名にする。
- 学びがない日は無理に絞り出さない。ノイズルールの蓄積は設定の劣化そのもの。該当なしなら「該当なし」1行のレポートでよい(実行された事実だけ残す)。
- セッションログの生データを親コンテキストへ流さない。1ファイルずつサブエージェント(general-purpose)へ委譲し、フォーマット固定の要約だけ受け取る(AGENTS.md の大規模出力ルール準拠)。サブエージェントは原則逐次起動。
日次ドリーミング(引数: 日次 / daily)
その日1日のセッションから学びを抽出する。
- 対象収集:
find ~/.claude/projects -maxdepth 2 -name '*.jsonl' -mtime -1 で過去24時間に動いたセッションログを列挙する(memory/ 配下は対象外)。件数とサイズを把握し、巨大なものから順にサブエージェントへ。
- 各ログの要約抽出: サブエージェントに次を固定フォーマットで抽出させる(1セッションあたり最大5件・各200字以内):
- ユーザーからの訂正・不満・既出指摘(「違う」「前も言った」「なんで勝手に」等)
- 想定外のエラー・ハマった罠と、その解決策
- 明示された好み・成功パターン(「この設計で正解」等)
- 音声入力の誤変換パターン
- 既存設定との突合: 抽出した学び候補を
grep -rn で ~/.claude/AGENTS.md・~/.claude/rules/・~/.claude/skills/・該当プロジェクトの CLAUDE.md / memory と突合し、既に恒久化済みのものは捨てる。セッション内で既に恒久化された形跡(設定ファイルへのコミット)があるものも捨てる。1日に複数回走らせる運用では、同じ日付の ~/.claude/dreaming/*-daily.md 既存レポートも先に読み、そこで既に提案済みの学びは繰り返さない(前回レポート以降に新しく現れた学びだけを拾う。実質、直近の実行から今までの増分を見る)。
- レポート生成: 残った学び候補ごとに次を記載する:
- 学びの内容(1〜2文)
- 根拠(どのプロジェクトのどのセッションで何が起きたか)
- 提案反映先(AGENTS.md の保存先ルーティング表に従う。両ツール可読の場所を優先)
- 具体的な差分案(追記文面そのもの)
- 末尾に「採用するには、このセッションまたは新しいセッションで『ドリーミング採用』と依頼してください」と書く。
週次コンソリデーション(引数: 週次 / weekly)
設定ファイル群そのものを見直し、痩せさせる。増やす提案ではなく整理の提案が主目的(設定の肥大化はそのままコンテキスト消費になる)。
対象: ~/.claude/CLAUDE.md、~/.claude/AGENTS.md、~/.claude/rules/*.md、~/.claude/skills/*/SKILL.md、~/.claude/projects/*/memory/
観点:
- 重複: 同じルール・ナレッジが複数ファイルに書かれている(
grep -rn で横断確認してから断定する)
- 矛盾: 新旧ルールの食い違い。日付の新しい方・実態に合う方を残す案を示す
- 陳腐化: 削除済みのツール・ファイル・MCP への参照、期限切れの時限記述(「7/21以降削除可」等)、解決済みの暫定運用
- 肥大化: 1ファイルが長すぎて分割・スキル化した方がよいもの
- memory の整理: 重複統合・古い事実の修正・インデックス(MEMORY.md)と実ファイルの不一致
- 常時ロード量の推移: 無条件ロードされる行数(
AGENTS.md+CLAUDE.md+paths: 無しの rules)を実測してレポート冒頭に記録し、前週と比較する。公式目標は1ファイル200行未満( https://code.claude.com/docs/en/memory )。Codex 側は ~/.codex/AGENTS.md のバイト数も併記する(project_doc_max_bytes の予算内か)。しきい値: ~/.claude/AGENTS.md は450行、~/.codex/AGENTS.md は project_doc_max_bytes(262,144バイト)の7割=約183KB。超えていたらレポート冒頭で警告し、作業種別が限られる内容の kb- スキルへの移設を提案する*
- 両ツールの整合:
~/.claude/skills/ と ~/.codex/skills/(および skills-archive)の退避状態のずれ、dotfiles ミラーとの drift
- 主戦場への偏在: いちばん作業時間の長いリポジトリの
AGENTS.md / CLAUDE.md に書かれたルールのうち、そのリポジトリ固有の事実(ディレクトリ構成・手続き・案件)ではないものを洗い出す。作業時間が偏るぶん、全リポジトリで効くべき学びがそこにだけ溜まり、他のリポジトリから見えなくなる。該当したらユーザースコープ(~/.claude/AGENTS.md または共有スキル)への移設を提案する。逆向き(ユーザースコープに書かれたリポジトリ固有の話)も同時に見る
成果はレポート1本: 統合・削除・移動の提案リスト(優先度順)と、上位項目の具体的な差分案。ここでも直接編集はしない。
採用フロー(引数: 採用 / apply)
翌朝、ユーザーのレビューを受けて反映する。
~/.claude/dreaming/ の最新レポートを読み、項目を番号付きで提示して採否を確認する(「全部採用」と言われた場合も、設定を書き換える差分は適用前に一覧で見せる)。
- 採用項目を該当ファイルへ反映する。反映後は AGENTS.md の伝播ルールに従い、ユーザースコープなら設定同期のスキル、プロジェクトスコープなら git push まで1セットで行う。
- レポート末尾に反映結果(採用・見送り・反映先)を追記する。
起動方法
自動実行は launchd に戻した。 日次が毎晩22:40、週次が日曜21:10。手動で走らせるときは
dreaming-routine 日次 / dreaming-routine 週次(実体は dotfiles/bin/dreaming-routine)。
対話セッションで「ドリーミング」と言われたときは、従来どおりその場でスキルを実行してよい。
⚠️ クラウド側の scheduled-tasks へ戻さない。 ユーザーは Claude Code の対話セッションで
Team と Max を切り替えるが、scheduled-tasks の登録本体はクラウドにあってアカウントに紐づくため、
切り替えた瞬間に登録ごと見失う(~/.claude.json の tengu_kairos_cron / routineFiredWatermark が
その経路。ローカルの ~/.claude/scheduled-tasks/<名前>/SKILL.md はプロンプトの置き場だけで、
cron 式も次回実行時刻もローカルには無い)。2026-08-19 に自動実行が外されたのはこれが理由。
いまの構成は、この紐づけを断つために2点を分けてある。片方だけ真似ても意味がないので、
手を入れるときは両方セットで考える。
- 認証の分離:
CLAUDE_CONFIG_DIR=~/.claude-routine を使い、ルーティン専用のログイン世界を持つ
(Max で固定)。Keychain も設定ディレクトリごとに別エントリ(Claude Code-credentials-<hash>)が
作られるので、本体側のログインとは干渉しない。rules / skills / CLAUDE.md / AGENTS.md は
本体へのシンボリックリンクなので、ルールとスキルの実体は1つのまま
- 起動の分離: launchd(
<reverse-domain>.dreaming-daily / -weekly)。JST でそのまま時刻指定でき、
クラウド cron の太平洋時間換算が要らない
⚠️ ~/.claude/dreaming/ へは直接書けない(回収方式で回避済み)
~/.claude/ 配下は Claude Code の保護対象で、--allowedTools でも --permission-mode acceptEdits
でも書き込みを許可できない。
非対話セッションでは許可ダイアログも出せないので、そのままではレポートが出力されないまま終わる。
そのため dreaming-routine は、いったん work/tmp/dreaming/ へ書かせ、シェル側で
~/.claude/dreaming/ へ mv して回収する。プロンプトへ保存先を明示する行が入っているので、
スクリプトを書き換えるときにこの補足を消さない。対話セッションから走らせる場合は
この制約を受けない(その場で許可できるため)ので、レポート先は従来どおり ~/.claude/dreaming/ でよい。
- レポートの出力先・ファイル名の規則そのものは変えていない(
~/.claude/dreaming/YYYY-MM-DD-HHMM-daily.md)
- ⚠️ memory は必ず絶対パス
~/.claude/projects/**/memory/ で読む。 ルーティン世界の
~/.claude-routine/projects/ はリンクではなく実体(中身は空)なので、相対的に探すと「memory が無い」と
誤判定する。そして、ルーティンから memory を書かない——書いてもルーティン世界に落ちるだけで、
通常セッションからは永久に読まれない。memory への反映は採用フローで対話セッションが行う
- ログは
~/Library/Logs/dreaming-daily.log / dreaming-weekly.log
- 未ログインのときはスクリプトが理由をログへ残して止まる(無音で失敗しない)
- scheduled-tasks(
~/.claude/scheduled-tasks/)は設定同期の対象外。中身は launchd へ移した
(クラウド側の定期タスクはアカウントに紐づくため、プランを切り替えると発火しなくなる)。
- このスキルは Claude Code 固有(セッションログの場所に依存)のため、Codex 側へはミラーしない。