Best for
- A user provides a binary file (PE, ELF, Mach-O, firmware image) and asks what
- A user asks for decompilation, disassembly, call-graph exploration, or
- A user wants a structured triage report, suspicious-API analysis, or
magnus919/agent-skills/binary-analysis/SKILL.md
Analyze unknown binary files through a deterministic CLI that wraps Ghidra's static-analysis engine. Use when you need to inspect a PE, ELF, or Mach-O file — triage suspicious binaries, map imported APIs, decompile functions, trace call paths, or produce structured evidence reports. Do not use for runtime analysis (debugging, dynamic tracing, sandbox execution), for modifying or patching binaries, or for binaries you already know everything about. The skill owns planning, hypothesis formation, a
Decision brief
Analyze unknown binary files with a deterministic, non-interactive CLI backed by Ghidra's static-analysis engine. The skill teaches you how to reason about binaries: when to triage versus deep-dive, how to interpret canonical evidence, and how to produce auditable reports. All o…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/magnus919/agent-skills --skill "binary-analysis"Inspect the Agent Skill "binary-analysis" from https://github.com/magnus919/agent-skills/blob/a4db8e7d4350816f02515bac12d91c8050db1e58/binary-analysis/SKILL.md at commit a4db8e7d4350816f02515bac12d91c8050db1e58. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Every analysis session follows this sequence. Do not skip phases — each one produces evidence the next phase depends on.
If any component reports severity: "ERROR", run the bootstrap plan:
Create a project for every binary you analyze. Projects isolate analysis state and provide an audit trail.
Run the standard analysis profile first. It covers the structural queries most triage workflows need.
Choose analyses based on the user's question. Run these in order, building evidence from broad to specific.
Permission review
The documentation asks the agent to run terminal commands or scripts.
| **Agent (you)** | Form hypotheses about binary behavior. Choose which analyses to run and in what order. Synthesize CLI evidence into conclusions. Explain findings to the user in plain language. Write evidence-backed reports. | Invent facThe documentation asks the agent to run terminal commands or scripts.
| **Never execute the target** | CLI refuses; no execution path exists | Static analysis only |Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 90/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 34 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Analyze unknown binary files with a deterministic, non-interactive CLI backed by
Ghidra's static-analysis engine. The skill teaches you how to reason about
binaries: when to triage versus deep-dive, how to interpret canonical evidence,
and how to produce auditable reports. All observable operations happen through
the binary CLI — you never call Ghidra APIs directly.
Load this skill when any of the following conditions match:
binary doctor, binary bootstrap) or manage analysis projects.Do not load this skill for:
This boundary is the most important concept in the skill. Crossing it produces unreliable evidence, wasted context, or both.
| Layer | Responsibility | Must NOT |
|---|---|---|
| Agent (you) | Form hypotheses about binary behavior. Choose which analyses to run and in what order. Synthesize CLI evidence into conclusions. Explain findings to the user in plain language. Write evidence-backed reports. | Invent facts not present in CLI output. Claim certainty where the CLI reports partial results or low confidence. Skip diagnostic warnings. |
| CLI | Parse arguments, manage project lifecycle, run Ghidra analysis, serialize canonical entities, emit JSON envelopes, enforce safety limits. | Interpret results, draw conclusions, or produce narrative prose. |
Rule of thumb: If a fact appears in a CLI JSON response under data, it is
deterministic evidence you can cite. If you are tempted to infer something not
directly supported by that evidence, flag it as an agent inference and note the
confidence gap.
Every analysis session follows this sequence. Do not skip phases — each one produces evidence the next phase depends on.
binary doctor --json
If any component reports severity: "ERROR", run the bootstrap plan:
binary bootstrap --plan --json
Review the plan. If the user authorizes installation, run:
binary bootstrap --apply --json
Verify with binary version --json.
Create a project for every binary you analyze. Projects isolate analysis state and provide an audit trail.
binary project create <project-name> --json
binary import <path-to-binary> --project <project-name> --json
Use copy mode (default) for reproducibility. Use --reference only when the
binary is large, read-only, or shared across projects, and explain the
staleness risk to the user.
Run the standard analysis profile first. It covers the structural queries most triage workflows need.
binary analyze --project <project-name> --json
Check the response:
success: true, partial: false — proceed to Phase 4.success: true, partial: true — review diagnostics for gaps. Proceed with
bounded results, noting limitations.success: false, partial: true — timeout. Extract what completed, report
what did not.success: false, partial: false — hard failure. Check diagnostics for the
failure reason. The project is now FAILED; run binary project clean to
reset.Choose analyses based on the user's question. Run these in order, building evidence from broad to specific.
For triage (broad survey):
binary triage --project <project-name> --json
binary suspicious-apis --project <project-name> --json
binary capability-map --project <project-name> --json
For structural understanding:
binary metadata --project <project-name> --json
binary sections --project <project-name> --json
binary entrypoints --project <project-name> --json
binary imports --project <project-name> --json
binary exports --project <project-name> --json
binary strings --project <project-name> --contains "<pattern>" --json
For function-level deep-dive:
binary functions --project <project-name> --json
binary decompile --project <project-name> <function-selector> --json
binary disassemble --project <project-name> <target> --json
binary xrefs --project <project-name> <entity-selector> --json
binary callers --project <project-name> <function-selector> --json
binary callees --project <project-name> <function-selector> --json
binary callgraph --project <project-name> <function-selector> --depth 3 --json
For path analysis:
binary trace --project <project-name> --from <source> --to <target> --json
Generate a durable report before explaining results to the user:
binary export-report --project <project-name> --type triage --format markdown --json
Read the report. Synthesize findings into a clear explanation. Always mark agent inferences separately from CLI evidence. Example:
## CLI Evidence (deterministic)
- The binary imports VirtualAlloc, WriteProcessMemory, and CreateRemoteThread
(suspicious-apis, risk_score 8, rule_id: process-injection)
- Entry point at 0x401000, 3 sections (.text, .rdata, .data)
## Agent Assessment (inference)
- The API combination suggests process injection capability. This is a
heuristic, not a confirmed behavior. The binary would need to be executed
(out of scope for static analysis) to confirm.
The CLI enforces these boundaries automatically. You must never attempt to bypass them, even if a user asks.
| Boundary | Enforcement | Why |
|---|---|---|
| Never execute the target | CLI refuses; no execution path exists | Static analysis only |
| Never load target as a library | Not implemented; no dlopen/LoadLibrary path | Prevents unintended code execution |
| Never expose a network listener | No HTTP, MCP, or socket servers | The CLI is a local tool |
| Never upload hashes or samples | No telemetry, no outbound calls | Privacy and security |
| Path containment | All project paths validated for traversal | Prevents workspace escape |
| Output size limits | Default 64 MB, max 256 MB JSON | Prevents context exhaustion |
| Memory limits | Configurable per-operation ceiling | Prevents OOM during large analyses |
| Timeout enforcement | Default 300s, configurable per-command | Bounded operations |
| Result count limits | Paginated with default 100, max 1000 | Prevents unbounded output |
| Graph depth limits | Callgraph capped at depth 10 | Prevents infinite recursion |
All CLI evidence follows a confidence hierarchy. Use these standards when citing evidence in reports or explanations.
| Category | Definition | Example |
|---|---|---|
| Observation | Direct deterministic fact from the backend. No confidence field. | "Section .text is executable, size 4096 bytes" |
| Heuristic | Rule-derived interpretation with explicit confidence. | "Suspicious API: VirtualAlloc (risk_score: 8, confidence: HIGH)" |
| Unknown | Explicit unresolved question at a specific address. | "Indirect call target at 0x402080 could not be resolved" |
| Level | Meaning | When to cite |
|---|---|---|
HIGH | Backend is certain about this result | Cite as fact |
MEDIUM | Backend has reasonable confidence | Cite with qualification ("likely") |
LOW | Backend made a best-guess | Cite only with explicit caveat |
UNKNOWN | Backend could not determine | Present as an open question |
When you synthesize multiple CLI observations into a conclusion, label it explicitly as an agent inference. Never present an inference as a CLI fact. Use language like:
References are loaded on demand — do not read them all at startup. Use this table to route your current task to the right reference file.
| Reference | When to Load |
|---|---|
| references/installation.md | Setting up Ghidra, Java, or PyGhidra. Running binary doctor or binary bootstrap. Dependency troubleshooting. |
| references/cli-reference.md | Need the complete command reference with flags, exit codes, and examples. Unfamiliar with a specific command or flag. |
| references/triage-workflow.md | Performing a triage on an unknown binary. Need the step-by-step triage methodology and interpretation guide. |
| references/function-analysis.md | Decompiling, disassembling, or tracing a function. Understanding decompiler output or call-graph analysis. |
| references/binary-formats.md | Identifying or interpreting PE, ELF, or Mach-O format characteristics. Understanding section flags, entry point conventions, or format-specific quirks. |
| references/security.md | Interpreting suspicious-API results, capability maps, or security rule matches. Understanding risk scoring and rule priorities. |
| references/evidence-and-confidence.md | Writing reports that distinguish CLI evidence from agent inferences. Building an evidence-backed argument. |
| references/packed-and-obfuscated.md | Suspicious that a binary is packed, compressed, or obfuscated. High entropy sections, missing imports, or small import tables. |
| references/firmware.md | Analyzing firmware images. Need firmware-specific load address conventions, filesystem extraction patterns, or boot-loader analysis. |
| references/troubleshooting.md | CLI returns unexpected errors, timeouts, or partial results. Ghidra fails to start. Project state is stuck. |
| references/reporting.md | Generating reports with binary export-report. Choosing report types and formats. Interpreting report structure. |
Every analysis session must produce at least one of these outputs before the agent considers the task complete:
Reports must:
Before presenting results to the user, verify:
| Check | How |
|---|---|
CLI commands all returned success: true or documented partial: true | Check success and partial in each response envelope |
| No diagnostic warnings were silently ignored | Review diagnostics array in every response |
| Evidence citations are traceable to CLI output | Every factual claim matches a field in a data block |
| Agent inferences are explicitly labeled | Search your output for unqualified claims |
| Project state is clean | Run binary project status --project <name> --json |
| Report was generated and reviewed | Report file exists in project reports/ directory |
Stop and report results when:
Do not stop after a single structural query unless it fully answers the user's question. Static analysis is iterative — broad survey, then deep-dive.
Alternatives
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.