Skip to content

fix: repoint stale tools/ paths from the bughunter/ restructure (#175) - #180

Merged
shuvonsec merged 1 commit into
mainfrom
fix/175-stale-tool-paths
Oct 23, 2026
Merged

shuvonsec merged 1 commit into
mainfrom
fix/175-stale-tool-paths

Conversation

@shuvonsec

Copy link
Copy Markdown
Member

Closes #175.

The tools/ → bughunter/tools/ move (025367b / #148) updated the script locations but not the call sites, so command/skill docs pointed bash|python3 tools/* at paths that no longer exist. An agent told to run python3 tools/hunt.py got No such file or directory; the stale .gitignore anchor also left the test suite dirtying the tree.

What's in here

  • Repointed 259 references tools/<file> → bughunter/tools/<file> across commands/, skills/, bughunter/agents/, bughunter/tools/README.md, CLAUDE.md, AGENTS.md, README.md, and the live docs (TUTORIAL, auth-sessions, mcp-tools, research-learning-schema), plus tests/benchmark/README.md. All flags and arguments preserved verbatim (e.g. --quick, --scan-only, --setup-wordlists).
  • .gitignore: memory/leads/ → **/memory/leads/ so it matches both the repo-root layout and bughunter/memory/leads/ where the lead board writes now. Verified with git check-ignore on both paths.
  • CI guard (new tool-paths job in tests.yml): fails if any bash|python3 <dir>/<file>.{py,sh} in commands//skills/ doesn't resolve. Bare filenames (external tools) are skipped. This stops the regression recurring — including when older branches (e.g. feat(report-gate): enforce prove-or-suppress at report time (/report gate) [Verification Spine 3/3] #157) merge with stale paths.
  • php_filter_chain_generator.py: documented as the external synacktiv tool (git clone …) rather than implying it ships here — it was broken independently of the restructure.

Approach note

I kept the robust path form (bughunter/tools/X) rather than routing everything through the bughunter CLI. Only recon and hunt have CLI subcommands, and hunt.py/recon_engine.sh expose flags the subcommands don't (--cve-hunt, --zero-day, --setup-wordlists, …), so mapping to the CLI would silently drop behavior. The CI guard is what keeps paths honest across future moves.

Scope left out (deliberately)

Historical records untouched: CHANGELOG.md, docs/phase*.md, docs/TODOS.md, docs/CAPABILITY-GAPS.md. No code under bughunter/ changed.

Test

  • Every referenced bughunter/tools/* path exists (checked).
  • New guard PASSES on this tree and CATCHES an injected tools/recon_engine.sh (mutation-checked).
  • git check-ignore matches memory/leads/ at both root and bughunter/ depth.
  • Docs-only + .gitignore + workflow; no Python/shell code touched, so the pytest matrix is unaffected.

Credit to @spierenburg for the precise report and repro.

What: repointed 259 `tools/<file>` references to `bughunter/tools/<file>` across command/skill/agent docs, CLAUDE.md, AGENTS.md, README and the live docs; fixed the .gitignore lead-board anchor to match both layouts; added a CI job that fails on unresolvable command/skill tool paths; documented php_filter_chain_generator.py as the external synacktiv tool (not shipped here)
Why: #175 — the tools/ -> bughunter/tools/ move (025367b / #148) did not update call sites, so agents hit "No such file or directory" and the test suite dirtied the working tree
Update: 57 files (55 docs rewritten, .gitignore, .github/workflows/tests.yml); historical CHANGELOG / docs/phase* / TODOS / CAPABILITY-GAPS left as-is; no code under bughunter/ touched
Test: every referenced bughunter/tools/* path exists; new guard PASSES on the fixed tree and CATCHES an injected stale path; git check-ignore matches memory/leads/ at both root and bughunter/ depth
@shuvonsec
shuvonsec merged commit 16dabf0 into main Oct 23, 2026
4 checks passed
@shuvonsec
shuvonsec deleted the fix/175-stale-tool-paths branch October 23, 2026 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bughunter/ restructure left 54 tool invocations pointing at the old tools/ path

1 participant