cross-review-project
Acerca de
Esta habilidad permite que dos instancias de Claude Code realicen revisiones de código estructuradas y recíprocas a través de un intermediario MCP dedicado. Garantiza la calidad de la revisión mediante las leyes de escalado QSG, que exigen un número mínimo de elementos de retroalimentación y una progresión por fases. Úsela para revisiones de código rigurosas y basadas en evidencia entre proyectos, con controles de calidad automatizados.
Instalación rápida
Claude Code
Recomendadonpx 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-projectCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
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 仮説ファミリー)
Repositorio GitHub
Habilidades relacionadas
qmd
Desarrolloqmd es una herramienta CLI de búsqueda e indexación local que permite a los desarrolladores indexar y buscar en archivos locales mediante búsqueda híbrida que combina BM25, embeddings vectoriales y reranking. Es compatible tanto con uso desde la línea de comandos como con modo MCP (Model Context Protocol) para integración con Claude. La herramienta utiliza Ollama para los embeddings y almacena los índices localmente, lo que la hace ideal para buscar documentación o bases de código directamente desde la terminal.
subagent-driven-development
DesarrolloEsta habilidad ejecuta planes de implementación asignando un nuevo subagente para cada tarea independiente, con revisión de código entre tareas. Permite una iteración rápida mientras mantiene controles de calidad a través de este proceso de revisión. Úsala cuando trabajes en tareas mayormente independientes dentro de la misma sesión para garantizar un progreso continuo con verificaciones de calidad integradas.
mcporter
DesarrolloLa habilidad mcporter permite a los desarrolladores gestionar y llamar servidores del Protocolo de Contexto de Modelo (MCP) directamente desde Claude. Proporciona comandos para listar servidores disponibles, llamar a sus herramientas con argumentos, y manejar la autenticación y el ciclo de vida del daemon. Utiliza esta habilidad para integrar y probar la funcionalidad de servidores MCP en tu flujo de trabajo de desarrollo.
adk-deployment-specialist
DesarrolloEsta habilidad despliega y orquesta agentes Vertex AI ADK utilizando el protocolo A2A, gestionando el descubrimiento de AgentCard, el envío de tareas y soportando herramientas como el Sandbox de Ejecución de Código y el Banco de Memoria. Permite construir sistemas multiagente con patrones de orquestación secuencial, paralela o en bucle en Python, Java o Go. Úsela cuando se le solicite desplegar agentes ADK u orquestar flujos de trabajo de agentes en Google Cloud.
