Skip to main content

browser-probe

Exploratory browser testing for real web apps. Use when the user wants a smoke test, scoped verification, exploratory QA, or a balanced read on what works, what feels off, and what is blocked. Supports smoke, balanced, and bug-hunt modes. Uses agent-browser as the execution substrate. Do not use when the user explicitly wants repro-heavy bug artifacts or handoff-grade issue packages; use a more formal repro-first handoff workflow for that.

Source facts

Repository
MylesMCook/browser-probe
Last source activity
March 15, 2026 at 23:53
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
browser-probe
description
Exploratory browser testing for real web apps. Use when the user wants a smoke test, scoped verification, exploratory QA, or a balanced read on what works, what feels off, and what is blocked. Supports smoke, balanced, and bug-hunt modes. Uses agent-browser as the execution substrate. Do not use when the user explicitly wants repro-heavy bug artifacts or handoff-grade issue packages; use a more formal repro-first handoff workflow for that.
allowed-tools
Bash
# browser-probe `browser-probe` is the exploratory testing skill. This skill assumes the current `agent-browser 0.20.x` command surface. Its job is to: - model the app or scoped feature - form hypotheses about likely breakage - test those hypotheses - report confirmed findings, flakes, blocked areas, and verified strengths It is intentionally lighter than a repro-first handoff workflow. ## When to use this skill Use `browser-probe` when the user wants: - a smoke test - feature verification - exploratory QA - a sanity check - a high-signal read on what works and what feels off Do not use `browser-probe` when the user wants: - step-by-step repro packages - screenshots for every step of every issue - repro videos by default - handoff-grade bug reports for another team Those requests belong to a more formal repro-first handoff workflow. If your environment has a dedicated skill for that, route there. Otherwise say this request is out of scope for `browser-probe`. ## Mode selection Choose one mode at the start and state it in the final report: | Mode | When to use it | What changes | | --- | --- | --- | | `smoke` | User says "smoke", "quick", "just verify", or the feature is tiny | Test core flows only. Minimal evidence. | | `balanced` | Default | Explore likely failures and likely strengths. Evidence stays proportional. | | `bug-hunt` | User says "bug hunt", "try to break it", "go hard", or wants deeper adversarial testing | Push harder on edge cases, responsive behavior, and failure investigation. Still single-agent in this pass. | If the user scopes a feature, apply the chosen mode only to that scope. ## Session isolation Every run gets one named `agent-browser` session. Reuse it across all shell calls in that run, but treat that session as live isolation only. Do not assume the same `eval` page context survives every later shell block. At the start of the run: ```bash RAND_SUFFIX="$(openssl rand -hex 2 2>/dev/null || printf '%04x' $((RANDOM % 65536)))" export AGENT_BROWSER_SESSION="probe-$(date +%s)-$RAND_SUFFIX" export AGENT_BROWSER_STATE_FILE="/tmp/${AGENT_BROWSER_SESSION}-auth-state.json" ``` For every shell block that calls `agent-browser`, export the same session first. Before any block that depends on `eval` or structured DOM reads, run the preflight in [references/session-preflight.md](references/session-preflight.md). Keep blocks small and self-contained. Pair navigation with the checks that depend on it rather than assuming a previous block's page context is still valid. Typical read block: ```bash export AGENT_BROWSER_SESSION="${AGENT_BROWSER_SESSION:?unset}" agent-browser open "$TARGET_URL" agent-browser wait --load networkidle agent-browser snapshot -i -C ``` After successful auth, save explicit state if later recovery would need it: ```bash export AGENT_BROWSER_SESSION="${AGENT_BROWSER_SESSION:?unset}" export AGENT_BROWSER_STATE_FILE="${AGENT_BROWSER_STATE_FILE:-/tmp/${AGENT_BROWSER_SESSION}-auth-state.json}" agent-browser state save "$AGENT_BROWSER_STATE_FILE" ``` Do not let separate shell calls drift onto different sessions. Do not rely on `AGENT_BROWSER_SESSION_NAME` for probe correctness. ## Safe probing posture - Use direct `agent-browser`, not `npx agent-browser`. - Use `snapshot -i -C` everywhere. - Re-snapshot after any DOM change. - Prefer `get url`, `get title`, `get count`, `get text`, and `wait --url` when they answer the question directly. - For non-local targets, default to `--allowed-domains`. - Keep the run read-mostly unless the user explicitly asked for state-changing behavior or the scoped test requires it. - If the environment already has an action policy or confirmation categories, use `--action-policy` and `--confirm-actions` instead of freehand mutating a real site. ## Resolve the target If the user provided a URL, use it. If not, probe the common local dev ports: ```bash for port in 3000 3001 4000 4200 5173 5174 8080 8000; do if curl -s -o /dev/null --connect-timeout 1 "http://localhost:$port"; then export TARGET_URL="http://localhost:$port" break elif curl -sk -o /dev/null --connect-timeout 1 "https://localhost:$port"; then export TARGET_URL="https://localhost:$port" break fi done ``` If nothing responds, stop and report that the app is not reachable. After `TARGET_URL` is known, derive `TARGET_HOST` once for later safety flags: ```bash export TARGET_HOST="$(python3 - <<'PY' from urllib.parse import urlparse import os print(urlparse(os.environ['TARGET_URL']).hostname or '') PY )" ``` ## The four stages Do not skip the stages. Keep them concise, but preserve the flow: 1. Stage 1: model the app or scoped feature 2. Stage 2: generate failure hypotheses and strength checks 3. Stage 3: execute targeted tests with proportional evidence 4. Stage 4: report findings, verified strengths, flakes, and blocked areas Read and follow these files in order: | Stage | File | | --- | --- | | 1 | [references/stage-1-model.md](references/stage-1-model.md) | | 2 | [references/stage-2-hypothesize.md](references/stage-2-hypothesize.md) | | 3 | [references/stage-3-execute.md](references/stage-3-execute.md) | | 4 | [references/stage-4-report.md](references/stage-4-report.md) | If the run goes sideways mid-test, use [references/recovery.md](references/recovery.md). ## Evidence rules - `smoke`: chat-first, minimal screenshots - `balanced`: enough evidence to support the conclusion, no artifact theater - `bug-hunt`: more screenshots and targeted debug capture; traces or video only when they genuinely help This skill is not obligated to generate an artifact directory. If the user wants a formal evidence pack, route to a repro-first handoff workflow instead. ## Pattern files Load pattern files only for component types that Stage 1 actually found: | Area | Pattern | | --- | --- | | Navigation | [references/patterns/navigation.md](references/patterns/navigation.md) | | Auth | [references/patterns/auth.md](references/patterns/auth.md) | | Forms | [references/patterns/forms.md](references/patterns/forms.md) | | Data display | [references/patterns/data-display.md](references/patterns/data-display.md) | | Overlays | [references/patterns/overlays.md](references/patterns/overlays.md) | | Search and filters | [references/patterns/search-filter.md](references/patterns/search-filter.md) | This pass is single-agent only. Do not invent swarm behavior.
View on GitHub