reflect について
reflect は、会話から再利用可能な学びを抽出し、スキルの編集案に振り分けるエージェントスキルです。「reflect」または「/reflect」で呼び出すユーザー向けで、トランスクリプトのプライバシー保護と編集前の承認を求めます。
主な機能
- 01現在のセッションのトランスクリプト検索
- 023つの視点による並列レビュー
- 03所見の統合と構造チェック
- 04スキル編集前の承認
- 05範囲と種類に応じた編集の振り分け
活用シーン
- 01完了した会話から再利用可能な学びを抽出
- 02既存スキルの編集案をレビュー
- 03devexのバックログ項目を整理
MCP 対応
参照されたチケット、チャット、オブザーバビリティのトレースを調べるため、レビュー担当者と統合担当者にMCPアクセスを求めます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ michael-denyer/ pstack-claude --skill reflectインストール後、Claude Code で/reflectを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/divergent-reviewer.mdjudgment-reviewer.mdsynthesizer.mdtooling-reviewer.mdscripts/claude-project-dir.mjsfind-transcript.mjs詳細
振り返り
Codex では、このスキルに従う前に、スキルごとの注記も含めてプラットフォームマッピングを読んでください。
GitHub Copilot では、このスキルに従う前に、スキルごとの注記も含めてプラットフォームマッピングを読んでください。
Muse では、このスキルに従う前に、スキルごとの注記も含めてプラットフォームマッピングを読んでください。
現在の会話から、今後も役立つ学びを掘り起こし、スキルの編集に反映します。
ユーザーが「reflect」または「/reflect」と言ったときに呼び出します。会話が些細なもの、話題から外れているもの、または親が正しく従った既存のスキルですでに扱われている場合はスキップします。一度きりのことは学びではありません。
1. アクティブなトランスクリプトを探す
作業を並行して始める前に、この会話のトランスクリプトを Claude Code のプロジェクトごとのトランスクリプトディレクトリ ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/projects/<encoded-cwd>/ で探してください。${CLAUDE_CONFIG_DIR:-$HOME/.claude}/projects/ 全体を対象に glob を使ってはいけません。これはワークスペースの境界を越えて、無関係なプロジェクトのプライベートな会話を読み込むことになります。
インストール済みプラグイン内の skills/reflect/scripts/find-transcript.mjs にある検索スクリプトを、projects ディレクトリと会話冒頭のユーザープロンプトの一部を指定して実行します。隣にある claude-project-dir.mjs は、シェルがどこに移動していても、このセッションの projects ディレクトリを出力します。
dir=$(node <plugin>/skills/reflect/scripts/claude-project-dir.mjs) && node <plugin>/skills/reflect/scripts/find-transcript.mjs "$dir" "<opening prompt fragment>"
このスクリプトは3つのレイアウト(フラットな <id>.jsonl、ネストされた <id>/<id>.jsonl、サブエージェントの <parent>/subagents/<child>.jsonl)に対応し、新しい順に調べ、冒頭の入力済みプロンプトに指定した一部が含まれる最初のパスを出力します。スキャンを手作業で再実装してはいけません。トランスクリプトの1行目はセッションメタデータであり、メッセージではありません。また、セッションが /clear または ! シェルコマンドで始まる場合、そのコマンドのラッパーと出力がプロンプトより先に user レコードとして記録されます。さらに、ファイルのサイズは数メガバイトにもなるため、検索スクリプトは各候補をストリーミングし、最初の入力済み user レコードで読み込みを止めます。終了コードが1の場合は、セッションの簡潔な要約を作成し、代わりにそれを渡してください。要約には、ユーザーのプロンプトと訂正、ツールの呼び出しとその結果、変更されたファイルが、発生順にそれぞれ1行で列挙されます。診断、判定、原因は記載されません。レビュアーが評価するのはセッションであり、あなたの結論ではありません。
2. 3人のレビュアーを並行して起動する
1つのメッセージで、subagent_type: "general-purpose" を指定した Agent 呼び出しを3回行います。レビュアーは、トランスクリプトで言及されているチケット、チャットスレッド、可観測性トレースを調べるために MCP アクセスが必要です。そのため、MCP アクセスを維持できる subagent_type を選んでください。プロンプトではファイルへの書き込みを禁止します。編集は親が適用します。
各レビュアーと統合担当者は、pstack-models.md のロール行と Models のデフォルトを参照します。model には、その行の値を設定します。シートまたは行がない場合は、デフォルトを設定します。値が auto または inherit-parent の場合は、model を未設定のままにします。Agent ツールが指定されたスラッグを受け付けない場合は、デフォルトを使い、その旨を伝えてください。デフォルトも受け付けられない場合は、エラーメッセージにある同じファミリーの中から最も近い有効なスラッグを使ってください。各サブエージェントの推論レベルは、poteto-mode スキルの「Subagents」セクションに従って作業に合わせて選択してください。
| 視点 | ロール行 | プロンプトテンプレート |
|---|---|---|
| 判断 | reflect judgment, divergent, synthesizer | references/judgment-reviewer.md |
| ツール | reflect tooling | references/tooling-reviewer.md |
| 発散 | reflect judgment, divergent, synthesizer | references/divergent-reviewer.md |
各テンプレートは、指定箇所のトランスクリプトパスまたは要約を置き換えて、そのまま渡してください。トランスクリプトのパス以外は何も追加してはいけません。長いトランスクリプトに関する注記も追加しないでください。レビュアーは Agent の応答本文に所見を返します。
3. 統合
subagent_type: "general-purpose" と、reflect judgment, divergent, synthesizer の行にある model(Models のデフォルト)を指定して、Agent を1回呼び出します。MCP を通じて引用をスポット検証するため、MCP アクセスを維持する subagent_type を選んでください。references/synthesizer.md をそのまま渡し、各レビュー担当者の出力全体を、指定箇所にインラインで挿入します。Accepted / Rejected / Backlog のリストが返されます。
4. 構造による強制の確認
リンタールール、スクリプト、メタデータフラグ、またはランタイムチェックで、より確実に強制できる Accepted 項目は Backlog に移します。encode-lessons-in-structure の原則を扱うスキルを参照してください。
5. 適用
統合担当者が出力した Accepted / Rejected / Backlog の全項目を提示し、Accepted の編集を適用する前に、明示的な承認を待ちます。ユーザーは適用する項目を選び、振り分けを変更することもできます。スキルの変更は、組織内の今後すべてのエージェントに影響します。自動適用しないでください。
Backlog の各項目は、待たずにチームの devex またはバックログトラッカーに登録します。承認を待つのは Accepted リストのみです。
plugins/cache/ 配下のスキルは編集しないでください。承認前に、編集先として .claude/skills/<skill>/ または ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/<skill>/ を提示します。承認後、スキルフォルダーをそこにコピーし、コピーを編集します。PR の作成やプッシュはしないでください。
承認された各項目について、指定された Routing に正確に従ってください。
- 既存スキルへの軽微な編集(箇条書き1行の追加、文の簡潔化、古い事実の修正):親エージェントが直接行います。
- 既存スキルへの実質的な編集(新しいセクション、新しいパターン表、約10行を超える変更):plugin-dev:skill-development スキルに引き継ぎ、draft / test / iterate のループを実行します。
tune description: <skill path>(スキルは存在するが、必要な場面で起動しなかった場合):plugin-dev:skill-developmentに引き継ぎ、description-optimization のループを実行します。new skill via plugin-dev:skill-development: <kebab-name>:作成をplugin-dev:skill-developmentに引き継ぎます。場当たり的に構成を考えないでください。
環境に SKILL.md バリデーターが用意されている場合は、完了を宣言する前に、変更したすべてのスキルに対して実行してください。
6. ユーザーへの要約
前置きなしで簡潔に列挙します。
- 適用した編集:
<skill path>。変更内容を各1行で記載します。 - 新規作成したスキル:
<skill path>。各1行で記載します(まれなケース)。 - devex トラッカーに登録したバックログ:
<issue title>(<tags>)。各1行で記載します。 - 却下した項目:却下した所見ごとに1行で、統合担当者による理由を記載します。
Models
ロールのデフォルト値は plugins/pstack/models.json から取得されます(編集後に tools/generate.mjs を再実行)。pstack-models.md の上書きシートに対応するロールの行がある場合、実行時には各デフォルト値が上書きされます。/setup-pstack は上書きシートを書き込み、実行環境ごとのパスを表示します。
- reflect tooling:
opus - reflect judgment, divergent, synthesizer:
opus
Reasoning effort
上書きシートのロール値では、モデルの後に推論レベルを指定できます。例:opus @xhigh。Claude Code で使用できるレベルは low、medium、high、xhigh、max です。適用可能なレベルはモデルによって異なります。@ を付けない値には、シートの default effort 行にあるレベルまたは session が適用され、その行がない場合は session になります。session は推論レベルを指定しないため、通常どおりディスパッチされます。モデル名を読み取る前にサフィックスを取り除いてください。inherit-parent または auto の場合は、どのレベルでも model を省略し、モデル名の場合は model として渡します。レベルはディスパッチの effort フィールドに渡し、通常使用する subagent_type はそのままにします。Claude Code の Agent 呼び出しでは effort、Codex の spawn_agent では reasoning_effort です。Muse の Workflow 子エージェントでは effort を指定し、subagent_spawn ディスパッチではセッションの effort が維持されます。