P2 phase skill for Headless Ghidra third-party evidence. Use after P1 to review baseline/runtime artifacts, identify or rule out third-party code, record pristine sources, classify functions, and capture evidence before metadata recovery.
Installs into .claude/skills of the current project.
Are you the author of Headless Ghidra Evidence?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/netvar1337-headless-ghidra-evidence)
---
name: "headless-ghidra-evidence"
description: "P2 phase skill for Headless Ghidra third-party evidence. Use after P1 to review baseline/runtime artifacts, identify or rule out third-party code, record pristine sources, classify functions, and capture evidence before metadata recovery."
phase: "P2"
---
# Headless Ghidra Third-Party — P2
P2 reviews baseline and runtime YAML to identify third-party libraries, record
local pristine source directories, and classify functions for later metadata
enrichment. Source download or acquisition is outside the CLI; the CLI records
`source_path`, `pristine_path`, version, confidence, and evidence.
## Required ghidra-agent-cli Commands
- `ghidra-agent-cli functions list`
- `ghidra-agent-cli functions show`
- `ghidra-agent-cli imports list`
- `ghidra-agent-cli constants list`
- `ghidra-agent-cli strings list`
- `ghidra-agent-cli vtables list`
- `ghidra-agent-cli types list`
- `ghidra-agent-cli callgraph list`
- `ghidra-agent-cli callgraph callers`
- `ghidra-agent-cli callgraph callees`
- `ghidra-agent-cli third-party add`
- `ghidra-agent-cli third-party none`
- `ghidra-agent-cli third-party set-version`
- `ghidra-agent-cli third-party list`
- `ghidra-agent-cli third-party classify-function`
- `ghidra-agent-cli third-party vendor-pristine`
- `ghidra-agent-cli execution-log append`
- `ghidra-agent-cli gate check --phase P2`
## Inputs
- `artifacts/<target-id>/baseline/functions.yaml`
- `artifacts/<target-id>/baseline/callgraph.yaml`
- `artifacts/<target-id>/baseline/types.yaml`
- `artifacts/<target-id>/baseline/constants.yaml`
- `artifacts/<target-id>/baseline/vtables.yaml`
- `artifacts/<target-id>/baseline/strings.yaml`
- `artifacts/<target-id>/baseline/imports.yaml`
- `artifacts/<target-id>/runtime/run-manifest.yaml`
- `artifacts/<target-id>/runtime/hotpaths/call-chain.yaml`
- Existing `artifacts/<target-id>/third-party/identified.yaml` if present
## Outputs
- `artifacts/<target-id>/third-party/identified.yaml`
- `artifacts/<target-id>/third-party/pristine/<library>@<version>/`
- Optional local adaptation changes under
`artifacts/<target-id>/third-party/compat/<library>@<version>/`
## Exit Expectations
- `identified.yaml` records at least one medium-or-higher confidence library
when third-party code is present.
- `identified.yaml` records `libraries: []` when review finds no third-party
code.
- Each recorded third-party library has a local `source_path` and a pristine
directory under `third-party/pristine/`.
- Pristine source directories are kept unmodified; local adaptation edits live
under `third-party/compat/`.
- The next phase has enough version and function-classification evidence to
recover names, signatures, and types.
## Constraints
- Do not mutate baseline YAML exports directly.
- Do not claim unsupported evidence without recording the supporting source.
- Do not bypass `ghidra-agent-cli` for supported baseline reads, third-party
writes, or execution logging.
- Do not create or run a new Ghidra script if the CLI lacks a capability; pause
and ask the user first.
## Next Step
- P2 gate passes → `headless-ghidra-discovery`