agentleFS
alexjmiller5alexjmiller5/agent-config-public/skills/bug-hunt/SKILL.md

bug-hunt

Skill0 starsChanged 42 days agoMITView on GitHub

Use when asked to bug-hunt, dogfood, exploratory-test, or check a website for broken interactions and responsive UI problems, especially without an existing end-to-end test suite.

22 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use learn, ship and 1 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • genomewalkerSkill

    learn

    Learn from web sources, generate SKILL.md, and store key patterns in soul memory. Trigger keywords: learn, skill-gen, web-learn, documentation, tutorial.

    Also in 3 projects that use this

  • AWSSkill

    ship

    Finalize dev work on an issue branch — update docs, push, and open a PR.

    Also in 3 projects that use this

  • NVIDIASkill

    research

    Before designing a feature, research how comparable libraries solve the problem, check best practices, known pitfalls, and upstream changes. Use when starting a new feature, investigating an unfamiliar area, or the user asks to research something.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 5 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 19 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Follow the host environment's browser policy.

    line 16
  2. Distinctive:

    Do not attach to a tab with work the caller needs to preserve.

    line 19
  3. Distinctive:

    If those rules cannot cover the authorized scope, use a fixture instead.

    line 23
  4. Distinctive:

    Keep artifacts outside source control in a private directory.

    line 24
  5. Very specific:

    Run --help for the complete interface.

    line 32
  6. Very specific:

    Default widths are phone 390, laptop 1366 and desktop 1920 CSS pixels.

    line 41
  7. Very specific:

    If normal blank navigation fails, cleanup reports cleanup_error, freezes the target and retries blank navigation through CDP.

    line 82
  8. Distinctive:

    Do not equate a zero exit code with a clean site: it means the bounded run ended normally, including a login stop.

    line 119

“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Bug hunt

Explore a website, gather reproducible evidence, and manually verify candidate bugs. A seeded walk supplies breadth; it does not prove the site is correct.

Before walking

  • Confirm the authorized origin, starting routes, production versus fixture, and any excluded paths. Prefer a local fixture or staging with synthetic data. Existing authorization counts; do not repeatedly ask for it.
  • Follow the host environment's browser policy. Have the caller create/group a disposable tab and supply its exact target ID and CDP endpoint. Never choose the first tab, create an ungrouped tab, or close a shared browser. Do not attach to a tab with work the caller needs to preserve.
  • Inspect the app's analytics endpoints and sensitive GET routes when source is available. The walker blocks all other origins and recognizable telemetry, auth and mutation paths, but custom same-origin endpoints need manual review. If those rules cannot cover the authorized scope, use a fixture instead.
  • Keep artifacts outside source control in a private directory. Screenshots, URLs, labels and console messages can contain sensitive data. Redact before sharing; never include session credentials in a report.

Run

Requires Python 3.11+, uv, and an already running Chrome CDP endpoint. The PEP 723 script resolves Playwright; it does not install or launch a browser. Run --help for the complete interface. Substitute caller-provided values:

uv run --script <skill-dir>/scripts/walk.py 'https://example.com/' \
  --cdp http://127.0.0.1:9222 --target <existing-target-id> \
  --output <new-private-artifact-directory> \
  --seed 17 --steps 30 --seconds 90

Default widths are phone 390, laptop 1366 and desktop 1920 CSS pixels. --widths overrides them. These are viewport checks, not touch/device emulation. Steps and time are total across widths; cleanup gets at most five additional seconds: four for normal cleanup, with the remaining second reserved for a shielded emergency close. A time limit can prevent later widths from being visited. Use separate runs with fresh output directories for important deep links and different seeds. A seed repeats choices only when the rendered state and timing match.

The walker prefers unvisited controls, then revisits randomly. It follows same-origin links, clicks visible controls, selects options and enters synthetic search text (--query). It skips forms, downloads, new-tab links and controls with recognizable risky labels. It stops at a visible login wall; do not sign in, bypass a CAPTCHA, or expand scope as part of the walk.

Guard limits

