cross-review-project
について
このスキルは、専用のMCPブローカーを介して2つのClaude Codeインスタンスが構造化された相互コードレビューを実施できるようにします。最小限のフィードバック項目と段階的な進行を要求するQSGスケーリング則を通じて、レビュー品質を保証します。自動化された品質管理を備えた、厳密でエビデンスに基づくクロスプロジェクトコードレビューにご利用ください。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/cross-review-projectこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Cross-Review Project
2 つの Claude Code インスタンスが、cross-review-mcp ブローカーを介した構造化された成果物交換を通じて互いのプロジェクトをレビューする。ブローカーは Quantized Simplex Gossip (QSG) スケーリング則を強制する — レビューバンドルは選択領域(Γ_h ≈ 1.67)に留まるため最低 5 つの所見を含まなければならず、これにより浅いコンセンサスが合意として通るのを防ぐ。
使用タイミング
- 2 つのプロジェクトがアーキテクチャ上の関心を共有し、互いに学べるとき
- 単独のレビュアーが見るものを超えた独立コードレビューが欲しいとき
- クロスポリネーション(相互受粉)が目的: あるプロジェクトに存在し他方に欠けているパターンを見つけること
- 受け入れ/拒否/議論の判定を持つ、構造化された証拠裏付けのレビューが必要なとき
入力
- 必須: 2 つの Claude Code インスタンスからアクセス可能な 2 つのプロジェクトパス
- 必須:
cross-review-mcpブローカーが起動し、両インスタンスで MCP サーバーとして設定されている - 任意: 焦点領域 — 優先する特定のディレクトリ、パターン、関心事
- 任意: エージェント ID — 各インスタンスの識別子(既定: プロジェクトディレクトリ名)
手順
ステップ1: 前提条件を検証する
ブローカーが起動し両インスタンスから到達可能であることを確認する。
- ブローカーが MCP サーバーとして設定されているか確認:
claude mcp list | grep cross-review get_statusを呼んでブローカーが応答的で古いエージェントが登録されていないことを検証cross-review://protocolのプロトコルリソースを読む — レビュー次元と QSG 制約を記述した markdown ドキュメント
期待結果: ブローカーが get_status に空のエージェントリストで応答する。プロトコルリソースが markdown として読める。
失敗時: ブローカーが設定されていなければ追加する: claude mcp add cross-review-mcp -- npx cross-review-mcp。前セッションからの古いエージェントがあれば、進む前に各々について deregister を呼ぶ。
ステップ2: 登録する
このエージェントをブローカーに登録する。
- 次の引数で
registerを呼ぶ:agentId: 短く一意な識別子(例: プロジェクトディレクトリ名)project: プロジェクト名capabilities:["review", "suggest"]
get_statusを呼んで登録を検証 — エージェントが phase"registered"で現れるはず- ピアエージェントの登録を待つ: ピアのエージェント ID と phase
"registered"でwait_for_phaseを呼ぶ
期待結果: 両エージェントがブローカーに登録された。get_status は phase "registered" の 2 エージェントを示す。
失敗時: register が "already registered" で失敗するなら、エージェント ID は前セッションから取られている。先に deregister を呼んでから再登録する。
ステップ3: ブリーフィングフェーズ
自分のコードベースを読み、構造化されたブリーフィングをピアに送る。
- 体系的に読む:
- エントリポイント(メインファイル、index、CLI コマンド)
- 依存グラフ(package.json、DESCRIPTION、go.mod)
- アーキテクチャパターン(ディレクトリ構造、モジュール境界)
- 既知の問題(TODO コメント、オープンな issue、技術的負債)
- テストカバレッジ(テストディレクトリ、CI 設定)
- ピアがあなたのコードベースを効率よく辿るために使える、構造化された要約
Briefing成果物を構成する - 次の引数で
send_taskを呼ぶ:from: 自分のエージェント IDto: ピアのエージェント IDtype:"briefing"payload: JSON エンコードされたブリーフィング
- phase
"briefing"でsignal_phaseを呼ぶ
期待結果: ブリーフィングが送られフェーズが信号された。ブローカーはレビューに進む前にブリーフィング送信を強制する。
失敗時: send_task がブリーフィングを拒否する場合、from フィールドが登録済みエージェント ID と一致するか確認する。自分宛は拒否される。
ステップ4: レビューフェーズ
ピアのブリーフィングを待ち、彼らのコードをレビューして所見を送る。
- ピアの ID と phase
"briefing"でwait_for_phaseを呼ぶ poll_tasksを呼んでピアのブリーフィングを取得する- 受け取ったタスク ID で
ack_tasksを呼ぶ — これは必須(peek-then-ack パターン) - ブリーフィングに導かれてピアの実際のソースコードを読む
- 6 カテゴリにわたる所見を作成する:
pattern_transfer— ピアが採用しうる、自分のプロジェクトにあるパターンmissing_practice— ピアに欠けている実践(テスト、検証、エラー処理)inconsistency— ピアのコードベース内の内部矛盾simplification— 削減可能な不要な複雑性bug_risk— 潜在的ランタイム失敗またはエッジケースdocumentation_gap— 欠落または誤解を招くドキュメント
- 各所見は次を含まねばならない:
id: 一意な識別子(例:"F-001")category: 上記 6 カテゴリのいずれかtargetFile: ピアのプロジェクト内のパスdescription: 何を見つけたかevidence: なぜこれが有効な所見か(コード参照、パターン)sourceAnalog(推奨): 自分のプロジェクトでそのパターンを示す等価物 — 真のクロスポリネーションの唯一の機構
- 最低 5 つの所見 をバンドルする(QSG 制約: m ≥ 5 が Γ_h ≈ 1.67 を選択領域に保つ)
- type
"review_bundle"と JSON エンコードされた所見配列でsend_taskを呼ぶ - phase
"review"でsignal_phaseを呼ぶ
期待結果: レビューバンドルがブローカーに受け入れられる。所見が 5 未満なら拒否される。
失敗時: バンドルが所見不足で拒否されたなら、より深くレビューする。制約は浅いレビューが支配するのを防ぐために存在する。本当に 5 つの問題を見つけられないなら、このプロジェクトペアにクロスレビューが正しい道具か再考する。
ステップ5: 対話フェーズ
自分のプロジェクトに関する所見を受け取り、証拠裏付けの判定で応答する。
- ピアの ID と phase
"review"でwait_for_phaseを呼ぶ poll_tasksを呼んで自分のプロジェクトに関する所見を取得する- 受け取ったタスク ID で
ack_tasksを呼ぶ - 各所見について
FindingResponseを作る:findingId: 所見の ID と一致verdict:"accept"(有効、対応する)、"reject"(無効、反証付き)、"discuss"(明確化が必要)evidence: なぜ受け入れる/拒否するか — 空であってはならないcounterEvidence(任意): 所見と矛盾する具体的なコード参照
- type
"response"ですべての応答をsend_taskで送る - phase
"dialogue"でsignal_phaseを呼ぶ
注: "discuss" 判定はプロトコルでゲートされていない — 自動サブ交換ではなく、手動フォローアップ用のフラグとして扱う。
期待結果: すべての所見に証拠付き判定で応答した。空応答はブローカーに拒否される。
失敗時: 所見について意見が形成できない場合、追加で必要な文脈を説明する証拠付き "discuss" を既定とする。
ステップ6: 統合フェーズ
受け入れた所見と計画した行動をまとめる統合成果物を作る。
- ピアの ID と phase
"dialogue"でwait_for_phaseを呼ぶ - 残るタスクをポールして承認する
Synthesis成果物をコンパイル:- 計画した行動付きの受け入れ所見(何を変えるか、なぜか)
- 拒否所見と理由(将来のレビューのために推論を保存)
- type
"synthesis"と JSON エンコードされた統合でsend_taskを呼ぶ - phase
"synthesis"でsignal_phaseを呼ぶ - 任意: 受け入れた所見について GitHub issue を作成
- phase
"complete"でsignal_phaseを呼ぶ - クリーンアップのため
deregisterを呼ぶ
期待結果: 両エージェントが "complete" に到達。ブローカーは complete に進むのに最低 2 つの登録エージェントを要求する。
失敗時: ピアが既に登録解除されていても、ローカルで完了できる。受け取った所見から統合をコンパイルする。
バリデーション
- 両エージェントが登録され
"complete"フェーズに到達した - レビュー開始前にブリーフィングが交換された(フェーズ強制)
- レビューバンドルが各々最低 5 つの所見を含んだ
- すべての所見が証拠付き判定(accept/reject/discuss)を受けた
- 各
poll_tasksの後でack_tasksが呼ばれた - 受け入れ所見が行動にマップされた統合が作成された
- 完了後にエージェントが登録解除された
よくある落とし穴
- 5 未満の所見: ブローカーは m < 5 のバンドルを拒否する。これは恣意的ではない — N=2 エージェントと 6 カテゴリでは、m < 5 は Γ_h を、コンセンサスがノイズと区別不能になる臨界境界以下に置く。より深くレビューする; 5 つの所見が本当に見つからないなら、プロジェクトはクロスレビューの恩恵を受けないかもしれない。
ack_tasksを忘れる: ブローカーは peek-then-ack 配信を使う。タスクは承認まで queue に残る。ack を忘れると次のポールで重複処理を引き起こす。fromパラメータを忘れる:send_taskは自分のエージェント ID と一致する明示的なfromフィールドを要求する。自分宛は拒否される。- 同モデルの認識相関: 2 つの Claude インスタンスは訓練バイアスを共有する。時間順序はレビュー中に互いの出力を読まないことを保証するが、事前確率は相関する。真の認識的独立性のためには、異なるモデルファミリーをインスタンス間で使う。
sourceAnalogをスキップ:sourceAnalogフィールドは任意だが、真のクロスポリネーションの唯一の機構 — 推奨しているパターンの 自分の 実装を示す。ソース類似物が存在するなら常に埋める。discussをブロッキングとして扱う: プロトコルには未解決議論の解決をcompleteの条件とするものはない。discuss判定はセッション後の手動フォローアップ用のフラグとして扱う。- テレメトリをレビューしない: ブローカーはすべてのイベントを JSONL にログする。セッション後、ログをレビューして QSG 仮定を検証する — α を経験的に推定(
α ≈ 1 - reject_rate)し、カテゴリごとの受け入れ率を確認する。
関連スキル
scaffold-mcp-server— ブローカー自体を構築または拡張するimplement-a2a-server— ブローカーが引き継ぐ A2A プロトコルパターンreview-codebase— 単独エージェントレビュー(このスキルはそれをクロスエージェント構造化交換へ拡張する)build-consensus— スワームコンセンサスパターン(QSG が理論基盤)configure-mcp-server— Claude Code でブローカーを MCP サーバーとして設定するunleash-the-agents— ブローカー自体を解析するために使える(バトルテスト済: 40 エージェント、10 仮説ファミリー)
GitHub リポジトリ
関連スキル
qmd
開発qmdは、BM25、ベクトル埋め込み、およびリランキングを組み合わせたハイブリッド検索を用いて、ローカルファイルのインデックス作成と検索を可能にするローカル検索・インデックス作成CLIツールです。コマンドラインでの使用と、Claudeとの統合のためのMCP(Model Context Protocol)モードの両方をサポートしています。このツールは埋め込みにOllamaを使用し、インデックスをローカルに保存するため、ターミナルから直接ドキュメントやコードベースを検索するのに最適です。
subagent-driven-development
開発このスキルは、各独立したタスクに対して新規のサブエージェントを起動し、タスク間でコードレビューを実施しながら実装計画を実行します。レビュープロセスを通じて品質基準を維持しつつ、迅速な反復を可能にします。同一セッション内で主に独立したタスクに取り組む際に本スキルをご利用いただくことで、組み込まれた品質チェックを伴う継続的な進捗を確保できます。
mcporter
開発mcporterスキルは、開発者がClaudeから直接Model Context Protocol(MCP)サーバーを管理および呼び出せるようにします。このスキルは、利用可能なサーバーの一覧表示、引数を指定したツールの呼び出し、認証およびデーモンのライフサイクル管理を行うコマンドを提供します。開発ワークフローにおいてMCPサーバーの機能を統合およびテストする際に、このスキルをご利用ください。
adk-deployment-specialist
開発このスキルは、A2Aプロトコルを使用してVertex AI ADKエージェントをデプロイおよびオーケストレーションし、AgentCardの発見、タスク送信、およびコード実行サンドボックスやメモリバンクなどのサポートツールを管理します。Python、Java、またはGoで、順次、並列、またはループのオーケストレーションパターンを用いたマルチエージェントシステムの構築を可能にします。Google Cloud上でADKエージェントのデプロイやエージェントワークフローのオーケストレーションを求められた際にご利用ください。
