cross-review-project
À propos
Cette compétence permet à deux instances Claude Code de réaliser des revues de code structurées et réciproques via un courtier MCP dédié. Elle garantit la qualité des revues en appliquant les lois d'échelle QSG qui exigent un nombre minimal de retours et une progression par phases. Utilisez-la pour des revues de code rigoureuses et fondées sur des preuves entre projets, avec des contrôles de qualité automatisés.
Installation rapide
Claude Code
Recommandé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-projectCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
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 仮説ファミリー)
Dépôt GitHub
Compétences associées
qmd
Développementqmd est un outil CLI de recherche et d'indexation locale qui permet aux développeurs d'indexer et de rechercher dans des fichiers locaux en utilisant une recherche hybride combinant BM25, des embeddings vectoriels et du reranking. Il prend en charge à la fois une utilisation en ligne de commande et un mode MCP (Model Context Protocol) pour l'intégration avec Claude. L'outil utilise Ollama pour les embeddings et stocke les index localement, ce qui le rend idéal pour rechercher dans de la documentation ou des bases de code directement depuis le terminal.
subagent-driven-development
DéveloppementCette compétence exécute des plans de mise en œuvre en déployant un nouveau sous-agent pour chaque tâche indépendante, avec une revue de code entre les tâches. Elle permet une itération rapide tout en maintenant des contrôles de qualité grâce à ce processus de revue. Utilisez-la lorsque vous travaillez sur des tâches principalement indépendantes au sein d'une même session pour assurer une progression continue avec des vérifications de qualité intégrées.
mcporter
DéveloppementLa compétence mcporter permet aux développeurs de gérer et d'appeler des serveurs Model Context Protocol (MCP) directement depuis Claude. Elle fournit des commandes pour lister les serveurs disponibles, appeler leurs outils avec des arguments, et gérer l'authentification ainsi que le cycle de vie du démon. Utilisez cette compétence pour intégrer et tester les fonctionnalités des serveurs MCP dans votre flux de travail de développement.
adk-deployment-specialist
DéveloppementCette compétence déploie et orchestre des agents Vertex AI ADK en utilisant le protocole A2A, gérant la découverte d'AgentCard, la soumission de tâches, et prenant en charge des outils tels que le bac à sable d'exécution de code et la banque de mémoire. Elle permet de construire des systèmes multi-agents avec des modèles d'orchestration séquentiels, parallèles ou en boucle en Python, Java ou Go. Utilisez-la lorsqu'on vous demande de déployer des agents ADK ou d'orchestrer des flux de travail d'agents sur Google Cloud.
