Commit 05098fc
DX hardening, cbh packaging, and Claude-OSINT integration (#43)
* fix(dx): harden install, package cbh as pipx-installable, fix broken commands
Addresses 6 P1 defects from a DX review (solo bug-bounty hunter persona):
- install: .gitattributes (eol=lf) + CRLF self-heal in install.sh; INSTALL uses bash form
- cli: package cbh as a real pip/pipx console-script (pyproject.toml + cbh/ package +
bundled cbh/data/skill_index.json fallback + scripts/gen_skill_index.py); scripts/cbh.py
kept as a clone shim; recon writes to ./recon when installed
- commands: add /scope backed by a new deterministic engine/scope.py CLI (was called
mandatory in /hunt but missing); reframe /token-scan, /intel, /surface so the skill
path is primary and missing helper scripts are clearly optional
- docs: install capability matrix (plugin vs clone vs pipx); reconcile the authorization
story in /hunt (don't ingest the SOW document != skip scope verification)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(skills): consolidate recon skills as canonical (integration Phase 1)
BugHunter becomes the source of truth for the two recon skills shared with
Claude-OSINT (which now re-exports them).
- offensive-osint: port h1_reference.py (HackerOne hacktivity agent) + dashboard.py
(local recon console) + assets/ font from Claude-OSINT (CRLF->LF); documented in
references/helpers-and-automation.md sec 49-50 + SKILL.md router. references/ split kept;
OSINT's recent change was dashboard-only so no SKILL.md content delta.
- osint-methodology: keep BugHunter's expanded version (1703 vs 455 lines, supersedes
OSINT's); bump version 2.1 -> 2.3 to pass OSINT's 2.2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(dx): correct CRLF docs + scope.py footguns (post-verification)
A 20-agent adversarial verification found the install.sh CRLF self-heal was
non-functional (bash parse-aborts on the CRLF case statement before the guard
runs) and the docs over-promised it; plus two fail-safe scope.py footguns.
- install.sh: remove the dead self-heal block (.gitattributes is the real fix);
INSTALL.md now tells the truth (renormalize an existing CRLF checkout manually)
- engine/scope.py: keep bullets under nested ### sub-headings (was dropping in-scope
assets under default-deny); --in-scope/--out-of-scope are now repeatable flags so a
target placed after them is no longer swallowed
- commands/scope.md: inline example uses repeated --in-scope flags
- .gitignore: anchor scope.md -> /scope.md so it no longer shadows commands/scope.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(skills): add triggers frontmatter to offensive-osint
offensive-osint lacked the `triggers:` field that osint-methodology already has
and that the sibling Claude-OSINT repo's frontmatter lint requires (>=5). Added the
127-entry recon trigger list so the skill is internally consistent and Claude-OSINT
can re-export it without CI failure.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(install): install manifest + safe --uninstall + skip-identical (Phase 3)
Coexistence with the sister bundle Claude-OSINT: each install now records a manifest
of its footprint so uninstall removes only its own files and keeps any skill the other
bundle still owns (the two shared recon skills).
- install.sh: write ~/.claude/.skill-manifests/claude-bughunter.txt; --uninstall removes
tracked skills/commands/hunt.sh + rc line but keeps shared-owned skills; skip re-copying
a skill/command already present and identical (no last-installer-wins clobber)
- INSTALL.md: replace the unsafe rm -rf ~/.claude/skills advice with --uninstall
- README: document safe coexistence with Claude-OSINT
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(cbh): recon->hunt manifest contract (integration Phase 4)
The data handoff between recon and hunt: cbh recon emits recon/<target>/manifest.json,
which cbh surface and the hunt scaffold consume. Turns the conceptual 'OSINT recons,
BugHunter hunts' into a real, tested contract.
- cbh recon: emit manifest.json (schema 1.0) -- assets + ranked_surface (P1/P2/Kill via
host heuristic + classify) + counts; secrets[]/identity_fabric{} left for the
offensive-osint skill's deeper probes to append (shared-container design)
- cbh surface <target>: new subcommand -- read the manifest, print the ranked surface
- hunt.sh: ingest a manifest (2nd arg / $HUNT_MANIFEST / ./recon/<target>/) to seed
scope.md (live hosts) + notes.md (ranked surface)
- docs/recon-manifest.md + recon-manifest.schema.json: the contract spec
- docs/cbh-cli.md, commands/surface.md: document the surface subcommand + manifest
Round-trip verified end-to-end (synthetic + a real 'cbh recon example.com').
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(dx): P2 backlog — --no-shell flag, supply-chain trust section, feedback template
- install.sh: add --no-shell (don't touch shell rc; print the source line to add);
the default path now also echoes the exact line it appended (T2)
- SECURITY.md: 'Verifying what you install' supply-chain trust section — leans on the
existing skill-lint CI, with an explicit 'what this does NOT prove' disclaimer and
pin-to-reviewed-commit guidance, no malware-scanner theater (T13)
- add .github/ISSUE_TEMPLATE/dx_feedback.yml — low-friction 'skill didn't trigger /
first-hunt' DX feedback form (T14)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Brian Richter <richter83.star@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 780caf7 commit 05098fc
30 files changed
Lines changed: 3213 additions & 801 deletions
File tree
- .github/ISSUE_TEMPLATE
- cbh
- data
- commands
- docs
- engine
- scripts
- skills
- offensive-osint
- references
- scripts
- assets
- osint-methodology
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
51 | 55 | | |
52 | 56 | | |
53 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
41 | | - | |
| 40 | + | |
42 | 41 | | |
43 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
44 | 49 | | |
45 | 50 | | |
46 | 51 | | |
| |||
192 | 197 | | |
193 | 198 | | |
194 | 199 | | |
195 | | - | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
196 | 203 | | |
197 | 204 | | |
198 | | - | |
199 | | - | |
200 | | - | |
201 | | - | |
202 | | - | |
203 | | - | |
204 | | - | |
| 205 | + | |
| 206 | + | |
205 | 207 | | |
206 | | - | |
207 | | - | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
208 | 214 | | |
209 | | - | |
210 | | - | |
211 | | - | |
| 215 | + | |
212 | 216 | | |
213 | | - | |
214 | | - | |
215 | | - | |
| 217 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
56 | 68 | | |
57 | 69 | | |
58 | 70 | | |
| |||
249 | 261 | | |
250 | 262 | | |
251 | 263 | | |
252 | | - | |
| 264 | + | |
253 | 265 | | |
254 | 266 | | |
255 | 267 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
51 | 69 | | |
52 | 70 | | |
53 | 71 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
0 commit comments