Communityライティング&編集github.com

robcsaszar/crucible

Claude Code向けの並列エージェントコードベース監査スキルです。自身の発見結果を敵対的に検証してから報告します。

crucible とは?

Crucibleは、Claude Code上で動作する高度なコードベース監査スキルです。複数のエージェントが並列に動作し、発見事項を敵対的に検証・修正した上で、具体的な実装計画とコード変更を生成します。主な機能として、対象ドメインの網羅的な探索(Reconフェーズ)、各発見事項に対する独立した敵対的レビュー(Adversarial Reviewフェーズ)、優先順位付けとグループ化(Plan Synthesisフェーズ)、さらにP1/P2の重要発見事項の独立検証(Independent Verificationフェーズ)を備えています。すべての成果物はオーケストレーター(あなた)がファイルに書き込み、エージェントは結果をテキストで返すルールを徹底することで、クロスフェーズの状態一貫性を保証します。最終的には検証済みのSPECに基づき、実装スキルを呼び出してプルリクエストを作成するまでをカバーします。

対応✓Claude Code~Codex CLI~Cursor
npx skills add robcsaszar/crucible

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

crucible は何をしますか?

並列ドメイン探索 → 敵対的検証 → 計画 → 検証 → SPEC → 実装 → PR。

ファイル所有権ルール

サブエージェントはファイルを書き込みません。 結果はテキストとして返します。オーケストレーター(あなた)がすべての成果物を書き込みます。ファイルはフェーズ間の引き継ぎ手段であり、サブエージェントのメモリはその役割を果たしません。

セットアップ

呼び出しから以下を解析します。

  • ドメイン(必須) — 監査対象のユーザー向け領域(例: player、curator)
  • スコープヒント(オプション) — ドメイン内の焦点を絞る範囲(例: lobby SSE、role selection)

出力ディレクトリを決定: .crucible/run-<N>/(Nは未使用の最小整数)

事前実行チェック: .crucible/ スキャンして既存の実行ディレクトリを確認。各 findings.json を読み取り、確認済みのIDをスキップリストとしてフェーズ1のエージェントに渡します。既知の修正済み問題を再発見せず、ギャップに集中します。

今回の実行で書き込まれるファイル(すべてオーケストレーターが作成):

ファイルフェーズ役割
codebase-map.md1下流の全エージェントにそのまま注入されるコンテキスト
recon-<domain>.json1ドメインごとの生の発見事項
findings.json1→2→4統合された発見事項。各フェーズで判定が追加される
PLAN.md3優先順位付けされた修正計画
SPEC.md5発見事項ごとの変更前/変更後のコードとテストケース

フェーズ1 — 探索 (Recon)

エージェントを起動する前に、references/recon-phase.md を必ず読んでください。

宣言されたドメインごとに1つの調査エージェントを、すべて並列に起動します。各エージェントにコードベースパス、ドメイン名、スコープヒント(あれば)、既知のスキップIDを渡します。

エージェントはJSONテキストを返します。エージェントが散文を返した場合は、assets/findings-schema.json の正確なスキーマ形状で1回だけ再プロンプトします。再度失敗した場合は、空の recon-<domain>.json([])を書き込み、codebase-map.md に失敗を記録します。続行します — 1つのドメインの失敗は回復可能であり、実行を中止しないでください。

有効な応答を収集した後:

  1. エージェント応答ごとに recon-<domain>.json を書き込む
  2. codebase-map.md を統合 — 主要なファイルパス、ドメイン境界、共有モジュール、規約
  3. すべてのドメインの発見事項を findings.json にマージする

完了条件: すべてのドメインに recon-<domain>.json が存在し、codebase-map.md と findings.json が書き込まれていること。フェーズ2までは references/adversarial-phase.md をロードしないでください。

フェーズ2 — 敵対的レビュー (Adversarial Review)

エージェントを起動する前に、references/adversarial-phase.md を必ず読んでください。

発見事項ごとに1つの汎用エージェントを起動します(同じドメインの発見事項はまとめてバッチ処理)。各エージェントは発見事項のJSONと codebase-map.md を受け取ります — 探索エージェントの推論プロセスは渡しません。独立性の境界が品質のゲートです。

エージェントはコード証拠とともに CONFIRMED / REJECTED / DOWNGRADED を返します。各判定を findings.json の該当エントリに追加します。node scripts/validate-findings.cjs findings.json を実行し、スキーマエラーを修正してからフェーズ3に進みます。

バリデーター自体が実行できない場合 — node がPATHにない、スクリプトまたはそのスキーマが欠落している、使用法エラー、または検証開始前のなんらかの失敗(Failed to load schema、Failed to parse JSON) — これは合格ではありません。⚠ findings unvalidated — validator unavailable: <reason> を発見事項出力とSPEC引き継ぎの先頭に記載し、続行します。スキーマ却下はその逆であり、常にブロックします。発見事項を修正し、再実行し、却下されたまま進めないでください。現時点では両方とも終了コード 1 を返すため、終了コードではなくエラーテキストを読み取ってください。

