Reverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.
Use REA when a claim depends on a shipped binary or package, decompilation, passive application runtime evidence, or comparison with behavior not established by available source. For ordinary analysis of a complete source repository, use normal repository tools and do not run REA readiness or provider commands.
Installing this skill supplies instructions; it does not register the REA MCP server, install analysis engines, or add tools to an already-running agent.
If REA tools are available and their registration is not known to be stale, proceed directly to the target. Do not run diagnostics or setup before every investigation. Use the connected server's actual tool list and input schemas; a skill installed from repository main may describe capabilities absent from an older npm release. Keep complete inline Evidence when that server does not advertise retained references.
When tools are absent or registration is stale:
npx -y rea-agents@latest doctor --client codex --json. Substitute the current
supported client: claude_code, claude_desktop, codex, cursor,
gemini_cli, windsurf, devin, opencode, antigravity, copilot_cli,
commandcode, vscode, grok_build, omp, or grok_bot. grok_bot has no local
file registration: doctor reports the Grok Bot chat step, and setup does not
write mcp.json. If the client is unknown, use doctor --json and
inspect its registration results before choosing a setup scope.npx -y rea-agents@latest setup --client codex --dry-run --json.
Use the current client's ID, show its exact proposed paths, backups, and
changes, and obtain approval before setup writes configuration or installs
Hopper. Setup normally installs the matching bundled skill too; include that
replacement in the reviewed plan. After approval, apply the same scope with
npx -y rea-agents@latest setup --client codex --yes. Add --install-hopper
only if that separate installation was needed and explicitly approved.REA setup never installs or upgrades Node.js, npm, Homebrew, Java, Ghidra, IDA,
JADX, Binwalk, or Unblob. Use existing prerequisites; do not install unrelated
software to repair
MCP registration. For an unsupported client, use manual stdio registration
with a version-pinned rea-agents package or continue through the CLI.
A concrete CLI fallback for an operator-supplied JavaScript tree or ASAR is:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
No MCP registration or native engine is required. Read the returned Evidence, graph, limitations, and unknowns with the same care as an MCP result; the CLI returns the Evidence record directly. This fallback does not establish that MCP is configured. Native CLI tasks still require their selected engine.
Choose the first tool from the target the user supplied. Use open_binary for
active-target native or archive workflows; target-free tools take their own
explicit path or endpoint and do not need it.
analyze_javascript_application.open_binary with the supplied local path; use inspect_artifact when its
graph and findings help answer the question.inspect_android_package, then focused Android tools when advertised.
Archive member inventory still uses the archive route above.inspect_managed_artifact.inspect_firmware_regions when advertised. Use
extract_firmware when extraction is requested, with a caller-selected new
absolute output directory. These tools use caller-supplied Binwalk/Unblob on
Linux; see the firmware guide.references/native-and-artifacts.md for
optional metadata recovery and its supported host/layout boundary.list_browser_targets.inspect_web_network_capture. Select
original record ordinals when useful; inspect producer fields and byte/number
sidecars without fetching recorded URLs or claiming live attribution. See
historical captures for the exact upstream
profile and credential exclusions.list_electron_targets.inspect_evm_interface with caller-selected
raw or hex encoding. Preserve carrier/decoded digests and treat selectors,
argument strings and mutability as inferred candidates; this performs no chain
lookup or target execution. See the
EVM bytecode guide.inspect_binary_layout. This target-free operation uses
caller-supplied pwntools without opening a disassembler database. Preserve its
raw locations and inference/coverage limits; see the
offline binary guide.inspect_recorded_crash. Read every recorded
thread, raw note and source-bound register without opening a live target.
Historical PIDs do not select live processes. Request include_debugger_context
only when core-only mapping candidates help; see the
recorded crash guide.open_binary, then
use focused analysis tools directly; call binary_overview when metadata or
inventory context is useful and available from the selected provider.For an existing IDA MCP configuration, use open_binary with the original
input binary and provider_id: "ida"; do not pass an .idb or .i64 database.
The legacy attached profile binds the already-open GUI input by SHA-256 and
leaves its database open. The modern headless profile creates and closes an
owned private database without saving. Installation and registration reuse
mrexodia/ida-pro-mcp; see the
IDA provider guide.
Proceed directly to analyze_function, pseudocode, or function/string searches
after opening; IDA does not supply binary_overview. Consult session availability
when composing broader workflows. Modern direct callers and unsupported dossier
facets remain unknown; live IDA results are not replayed from snapshots.
If the app is missing, ask which app to inspect. Resolve a human-readable app name to one clear installed artifact when possible; ask only when matches are ambiguous. Never choose an example app on the user's behalf.
In a target-free session, use open_binary to bind any archive/package or
native target whose analysis tool operates on the active target. Do not call an
unadvertised tool; inspect binary_session with {} and its
result.tool_availability for availability reasons and remediation. The tool
list stays complete; availability depends on the operation, target, and host.
Start with the default result and use its inline Evidence and graph context. Do not repeat an identical tool call. Make a focused follow-up only when the returned result leaves a specific question unanswered.
If MCP reports resource_constraint with details.resource: "transport", call
inspect_analysis_view with its reported same-session Evidence reference for a
summary, one section/module, or a stable page. Use trace_application_feature
once a seed is known, or call export_evidence_bundle to write the complete
session to a selected path. The analysis remains complete in the ledger; avoid
repeating it merely to request the same oversized response. Complete CLI JSON
output also streams without a single MCP frame.
Every conclusion must distinguish observations, inferences, and unknowns. Cite Evidence IDs, preserve limitations and incomplete coverage, and never imply that static analysis observed execution. Runtime requests execute the declared target and lifecycle; do not broaden the target or action beyond those fields.
Within the user's requested investigation, call available analysis tools directly. REA does not require permission grants or per-call approval flags. Follow the declared request scope and the host's actual access requirements.
For requests that span multiple features or subsystems, use a staged workflow:
Before finishing, revisit the original checklist. Mark each question as answered, partially answered, or unresolved based on its evidence; keep bounded negative searches bounded, and do not describe a broad investigation as complete while required questions remain open.
Explain findings in plain language and tie them to returned evidence. When the
user asks to build something, use normal coding tools and separate observed
behavior from design choices. Close an opened native session with
close_binary when the investigation is complete.
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/reverse-engineer-anything · pinned to the source commit
# Run from your project root
git clone https://github.com/morluto/rea.git .skillboard-tmp
git -C .skillboard-tmp checkout 1f0f728c63a4d9f32fc183c6a41627eedb8d1fe2
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skill-src/reverse-engineer-anything" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/morluto/rea.git .skillboard-tmp
git -C .skillboard-tmp checkout 1f0f728c63a4d9f32fc183c6a41627eedb8d1fe2
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skill-src/reverse-engineer-anything" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/reverse-engineer-anything
Scanner static-checks@0.1.0 · commit 1f0f728c63a4. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
No static rules matched. This is not a safety guarantee.