D3エクスプローラー(インタラクティブHTML、著者自身のための) は何をしますか?
<skill-dir>は、このスキル自身のベースディレクトリです。Claude Codeはスキル読み込み時にこのパスを表示します(プラグインとしてインストールした場合:${CLAUDE_PLUGIN_ROOT}/skills/d3-explainer; 手動コピーの場合:~/.claude/skills/d3-explainer)。すべてのコマンドで実際のパスに置き換えてください。<wording-dir>は<skill-dir>/../d3-scientific-wordingを意味し、すべてのD3プラグインが同梱する共有ワーディングスキルです。
研究プロジェクトを、それを書いている人々に説明するための、オフラインで動作する単一HTMLファイルです。すなわち、研究課題は何か、どのギャップを埋めるのか、コアアイデアはどのように機能するか、各導出がどのように行われ、なぜそうなるのか、それらがコードのどこに存在するか、エビデンスが示すこと、そしてまだ未解決のことは何か。インタラクティブな図が直感的な理解をもたらし、テキストはソースに忠実に、その旨を明示します。
読者は著者とその共著者です。 この事実が以下のほとんどすべてを決定します:
- 彼らはその分野を知っています。教科書的な背景説明は、彼らのノートが弱点を示していない限り省略します。
- 彼らは理解したいのであるため、ごまかしより正直さが優先されます。前提条件、論文とコードの不一致、未解決の疑問は独立したセクションで扱い、解釈はそのように明示します。
- 彼らは主張を自身のファイルで検証するため、実質的な主張はすべてそのソースを指し示し、ビルド時にそのポインタが存在することを確認します。
- 詳細であることは構いませんが、網羅的であってはなりません。一部の読者だけが望む深さは、折りたたみブロックに格納します。「すべての詳細」はユーザーが明示的に要求した場合にのみ、そしてその場合もユーザーが指定した部分についてのみ提供します。
すべてのPython実行はuvを介して行います(uv run, uv run --with <pkg>)。pipは使わず、グローバルインストールもしません。
リファレンスファイル(オンデマンドで読み込み)
| ファイル | 読み込むタイミング |
|---|---|
references/scanning.md | フェーズ1: 限られたトークン予算でのリポジトリ読み取り、入力階層、vault / recall / NotebookLM、以前のエクスプローラー |
references/content-design.md | フェーズ2および3: セクションの構成、深さの予算、ギャップと導出の提示方法、正直な棚卸し、エクスプローラーのワーディングに固有のルール(d3-scientific-wording) |
references/components.md | フェーズ3: HTMLの語彙、ソースチップ、ビルドディレクティブ、explainer.toml、D3X JavaScript API |
references/visualization.md | フェーズ2および3: 教えるためのインタラクティブ図のデザイン、パターンカタログ、落とし穴 |
references/review.md | フェーズ4: 2つのレビュアープロンプト、トークンルール、ループ |
assets/example/ | 完成したエクスプローラーが含まれる小さなリポジトリ。assets/example/explainer/sections/*.htmlを各コンポーネントの動作パターンのために一度だけ読んでください。ユーザープロジェクトにコピーしないでください。 |
ステップ0: 一度だけ質問する
ユーザーがすでに言及していない限り、これらを1つのメッセージで質問し、その後は再質問しないでください。
スコープ。 プロジェクト全体、または一部(モデル、導出、パイプライン)? 深さ。
focus(1つのアイデアまたは1つの導出: 1~3セクション、1~2つの図、約5分)、overview(4~6セクション、読了約10~15分)、standard(デフォルト: 7~10セクション、4~8つのインタラクティブ図、1~3つの導出、20~35分)、またはdeep(最大14セクション)。「Xについてdeep」は、standardに加えてXについての1つの深掘りセクションを意味します。 レビュー。light: 自動チェックと自身の数値確認のみ。追加トークンはほとんど不要。single: 1人のレビューエージェントが忠実性と図の両方を担当、1ラウンド、約50~70kトークン。standard: 2人のレビューエージェントが並行して動作(ソースに対する忠実性、図とインタラクション)、1ラウンド、合計約100~150kトークン。レビュアーのコストは主に固定下限であり、プロジェクトのサイズにほとんど依存しないため、推奨は深さに従います: focusはlight、overviewはsingle、standardとdeepは2エージェントレビュー。full: 2人のエージェントがすべてのスコアが9/10になるまでループ、最大3ラウンド、standardの2~3倍のコスト。 ワーディング。ste(デフォルト: ASD-STE100に準拠した簡略化テクニカルイングリッシュ、文あたり最大25語、能動態、単語あたり1つの意味、英語を第二言語とする共著者に最も適切)またはstandard(STE制限なしのグループの科学的ワーディング)。
「quick」「no review」「cheap」「short on tokens」はlightを意味します。「thorough」はfullを意味します。「just this derivation」「only explain X」「keep it short」はfocusを意味します。「plain」「STE」または特に指定がない場合はワーディングste、「normal wording」「paper style」「no STE」はstandardを意味します。特に指定がない場合は深さstandard、およびその深さに推奨されるレビューが適用されます。
誰も答えられない場合(バッチまたはエージェント実行時): デフォルト値を採用し、このスキルが尋ねるであろうすべての点を決定し、各決定をbrief.mdのセクション0に記録して続行します。ブリーフはその後、著者が自分たちのために何が決定されたかを確認できる場所となります。
ワークフロー
他のD3スキルと同様に、各フェーズの境界でタイムスタンプ付きの1行ステータスを出力します: [HH:MM:SS] PHASE: ...
フェーズ1: プロジェクトをマッピングする(低コストで、適切な順序で読む)
uv run <skill-dir>/scripts/scan.py # リポジトリルートから実行; 保存するには --out explainer/scan.md を追加
スキャンは、入力階層(A: コードと論文、B: 論文のみ、C: コードのみ、D: PDFのみ、E: ノートのみ)、オリエンテーションドキュメント、論文と各コードフォルダの最終更新日時(古いCLAUDE.mdや放棄されたアプローチがあればここに現れる)、論文アウトライン(数式ラベル付き)、シンボル名と行番号付きの最大コードモジュール、埋め込み可能な結果ファイル、フォルダ別の著者自身のノートを含むvault、以前のエクスプローラー、および各オリエンテーションドキュメント、論文、セクションファイル、コードモジュール、ノートのトークン見積もりを報告します。INPUT TIER: X を出力し、ユーザーが上書きできるようにします。
次に、以下の順序で読み、ブリーフが書けるようになったら停止します。詳細と予算は references/scanning.md にあります。
- オリエンテーションドキュメント(
CLAUDE.md、README、ルートにある仕様書や分析ノート)。 - 論文: アブストラクト、イントロダクション、コントリビューションステートメント、次にモデルと手法のセクション。結果は主要な数値についてざっと読む。
- スキャンで見つかった以前のエクスプローラー: アウトライン(
scan.py --explainer <file>)、次にトーンを確認するために1セクション全文(--section N)。これらは著者がすでに理解していることと好むスタイルを示します。これらを基に構築し、繰り返さないでください。 - Vault: 概要、概念、ギャップ、決定事項、未解決の質問に関するノート。タイトルで選択。文献ダンプは除外。
- コード: コアアイデアを実現するモジュールのみ。シンボルマップを通じて見つける。大規模なコードベース(約40ファイルまたは8000行を超える)の場合は、1つの
Exploreサブエージェントを送り、論文とコードのマッピングを作成させ、その結論(ファイル自体ではなく)を受け取ります。
オプションのエンリッチメント。リポジトリ内のギャップやプロジェクト履歴が薄い場合にのみ提供: recallスキル(何がいつ決定されたか)またはNotebookLM(文献が何を言っているか)。d3-abstractと同じプロトコル。スキャンが文献フォルダ、インポートされたソースを含むvault、またはNotebookLMノートブックを見つけた場合は、同じ質問内でd3-scientific-wordingのトピックプロファイル(ステップ1b)を提供します。これは、各概念に対して文献が使用する用語とスペルを示し、記法表と用語シートの基礎となります。ENRICHMENT: skipped | recall | notebooklm | both [+ wording profile] を出力します。
フェーズ2: コンテンツブリーフ。HTML作成前に承認を得る
uv run <skill-dir>/scripts/init.py --depth standard --review standard # ./explainer を作成: explainer.toml, brief.md, sections/, d3x/
# リポジトリ内に複数の論文がある場合: --paper <folder> を追加 エクスプローラーを別の場所に置く場合: init.py <dir> --repo <repo root>
保存場所: <repo>/explainer/、外部リポジトリのルート(論文サブモジュールの内部ではない: Overleafでは使用できない)。ブリーフと同じメッセージで場所を確認します。
explainer/brief.md を記入します: プロジェクトを2文で、読者がその後何ができるようになるべきか、読んだソースと意図的に読まなかったソース、ギャップ、セクション計画、導出、正直な棚卸し、意図的に省略したもの、そして ## Wording 見出しの下にワーディングブリーフ(ジャンル: explainer、読者: 共著者、分野、選択されたワーディングモード、プロジェクトの構成概念と記号の用語シート)。セクション計画はセクションごとに1行、そしてすべてのインタラクティブ図について、そのノブから洞察への文: 「Xを動かすとYがわかる」を含みます。そのような文のない図は装飾であり、ここで削除されます(作成後ではありません)。
コンパクトな形式でブリーフをチャットに表示し、承認を得ます。これは必須のチェックポイントです。数百トークンのコストで、間違った6000語を書くことを防ぎます。承認前にセクションを書かないでください。
フェーズ3: 1セクションずつ書く
最初のセクションの前に d3-scientific-wording を呼び出します(スキルツール: d3-scientific-wording:d3-scientific-wording; リストにない場合は <wording-dir>/SKILL.md を読みます)。brief.md のブリーフを渡します。ste モードの場合は、<wording-dir>/references/ste.md も読みます。references/components.md と references/visualization.md を読み込み、例のセクションを一度ざっと読んでください。それらはSTEで書かれています。
- セクションごとに1ファイル:
explainer/sections/NN-slug.html、それぞれ正確に1つの<section id=... data-nav=... data-kicker=...>を含みます。ビルドが番号を振り、ナビゲーションを作成します。 - 各セクションの後にビルドし、エラーを局所化します:
uv run explainer/d3x/build.py --draft(TODOマーカーや未作成セクションへのリンクは警告のみ) - コアアイデアセクション内の順序: 平易な文、インタラクティブ図、形式的な記述、導出、コード内の場所。直感を先に、代数を後に。
- リポジトリに語らせ、再入力しないこと。
<div class="eq" data-label="eq:prob"></div>は論文の.texから数式を引用します(.auxが存在する場合は番号も)。<pre class="code" data-src="src/model.py" data-lines="88-104"></pre>は実際のコード行を引用します。どちらもタイピングより低コストで、ソースから乖離しません。 - ソースをチップで指し示す:
[[paper:eq:prob]]、[[code:src/model.py:88 def solve]]、[[vault:Note name]]、[[result:results/table.csv]]、および自分自身の解釈には[[reading]]。ビルドは、存在しないファイル、行、シンボル、ラベル、ノートに対して失敗します。vaultチップは、explainer.tomlでvaultが設定されていない場合のみ警告します。失敗したチップは、自身の理解に関する発見です。チップを削除するのではなく、主張を修正してください。 - インタラクティブ図は、優先順位に従って表示します: リポジトリの結果ファイル、リポジトリ自身のコードでグリッド上で計算された数値(小さな
explainer/data/make_data.py、visualization.md参照)、または実際の数式をブラウザ内でトイスケールで再実装したもの(toy: trueと宣言し、「イラストレーション用おもちゃ」バッジを表示)。デフォルトは論文の設定に従います。数値はファイルから埋め込まれ、記憶からタイピングすることはありません。 - すべての図のキャプションは
{fig}で始まり(ビルドが図に番号を付けます。{fig:figure-id}で参照)、何を試すべきか、何に注目すべきかを示します。
フェーズ4: 検証
uv run explainer/d3x/build.py # --draft なし: TODOマーカーはエラーになる; 深さ予算に対するセクションごとの単語数を表示
uv run explainer/d3x/check.py --shots # ヘッドレスブラウザ: すべてのコントロールを操作、すべてのハンドルをドラッグ、すべての導出をステップ実行
check.py は 0 error(s) で終了する必要があります。その後、セクションのワーディングをlintします(standardモードでは --ste を外します)。すべてのエラーを修正し、すべての警告について判断します:
uv run <wording-dir>/scripts/check_wording.py explainer/sections/*.html --genre explainer --ste
これは、ソースを読むだけでは発見できないものを捕捉します: パス内のNaN、何も変更しないコントロール、MathJaxがレンダリングできない数式、スライダーの極端な値でラベルが切れる、電話画面幅でのオーバーフローなど。初回実行時はブラウザを一度要求することがあります: uv run --with playwright playwright install chromium(インストール済みのChromeまたはEdgeにフォールバックします)。
explainer/review/shots/ のスクリーンショットを2~3枚自身で確認します。その後、選択された深さでレビューします。プロンプトとトークンルールは references/review.md にあります:
- single: 1人の読み取り専用レビュアーが、
references/review.mdからの統合プロンプトを使用し、両方のパケット、check.md、スクリーンショットを1ラウンドで読み取ります。その後、以下に従って検証し適用します。 - light: レビューエージェントなし。自身で1回の数値パスを行います: テキスト内のすべての数値、KPIタイル、図のデフォルト値を、引用されている論文または結果ファイルと照合します。その後停止します。
- standard: 2人の読み取り専用レビュアーが並行して、1ラウンド。各ビルドは2つのパケットを
explainer/review/に書き込みます:fidelity-packet.md(行番号付きのエクスプローラーテキスト、理由付きの導出ステップ、および各チップに対して引用された数式またはコード行のエビデンス)とfigures-packet.md(すべての図のキャプションとスクリプト)。忠実性レビュアー は、最初のパケットから導出、数値、ギャップの主張、ワーディング(コールドリードとd3-scientific-wordingのルール)をチェックします。体験レビュアー は、2番目のパケット、check.md、スクリーンショットから、すべての図がそのノブから洞察への文を教えているかをチェックします。どちらもリポジトリを探索する必要はなく、これによりレビューが手頃な価格で維持されます。レビュアーの実行中はセクションファイルを編集しないでください。その後、各ブロッカーとメジャーを自身で検証し、適用し、リビルドし、check.pyを再実行します。再確認は、ブロッカーがある場合のみ、それを提起したレビュアーのみ、変更されたファイルに対してのみ行われます。 - full: 同じ2人のレビュアーが、すべてのカテゴリが9以上になるまでループ、最大3ラウンド。その後、残ったポイントをユーザーに引き渡します。
フェーズ5: 納品
パス explainer/dist/<name>.html(単一ファイル、オフライン動作、メール添付可能)、使用されたレビューの深さ、修正内容を含む統合された所見テーブルを提供します。n で記法ドロワーが開くこと、導出は「Next step」でステップ実行できること、チップはリモートがGitHub上にある場合、ビルドされたコミットのGitHubパーマリンクにリンクすることを言及します。リポジトリにvaultがある場合は、著者の以前のエクスプローラーが存在する場所に、HTMLのコピーをvaultにドロップすることを提案します。d3-scientific-wording の透かし質問(ステップ5)を一度行います。「はい」の場合、explainer/sections/*.html をクリーンアップし(ビルド済みファイルは決してクリーンアップしない。MathJaxとフォントが埋め込まれているため)、リビルドします。e
…
[truncated for translation]