Skip to content
Development
Skill

/browser-doctor

Read-only health check on browser-control setup. Verifies browser binary, Playwright MCP Bridge extension presence, token file mode/contents, AIWG MCP registration, provider config injection, and optional workspace allow-list. Outputs pass/fail per check with remediation

From plugin
aiwg
229200 skills199 agents26 commands

Claude Code

$ npx -y skills add jmagly/aiwg --skill browser-doctor --agent claude-code

SKILL.md

browser-doctor.SKILL.md
namespace: aiwg
name: browser-doctor
description: Read-only health check on browser-control setup. Verifies browser binary, Playwright MCP Bridge extension presence, token file mode/contents, AIWG MCP registration, provider config injection, and optional workspace allow-list. Outputs pass/fail per check with remediation commands.
version: 0.1.0-draft
status: draft
platforms: [all]
triggers:
  - "check browser control"
  - "browser doctor"
  - "verify playwright setup"
  - "diagnose browser mcp"
  - "is playwright wired up"

Browser Doctor Skill (DRAFT)

> Status: DRAFT — scaffolded from PoC. Implementation pending Inception outputs.

Purpose

Diagnostic, read-only health check. Tells the user what's wired correctly and what needs `browser-setup` or `browser-reset` to fix.

When This Skill Applies

  • After `browser-setup` to verify the wizard's work
  • Before debugging "why isn't the agent driving my browser?"
  • In CI / smoke tests to detect drift (extension uninstalled, token rotated, provider config rewritten)

Checks (planned)

| # | Check | Pass criteria | On fail | |---|---|---|---| | 1 | Browser binary present | Configured browser path exists and is executable | `aiwg run skill browser-setup` to re-detect | | 2 | Browser version | `<binary> --version` returns a known-good version | Update browser or document version mismatch | | 3 | Extension installed | `<profile>/Extensions/mmlmfjhmonkocbjadbfplnigmagldckm/` exists | Install from Web Store; rerun setup | | 4 | Token file present | `~/.config/playwright-mcp/token` exists | `aiwg run skill browser-reset` | | 5 | Token file mode | mode 600, owner-only | `chmod 600 ~/.config/playwright-mcp/token` | | 6 | Token file non-empty | size > 16 bytes | Re-capture token via reset | | 7 | AIWG MCP registered | `aiwg mcp list` includes `playwright` | `browser-setup` | | 8 | MCP args correct | Args include `--extension` | Re-register with correct args | | 9 | MCP env block | `PLAYWRIGHT_MCP_EXTENSION_TOKEN` in env | Re-register with env block | | 10 | Provider injected | Active provider config contains `playwright` in `mcpServers` | `aiwg mcp inject --provider <p> --servers playwright` | | 11 | Provider env passthrough | Provider config's playwright entry preserves env | Re-inject | | 12 | Probe connect | Spawn MCP, list tools, find `browser_tabs` | See diagnostics; likely token mismatch | | 13 | Allow-list present (optional) | `.aiwg/browser-allowlist.yaml` exists | `cp templates/browser-allowlist.yaml.tmpl .aiwg/browser-allowlist.yaml` | | 14 | Conflicting overrides | No `--mcp-config` wrapper detected for the active provider | Document precedence; remove wrapper or add playwright to it |

Output

Structured JSON suitable for both human display and CI consumption:

{
  "summary": { "passed": 13, "failed": 1, "skipped": 0 },
  "checks": [
    {
      "id": 1,
      "name": "Browser binary present",
      "status": "pass",
      "detail": "/usr/bin/google-chrome (148.0.7778.167)"
    },
    {
      "id": 13,
      "name": "Allow-list present (optional)",
      "status": "warn",
      "detail": ".aiwg/browser-allowlist.yaml not found",
      "remediation": "cp $AIWG_ROOT/agentic/code/addons/browser-control/templates/browser-allowlist.yaml.tmpl .aiwg/browser-allowlist.yaml"
    }
  ]
}

Plain-text rendering for interactive use:

Browser Control — Health Check
==============================

[PASS] 1/14  Browser binary present       /usr/bin/google-chrome (148.0.7778.167)
[PASS] 2/14  Browser version              recent enough
[PASS] 3/14  Extension installed          mmlmfjhmonkocbjadbfplnigmagldckm
[PASS] 4/14  Token file present           ~/.config/playwright-mcp/token
…
[WARN] 13/14 Allow-list (optional)        not scaffolded; consider adding

13 PASS, 1 WARN, 0 FAIL

Constraints

  • Read-only — never writes, never modifies registry or configs
  • Never echoes token value (only checks existence + mode + length)
  • Probe check spawns + kills within a few seconds; no persistent side effects

Open implementation questions

1. Should "probe connect" be opt-in (`--probe`) since it spawns a process? 2. Should we cache last-known-good versions per browser to detect downgrades? 3. How aggressively to flag #14 (conflicting overrides)? In some workspaces (e.g., this one with `claude-role`), the override is intentional.

References

  • `.aiwg/architecture/adr-remote-browser-control.md`
  • `skills/browser-setup/SKILL.md` (this addon)
  • `skills/browser-reset/SKILL.md` (this addon)
Read more
@jmagly
Ships withaiwg

Reusable project context and specialist workflows for the AI tools you already use. Plan software, coordinate specialist reviews, prepare campaigns, investigate incidents, organize research, curate media, and maintain operational knowledge.

229200 skills199 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
229
Star history of jmagly/aiwg on GitHub, a chart by star-history.com

Other skills on aiwg.

agent-loop-ext

agent-loop-ext

Crash-resilient external agent loop with state persistence and CI/CD integration

@jmagly@jmaglyInstall Skill
agent-loop

agent-loop

Detect requests for iterative autonomous agent loops and route to the appropriate loop executor

@jmagly@jmaglyInstall Skill
auto-test-execution

auto-test-execution

Automatically execute tests when code-generating agents modify source files, enforcing the execute-before-return pattern

@jmagly@jmaglyInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about browser-doctor.

Which coding agents can use browser-doctor?
browser-doctor installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.