From dev-team
Launches a headless browser to navigate URLs, take screenshots, click elements, and fill forms. Useful for visual verification, e2e testing, and interactive debugging.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev-team:browse <url> [--screenshot <path>] [--click <selector>] [--fill <selector> <value>] [--wait <ms>] [--viewport <WxH>]<url> [--screenshot <path>] [--click <selector>] [--fill <selector> <value>] [--wait <ms>] [--viewport <WxH>]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Role: worker. This command provides browser-based interaction for visual verification and e2e testing.
Role: worker. This command provides browser-based interaction for visual verification and e2e testing.
You have been invoked with the /browse command.
Arguments: $ARGUMENTS
<url> (required) — the URL to navigate to--screenshot <path>: Save screenshot to this path (default: tmp/screenshots/<timestamp>.png)--click <selector>: CSS selector to click after page load--fill <selector> <value>: CSS selector and value for form input (can be repeated)--wait <ms>: Wait this many milliseconds after page load (default: 1000)--viewport <WxH>: Viewport dimensions (default: 1280x720)Run:
npx playwright --version 2>/dev/null
If Playwright is not available, ask the user:
Playwright is required for browser interaction. Run
/project-initto set up this repo's tooling (installs Playwright + Chromium for frontend projects), or install it directly now:npx playwright install chromium
Do not proceed until Playwright is confirmed available.
mkdir -p tmp/screenshots
Write a temporary Node.js script and execute it with node. Use Playwright's API directly for reliable, scriptable interaction.
Template (adapt based on parsed arguments):
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({
viewport: { width: VIEWPORT_WIDTH, height: VIEWPORT_HEIGHT }
});
const page = await context.newPage();
try {
await page.goto('URL', { waitUntil: 'networkidle', timeout: 30000 });
await page.waitForTimeout(WAIT_MS);
// -- Click actions (if --click provided) --
// await page.click('SELECTOR');
// -- Fill actions (if --fill provided) --
// await page.fill('SELECTOR', 'VALUE');
// -- Screenshot --
await page.screenshot({ path: 'SCREENSHOT_PATH', fullPage: true });
console.log('Screenshot saved to: SCREENSHOT_PATH');
console.log('Page title:', await page.title());
console.log('Page URL:', page.url());
} catch (err) {
console.error('Browser error:', err.message);
// Take a screenshot of the error state if possible
try {
await page.screenshot({ path: 'SCREENSHOT_PATH', fullPage: true });
console.log('Error-state screenshot saved to: SCREENSHOT_PATH');
} catch {}
} finally {
await browser.close();
}
})();
Write the script to a temp file, execute it, then clean up:
node /tmp/browse-action.js && rm /tmp/browse-action.js
Use the Read tool to view the screenshot image. Claude's multimodal capabilities will interpret the visual content.
Describe what you see:
Provide a summary:
## Browse Results
- **URL**: <final URL after any redirects>
- **Title**: <page title>
- **Viewport**: <width>x<height>
- **Screenshot**: <path to screenshot>
- **Actions performed**: <list of click/fill actions, or "none">
- **Observations**: <what you see in the screenshot>
If the user's goal appears to be testing or verification, note any issues found and suggest next steps.
/browse to continue/project-init to set up the repo's tooling, or guide them through npx playwright install chromiumWhen invoked non-interactively by the inline review pipeline (Stage 3 browser verification), the caller provides:
[data-testid="user-list"], .dashboard-header)In this mode:
Navigate to the URL with a 30-second timeout
Wait for network idle
For each selector, verify it exists and is visible
Take a full-page screenshot as verification evidence
Return a structured result:
- url: <final URL>
- selectors_found: [list of selectors that were visible]
- selectors_missing: [list of selectors that were not found or not visible]
- screenshot: <path to screenshot>
- status: pass | fail
- issues: [description of any rendering problems observed]
If the connection times out or refuses (dev server not running), return:
- status: skipped
- reason: "Dev server not reachable at <URL>"
This result feeds into the review loop — fail triggers correction iterations (max 2), skipped is logged as a warning and does not block the build.
For complex flows (login → navigate → fill form → submit), chain actions in a single script rather than multiple /browse invocations. Build the full action sequence in the Node.js script.
If the user describes a multi-step flow conversationally, translate it into the appropriate Playwright action sequence.
npx claudepluginhub bdfinst/agentic-dev-team --plugin dev-teamAutomates browser interactions for web testing, form filling, screenshots, and data extraction. Useful when users need to navigate websites, interact with pages, fill forms, test apps, or extract data.
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Invoke when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
Guides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.