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
- taecontrol/skillstheir own version, first seen Nov 8, 2026
- jocarrd/crux-agentstheir own version, first seen Nov 8, 2026
- blamechris/chroxytheir own version, first seen Nov 8, 2026
- griffinhilly/claude-code-synthesistheir own version, first seen Nov 1, 2026
- mkarami313/Claude-skilltheir own version, first seen Nov 1, 2026
- holutahyour/claude-skillstheir own version, first seen Oct 20, 2026
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.
genomewalkerSkilllearn
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
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 3 projects that use this
NVIDIASkillresearch
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
Other versions22 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 22
- Use-Tusk/drift-node-sdk★ 173same name
- danpeg/bug-hunt★ 144same name
- EthanReedLabs/sulde★ 99same name
- griffinhilly/claude-code-synthesis★ 67same name
- jedijashwa/pullmark★ 13same name
- blamechris/chroxy★ 8same name
- yeaight7/agent-powerups★ 6same name
- jocarrd/crux-agents★ 4same name
- coderPerseus/skills★ 2same name
- garthcodes/claude-skills★ 2same name
12 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository34 other files it gives its agents.
- afkSkill
- apple-contactsSkill
- apple-devSkill
- apple-notesSkill
- apple-photosSkill
- catch-upSkill
- cherriSkill
- chrome-controlSkill
- claude-sessionsSkill
- coordinatorSkill
- discountsSkill
- forge-skillSkill
- groupmeSkill
- herdr-crewSkill
- iconsSkill
- imsgSkill
- language-selectionSkill
- laterSkill
- mac-controlSkill
- nix-mechanicsSkill
- notion-cliSkill
- posthogSkill
- quotaSkill
- redditSkill
- rustSkill
- scoutSkill
- semverSkill
- social-contentSkill
- spotifySkill
- travelSkill
- validate-ideaSkill
- verdictSkill
- web-reconSkill
- whatsappSkill
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
- Distinctive: line 16
Follow the host environment's browser policy.
- Distinctive: line 19
Do not attach to a tab with work the caller needs to preserve.
- Distinctive: line 23
If those rules cannot cover the authorized scope, use a fixture instead.
- Distinctive: line 24
Keep artifacts outside source control in a private directory.
- Very specific: line 32
Run --help for the complete interface.
- Very specific: line 41
Default widths are phone 390, laptop 1366 and desktop 1920 CSS pixels.
- Very specific: line 82
If normal blank navigation fails, cleanup reports cleanup_error, freezes the target and retries blank navigation through CDP.
- Distinctive: line 119
Do not equate a zero exit code with a clean site: it means the bounded run ended normally, including a login stop.
“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.
Files
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 90Default 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
| Artifact | Purpose |
coverage.json | Visited URLs/widths, action types/counts, unique controls, guard skips and stopping reason |
events.ndjson | Ordered actions, selectors, URLs, seed metadata, observations and candidates |
*.png | Viewport screenshots before/after actions, keyed by step and width |
summary.json | Compact 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> -vTests 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.
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
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.

