chrome-devtools
Puppeteer CLIスクリプトを使用したブラウザの自動操作、デバッグ、パフォーマンス分析を行うスキル。スクリーンショットの撮影、ネットワークトラフィックの監視、Webスクレイピング、フォーム入力の自動化、JavaScriptのデバッグなど、ブラウザに関する幅広いタスクに活用できます。
description の原文を見る
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.
SKILL.md 本文
Chrome DevTools Agent Skill
実行可能な Puppeteer スクリプトによるブラウザ自動化。すべてのスクリプトは JSON 形式で出力されるため、解析が簡単です。
クイックスタート
重要: スクリプトを実行する前に必ず pwd で確認してください。
インストール
ステップ 1: システム依存関係のインストール (Linux/WSL のみ)
Linux/WSL では、Chrome がシステムライブラリを必要とします。まずインストールしてください:
pwd # Should show current working directory
cd .claude/skills/chrome-devtools/scripts
./install-deps.sh # Auto-detects OS and installs required libs
対応: Ubuntu、Debian、Fedora、RHEL、CentOS、Arch、Manjaro
macOS/Windows: このステップをスキップしてください (依存関係は Chrome にバンドルされています)
ステップ 2: Node 依存関係のインストール
npm install # Installs puppeteer, debug, yargs
ステップ 3: ImageMagick のインストール (オプション、推奨)
ImageMagick を使用すると、スクリーンショットを自動的に圧縮して 5MB 以下に保つことができます:
macOS:
brew install imagemagick
Ubuntu/Debian/WSL:
sudo apt-get install imagemagick
確認:
magick -version # or: convert -version
ImageMagick がない場合、5MB を超えるスクリーンショットは圧縮されません (Gemini/Claude で読み込めない可能性があります)。
テスト
node navigate.js --url https://example.com
# Output: {"success": true, "url": "https://example.com", "title": "Example Domain"}
利用可能なスクリプト
すべてのスクリプトは .claude/skills/chrome-devtools/scripts/ にあります
重要: スクリプトを実行する前に必ず pwd で確認してください。
スクリプト使用法
./scripts/README.md
コア自動化
navigate.js- URL にナビゲートscreenshot.js- スクリーンショットをキャプチャ (フルページまたは要素)click.js- 要素をクリックfill.js- フォームフィールドに入力evaluate.js- ページコンテキストで JavaScript を実行
分析とモニタリング
snapshot.js- メタデータ付きの対話的要素を抽出console.js- コンソールメッセージ/エラーをモニタリングnetwork.js- HTTP リクエスト/レスポンスを追跡performance.js- Core Web Vitals を測定 + トレースを記録
使用パターン
単一コマンド
pwd # Should show current working directory
cd .claude/skills/chrome-devtools/scripts
node screenshot.js --url https://example.com --output ./docs/screenshots/page.png
重要: スクリーンショットは必ず ./docs/screenshots ディレクトリに保存してください。
自動画像圧縮
スクリーンショットが 5MB を超える場合、Gemini API と Claude Code (どちらも 5MB の制限があります) との互換性を確保するために、自動的に圧縮されます。内部では ImageMagick を使用しています:
# デフォルト: 5MB を超える場合は自動圧縮
node screenshot.js --url https://example.com --output page.png
# カスタムサイズ閾値 (例: 3MB)
node screenshot.js --url https://example.com --output page.png --max-size 3
# 圧縮を無効化
node screenshot.js --url https://example.com --output page.png --no-compress
圧縮の動作:
- PNG: 90% にリサイズ + 品質 85 (それでも大きい場合は 75% + 品質 70)
- JPEG: 品質 80 + プログレッシブエンコーディング (それでも大きい場合は品質 60)
- その他の形式: JPEG に変換して圧縮
- ImageMagick のインストールが必須 (imagemagick スキルを参照)
出力に圧縮情報を含む:
{
"success": true,
"output": "/path/to/page.png",
"compressed": true,
"originalSize": 8388608,
"size": 3145728,
"compressionRatio": "62.50%",
"url": "https://example.com"
}
コマンドチェーン (ブラウザを再利用)
# Keep browser open with --close false
node navigate.js --url https://example.com/login --close false
node fill.js --selector "#email" --value "user@example.com" --close false
node fill.js --selector "#password" --value "secret" --close false
node click.js --selector "button[type=submit]"
JSON 出力をパース
# Extract specific fields with jq
node performance.js --url https://example.com | jq '.vitals.LCP'
# Save to file
node network.js --url https://example.com --output /tmp/requests.json
実行プロトコル
作業ディレクトリの確認
スクリプトを実行する前に:
pwdで現在の作業ディレクトリを確認.claude/skills/chrome-devtools/scripts/ディレクトリにいることを確認- 間違ったディレクトリの場合は
cdで正しい場所に移動 - すべての出力ファイルに絶対パスを使用
例:
pwd # Should show: .../chrome-devtools/scripts
# If wrong:
cd .claude/skills/chrome-devtools/scripts
出力検証
スクリーンショット/キャプチャ操作の後に:
ls -lh <output-path>でファイルが作成されたことを確認- Read ツールを使用してスクリーンショットを読み込んで内容を確認
- JSON 出力で success:true を確認
- ファイルサイズと圧縮ステータスをレポート
例:
node screenshot.js --url https://example.com --output ./docs/screenshots/page.png
ls -lh ./docs/screenshots/page.png # Verify file exists
# Then use Read tool to visually inspect
- 作業ディレクトリをプロジェクトルートにリセットします。
エラー回復
スクリプトが失敗した場合:
- セレクタの問題がないかエラーメッセージを確認
- snapshot.js を使用して正しいセレクタを発見
- CSS セレクタが失敗する場合は XPath セレクタを試す
- 要素が表示されており対話可能であることを確認
例:
# CSS selector fails
node click.js --url https://example.com --selector ".btn-submit"
# Error: waiting for selector ".btn-submit" failed
# Discover correct selector
node snapshot.js --url https://example.com | jq '.elements[] | select(.tagName=="BUTTON")'
# Try XPath
node click.js --url https://example.com --selector "//button[contains(text(),'Submit')]"
よくある間違い
❌ 作業ディレクトリが間違っている → 出力ファイルが間違った場所に行く ❌ 出力検証をスキップ → 静かに失敗する ❌ テストせずに複雑な CSS セレクタを使用 → セレクタエラー ❌ 要素の表示可能性を確認しない → タイムアウトエラー
✅ スクリプト実行前に必ず pwd を確認
✅ スクリーンショット後に必ず出力を検証
✅ snapshot.js を使用してセレクタを発見
✅ シンプルなコマンドでセレクタをテスト
一般的なワークフロー
Web スクレイピング
node evaluate.js --url https://example.com --script "
Array.from(document.querySelectorAll('.item')).map(el => ({
title: el.querySelector('h2')?.textContent,
link: el.querySelector('a')?.href
}))
" | jq '.result'
パフォーマンステスト
PERF=$(node performance.js --url https://example.com)
LCP=$(echo $PERF | jq '.vitals.LCP')
if (( $(echo "$LCP < 2500" | bc -l) )); then
echo "✓ LCP passed: ${LCP}ms"
else
echo "✗ LCP failed: ${LCP}ms"
fi
フォーム自動化
node fill.js --url https://example.com --selector "#search" --value "query" --close false
node click.js --selector "button[type=submit]"
エラーモニタリング
node console.js --url https://example.com --types error,warn --duration 5000 | jq '.messageCount'
スクリプトオプション
すべてのスクリプトが対応:
--headless false- ブラウザウィンドウを表示--close false- ブラウザを開いたままチェーニング用に保つ--timeout 30000- タイムアウトを設定 (ミリ秒)--wait-until networkidle2- 待機戦略
完全なオプションについては ./scripts/README.md を参照してください。
出力形式
すべてのスクリプトは JSON を stdout に出力します:
{
"success": true,
"url": "https://example.com",
... // script-specific data
}
エラーは stderr に出力されます:
{
"success": false,
"error": "Error message"
}
要素を探す
snapshot.js を使用してセレクタを発見:
node snapshot.js --url https://example.com | jq '.elements[] | {tagName, text, selector}'
トラブルシューティング
よくあるエラー
"Cannot find package 'puppeteer'"
- 実行: スクリプトディレクトリで
npm install
"error while loading shared libraries: libnss3.so" (Linux/WSL)
- システム依存関係が不足しています
- 修正: スクリプトディレクトリで
./install-deps.shを実行 - 手動インストール:
sudo apt-get install -y libnss3 libnspr4 libasound2t64 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1
"Failed to launch the browser process"
- システム依存関係がインストールされているか確認 (Linux/WSL)
- Chrome がダウンロードされたか確認:
ls ~/.cache/puppeteer - 試す:
npm rebuildその後npm install
Chrome が見つからない
- Puppeteer は
npm install中に Chrome を自動ダウンロードします - 失敗した場合、手動でトリガー:
npx puppeteer browsers install chrome
スクリプトの問題
要素が見つからない
- 最初にスナップショットを取得して正しいセレクタを探す:
node snapshot.js --url <url>
スクリプトがハング
- タイムアウトを増やす:
--timeout 60000 - 待機戦略を変更:
--wait-until loadまたは--wait-until domcontentloaded
スクリーンショットが空白
- ページロードを待つ:
--wait-until networkidle2 - タイムアウトを増やす:
--timeout 30000
スクリプトの実行権限が拒否
- 実行可能にする:
chmod +x *.sh
スクリーンショットが大きすぎる (>5MB)
- 自動圧縮用に ImageMagick をインストール
- 手動で低い閾値を設定:
--max-size 3 - PNG の代わりに JPEG フォーマットを使用:
--format jpeg --quality 80 - フルページではなく特定の要素をキャプチャ:
--selector .main-content
圧縮が機能しない
- ImageMagick がインストールされているか確認:
magick -versionまたはconvert -version - ファイルが実際に圧縮されたか出力 JSON で確認:
"compressed": true - 非常に大きなページの場合、
--selectorを使用して必要な領域のみをキャプチャ
リファレンスドキュメント
./references/ に詳細ガイドが利用可能:
CDP Domains Reference- 47 の Chrome DevTools Protocol ドメインPuppeteer Quick Reference- 完全な Puppeteer API パターンPerformance Analysis Guide- Core Web Vitals の最適化
高度な使用法
カスタムスクリプト
共有ライブラリを使用してカスタムスクリプトを作成:
import { getBrowser, getPage, closeBrowser, outputJSON } from './lib/browser.js';
// Your automation logic
直接 CDP アクセス
const client = await page.createCDPSession();
await client.send('Emulation.setCPUThrottlingRate', { rate: 4 });
詳細なパターンと完全な API カバレッジについてはリファレンスドキュメントを参照してください。
外部リソース
- Puppeteer Documentation
- Chrome DevTools Protocol
Scripts README
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mrgoonie
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mrgoonie/claudekit-skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。