# Why Maintain Separate Skill Modules for IDA and radare2? Architecture of the reverse-skill Repository

> Discover why separate skill modules for IDA and radare2 are essential. Explore the architecture of the reverse-skill repository and understand the distinct needs of these binary analysis tools.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: architecture
- Published: 2026-08-19

---

**Separate skill modules for IDA and radare2 exist because the tools serve fundamentally different purposes, licensing models, and integration workflows that cannot be cleanly merged into a unified binary analysis skill.**

The `zhaoxuya520/reverse-skill` repository organizes binary-analysis capabilities into distinct modules to preserve deterministic routing, respect tool-specific constraints, and maintain clean separation of concerns. This architecture ensures that the `master-route.ps1` router can select the correct toolchain based on user intent and environment availability.

## Core Architectural Reason: Different Tool Purposes and Workflows

The routing definitions in [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) explicitly separate the two tools because they address different use cases within reverse engineering workflows.

### IDA Skill (`ida-reverse/`)

The IDA skill targets **full-featured GUI decompilation** with commercial-grade analysis capabilities:

- **Primary function**: Hex-Rays decompilation, cross-reference analysis, and type recovery through IDA Pro's MCP HTTP server
- **Workflow**: Launch IDA → MCP listens on `127.0.0.1:13337` → execute decompilation via GUI or API
- **Integration point**: Documented in [`skills/ida-reverse/references/ida-mcp-cheatsheet.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/ida-reverse/references/ida-mcp-cheatsheet.md)

```powershell

# Router selects IDA skill based on hint matching

powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/master-route.ps1 -Hint "IDA decompile PE"

# Matches routing_benchmark.json entry targeting ida-reverse/

```

### radare2 Skill (`radare2/`)

The radare2 skill provides **lightweight CLI analysis** for rapid reconnaissance and automation:

- **Primary function**: Command-line static analysis via `r2`, `rabin2`, `rasm2`, and companion tools
- **Workflow**: Execute `skills/radare2/scripts/recon.ps1` or direct CLI commands → collect metadata → optional MCP integration via `r2mcp`
- **Integration point**: Tool discovery entries in `skills/scripts/lib/ToolDiscovery.ps1`

```powershell

# Router selects radare2 skill based on distinct hint

powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/master-route.ps1 -Hint "radare2 analyze binary"

# Matches routing_benchmark.json entry targeting radare2/

```

## Licensing and Distribution Constraints

The separation is partially enforced by **incompatible licensing models**:

| Aspect | IDA Pro | radare2 |
|--------|---------|---------|
| License | Commercial (requires Hex-Rays license file) | Open-source (GPL/LGPL) |
| Availability | Windows/macOS primary; restricted distribution | Universal package manager installation (Homebrew, APT, GitHub releases) |
| Cost | Prohibitive for individual/casual use | Zero-cost, immediate deployment |
| CI/CD suitability | Limited (requires licensed environment) | Native support for headless pipelines |

Because IDA Pro requires a commercial license and controlled distribution, the `ida-reverse` skill must handle authentication, license validation, and platform-specific paths. The `radare2` skill assumes ubiquitous availability and focuses on rapid tool discovery and script execution. Merging these would introduce unnecessary complexity for the open-source workflow.

## Router Implementation: Deterministic Skill Selection

The `master-route.ps1` router relies on **explicit skill boundaries** to function correctly. The routing matrix in [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) defines non-overlapping capabilities:

- `ida-reverse/` — IDA Pro decompile
- `radare2/` — CLI analysis, or [`reverse-engineering/tools.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/reverse-engineering/tools.md) — GDB/Unicorn

This design follows the **principle of single responsibility**: each skill contains only the scripts, references, and MCP glue code required for its specific tool. Key implementation files include:

- `skills/scripts/lib/ToolDiscovery.ps1` — Lists purpose, paths, and commands for both IDA and radare2, enabling router executable location
- [`skills/tests/routing-benchmark.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tests/routing-benchmark.json) — Provides concrete hint strings that trigger each skill without ambiguity
- [`skills/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/refresh-tool-index.sh) — Defines radare2 binary discovery and installation exposure

## Maintenance and Contributor Isolation

Separate modules reduce **regression risk** and enable parallel development:

- Contributors can extend radare2 scripts (`recon.ps1`, `r2mcp` integration) without affecting IDA's MCP server configuration
- IDA-specific documentation ([`ida-mcp-cheatsheet.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/ida-mcp-cheatsheet.md)) remains focused on commercial workflow nuances
- Version pinning and dependency management stay independent per toolchain

## Summary

- The `reverse-skill` repository maintains separate IDA and radare2 modules to accommodate **fundamentally different tool purposes**: GUI decompilation versus CLI analysis
- **Licensing constraints** prohibit unified distribution—IDA Pro is commercial, radare2 is open-source
- The [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) matrix and `master-route.ps1` router require **deterministic hint-to-skill mapping** that separate modules provide
- **Single-responsibility design** isolates maintenance, reduces regressions, and supports divergent contributor workflows
- Key files: [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md), [`skills/ida-reverse/references/ida-mcp-cheatsheet.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/ida-reverse/references/ida-mcp-cheatsheet.md), `skills/scripts/lib/ToolDiscovery.ps1`, `skills/radare2/scripts/recon.ps1`

## Frequently Asked Questions

### Can the IDA and radare2 skills be used interchangeably for the same binary?

No. While both perform static analysis, the IDA skill requires a commercial license and excels at deep decompilation with type recovery. The radare2 skill is license-free and optimized for rapid reconnaissance and automation. The [`routing_benchmark.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/routing_benchmark.json) hints explicitly distinguish these use cases.

### How does the router decide between IDA and radare2?

The `master-route.ps1` script parses hints through [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) mappings. Hints containing "IDA decompile" route to `ida-reverse/`; hints with "radare2 analyze" route to `radare2/`. The `ToolDiscovery.ps1` library then locates the appropriate executables.

### Why not create a unified "binary-analysis" skill with tool selection logic inside?

Internal tool selection would violate the repository's **explicit routing architecture**. The [`MASTER-ROUTING.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/MASTER-ROUTING.md) design requires skills to be self-contained and directly addressable. A unified skill would also force all users to handle IDA's licensing constraints even when only radare2 is needed.

### Is radare2 support complete compared to IDA in this repository?

The radare2 skill structure exists with `skills/radare2/scripts/recon.ps1` and tool discovery entries, though the full [`SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/SKILL.md) documentation appears to be under development. The IDA skill has more mature documentation in [`skills/ida-reverse/references/ida-mcp-cheatsheet.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/ida-reverse/references/ida-mcp-cheatsheet.md).