# Headless Ghidra Evidence

> 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.

- Skill: `bytelandtechnology/headless-ghidra-evidence` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add bytelandtechnology/headless-ghidra-evidence`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bytelandtechnology/headless-ghidra-evidence/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: bytelandtechnology (https://skillmd.com/u/bytelandtechnology)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bytelandtechnology/headless-ghidra-evidence

---


# 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`

