bughunt
Skill28 starsChanged 8 months agoMITView on GitHub
Fully autonomous bug hunting pipeline — discover bugs in a scoped area using parallel subagents, independently triage each finding, fix confirmed issues with subagents, then audit all fixes against repo constraints and target platforms. Runs end-to-end without user interaction.
8 other projects use a version of this.
Adopted by
Most recently taken up by
- joi-fairshare/agentic-workflowtheir own version, first seen Nov 8, 2026
- Tcuzzo/backs-aios-skillstheir own version, first seen Nov 3, 2026
- jthorare/agentic-workflowtheir own version, first seen Oct 25, 2026
- enkr1/claude-code-skillstheir own version, first seen Oct 20, 2026
- cskwork/skillstheir own version, first seen Oct 9, 2026
- PLC-lang/rustytheir own version, first seen Oct 9, 2026
Used with
Projects with it also use verify-app and review.
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.
martinappbergSkillverify-app
Verify runtime-observable Chimaera changes end to end against the real daemon, UI, and PTY layer.
Also in 3 projects that use this
SentrySkillreview
Fixture review skill.
Also in 3 projects that use this
Other versions8 projects use a version of this.
Word for word · 1
- av/harbor★ 3.3k100% same
Edited · 0
None found.
Wrote their own version · 7
- PLC-lang/rusty★ 372same name
- drafthq/draft★ 40same name
- cskwork/skills★ 3same name
- joi-fairshare/agentic-workflow★ 3same name
- jthorare/agentic-workflow★ 3same name
- Tcuzzo/backs-aios-skills★ 2same name
- enkr1/claude-code-skills★ 1same name
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 repository25 other files it gives its agents.
- agent-integration-testingSkill
- annealSkill
- article-factorySkill
- autoresearchSkill
- boost-modulesSkill
- bugbashSkill
- catalog-deslopSkill
- disciplineSkill
- factual-communicationSkill
- ideateSkill
- improve-skillSkill
- make-videoSkill
- mosaic-writingSkill
- preact-buildless-frontendSkill
- pull-llamacpp-modelSkill
- run-llmsSkill
- sandcastleSkill
- superclaudeSkill
- timeboxed-iteratingSkill
- timeframe-researchSkill
- tinygradSkill
- turso-dbSkill
- use-coding-agentsSkill
- workgraphSkill
- workmachineSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 13 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
13
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 35
Read the target files yourself.
- Distinctive: line 42
Write the section list and file ranges, then proceed immediately to Discovery.
- Distinctive: line 44
Create the output directory and initialize the report:
- Distinctive: line 54
Read them. Extract every previously fixed finding and every previously disputed finding with its rejection reason.
- Distinctive: line 120
Update the report with triage results.
- Distinctive: line 157
Check for overlapping edits in the same file — resolve conflicts autonomously (prefer the fix for the higher-severity issue.
- Very specific: line 159
Run syntax/parse checks on every modified file (bash -n, python -m py_compile, tsc --noEmit, etc.)
- Distinctive: line 164
Verify every fix against repo-level constraints.
- Distinctive: line 168
Before auditing, identify what constraints exist in the repo:
- Distinctive: line 192
If a fix fails the audit:
- Distinctive: line 200
Fully autonomous: Run all five phases without stopping for user input.
- Distinctive: line 201
Subagents are your primary tool: Use the Agent tool aggressively.
- Distinctive: line 207
Report incrementally: Update the report after each phase completes.
- Distinctive: line 208
Log, don't ask: Write findings, triage verdicts, fix summaries, and audit results into the report as you go.
“Common” is measured: kept by at least 6 in 10 of the 6 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
Bughunt
Fully autonomous pipeline: find, triage, fix, and audit bugs in a scoped area of a codebase. Five phases, each using subagents to parallelize work and provide independent assessments.
This skill runs end-to-end without asking the user any questions. Do not pause for confirmation, approval, or input between phases. Make autonomous decisions at every step — section splits, severity judgments, fix strategies, conflict resolution. Log progress to the report so the user can review the final output, but never block on user input.
Parameters
| Parameter | Default | Example override |
| Scope | (required) | the install script, src/auth/, the CLI argument parser |
| Sections | auto-split from scope | split by platform, one per module |
| Platforms | inferred from repo | Linux, macOS, WSL |
| Output | /tmp/bughunt-output/<project>/ | Output directory: ./qa/ |
<project> is the basename of the repo root (e.g. /tmp/bughunt-output/harbor/). The output directory — and therefore prior-run memory — is always per-project; never read or write another project's reports.
Workflow
1. Orient Read the target code, identify natural section boundaries
2. Discover Parallel bugbash subagents, one per section
3. Triage Independent subagent per finding — confirm, dispute, or adjust severity
4. Fix Subagent per confirmed issue — investigate, implement, self-review
5. Audit Verify all fixes against repo constraints and target platformsPhase 1 — Orient
Read the target files yourself. Identify section boundaries for parallel discovery. Do not delegate this phase — you need the full picture to write good subagent prompts in later phases.
Good splits follow the code's own structure:
- Per platform/backend — if the code branches by OS, distro, or provider
- Per layer — argument parsing, core logic, error handling, output formatting
- Per module — one subagent per file or logical unit
Write the section list and file ranges, then proceed immediately to Discovery. Each section needs enough context in isolation for a subagent to reason about it.
Create the output directory and initialize the report:
mkdir -p {OUTPUT_DIR}/evidencePrior-run memory
Before launching discovery, check the output directory for reports from previous runs (report.md, report-*.md). Prior-run memory is per-project: only reports under this project's output directory count. If using the default location, also check the legacy global /tmp/bughunt-output/ root for reports whose stated scope matches this repo, and migrate them into the project subdirectory. If any exist:
- Read them. Extract every previously fixed finding and every previously disputed finding with its rejection reason.
- Preserve the old report (rename to
report-<n>.md) — never overwrite it. - Pass relevant prior findings into the discovery prompts ("these were already found and fixed/rejected: ... do not re-report them") and dedupe new findings against them before triage. A finding that matches a previously disputed one inherits its DISPUTED verdict unless new evidence contradicts the old reasoning.
- Note the severity trend across runs in the new report. If this run's findings are all lower-severity than the last run's, say so explicitly — that is the expected convergence, not a shortfall.
Phase 2 — Discover
Launch one subagent per section using the Agent tool, all in parallel (send all Agent calls in a single message). Each subagent:
- Reads the code for its section
- Looks for real bugs — not style nits, not hypotheticals
- Returns structured findings
Subagent prompt template
You are bugbashing [project]. Your section is [section name] in
[file path].Read the file and focus on [specific areas and line ranges].
For each real bug, provide:
- Issue ID (e.g., SEC-001)
- Severity (Critical/High/Medium/Low)
- Description
- File:Line
- Repro scenario
- Evidence (code snippet)
- Expected vs Actual
Only report bugs a real user could hit — no style nits or hypotheticals.
After all discovery agents return
Compile findings into the report. Deduplicate issues reported by multiple sections. Assign each a canonical ID. Update summary counts. Proceed immediately to Triage — do not wait for user input.
Phase 3 — Triage
Launch one subagent per finding using the Agent tool, all in parallel (send all Agent calls in a single message). Each triage agent:
- Reads the relevant code fresh (no access to the discovery agent's reasoning)
- Independently assesses whether the bug is real
- Checks preconditions — are they realistic or contrived?
- Evaluates severity — does it match the claimed impact?
- Returns a short verdict
Triage subagent prompt template
You are an independent triage reviewer. Read the code, assess whether the bug is real.
Finding [ID] (claimed [severity]): [one-paragraph description with file:line]
Read
[file]lines [range]. Answer:
- Is this a real bug? Can a user actually hit it?
- What preconditions are required? How likely are they?
- Is [severity] the right severity?
- Are there mitigating factors the original report missed?
Return a short verdict: CONFIRMED / DISPUTED / DOWNGRADE with reasoning (under 200 words).
Verdicts
- CONFIRMED — bug is real at (or near) the stated severity. Proceeds to fix.
- DOWNGRADE — bug is real but severity is wrong. Adjust the severity. Fix it only if the post-downgrade severity is Medium or higher; otherwise record it in the report as a known low-severity issue and do not fix. Cheapness of the fix is not a reason to apply it — "downgraded but it's a one-liner" is how a run inflates its fix count.
- DISPUTED — bug is not real, requires impossible preconditions, or has zero practical impact. Keep it in the report's rejection table (with the refuting reason) — future runs dedupe against it — but never fix it.
The fix bar does not flex to fill the run. A run that confirms zero fixable bugs is a successful run — report "no findings above the fix bar" and the full rejection table, and stop. Do not lower the threshold because the report would otherwise look thin. The rejection table is a first-class deliverable: a well-refuted false positive is worth as much as a fix.
Update the report with triage results. Proceed immediately to Fix — do not wait for user input.
Phase 4 — Fix
Launch one subagent per confirmed issue using the Agent tool, all in parallel (send all Agent calls in a single message). Each fix agent:
- Reads the relevant code and surrounding context
- Investigates the root cause (not just the symptom)
- Implements the minimal correct fix
- Self-reviews the fix against specific criteria
- Returns the exact edit (old_string / new_string) — does NOT apply it
Fix subagent prompt template
You are fixing a confirmed [severity] bug in
[file].Bug [ID]: [description]
Read [file] lines [range].
Fix requirements:
- [specific behavioral requirements for this fix]
- Keep the fix minimal — don't restructure surrounding code
Return: the exact
old_stringandnew_stringfor an Edit tool call. Include enough surrounding context to make the match unique.Self-review: after writing the fix, re-read it and check:
- [fix-specific verification questions]
- Does the fix handle the error/edge case that triggered the bug?
- Does it introduce any new failure modes?
Why agents return edits instead of applying them
Multiple agents may edit the same file. Applying edits in parallel causes conflicts. Instead, collect all proposed edits, review them for overlap, then apply sequentially.
After all fix agents return
- Check for overlapping edits in the same file — resolve conflicts autonomously (prefer the fix for the higher-severity issue; if equal, keep the more minimal edit)
- Apply edits sequentially, one file at a time
- Run syntax/parse checks on every modified file (
bash -n,python -m py_compile,tsc --noEmit, etc.) - Proceed immediately to Audit — do not wait for user input
Phase 5 — Audit
Verify every fix against repo-level constraints. This is where platform-specific bugs, lint violations, and convention breaks get caught.
5a. Discover constraints
Before auditing, identify what constraints exist in the repo:
- Lint rules — project linters, custom rules, CI checks
- Target platforms — which OS/arch/runtime must the code support?
- Portability rules — POSIX vs GNU, shell compatibility, min language versions
- Conventions — error handling patterns, logging style, naming
Sources: CI configs, linter configs, CLAUDE.md, CONTRIBUTING.md, Makefile targets, existing lint rules/fixtures.
5b. Audit each fix
For each fix, check:
- Lint — run the project's linter on modified files. If it has custom rules, check those specifically.
- Platform portability — trace every command, flag, and function call in the fix. Verify availability on all target platforms. Common traps:
- GNU-only flags (
head -c,readlink -f,grep -P,sed -iwithout backup suffix) - macOS BSD vs GNU coreutils differences
- bash-isms in code that runs under
/bin/sh - Commands missing in minimal/container environments (
timeout,getent,sudo)
- GNU-only flags (
- Convention match — does the fix follow the patterns used in surrounding code?
- Interaction — do any fixes conflict with each other when applied together?
5c. Fix audit failures
If a fix fails the audit:
- Identify the exact constraint violation
- Determine the portable/correct alternative
- Apply the correction directly (no subagent needed for mechanical replacements)
- Re-run the relevant check to confirm
Guidance
- Fully autonomous. Run all five phases without stopping for user input. Make every decision yourself — section splits, severity calls, fix strategies, conflict resolution, audit judgments. The user reviews the final report, not intermediate checkpoints.
- Subagents are your primary tool. Use the Agent tool aggressively. Every phase after Orient must use parallel subagents. Launch all subagents for a phase in a single message to maximize parallelism. Do not do sequentially what subagents can do in parallel.
- Subagents are independent. Each subagent sees only its prompt and the code it reads. It has no memory of other phases or other agents. Write prompts that are fully self-contained.
- Discovery is broad, triage is adversarial. Discovery agents should cast a wide net. Triage agents should be skeptical — their job is to kill false positives, not confirm findings.
- Fixes are minimal. A fix agent should change the fewest lines possible to resolve the confirmed bug. No cleanup, no refactoring, no "while I'm here" improvements.
- The audit catches what agents miss. Agents don't have cross-platform knowledge baked in. The audit phase exists specifically to catch platform-specific mistakes, lint violations, and convention breaks that individual fix agents can't know about.
- Null results are valid. Repeated runs over the same scope must converge toward zero fixes. If they don't, the fix bar is floating — tighten it, don't celebrate the yield. Judge a run by the quality of its rejections and the severity of what it confirms, never by fix count.
- Report incrementally. Update the report after each phase completes. If the session is interrupted, the work so far is preserved.
- Log, don't ask. Write findings, triage verdicts, fix summaries, and audit results into the report as you go. The user reads the final report — they do not participate during execution.
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.