The selected target intercepts requests before sending them, including redirect hops. It blocks non-GET/HEAD/OPTIONS methods, other origins, common analytics paths and auth/mutation hints. It bypasses service workers for the target and suppresses new popups, workers, WebSockets and WebRTC in guarded documents.

This is not a read-only guarantee. GET can mutate state, trigger a cache write, log visits or send telemetry. Application code can persist selections or other data in localStorage, cookies and IndexedDB. The walker does not isolate or restore this state: restoring shared-origin storage could overwrite another tab's changes. Use synthetic state and a separate caller-managed profile when state preservation matters. The guard cannot undo prior requests or pre-existing background channels. It is not a security sandbox for adversarial JavaScript. Third-party assets and legitimate POST-based reads are blocked too, so the guard may break the UI. Asset blocks (including fonts and logos) can change layout. Include them as explicit test limitations using guard_resource_types and the blocked records' resource_type/URL fields; do not report their resulting layout as a confirmed site bug. Do not weaken the guard on production simply to improve coverage.

Cleanup navigates the supplied tab to about:blank while the guard is active, waits for navigation commit, verifies the main-frame URL through CDP (without waiting for a page JavaScript execution context), removes interception/hooks, restores viewport metrics where possible, then disconnects. Normal cleanup leaves the existing tab and shared Chrome open. The caller owns grouping, final viewport resets and cleanup.

If normal blank navigation fails, cleanup reports cleanup_error, freezes the target and retries blank navigation through CDP. Freeze alone is not sufficient: Chrome can thaw the page when the connection ends. A verified committed blank is required; otherwise cleanup emergency-closes only the exact supplied disposable target through a browser-scoped CDP session, checks Chrome's success response, and verifies that the target disappeared. It never closes the browser or other tabs. cleanup_freeze, cleanup_recovered and cleanup_emergency_close record the outcome. If the connection cannot blank or close the target, the page may still execute; the report states this explicitly. Inspect/reset an affected target before reuse; never kill shared Chrome.

Read and replay

ArtifactPurpose
coverage.jsonVisited URLs/widths, action types/counts, unique controls, guard skips and stopping reason
events.ndjsonOrdered actions, selectors, URLs, seed metadata, observations and candidates
*.pngViewport screenshots before/after actions, keyed by step and width
summary.jsonCompact run outcome; not a bug count

A screenshot timeout is a candidate observation; it does not abort the walk. The overall deadline still applies, and snapshots without a screenshot record screenshot: null.

Blocked operations have classification: guard_skip: they are not bugs. Console/page errors, HTTP failures, overflow, clipping, overlap and dead clicks are candidate records until replayed. A dead click only means the sampled DOM/form state did not change; downloads, canvas work and delayed feedback can look identical. Clipping may be intentional ellipsis, and overlap may be an expected overlay. The DOM scan inspects at most 5,000 elements; it does not walk shadow roots or frame documents. Screenshots need human visual inspection.

Replay promising candidates through the same guard and exact action sequence. Separate guard-induced failures from site defects. Deduplicate by root cause. Report confirmed issues with severity, route, width, seed, minimal reproduction, expected/actual behavior and screenshot evidence. List unreproduced candidates separately. Include coverage and exclusions even when no bugs are confirmed. Do not equate a zero exit code with a clean site: it means the bounded run ended normally, including a login stop. Fix only within the caller's authorized scope.

Verify changes to this skill

uv run --script <skill-dir>/scripts/test_walk.py \
  --cdp http://127.0.0.1:9222 --target <disposable-grouped-target-id> -v

Tests serve local synthetic fixtures and require a locally reachable browser. They reuse and leave open the supplied tab. They check prohibited requests at the server, UI signals, login stops, budgets, strict target selection and cleanup.

Upstream ideas and credits

Discovered through skills.sh webapp-testing and agent-browser; no upstream skills were installed or copied.

  • Anthropic webapp-testing: inspect rendered state before acting; use Python Playwright and capture console evidence.
  • Vercel dogfood: collect reproduction evidence as issues appear and distinguish exploration from confirmed findings. Its authentication and broad interaction workflow is intentionally not adopted here.
  • Playwright Route and Chrome Fetch protocol: request interception and redirect constraints inform the target-scoped guard.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.