inspect について
ページ要素の自然言語による説明から、描画済み DOM ノードとおおよそのソース位置を特定する Claude スキルです。対象の調査に加え、依頼に応じて直接編集できます。
主な機能
- 01テキスト、役割、位置、色、サイズによる照合
- 02直近のスナップショットの再利用または Chrome DevTools で新規取得
- 03複数候補の判別
- 04選択要素のソースファイルと行範囲の特定
- 05必要に応じた特定箇所の編集
活用シーン
- 01ページ成果物内の説明されたボタンの特定
- 02見出しやカード要素のソース調査
- 03視覚的な編集前の対象確認
MCP 対応
Chrome DevTools MCP でページのスナップショットを取得し、選択した DOM 要素を調査します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bluzir/ claude-code-design --skill inspectインストール後、Claude Code で/inspectを入力して読み込まれたか確認します。
詳細
Inspect
Claude Design の <mentioned-element> インラインコメントプロトコルを、ターミナルネイティブな代替手段に置き換えます。ユーザーが英語で要素を説明すると、Claude が編集箇所を絞り込めるよう、特定の DOM ノードとソース位置を特定します。
前提条件
- Chrome DevTools MCP でページが読み込まれていること(
/previewまたは/done経由) .claude/last-snapshot.jsonが存在すること(/doneで生成)— または新たにスナップショットを取得します
パイプライン
-
スナップショットを取得:
- 最近(5 分未満)かつ同じ URL の場合は、
Read .claude/last-snapshot.jsonを優先します - それ以外の場合は、
mcp__chrome-devtools__take_snapshotで新しいツリーを取得します
- 最近(5 分未満)かつ同じ URL の場合は、
-
説明と一致するノードをスナップショットから探します。視覚情報とテキストのヒューリスティックを使用します:
- ロール/タグの一致(「button」→ role=button、tag=button)
- テキスト内容の一致(「『Get started』と書かれた CTA」)
- 位置のヒント(「ヒーロー」「上部」「左から 3 番目」「右サイドバー」)
- 色のヒント(「赤いボタン」)— 曖昧な場合は、スクリーンショットを取得して視覚的に照合します
- サイズのヒント(「大きな見出し」)
- 階層(「最初のカード内」)
-
最適な UID を選択します。候補が複数ある場合は、上位 3 件をそれぞれ 1 行で要約してユーザーに提示します:
Candidates for "red button in hero": [uid=3_12] <button> "Get started" — background #d83 [uid=3_28] <a class="btn"> "Try free" — background #c55 [uid=3_07] <div role=button> "Sign up" — background #d80 Which one (or describe differently)? -
ソース位置を特定します。 UID が確認されたら:
mcp__chrome-devtools__evaluate_script— UID で選択し、有用な識別子を返します:// (Pass the picked uid as an arg to the evaluate function) (el) => ({ tag: el.tagName.toLowerCase(), id: el.id || null, classList: Array.from(el.classList), textContent: el.textContent.trim().slice(0, 80), dataAttrs: Object.fromEntries( Array.from(el.attributes) .filter(a => a.name.startsWith('data-')) .map(a => [a.name, a.value]) ), outerHTML: el.outerHTML.slice(0, 300), })- これらの手掛かりを使い、
Grepでソース HTML(現在のartifacts/<name>.html)から一致する要素を検索します。優先順位はid>data-*> 一意なクラスの組み合わせ > テキストの一部 > outerHTML の一部です。 - 返す情報:ソースファイルのパス + おおよその行番号
-
報告:
Element: <button> "Get started" (uid 3_12) Source: artifacts/landing.html:142-148 Selector: #cta-primary -
次の手順(任意): ユーザーが調査と併せて編集(「大きくして」など)も依頼した場合は、特定した行範囲を直接
Editします。それ以外の場合は、報告して待機します。
「赤いボタン」のような参照に対するヒューリスティックの優先順位
ユーザーの表現が複数の候補に該当する場合:
- 明示的なラベルを優先 —
<button aria-label="Subscribe">があり、ユーザーが「購読ボタン」と言った場合は、視覚的な手掛かりにかかわらずそれを選びます - 表示中の要素を優先 — 折り返し位置より下にある要素より、現在ビューポート内にある要素を優先します
- 一般的なものより一意なものを優先 — 8 個のグリッドボタンのうち 3 番目より、一意なヒーローボタンを優先します
- 小さいものより大きいものを優先 — 「大きなタイトル」の場合は、フォントサイズが大きいものを優先します
- 位置が曖昧な場合は上部を優先 — 「ボタン」の場合は、読み取り順でページ上部に最も近いものを選びます
質問に切り替える場合
候補が 3 件を超え、視覚情報でも判別できない場合は、ユーザーに「X、Y、Z のどれですか?」と尋ねます
制限事項
- 正常にレンダリングされた要素のみを特定できます(エラーコンポーネントは対象外です)
- 生成されたクラス名を持つ React コンポーネント(CSS モジュール)の場合、セレクターを往復して照合できないことがあります — ソース検索には outerHTML の一部を使用します
- Shadow DOM 内の要素は
take_snapshotで表示されますが、ソース HTML に対する Grep では見つかりません — この方法で見つからない場合はユーザーに警告します
コメント
Markdown 対応