このスキルの仕組み
2つのモードがあり、サブジェクト(下記ルーティング表)に基づいて自動的にルーティングされます。
- モードA — リポジトリ/概念/ドキュメント(低コストパス): 調査 → クローン(リポジトリの場合) → 探索 → 統合 → 出力。緩やかな並列エージェントで十分です。
- モードB — ライブWeb製品/競合/データプロダクト/アルゴリズム/ランドスケープ(本格パス): スカウト → 確認 → ワークフローで調整された徹底調査 → 実ブラウザでキャプチャ → 検証済みコードへのリバースエンジニアリング → 統合。
@references/competitor-teardown.mdを読み、それに従ってください。
サブジェクトタイプ別ルーティング
| サブジェクト | シグナル | モード | 主な処理 |
|---|---|---|---|
| GitHubリポジトリ | github.com | A | クローン + 探索エージェント |
| 概念/技術 | URLなし | A | リサーチエージェント |
| ドキュメント/静的サイト | URL、情報目的 | A | リサーチ + WebFetch |
| ライブ製品/アプリ/SaaS/競合 | URLが製品; 「競合/分解/比較/どうやってるか」 | B | ブラウザ + ワークフロー + サブジェクト別スキーマ |
| 計算機/見積もり/予測/価格/ランキング | 解読すべき計算式/アルゴリズム | B | ライブプローブグリッド → 実行可能なリファレンス実装 → 検証 |
| ランドスケープ全体 | 「他のもの全部見つけて」 | B | 名前空間発見 → 対象を分解 |
判定基準: URLが製品でありドキュメントも存在する場合は、デフォルトでBとします。スカウトパスは低コストであり、分解すべきものがなければAにダウングレードします。
実行ルール
- 適切なツールを規模に応じて: モードA = 並列Task/Agent呼び出し。モードB = ワークフローツール(パイプライン、構造化出力スキーマ、再開)を、サブジェクトが3つ以上、またはマルチフェーズ作業の場合に使用します。
- 事前確認してから本番: モードBは低コストなスカウトパス + 確認ゲート(スコープ + 調査範囲 + ブラウザ)を、ユーザーがすでに「本格的に/深掘りして/全部」と言っていない限り、高コストな調査の前に実行します。
- 計算機/アルゴリズムは実行可能で検証済みのコードにリバースエンジニアリングし、競合の主張ではなく信頼できる正解とベンチマークします。
- ビジュアル重視: 主要な概念ごとに図や表を作成します。
- 二重出力: 会話内にエグゼクティブサマリーとファイル一覧を表示し、完全なドキュメント一式を
~/.claude/explanations/<日付>_<スラッグ>/に保存します。 - 耐障害性: 重いモードBの調査はバックグラウンドワークフローとして実行。アーティファクトをインクリメンタルに永続化し、中断時に再開(
resumeFromRunId)します。 - クリーンアップ: 完了時にクローンしたリポジトリや保存ファイルを削除するか確認します。
モードBの調査範囲(重要 — ライブプローブ前に必読)
競合調査は公開サーフェス上で合法的かつ通常の行為です。完全なルールは@references/competitor-teardown.mdにあります。不変条件は以下の通りです。
- 許可: 公開ページ/アセット、公開OpenAPI/
/docs、公開JSバンドル、公開エンドポイントへの適度なポライトグリッド(約15〜40リクエスト、低レート)で数式を導出、ヘッダーフィンガープリント、WHOIS/DNS。 - 禁止: CAPTCHA/ボット対策の突破、認証の迂回、データセットの一括収集(サンプルのみ許可)、負荷テスト、管理/変更/破壊的エンドポイントの呼び出し(ドキュメントには記載しても呼び出さない)。露出を観察し、決して悪用しない。ユーザーの実際のデータを競合のフォームに送信しない。不明な場合は実行せず、その理由を説明する。
インテークゲート
コンテキストなしハンドラ
$ARGUMENTS が空の場合: → AskUserQuestion を使用:
- header: "説明"
- question: "何を説明しましょうか?"
- options:
- "GitHubリポジトリ" - GitHubからコードベースを分析
- "Webサイトまたはドキュメント" - Webサイト、ドキュメント、APIを理解
- "競合 / ライブ製品 / ランドスケープ" - ライブ製品を分解、計算機をリバースエンジニアリング、競合スペース全体をマッピング(モードB)
- "概念またはテクノロジー" - 概念、フレームワーク、ツールを説明
その後、context_analysis(コンテキスト分析)に進みます。
コンテキスト分析
$ARGUMENTS を分析して以下を抽出:
- タイプ: GitHubリポジトリ、Webサイト、概念、その他
- URL/トピック: 説明する具体的な対象
- 暗黙の目標: 使い方を学ぶ?評価する?アーキテクチャを理解する?コントリビュートする?
タイプを自動検出:
github.comを含む → GitHubリポジトリ(モードA)- モードBのシグナル → 「競合」、「分解」、「リバースエンジニアリング」、「vs 私たち」、「どうやってるか」、「他を全て見つける」、または製品/アプリ/計算機であるURL → モードB
httpを含む(情報/ドキュメント用) → Webサイト(モードA)- それ以外 → 概念(モードA)
初期質問
AskUserQuestionを使用して、真に不明な点のみを質問(最大2〜3問):
目標(不明な場合):
- "目標は何ですか?" 以下のオプション:
- "仕組みを理解する" - アーキテクチャ、フロー、実装
- "採用を評価する" - 長所/短所、代替案、自分のユースケースへの適合性
- "使い方を学ぶ" - セットアップ、API、はじめ方
- "コントリビュート方法を学ぶ" - コードベース構造、開発ワークフロー
焦点(広いトピックの場合):
- "特定の焦点はありますか?" 以下のオプション:
- "すべて" - 完全な包括的分析
- "アーキテクチャのみ" - 高レベルの構造とパターン
- "特定の機能" - 特定の側面(指定)
背景(役立つ場合):
- "あなたの技術レベルは?" 以下のオプション:
- "非技術者" - 基本原則からアナロジーを用いて説明
- "技術者だがこの分野は初めて" - 基礎は省略、詳細に焦点
- "専門家" - 深い技術的知識を仮定
判定ゲート
回答後、AskUserQuestionを使用(モードA):
- question: "深掘りを開始してもよろしいですか?"
- options:
- "はい、実行" - マルチフェーズ分析を開始
- "まず質問がある" - 確認したいことがある
- "コンテキストを追加したい" - 詳細を追加したい
モードBはこのゲートをB2(スナップショット+スコープ+調査範囲+実行/深さ/ブラウザ)で上書きします — 両方を尋ねないでください。B2が分解のための唯一の権威あるゲートです。
プロセス
モード選択
<インテークゲート>を実行し、次にサブジェクトタイプテーブルでルーティングします。モードB(ライブ製品/競合/データプロダクト/計算機/ランドスケープ) → @references/competitor-teardown.mdを読み込み、そのスカウト→確認→深掘り→統合フロー(以下は骨子)に従います。モードA(リポジトリ/概念/ドキュメント) → フェーズ1〜7を実行。
モードB — ライブ製品/競合/データプロダクトの分解
完全なプレイブックは references/competitor-teardown.md にあります。骨子:
- B0 事前確認: メモリと
~/.claude/explanations/に過去の分析がないか確認。拡張し、やり直さない。 - B1 スカウト: ターゲットごとに1つの軽量パッシブリコンエージェント(WebFetch + ヘッダー + WebSearch) → 根拠のあるスナップショット + ブラウザが必要なものを特定。
- B2 確認ゲート: スナップショット + スコープ + 調査範囲(
<調査範囲>)を提示。AskUserQuestionで実行/深さ/ブラウザを確認 — ユーザーがすでに「深掘り/本格的に」と言った場合のみスキップ。 - B3 深層調査(ワークフロー): サブジェクトごとに1つの構造化エージェント、すべてがサブジェクト別スキーマ(リファレンス内)を共有。デフォルトで
pipeline()を使用。大きな出力はディスクに分割。 - B4 ブラウザ(Claude-in-Chrome): ロード時ネットワークをキャプチャ、SPAをレンダリング、入力グリッド全体で推定機をライブプローブ、セキュリティヘッダー、ペイウォール/認証コピー — 範囲内で(CAPTCHA/認証バイパス、変更エンドポイント、ユーザーデータ送信なし)。キャプチャはその都度永続化。
- B5 リバースエンジニアリング: すべての計算機 → 実行可能なTypeScriptリファレンス実装 → ライブグリッドに対して検証 → 信頼できる正解とベンチマーク。
- B6 名前空間(「他に何か?」の場合): DNS+curl+検索で候補ドメイン、分類、運営者クラスターの発見、防御的購入ドメインのフラグ、真に異なるYESセットのみを分解。
- B7 統合: ファンアウト統合エージェント →
DETAILED-<スラッグ>.md×N +ESTIMATORS.md+COMPARISON.md(データ整合性+運営者クラスターセクションを含む) +REPLICATION-BLUEPRINT.md+ARCHITECTURE.md+NAMESPACE.md+SOURCES-*.md+SUMMARY.md(エグゼクティブサマリー+ファイル一覧)。その後、フェーズ7の出力/クリーンアップ。
モードA — リポジトリ/概念/ドキュメント
フェーズ1: 並列Web調査(5つのリサーチエージェント)
すべてを1メッセージで起動:
Task(subagent_type="general-purpose", prompt="[トピック]を調査: それは何か?誰が作ったか?いつ?なぜ?")
Task(subagent_type="general-purpose", prompt="[トピック]を調査: 技術スタック、アーキテクチャ、主要技術")
Task(subagent_type="general-purpose", prompt="[トピック]を調査: 記事、レビュー、コミュニティ議論、意見")
Task(subagent_type="general-purpose", prompt="[トピック]を調査: 代替案、比較、使用すべき時と避けるべき時")
Task(subagent_type="general-purpose", prompt="[トピック]を調査: ドキュメント、チュートリアル、はじめ方ガイド")
フェーズ2: リポジトリのクローン(GitHubの場合)
REPO_DIR=~/.claude/explanations/$(date +%Y%m%d_%H%M%S)_$(basename [URL] .git)
git clone [URL] $REPO_DIR
cd $REPO_DIR
フェーズ3: 並列コードベース探索(6つの探索エージェント)
すべてを1メッセージで thoroughness="very thorough" で起動:
Task(subagent_type="Explore", prompt="アーキテクチャ: 全体構造、モジュール、それらの関係")
Task(subagent_type="Explore", prompt="エントリーポイント: メインファイル、CLI、APIエンドポイント、起動方法")
Task(subagent_type="Explore", prompt="コアロジック: 主要アルゴリズム、パターン、抽象化")
Task(subagent_type="Explore", prompt="設定: 設定、環境、拡張ポイント")
Task(subagent_type="Explore", prompt="依存関係: 主要パッケージ、統合、外部サービス")
Task(subagent_type="Explore", prompt="テストと品質: テストパターン、カバレッジ、CI/CD")
フェーズ4: 並列Claude Codeコンテキスト(2〜3の汎用エージェント)
Claude/AI/エージェントに関連する場合:
Task(subagent_type="general-purpose", prompt="これを理解するための関連Claude Codeの概念を説明")
Task(subagent_type="general-purpose", prompt="該当する場合、Claudeツール/SDKと比較")
フェーズ5: 中間チェック(複雑な場合)
調査結果が複雑さを明らかにした場合、AskUserQuestionを使用:
- 「[X]を見つけました。特定の点に焦点を当てましょうか?」
- 発見に基づくオプション
フェーズ6: 統合
すべての調査結果を統合した包括的な説明を作成。構成:
- 導入アナロジー(非技術的な比較)
- 概要(1〜2文)
- アーキテクチャ図(ASCII)
- 仕組み(ステップバイステップ + 図)
- 主要コンポーネント表(名前、目的、動作)
- 特別な点(差別化要因)
- 機能一覧(できること)
- 比較表(代替案との比較)
- 技術詳細(実装詳細)
- 注意点と考慮事項
フェーズ7: 出力
会話内に表示
すべてのビジュアルを含むフォーマット済み説明全体。
ファイルに保存
OUTPUT_DIR=~/.claude/explanations/$(date +%Y%m%d_%H%M%S)_[トピック-スラッグ]
mkdir -p $OUTPUT_DIR
# 保存ファイル:
# $OUTPUT_DIR/SUMMARY.md - クイックリファレンス(30秒版)
# $OUTPUT_DIR/DETAILED.md - 完全分析
# $OUTPUT_DIR/ARCHITECTURE.md - すべての図
# $OUTPUT_DIR/COMPARISON.md - 代替案分析
フォローアップ
表示後、質問する:
- 「もっと深く探りたい側面はありますか?」
- 「説明について質問はありますか?」
- フォローアップを促す
クリーンアップ
AskUserQuestionを使用してクリーンアップ(両方該当する場合は統合):
リポジトリをクローンした場合:
- question: "クローンしたリポジトリを削除しますか?"
- options:
- "はい、削除する" - $REPO_DIR を自動削除
- "いいえ、保持する" - パスを表示: "リポジトリは以下に保持: $REPO_DIR"
「はい」の場合: rm -rf $REPO_DIR
「いいえ」の場合: 手動アクセス用にパスを表示
常に(説明ファイル):
- question: "保存した説明ファイルを削除しますか?"
- options:
- "はい、削除する" - $OUTPUT_DIR を自動削除
- "いいえ、保持する" - パスを表示: "説明ファイルは以下に保存: $OUTPUT_DIR"
「はい」の場合: rm -rf $OUTPUT_DIR
「いいえ」の場合: 手動アクセス用にパスを表示
結合質問(リポジトリとファイルの両方がある場合):
- question: "分析が完了しました。何をクリーンアップしますか?"
- options:
- "リポジトリと説明ファイルの両方を削除"
- "リポジトリのみ削除、説明ファイルは保持"
- "説明ファイルのみ削除、リポジトリは保持"
- "すべて保持"
選択に基づいて削除を実行し、保持したもののパスを表示。
標準図フォーマット
アーキテクチャ:
┌─────────────┐ ┌─────────────┐
│ コンポーネント │────►│ コンポーネント │
└─────────────┘ └─────────────┘
フロー:
開始 → ステップ1 → ステップ2 → 判定?
├─ Yes → パスA
└─ No → パスB
比較表:
| 側面 | オプションA | オプションB | 勝者 |
|------------|------------|------------|------|
| 速度 | 速い | 遅い | A |
コンポーネント分解:
┌──────────────────────────────────────┐
│ システム名 │
├──────────────────────────────────────┤
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │モジュールA│ │モジュールB│ │モジュールC│ │
│ └───┬────┘ └───┬────┘ └───┬────┘ │
│ └──────────┴──────────┘ │
│ 共有レイヤー │
└──────────────────────────────────────┘
成功基準
両モード共通:
- 開始前に明確化の質問/事前確認を実施。正しいモードにルーティングされた。
- 主要な概念ごとにビジュアル図を生成。再現可能な技術的深さを含んだ。
- エグゼクティブサマリーを会話内に表示し、ドキュメントセットをファイルに保存した。
- フォローアップ + クリーンアップを提案し、ユーザーの保持/削除の選択を尊重した。
モードB(ライブ製品/競合/データプロダクト/ランドスケープ)の追加:
- スカウトパス + 確認ゲートを実施(または明示的な「深掘り」を尊重)し、調査範囲を明示した。
- 範囲内に厳密に留まり、CAPTCHA/認証バイパス、一括収集、変更/管理エンドポイントの呼び出し、ユーザーデータの送信を行わなかった。露出を観察し、悪用しなかった。
- サブジェクトが3つ以上またはマルチフェーズの場合、共有サブジェクト別スキーマを持つワークフローツールを使用。アーティファクトを永続化し、中断に耐性(再開可能)を持たせた。
- すべての計算機をライブプローブし、観測された出力に対してN/N検証された実行可能なリファレンス実装を、信頼できる正解とベンチマークして提供した。
- ランドスケープの場合: 完全な名前空間を発見、各々を分類、運営者クラスターを見つけ、防御的購入ドメインをフラグ、真に異なるものだけを分解した。
- 統合にはデータ整合性セクション、運営者クラスター分析、複製設計図を含んだ。