完了条件: すべての発見事項に adversarial_verdict フィールドが存在すること。スキーマ検証が合格すること。この時点以降、references/recon-phase.md を再ロードしないでください。

フェーズ3 — 計画統合 (Plan Synthesis)

発見事項ゼロチェック: 統合前に findings.json 内の確認済み + 格下げエントリをカウントします。ゼロの場合、.crucible/run-<N>/REPORT.md に「敵対的レビュー後、実行可能な発見事項はありませんでした」という1行だけを書き込みます。停止します — PRは作成しません。

findings.json の確認済み + 格下げ発見事項を PLAN.md に統合:

  • P1 (重大/高): 壊れたコアフロー、データ損失、永続的な切断
  • P2 (中): ユーザーに見えるエラー、リカバリパスの欠落
  • P3 (低): 洗練不足、ドキュメントのずれ、コピー問題

根本原因を共有する発見事項をグループ化 — 1つの修正で複数を排除できる場合があります。グループ化する場合、グループ内で最も高い重大度がグループの優先度を設定します。グループ化された発見事項に競合する修正アプローチがある場合は分割します — 根本原因の共有は修正の共有を意味しません。依存関係が存在する場合は修正順序を宣言します。却下された発見事項は完全に除外されます。

完了条件: PLAN.md が書き込まれていること。すべての確認済み発見事項が正確に1回出現すること。

フェーズ4 — 独立検証 (Independent Verification)

P1 + P2 の発見事項ごとに1つの調査エージェントを、すべて並列に起動します。各エージェントには「あなたはこの発見事項を書きませんでした。すべての事実主張を現在のソースコードに対して検証してください。」と伝えます。

各エージェントは以下をチェック: ファイルがパスに存在するか、行番号が記述されたコードと一致するか、スコープ名が正しいか、記述されたパターンが実際に出現するか。VERIFIED / CORRECTED [field: wrong → right] / REJECTED [reason] を返します。

すべての修正を PLAN.md と findings.json に適用します。スキーマ検証を再度実行します。PLAN.md と findings.json は一致している必要があります — 成果物間の不一致は許されません。

完了条件: すべてのP1+P2発見事項が検証済み。すべての修正が適用済み。スキーマが合格すること。

フェーズ5 — SPEC

確認済み発見事項ごとに1つのセクション(P1 → P2 → P3 の順)を含む SPEC.md を書き込みます:

  • 正確なファイルパス + 行範囲(検証済み)
  • 変更前のコード(疑似コードではなく実際のソース)
  • 変更後のコード(具体的な修正)
  • テストケース: テストが検証すべき動作ごとに1文

node scripts/validate-findings.cjs findings.json 最終チェックを実行します。

完了条件: すべてのPLAN.mdエントリにSPECセクションが存在すること。検証が合格すること。

フェーズ6 — 引き継ぎ (Handoff)

  1. ユーザー向けの動作を変更する発見事項についてフロードキュメント(docs/flows/)を更新する
  2. SPEC.md を指定して implement スキルを呼び出す
  3. PRを作成する — これは人間がループに入るゲートです。中間承認は要求しません

PR本文: PLAN.md へのリンク、重大度別の発見事項数、SPEC.md へのリンク、更新されたフロードキュメントのリスト。

禁止事項 (NEVER)

  • サブエージェントにファイルを書かせてはいけない 代わりに: エージェントに内容をテキストで返させ、自分でファイルを書き込んでください。 理由: クロスフェーズの状態はファイルに存在します。エージェントが直接書き込むと、オーケストレーターは正規のコピーを失い、フェーズ4の修正後に成果物を調整できなくなります。

  • 敵対的エージェントに探索エージェントの推論連鎖を与えてはいけない 代わりに: 構造化された発見事項(JSON)と codebase-map.md のみを渡してください。 理由: 探索エージェントのロジックを見ると、敵対的エージェントが同じ前提に固定されます — 独立性の境界が誤検知を排除するのです。

  • スキーマ検証に失敗したままフェーズ2を越えて進めてはいけない 代わりに: 計画を統合する前に findings.json の失敗フィールドを修正してください。 理由: 不正な発見事項に基づいて構築されたPLANは、間違ったファイルパスと行番号を持つSPECを生成し、implementスキルが使用できなくなります。

  • P1/P2の発見事項に verification: "pending" があるまま SPEC.md を書いてはいけない 代わりに: node scripts/validate-findings.cjs findings.json --pre-spec を実行し、すべての失敗を解決してからフェーズ5に進んでください。 理由: --pre-spec ガードはバリデータースクリプトに存在しますが、呼び出されなければ見えません — この呼び出しをスキップしたエージェントは、未検証のファイルパスでSPECを作成し、間違った行番号をimplementに静かに渡すことになります。

関連スキル