skills/appmap/SKILL.md
Use when mapping a local application source tree or extracted binary source with /appmap to produce static AppMap artifacts and generated brainstorm specs before handing execution to zero_day_team or apk_team.
npx skillsauth add ghostonbutterbread/bug-bounty-harness appmapInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Map a local application and forge focused brainstorm specs from source/boundary/sink evidence.
/appmap <program> <target_path> [--target-kind <kind>] [--mode baseline|focus] [--focus baseline|rce|renderer-content-trust] [--from-baseline <run_root>] [--write-specs] [--output-mode standalone|canonical] [--family <family>] [--lane <lane>] [--promote-to-brainstorm]
/appmap <program> <target_path> --research-mode local|web|hybrid [--research-query WORD [WORD ...]] [--research-seed <path>] [--research-source-url <https-url>]
/appmap <program> <target_path> --mode baseline [--electronegativity-root <controlled_run_dir>]
/appmap --list-handoffs --brainstorm-root <brainstorm_root>
/appmap --campaign-status --brainstorm-root <brainstorm_root>
/appmap --validate-handoff <promoted_spec>
/appmap --plan-handoff <promoted_spec> [--brainstorm-hypothesis H001]
Examples:
/appmap canva /home/ryushe/Shared/binaries/canva/exe/input/app_asar --target-kind electron-exe --focus rce --write-specs
/appmap canva /home/ryushe/Shared/binaries/canva/exe/input/app_asar --target-kind electron-exe --mode baseline
/appmap canva --from-baseline ~/Shared/binaries/canva/exe/appmap/<baseline-run> --focus renderer-content-trust --write-specs
/appmap canva /home/ryushe/Shared/binaries/canva/exe/input/app_asar --target-kind electron-exe --focus rce --write-specs --output-mode canonical --family binaries --lane exe
/appmap demo /path/to/source --focus rce
Read the playbook before running the mapper:
$HARNESS_ROOT/prompts/appmap-playbook.mdbrainstorm/spec.md only for context; do not overwrite it from AppMap$HARNESS_ROOT/prompts/appmap-playbook.md$HARNESS_ROOT/agents/app_mapper.py$HARNESS_ROOT/agents/appmap_research.py~/Shared/appmap/{program}/static/appmap/{run_id}/~/Shared/{family}/{program}/{lane}/appmap/{run_id}/{output}/generated_specs/{output}/agent_contexts/<hypothesis_id>-<candidate_id>-<agent_key>.json when generated specs link hypotheses to candidates{output}/manifest.json~/Shared/{family}/{program}/{lane}/appmap/index.jsonl for canonical runs{output}/baseline/records.jsonl, quality_report.json, coverage_gaps.jsonl, posture_summary.md, category_plan.json, triage_hypotheses.jsonl, and focus_recommendations.jsonl{output}/noise/filtered_surfaces.jsonl and {output}/noise/summary.json{output}/baseline/enrichments/electronegativity.json when --electronegativity-root is providedrce and renderer-content-trust, over either the current scan or an explicit --from-baseline run root.noise/ so operators can tune the noise meter without losing discarded leads.--write-specs is requested and candidates exist.appmap-C#### candidate and write one context packet per suggested agent.manifest.json plus appmap/index.jsonl so future modules discover AppMap artifacts without reading findings ledgers.brainstorm/ only when explicitly requested.brainstorm/spec.md unless the user explicitly chooses that filename and allows overwrite.active_target_packs candidate-evidence scoped so mixed targets do not leak unrelated framework context.inventory.json, hypotheses.jsonl, and electron-team-context.json. Raw findings.json stays on disk and is summarized as ignored.--research-mode local|web|hybrid plus --research-query WORD [WORD ...].--research-mode local for local --research-seed artifacts. Use --research-mode web for explicit online source fetches without an extra online flag. Use --research-mode hybrid to process local seeds first and then explicit web sources only when --research-online and --research-source-url are present.--research-provider, --research-online, and --research-source-url compatibility carefully: old provider flags still work, but docs and new commands should prefer mode/query. Do not require --research-online with --research-mode web.zero_day_team --appmap integration from this skill.program, target_path, target-kind, mode/focus, and output root.target_path is a local directory. Do not run the target application.cd "${HARNESS_ROOT:-$HOME/projects/bug_bounty_harness}"
PYTHONPATH="$PWD${PYTHONPATH:+:$PYTHONPATH}" \
python3 agents/app_mapper.py <program> <target_path> \
--target-kind auto \
--mode baseline
With controlled Electronegativity enrichment:
python3 agents/app_mapper.py <program> <target_path> \
--target-kind electron-exe \
--mode baseline \
--electronegativity-root <controlled-electronegativity-run-dir>
cd "${HARNESS_ROOT:-$HOME/projects/bug_bounty_harness}"
PYTHONPATH="$PWD${PYTHONPATH:+:$PYTHONPATH}" \
python3 agents/app_mapper.py <program> <target_path> \
--target-kind auto \
--focus rce \
--write-specs
For a focus overlay over an existing baseline:
python3 agents/app_mapper.py <program> \
--from-baseline <appmap-baseline-run-root> \
--focus renderer-content-trust \
--write-specs
For canonical lane storage:
python3 agents/app_mapper.py <program> <target_path> \
--target-kind auto \
--focus rce \
--write-specs \
--output-mode canonical \
--family <family> \
--lane <lane>
appmap_summary.md, architecture.md, manifest.json, baseline quality/posture artifacts, candidates.jsonl, rejected_candidates.jsonl, and generated agent_contexts/*.json when present.agents.brainstorm_spec.parse_brainstorm_spec when present.--research-mode local --research-query <terms> --research-seed <path> for offline artifacts, or --research-mode web --research-query <terms> --research-source-url <https-url> for explicit online sources. Hybrid mode reads local seeds first and then fetches explicit HTTPS --research-source-url values only when --research-online is set; do not use search scraping, crawling, or target probing.--promote-to-brainstorm. Canonical mode defaults to {lane_root}/brainstorm; standalone mode needs --brainstorm-root.--list-handoffs, --validate-handoff, or --plan-handoff as needed. These modes are read-only and must not write findings ledgers, raw map data, coverage, or reports.Default promotion writes a unique per-run handoff directory:
~/Shared/{family}/{program}/{lane}/brainstorm/appmap-<run_id>-<focus>/rce-spec.md
This is --promotion-layout flat and remains the default for compatibility. Opt in to category layout with --promotion-layout category to write:
~/Shared/{family}/{program}/{lane}/brainstorm/appmap-<run_id>/<focus>/rce-spec.md
It also copies matching context packets to the spec's sibling context directory:
~/Shared/{family}/{program}/{lane}/brainstorm/appmap-<run_id>-<focus>/agent_contexts/
~/Shared/{family}/{program}/{lane}/brainstorm/appmap-<run_id>/<focus>/agent_contexts/
Promoted specs and packets keep pointers to the originating AppMap run. Existing brainstorm/spec.md remains untouched; --promote-spec-name chooses a filename inside the per-run promotion directory, and overwrite applies only there.
AppMap stops after artifact and spec generation. If the user asks to run a generated spec, use the existing runtime explicitly:
cd "${HARNESS_ROOT:-$HOME/projects/bug_bounty_harness}"
PYTHONPATH="$PWD${PYTHONPATH:+:$PYTHONPATH}" \
python3 agents/zero_day_team.py <program> <target_path> \
--brainstorm-spec <appmap-output>/generated_specs/rce-spec.md \
--brainstorm-only
For AppMap-linked specs, normal brainstorm runtime handoff consumes agent_contexts/*.json automatically. The adapter matches hypothesis_id, appmap-C#### candidate evidence, and agent_key, then uses the packet as the agent prompt context instead of the spec-wide mental model and impact primitives. Missing, duplicate, ambiguous, or multi-candidate linkage is a hard error.
Do not introduce a zero_day_team --appmap invocation here.
Promoted handoff discovery:
cd "${HARNESS_ROOT:-$HOME/projects/bug_bounty_harness}"
python3 agents/app_mapper.py --list-handoffs --brainstorm-root ~/Shared/<family>/<program>/<lane>/brainstorm
Campaign status / operator view:
cd "${HARNESS_ROOT:-$HOME/projects/bug_bounty_harness}"
python3 agents/app_mapper.py --campaign-status --brainstorm-root ~/Shared/<family>/<program>/<lane>/brainstorm
Promoted handoff validation:
python3 agents/app_mapper.py --validate-handoff <promoted-spec>
Planning prints the exact existing runtime command:
python3 agents/app_mapper.py --plan-handoff <promoted-spec> --brainstorm-hypothesis H001
The planned command must use python3 agents/zero_day_team.py <program> <target_path> --brainstorm-spec <promoted-spec> --brainstorm-only and must not include --appmap. Runtime defaults to one agent per hypothesis. If the user explicitly wants clustered execution for a reviewed AppMap campaign, pass --brainstorm-cluster-size 2 (or another small value); clustering is only for assignments sharing the same focus files, source, and sink.
cd "${HARNESS_ROOT:-$HOME/projects/bug_bounty_harness}"
python3 -m pytest agents/test_app_mapper.py -q
./sync_skills.sh --dry-run
documentation
Use when attacker-controlled input is saved and rendered later in a profile, comment, title, notification, admin view, export, email, feed, upload metadata, or other stored render surface.
content-media
Use when attacker-controlled input appears in the immediate HTTP response or browser-rendered page and needs reflected XSS context classification, payload selection, mutation, and browser verification.
data-ai
Use when inspecting proxy traffic from PwnFox-profiled browser sessions, filtering Caido/Burp/proxy history by X-PwnFox-Color, or interpreting user phrases like 'Red session' as a distinct browser/auth/profile lane.
tools
# LFI — Local File Inclusion Bypass ## What It Does Tests LFI bypass techniques: path traversal, null bytes, wrappers, log poisoning. Load `general-security-testing-policy`, `live-testing-policy`, and `injection-testing-policy` before live testing. For file/path sinks, absence of an immediate file read or response delta is not a stop reason by itself; use the policy to reason about path normalization, extension allowlists, wrappers, encoding, parser differences, and stack-specific proof ladder