Why Maintain Separate Skill Modules for IDA and radare2? Architecture of the reverse-skill Repository
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 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
# 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.ps1or direct CLI commands → collect metadata → optional MCP integration viar2mcp - Integration point: Tool discovery entries in
skills/scripts/lib/ToolDiscovery.ps1
# 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 defines non-overlapping capabilities:
ida-reverse/— IDA Pro decompileradare2/— CLI analysis, orreverse-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 locationskills/tests/routing-benchmark.json— Provides concrete hint strings that trigger each skill without ambiguityskills/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,r2mcpintegration) without affecting IDA's MCP server configuration - IDA-specific documentation (
ida-mcp-cheatsheet.md) remains focused on commercial workflow nuances - Version pinning and dependency management stay independent per toolchain
Summary
- The
reverse-skillrepository 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.mdmatrix andmaster-route.ps1router 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,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 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 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 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 documentation appears to be under development. The IDA skill has more mature documentation in skills/ida-reverse/references/ida-mcp-cheatsheet.md.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →