argus について
argusは、AI支援開発向けのChromeベースのWeb QA用MCPサーバーです。描画されたアプリを監査して重要度付きの結果を返し、Aegisが外部出力の機密情報を伏せます。
主な機能
- 01JavaScript、ネットワーク、アクセシビリティ、セキュリティなどを監査
- 02環境とビジュアルベースラインを比較
- 03新規・解決済み・継続中の問題を追跡
- 04Aegisによる機密情報の出力制御
- 05CI、コマンドライン、Slackレポートに対応
活用シーン
- 01コードを開発者のマシンから出す前にローカルアプリを確認
- 02開発環境とステージング環境の回帰を検出
- 03エージェントによる監査・修正・再監査のループを支援
MCP 対応
Chromeタブの監査、環境比較、問題の確認、GitHubプルリクエストの検証に使うMCPツールを提供します。ツール応答がエージェントに届く前に、Aegisが機密情報を伏せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y argusqa-osTARGET_DEV_URLBase URL of the dev environment to audit (e.g. http://localhost:3000)TARGET_STAGING_URLBase URL of the staging environment — used by argus_compare for dev vs staging diff. Omit to use CSS analysis mode.SLACK_BOT_TOKENシークレットSlack bot token (xoxb-...) for posting reports. Omit to generate a local report.html instead.FIGMA_API_TOKENシークレットFigma personal access token — enables argus_design_audit to fetch design specs from a Figma frame and compare them against the live DOM (13 fidelity finding types). Omit to skip design fidelity audits.ARGUS_REDACT_SENSITIVEAegis confidentiality egress boundary. Default ON: every tool response is redacted so secrets, PII, and exploit detail never cross into the calling agent's context (the local on-disk report keeps full fidelity). Set to 0 for byte-identical pre-Aegis output.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
9掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | 監査対象の完全な URL。プロトコルとパスを含みます(例:http://localhost:3000/checkout)。実行中の Chrome インスタンスからアクセスできる必要があります。 |
| cache | boolean | いいえ | true の場合、この URL のキャッシュ結果(このセッションで以前に呼び出した argus_audit によるもの)があれば、再クロールせずに返します。修正を繰り返す際、前回の監査結果を低コストで再読み込みするのに使えます。キャッシュはセッションごとで、最大 20 件。LRU 方式で削除されます。 |
| critical | boolean | いいえ | true の場合、console.error の呼び出しを critical の重大度に引き上げます。ログイン、チェックアウト、ダッシュボードなど、エラーがすべてブロッカーとなるビジネス上重要なルートでは true に設定してください。 |
詳細
Argus — AI 支援開発のための QA レイヤー
AI エージェントがコードを書きます。Argus は実際に構築されたものをチェックします。
MCP 設定に 1 行追加するだけで、Claude(または任意の MCP エージェント)が本格的な Chrome 監査エンジンを利用できます — 67 の監査カテゴリ · 149 種類の検出項目 · 作成・保守が必要なテストファイルはゼロ。 さらに Aegis を使えば、検出した内容から 秘密情報が LLM に漏れることはありません。
クイックスタート · 修正ループ · 検出できる問題 · 対応スタック · MCP ツール · 完全なセットアップ · リファレンス
Argus が生まれた理由
AI エージェントは今やコードの大半を書いています。しかし、その成果を評価するときに基準にするのは、ブラウザーで実際に何が起きるかではなく、コンパイルできて、完成したように見えるかどうかです。3 回目のクリックで発生する未捕捉の例外。HTTP 経由で認証情報を送信するフォーム。4 秒の LCP。ダークモードで消えるボタン。無限ループで叩かれる API エンドポイント。
Argus はそのギャップを埋めます。 Chrome DevTools Protocol 経由で実際の Chrome を操作し、ローカルで実行中のアプリを監査して、構造化された重大度順のバグレポートをエージェント、またはあなたに渡します。エージェントが修正し、Argus が再チェックすることで、コードがマシンから外に出る前にループが完了します。
| 🧪 テストファイルは一切不要 | Argus が監査するのはソースコードではなく、レンダリングされたアプリです — DOM、コンソール、ネットワーク、ピクセルを対象にします。作成も不要で、エージェントによるリファクタリング時の保守も不要です |
| 🤖 エージェントのループ向けに構築 | Claude が MCP 経由でネイティブに呼び出せる唯一の QA エンジンです。会話を離れずに監査 → 修正 → 再監査できます |
| 🔒 デフォルトでエージェントにも安全 | Aegis:すべての外部送信境界で検出内容を秘匿化します — 秘密情報、PII、悪用に関する詳細が LLM のコンテキストウィンドウに届くことはありません(OWASP LLM02、デフォルトで有効、フェイルクローズ) |
| 🧰 通常の QA ツールとしても利用可能 | CLI による一括監査、GitHub Action の PR ゲート、スクリーンショット付き Slack レポート、開発環境とステージング環境の差分、監視モード — エージェントの有無を問わず利用できます |
クイックスタート
インストール不要です。 初回実行時に
npxが Argus を取得します。
1 — プロジェクトのルートにある .mcp.json に 2 行追加します:
{
"mcpServers": {
"chrome-devtools": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest"] },
"argus": { "command": "npx", "args": ["-y", "argusqa-os"] }
}
}
または Claude Code CLI から実行します:
claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest
claude mcp add argus -- npx -y argusqa-os
2 — Chrome を起動します(Chrome を自動検出し、適切なフラグを設定します):
npx -y -p argusqa-os argus-chrome
Chrome を手動で起動しますか?(macOS / Windows / Linux のコマンド)
# macOS
open -a "Google Chrome" --args --remote-debugging-port=9222 --headless=new
# Windows (PowerShell)
& "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --headless=new --no-sandbox --disable-gpu --user-data-dir="$env:TEMP\chrome-argus"
# Linux
google-chrome --remote-debugging-port=9222 --headless=new --no-sandbox
3 — エージェントに依頼します:
Run argus_audit on http://localhost:3000
これで完了です。検出結果は構造化され、重大度順に並べられて、会話内、Slack、またはローカルの report.html として返されます。問題がある場合は、npx -y -p argusqa-os argus-doctor を実行すると、1 つのコマンドでセットアップを診断できます。
修正ループ
エージェント型コーディングセッション内で Argus がどのように動作するかを示します:
You: Build me a checkout page with a card form.
Agent: [writes the code, dev server renders it]
You: Run argus_audit on http://localhost:3000/checkout
Argus: ● 2 critical · 3 warnings
● uncaught TypeError in checkout.js (visible on submit)
● form posts over HTTP — security_no_https
▲ card inputs missing labels + autocomplete (a11y/WCAG)
▲ LCP 4.1s — hero image unoptimized
▲ duplicate POST /api/cart ×7 — likely render loop
Agent: [fixes all five]
You: Run argus_get_context
Argus: ✓ resolved: 5 · persisting: 0 · new: 0
argus_get_context は前回のスナップショットとの差分を表示するため、エージェントは何を修正し、何を壊し、何が残っているのかを正確に把握できます — 出力の長い文章を読み直す必要はありません。
「でも、エージェントはすでにブラウザーを操作できます…」 — そのとおりです。しかし、操作することと評価することは別です。生のブラウザー MCP(Playwright MCP、素の chrome-devtools-mcp)はエージェントに手と目を与えますが、何をチェックすべきかはセッションごとにエージェントが改めて導き出す必要があり、コンソールログを掘り下げるためにコンテキストを消費します。Argus はその上にある評価レイヤーです。閾値、重大度ポリシー、実行間のベースライン、フレークのフィルタリング、重複排除、根本原因のヒントを備えた、コード化済みの 149 種類の検出項目を、デフォルトで秘匿化して 1 回の呼び出しで返します。
Argus が検出するもの
32 の分析エンジン、149 種類の固有の問題タイプ、テストファイルのメンテナンスは不要です。
| カテゴリ | 検出内容 |
|---|---|
| JavaScript | 捕捉されない例外、処理されない Promise の拒否、重要なルートでの console.error |
| ネットワークと API | HTTP 5xx、401/403 の認証失敗、API 呼び出しの重複(無限ループ)、4xx エラー、リンク切れ |
| パフォーマンス | LCP > 2500ms、CLS > 0.1、TTFB > 800ms、低速な API > 1s/3s、ペイロード > 500KB/2MB、JS バンドル > 500KB |
| アクセシビリティ | axe-core(80 以上の WCAG ルール)、色覚シミュレーション、ARIA の不足、キーボードフォーカス、見出し階層 |
| SEO | メタディスクリプション、OG タグ、canonical、viewport、h1 の不足 |
| セキュリティ | localStorage/URL 内の認証トークン、eval()、CSP/X-Frame-Options の不足、CSP 違反、外部スクリプトの SRI 不足、ソースマップの露出、オープンリダイレクト、npm の CVE |
| CSS | カスケードの上書き、コンポーネントのスタイル漏れ、未使用ルール、React のインラインスタイルの競合 |
| コンテンツ | 表示テキストとしての null/undefined、lorem ipsum、画像の読み込みエラー、空のデータリスト |
| レスポンシブ | 375px/768px での横方向のはみ出し、タッチターゲット < 44×44px |
| メモリ | V8 ヒープスナップショットによるデタッチされた DOM ノードの検出、ページ遷移間でのヒープ増加 |
| ビジュアル | pixelmatch によるピクセル単位のスクリーンショット回帰(≥0.1% で警告、≥5% で重大) |
| Figma | デザインと実装の忠実度 — 13 種類のプロパティ(色、余白、タイポグラフィ、シャドウなど) |
| フォーム | required、autocomplete、aria-describedby の不足、ラベルのない入力欄 |
| フォント | FOIT、FOUT、フォールバックの不足、読み込みの遅延 > 1s、最適でない形式 |
| モーション | prefers-reduced-motion 違反、一時停止コントロールのない autoplay |
| テーマ | ダークモードの不備 — 静的な CSS 変数、prefers-color-scheme の処理不足 |
| ネットワークのベースライン | 保存済み HAR ベースラインと比較した、新しいリクエスト、欠落したリクエスト、ステータスコードの回帰 |
| 環境差分 | 開発環境とステージング環境の比較 — スクリーンショットの差分、DOM の変更、コンソールとネットワークの回帰 |
さらに、すべての検出結果は次の後処理を受けます。
| 後処理 | 追加される内容 |
|---|---|
| インテリジェントなベースラインフィルタリング | 実行ごとに発生したり消えたりする検出結果には noisy タグが付けられ、info に格下げされます — API 呼び出しを行わない、実行間のヒューリスティックのみの処理です(無効にするには ARGUS_NOISE_FILTER=0 を設定) |
| 根本原因の関連付け | 新しい検出結果に、原因となった可能性が最も高い最近の git コミットとファイルが注釈として付与されます(無効にするには ARGUS_ROOT_CAUSE=0 を設定) |
すべての検出結果は
critical/warning/infoに分類され、適切な Slack チャンネルに送られるか、ローカルの HTML レポートに表示されます。検出結果ごとの重大度テーブルと検出方法については、REFERENCE.md を参照してください。
お使いのスタックで動作
Argus はソースではなく、レンダリングされた出力を監査するため、設計上フレームワークに依存しません。Chrome で動作するものなら、Argus で監査できます。
| SPA フレームワーク | React、Vue、Angular、Svelte/SvelteKit、Solid、Preact、Astro… |
| メタフレームワーク | Next.js、Nuxt、Remix、Gatsby — さらにフレームワークを考慮した追加機能:Next.js と React Router のルート検出、インポートグラフに基づく PR マッピング(「このコンポーネントが変更された → これをレンダリングするルートのみを監査」)、モノレポのパス認識 |
| サーバーサイドレンダリング | Rails、Django、Laravel、Flask、Spring、PHP — ブラウザーに HTML を返すものなら何でも |
| 静的サイト/フレームワークなし | プレーンな HTML/CSS/JS、ドキュメントサイト、ランディングページ |
| API(ページ経由) | ページが行うすべてのリクエストに対するレスポンススキーマの検証、ステータスと所要時間のチェック |
正直な制限事項: Chrome/Chromium のレンダリングのみ(Safari/Firefox のエンジン差異には対応しません)、Web のみ(ネイティブのモバイル/デスクトップアプリには対応しません)。バックエンドサービスは単独の API テストスイートとしてではなく、ページが生成するトラフィックを通じてチェックします。
機密保持 — Aegis の外部送信境界
デフォルトで有効です。 Argus はアプリを監査してシークレットや脆弱性を検出するため、その検出結果は、マシンの外に出したくないデータそのものです。Aegis は、データが外部境界を越える前に、すべての境界でそれらを編集します。AI エージェントを導入するチームにとって、これは「AI QA ツールを使っています」と「安全な理由をセキュリティ責任者にはっきり説明できます」の違いになります。
外部シンクに送信される検出結果 — 呼び出し元のエージェントのコンテキストウィンドウに入り、そのエージェントのモデルプロバイダーに送られる MCP ツールのレスポンス、Slack メッセージ、GitHub の PR コメントとその ::error 注釈、ホスト型/CI HTML レポート、または CI ログ — は、必要最小限の情報に限定されます。機密な検出結果は type + route + severity と 🔒 マーカーとして送信され、元のペイロード(message、evidence、リクエスト/レスポンス本文、ヘッダー、Cookie、スタック)が送信されることはありません。URL はクエリ文字列を除いて表示します(トークンはそこに含まれるためです)。問題のない検出結果ではメッセージを保持しますが、そのメッセージに誤って埋め込まれたシークレットや PII も引き続き除去します。
| 原則 | 動作 |
|---|---|
| ローカルでの完全性を維持 | ディスク上の JSON レポートとローカルで開いた HTML では、詳細を**100%**保持します。編集によって詳細が削除されるのは、データを外部に送るときだけです |
| 安全側に倒す | 分類エラーが発生した場合や、検出結果の形式が不明な場合、Aegis は情報を減らすことはあっても、増やすことはありません |
| デフォルト拒否 | 安全なフィールドの明示的な許可リストに含まれるものだけが外部に送信されます。新しいフィールドは、意図的に許可リストへ追加されるまで何も漏らしません |
| 5 層の検出 | カテゴリールール ∪ 13 個のシークレット用正規表現 ∪ 統計的希少性(エントロピー/トークン効率)∪ ルーンチェック済みの 7 個の PII ルール ∪ コンテキストによる強化 |
| オプトアウト | ARGUS_REDACT_SENSITIVE=0 → 出力は Aegis 導入前とバイト単位で同一になります |
これは、Argus 自身の境界において、OWASP LLM02:2025 — Sensitive Information Disclosure の緩和策(データの最小化、編集、デフォルト拒否の外部送信フィルタリング)を実装するものです。オプションのローカル専用再水和ボールト(ARGUS_REDACT_VAULT=1)を使うと、差分が安定するアーティファクト向けに復元可能な、情報を含まないトークンを生成できます。npm run report:rehydrate でローカルに再展開できます。動作の変更については CHANGELOG.md に記載されています。
MCP ツール
Claude(または任意の MCP クライアント)に依頼できます。ターミナルは不要です。
| ツール | 説明 |
|---|---|
argus_audit | クイックチェック — JS、ネットワーク、アクセシビリティ、SEO、セキュリティ、CSS、コンテンツ |
argus_audit_full | 詳細チェック — Lighthouse、レスポンシブチェック、メモリリーク検出、ホバー状態のバグを追加 |
argus_compare | 開発環境とステージング環境の差分 — スクリーンショット、検出結果の差分、環境のリグレッション |
argus_get_context | 開いているタブで発生している問題をすべて取得 — 前回のスナップショットとの差分(resolved / new / persisting)も含みます(修正ループ) |
argus_watch_snapshot | ページ遷移せずに開いているタブをスナップショット — 認証/フォームの状態を保持 |
argus_last_report | 再実行せずに直近の JSON レポートを返す |
argus_design_audit | Figma URL → 13 種類のデザイントークン検出結果(色、間隔、タイポグラフィ、シャドウなど) |
argus_visual_diff | スクリーンショットのベースライン比較。リセットするには updateBaseline: true を渡します。 |
argus_pr_validate | GitHub PR の差分を取得 → 変更ファイルを影響を受けるルートにマッピング → 対象を絞った監査 → ベースラインを考慮したブロック判定(PR が新たに持ち込む検出結果がある場合にブロック) + 冪等な PR コメント + Check Run → { blocked, findings, baseline, reporting } |
すべてのツールのレスポンスは、エージェントに届く前に Aegis の外部送信境界を通して必要最小限の情報に限定されます。機密情報が除外された場合は、オプションの
redaction情報({ redacted, total })が付与されます。
プロンプトの例:
Run argus_audit on http://localhost:3000/checkout
Run argus_audit_full on http://localhost:3000/dashboard
Run argus_compare
Run argus_get_context
実戦で検証済み。雰囲気ではありません
Argus 自身の正確性も、Argus が監査する対象と同じ方法で担保されています。
- 実際の Chrome を 64 のフィクスチャページに対して動かす 171 ブロックの統合ハーネスで、998/998 件の厳密なアサーションを実施しています。カテゴリごとの陰性対照(誤検出ゼロ)、9 つすべての MCP ツールのゴールデンレスポンススキーマ、バージョン更新時に chrome-devtools-mcp の API 変更を検知する上流ドリフトカナリアを含みます
- 562 件の Chrome 不要なユニットテスト(Vitest)+プロパティベースのパーサーファジング
npm audit:脆弱性ゼロ · すべての PR で CodeQL + Dependabot を実行 · Socket.dev:脆弱性/品質/ライセンスの評価は 100/100/100- セッションファイルと取得したトークンは
0600で書き込み、所有者のみがアクセスできます
セットアップの全手順
前提条件
| 要件 | バージョン |
|---|---|
| Node.js | v20.19+ |
| Chrome | Stable(デスクトップまたはヘッドレス) |
| Claude Code | 最新版(npm install -g @anthropic-ai/claude-code)— または任意の MCP クライアント |
| Slack ワークスペース | 任意 — ローカルの report.html モードでは省略できます |
オプション A — MCP サーバー (Claude Code ユーザーに推奨)
ローカルへのインストールは不要です。上記のクイックスタートを使用し、対象 URL を追加してください。
# .env in your project root
TARGET_DEV_URL=http://localhost:3000
TARGET_STAGING_URL=https://staging.example.com # optional — enables argus_compare
任意 — Slack 通知:
- api.slack.com/apps → Create New App → 名前を BugBot に設定
- OAuth & Permissions → Bot Token Scopes:
chat:write、files:write、files:read - ワークスペースにインストール →
xoxb-...トークンをコピー #bugs-critical、#bugs-warnings、#bugs-digestチャンネルを作成し、それぞれで/invite @BugBotを実行
SLACK_BOT_TOKEN=xoxb-...
SLACK_CHANNEL_CRITICAL=C0000000000
SLACK_CHANNEL_WARNINGS=C0000000001
SLACK_CHANNEL_DIGEST=C0000000002
Slack を使わない場合:Argus は
reports/report.htmlを自動生成し、ブラウザーで開きます。追加設定は不要です。
オプション B — npm パッケージ(CI/開発依存関係)
npm install --save-dev argusqa-os
npx argus init # interactive wizard — detects framework, discovers routes, writes .env
npm run crawl # run after Chrome is started
オプション C — リポジトリをクローン(コントリビューター/ソース全体)
git clone https://github.com/ironclawdevs27/Argus.git
cd Argus
npm install
npm run init # interactive setup wizard
手動セットアップ(ウィザードを省略する場合):
cp .env.example .env
# Fill in TARGET_DEV_URL and optional Slack tokens
次に、src/config/targets.js でルートを設定します。
export const routes = [
{ path: '/', name: 'Home', critical: true, waitFor: 'main' },
{ path: '/login', name: 'Login', critical: true, waitFor: 'form' },
{ path: '/dashboard', name: 'Dashboard', critical: true, waitFor: '[data-testid="dashboard"]' },
{ path: '/settings', name: 'Settings', critical: false, waitFor: null },
];
critical: true— このルートのエラーは#bugs-criticalに送信されますwaitFor— Argus が取得前に待機する CSS セレクター(ページの準備完了を示します)
CLI コマンド
npm run chrome # Launch Chrome with --remote-debugging-port=9222 (auto-detects binary)
npm run doctor # Pre-flight check: Chrome reachable, .mcp.json valid, .env has TARGET_DEV_URL
npm run crawl # Batch audit of all configured routes
npm run compare # Dev vs staging diff (CSS-only if no staging URL)
npm run watch # Passive monitor — polls open Chrome tab every 1s
npm run report:html # Generate reports/report.html from last JSON audit
npm run report:pdf # Export HTML report to A4 PDF (requires: npm install puppeteer)
npm run server # Start Slack slash-command server (port 3001)
npm run init # Interactive setup wizard
npm run test:unit # 562 unit tests — no Chrome required
npm run test:harness # 171-block correctness harness — requires Chrome
npm run test:harness:log # same, but tees full output to harness-results.txt
npm run test:coverage # merged unit + harness coverage gate (requires Chrome)
監視モード — あなた(またはエージェント)の開発中にリアルタイムで監視します。
# Terminal 1: start your app
npm run dev
# Terminal 2: start Argus watcher
npm run watch
# Ctrl+C → stops monitor and writes reports/report.html
Slack スラッシュコマンド(任意のチャンネルから必要に応じて実行):
/argus-retest https://staging.example.com/checkout
トンネル経由でサーバーを公開するには、cloudflared tunnel --url http://localhost:3001 を実行します(無料、アカウント登録不要)。生成された URL を Slack App → Slash Commands の Request URL に設定してください。
GitHub Actions CI — PR ゲート
Argus は複合 GitHub Action として提供されます。各 PR で差分から影響を受けるルートを特定して監査し、その PR が新たに持ち込む検出結果に限ってマージをブロックします(ベースラインを考慮)。PR への冪等なコメントと Check Run も作成します。
リポジトリのシークレットに追加してください(Settings → Secrets → Actions)。
| シークレット | 必須 | 値 |
|---|---|---|
TARGET_STAGING_URL | はい | ステージング環境のベース URL |
SLACK_BOT_TOKEN | いいえ | xoxb-... トークン(HTML のみのモードでは省略) |
SLACK_CHANNEL_CRITICAL | いいえ* | チャンネル ID(Slack を設定する場合に必要) |
SLACK_CHANNEL_WARNINGS | いいえ* | チャンネル ID |
SLACK_CHANNEL_DIGEST | いいえ* | チャンネル ID |
GITHUB_TOKEN | いいえ | PR コメントと Check Runs 用に Actions が自動注入 |
同梱の ワークフロー は、main へのプッシュ時、毎日 UTC 午前 6 時、および手動実行時に動作します。重大な問題が見つかった場合、パイプラインは失敗します。
環境変数
完全なリファレンス(クリックして展開)
| 変数 | デフォルト | 説明 |
|---|---|---|
TARGET_DEV_URL | — | 必須。 開発環境のベース URL |
TARGET_STAGING_URL | — | ステージング URL — argus_compare が有効になります。CSS のみのモードでは省略してください |
SLACK_BOT_TOKEN | — | xoxb-... トークン。ローカルの report.html モードでは省略してください |
SLACK_SIGNING_SECRET | — | /argus-retest スラッシュコマンドの検証に使用します |
SLACK_CHANNEL_CRITICAL | — | 重大なバグ用のチャンネル ID |
SLACK_CHANNEL_WARNINGS | — | 警告用のチャンネル ID |
SLACK_CHANNEL_DIGEST | — | 情報/日次ダイジェスト用のチャンネル ID |
PORT | 3001 | Slack スラッシュコマンドサーバーのポート |
REPORT_OUTPUT_DIR | ./reports | JSON レポートの出力先 |
ARGUS_CONCURRENCY | 1 | ルートのクロールに使用する並列 MCP クライアント数 |
ARGUS_LOG_LEVEL | info | trace / debug / info / warn / error |
ARGUS_LOG_PRETTY | — | 開発時に人間が読みやすいログを出力するには 1 を設定します |
ARGUS_RETRY_ATTEMPTS | 3 | navigate/fill MCP 呼び出しの最大再試行回数 |
ARGUS_WATCH_INTERVAL_MS | 1000 | ウォッチモードのポーリング間隔(ms) |
ARGUS_WATCH_UI_PORT | 3002 | ウォッチモードのウェブダッシュボードのポート |
ARGUS_SOURCE_DIR | — | アプリのソースパス — 環境変数/機能フラグ/デッドルートの分析と、フレームワーク対応の PR ルートマッピング(インポートグラフ:変更されたコンポーネント/スタイルシートから、それを描画するルートのみを特定)が有効になります |
ARGUS_ENV_FILE | — | コードベースとの相互参照に使用するアプリの .env ファイルのパス |
SCREENSHOT_DIFF_THRESHOLD | 0.5 | 環境比較でのピクセル差分のしきい値(%) |
GITHUB_TOKEN | — | PR コメントと Check Runs に使用します |
GITHUB_REPOSITORY | — | owner/repo 形式 |
GITHUB_PR_NUMBER | — | PR コンテキストから Actions によって自動挿入されます |
ARGUS_CRITICAL_THRESHOLD | 1 | マージをブロックするまでに許容する新たな重大項目の数(0 = ブロックしない) |
ARGUS_DIFF_IMAGE_URL | — | PR コメントに埋め込むビジュアル差分画像の URL |
OTEL_EXPORTER_OTLP_ENDPOINT | — | Jaeger/Grafana Tempo 用の OTLP コレクター |
FIGMA_API_TOKEN | — | argus_design_audit に必須です |
FONT_SLOW_MS | 1000 | ウェブフォントの読み込みが遅いと判定するしきい値(ms) |
A11Y_CONTRAST_AA | 4.5 | CVD シミュレーション用の WCAG AA 最小コントラスト比 |
ARGUS_REDACT_SENSITIVE | ON | Aegis による送信時のマスキング。0 で無効になります(Aegis 適用前とバイト単位で同一の出力) |
ARGUS_REDACT_MODE | mask | 一致範囲の処理方法:mask / label / hash / token / drop |
ARGUS_REDACT_HTML | ローカルでは off/CI では ON | 1 でホストされる HTML レポートもマスキングします |
ARGUS_REDACT_VAULT | OFF | 1 を設定すると(ARGUS_REDACT_MODE=token の場合)、ローカルの 0600 ボルトに復元可能な AEGIS_<hmac16> トークンを生成します。npm run report:rehydrate で元に戻せます |
トラブルシューティング
問題が起きたときは、まず
npx -y -p argusqa-os argus-doctorを実行してください。Chrome の到達可能性、MCP 設定の有効性、必須の環境変数キーを確認し、各失敗に対する正確な修正方法を表示します。
Chrome DevTools MCP に接続できない
claude mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
# Restart Claude Code after adding
Slack にメッセージが投稿されない
- トークンが
xoxb-で始まっている必要があります(xoxp-、xoxe-、xapp-ではありません) - 各チャンネルで
/invite @BugBotを実行します - 必須スコープ:
chat:write、files:write、files:read
スクリーンショットが真っ白になる
- ページの読み込みが完了していません。
src/config/targets.jsのpageSettleMsを大きくするか、ルートにwaitForセレクターを追加してください
/argus-retest が "dispatch_failed" を返す
- トンネル URL が変更されています。Slack App → Slash Commands の Request URL を更新し、再インストールしてください
CSS 分析で結果が空になる
- ページが認証の背後にある可能性があります。Argus が制御している Chrome インスタンスでログインしていることを確認してください
CI パイプラインがすぐに失敗する
- Chrome の起動が間に合っていない可能性があります。.github/workflows/argus.yml の
sleep 3をsleep 5に変更してください
Argus と Playwright / Cypress の違い
Argus はユニットテストや E2E テストの代替ではなく、補完するレイヤーです。
| Playwright / Cypress | 生のブラウザー MCP(Playwright MCP、chrome-devtools-mcp) | Argus | |
|---|---|---|---|
| 目的 | ロジックと API コントラクトをテストする | エージェントにブラウザーを操作する手と見る目を与える | エージェント(およびあなた)に、何が壊れているかを判断する力を与える |
| 得られるもの | 作成したスクリプトの合格/不合格 | DOM/コンソール/ネットワークへの生のアクセス | コード化された 149 種類の検出項目、重要度、ベースライン、ノイズフィルタリング、根本原因のヒント |
| メンテナンス | テストファイルを継続的に管理 | セッションごとにチェックを再度プロンプトする | 不要 — レンダリングされたアプリを監査 |
| 実行タイミング | テストスイート内 | エージェントが確認しようと思ったとき | オンデマンド、CI での PR ゲート、または継続的(監視モード) |
| 出力 | 合格/不合格 | エージェントが気づいたこと | スクリーンショット付きの構造化レポート — Slack、HTML、PR コメント — シークレットは編集済み |
既知の制限事項
ハーネスの 998 件のアサーションはすべて成功しています(998/998)。現在、MCP レイヤーや Chrome レイヤーの既知の制限事項はありません。Lighthouse はヘッドレスで実行されます(lighthouse_audit 引数の修正後)。残りのソフトアサーション(パフォーマンストレース、GC に依存するヒープ増加)は、週次の strict-soft レーン(harness-strict.yml)で ARGUS_HARNESS_STRICT_SOFT を介してのみ、カウント対象のハードアサーションに昇格されます。スコープの制限:Chrome/Chromium のみ、ウェブアプリのみ — お使いのスタックとの互換性をご覧ください。
ホスト型 Argus — 創設メンバー
Chrome や npm を実行せずに、履歴、トレンド、スケジュール、チームダッシュボード付きで監査を行いたいですか?Argus Cloud は創設メンバー向けの早期アクセスを提供しています。月額 $19、永久固定(通常価格は $29)です。
このページのオープンソースエンジンは、これからも常に MIT ライセンスで、すべての機能をご利用いただけます。ホスト型プランが提供するのは利便性と履歴の保持であり、検出機能ではありません。
プロジェクト構成
src/
argus.js — single-page audit entry point
mcp-server.js — 9 MCP tools exposed to Claude / any MCP client
orchestration/ — crawl loop, Slack/GitHub dispatch, env comparison, watch mode
utils/ — 32 analysis engines (accessibility, security, performance, PDF, recording, etc.)
adapters/browser.js — CdpBrowserAdapter — wraps all chrome-devtools-mcp calls
config/targets.js — routes, thresholds, auth steps
cli/
init.js — argus init interactive setup wizard
chrome-launcher.js — npm run chrome / argus-chrome — launches Chrome with correct flags
doctor.js — npm run doctor / argus-doctor — pre-flight checks
pr-validate.js — headless CI entry point for GitHub Actions
test-harness/ — 171-block correctness harness, 998 hard assertions, 64 fixture pages
test/unit/ — 562 Vitest unit tests (no Chrome required)
landing/ — Product landing page (React 19 + Vite + Tailwind)
ソース全体のマップ → CLAUDE.md · MCP/DSL リファレンス → SKILL.md
コントリビュート
コントリビュートを歓迎します — フィクスチャページ、新しい検出カテゴリ、フレームワークのルート検出、ドキュメントなど。まずは CONTRIBUTING.md をご覧ください。
- リポジトリをフォークしてブランチを作成します
npm run test:unit— Chrome を使わずに検証します(562 件のテスト)npm run test:harness— 統合テストをすべて実行します(Chrome がポート 9222 で必要です)- PR を作成します — Argus は CI ワークフローを通じて自身を監査します
ライセンス
MIT © ironclawdevs27
Argus Panoptes — ギリシャ神話に登場する、決して眠らない全知全能の巨人。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。