# How reverse-skill Implements Multi-Platform Support for Windows, Linux, and macOS

> Discover how reverse-skill achieves multi-platform support for Windows, Linux, and macOS using a platform-agnostic routing core and OS-specific bootstrap scripts for seamless integration.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: how-to-guide
- Published: 2026-08-26

---

**reverse-skill achieves cross-platform compatibility through a platform-agnostic routing core in [`skills/config/routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json) paired with OS-specific bootstrap scripts that abstract away package manager differences while maintaining uniform capability naming.**

The `zhaoxuya520/reverse-skill` repository provides a unified reverse engineering assistant that runs seamlessly across Windows, Linux, and macOS. Its multi-platform support relies on a clean architectural separation between the decision engine and the installation layer, ensuring consistent skill routing regardless of the underlying operating system.

## The Three-Layer Architecture

The project isolates OS-specific logic into dedicated bootstrap and documentation layers while keeping the routing logic completely neutral. This design ensures that [`skills/config/routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json) serves as the single source of truth for skill definitions across all platforms.

The architecture consists of three distinct layers:

- **Unified routing layer**: The [`routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/routing.json) file contains all skill definitions and logical flows without any OS-specific code.
- **Bootstrap layer**: Platform-specific scripts handle tool installation using native package managers.
- **Documentation layer**: Setup guides provide exact commands for each operating system.

### Platform-Agnostic Routing Core

According to the source code in `zhaoxuya520/reverse-skill`, the routing engine reads [`skills/config/routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json) to determine skill execution paths. This file contains no platform-specific logic; instead, it relies on [`skills/tool-index.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.json) (generated at runtime) to locate tools. Whether a binary resides in `C:\Program Files\IDA` on Windows or `/opt/homebrew/bin` on macOS, the router handles it identically.

## Platform-Specific Bootstrap Scripts

The repository ships separate bootstrap scripts for Windows versus Linux and macOS, exposing identical capability names to ensure the router remains platform-agnostic.

### Windows PowerShell Bootstrap

For Windows environments, `skills/scripts/bootstrap-reverse.ps1` handles installation using native Windows package managers such as **winget** and **chocolatey**. The script installs Java, Python, Node.js, and reverse engineering tools like IDA Pro and Burp Suite. It also processes the `--mcp-host` parameter to register MCP (Multi-Client-Protocol) capabilities when specified.

Example Windows installation:

```powershell

# Install tools on Windows using winget/chocolatey:

powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/bootstrap-reverse.ps1 `
    -Capabilities "jadx","apktool","frida" -McpHost "codex"

```

### Linux and macOS Bash Bootstrap

Linux and macOS share [`skills/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-reverse.sh), though they use different package managers under the hood. On Linux, the script uses `apt` (or distro-specific managers) to fetch tools like radare2 and Ghidra. On macOS, it uses **Homebrew** to install the same capability set, falling back to GitHub releases when formulas are missing.

Example Linux installation:

```bash

# Run the Linux bootstrap:

bash skills/scripts/bootstrap-reverse.sh \
    jadx apktool frida

# Refresh the tool index:

bash skills/scripts/refresh-tool-index.sh

```

Example macOS installation with MCP registration:

```bash

# Install on macOS with Homebrew and register Claude MCP:

/bin/bash skills/scripts/bootstrap-reverse.sh \
    jadx apktool frida --mcp-host=claude

# Verify tool discovery:

bash skills/scripts/refresh-tool-index.sh

```

## Tool Discovery and Indexing

After installation, platform-specific discovery scripts scan the filesystem to build [`skills/tool-index.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.json), which maps capability names to actual binary paths.

- **Windows**: `skills/scripts/refresh-tool-index.ps1` scans the Windows `$PATH` and known installation directories like `C:\Program Files`.
- **Linux/macOS**: [`skills/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/refresh-tool-index.sh) inspects `/usr/bin`, `~/tools`, `/opt/homebrew/bin` (Apple Silicon), and `/usr/local/bin` (Intel Macs).

The router consumes this generated index at runtime, enabling it to invoke the correct tool regardless of where it was installed on the host system.

## MCP Client Registration

The bootstrap scripts support optional MCP host registration via the `--mcp-host` flag, keeping the core router client-neutral. Valid options include `claude`, `codex`, or `both`. When specified, the bootstrap writes client-specific configuration files; when omitted, the installation remains client-agnostic and safe for any environment.

## Platform-Specific Documentation

Detailed setup instructions reside in dedicated documentation files:

- **[`docs/platforms/linux.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/platforms/linux.md)**: Contains baseline `apt` installation commands, a tool-installation matrix, recommended directory layouts, and MCP registration steps.
- **[`docs/platforms/macos.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/platforms/macos.md)**: Documents Homebrew bootstrap procedures, comparable tool matrices, and layout conventions.
- **Windows guidance**: Embedded directly within the PowerShell scripts and Windows-specific skill modules like [`skills/windows-ad/SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/windows-ad/SKILL.md).

## Summary

- **reverse-skill** implements multi-platform support through a strict separation between platform-agnostic routing logic and OS-specific bootstrap procedures.
- The routing engine in [`skills/config/routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json) contains no platform-specific code, relying entirely on [`skills/tool-index.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.json) for tool resolution.
- Windows uses `bootstrap-reverse.ps1` with winget/chocolatey, while Linux and macOS share [`bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-reverse.sh) using apt and Homebrew respectively.
- Uniform capability names (e.g., `jadx`, `frida`, `radare2`) across all bootstrap scripts ensure the router works identically on every platform.
- The `refresh-tool-index` scripts generate platform-specific path mappings that abstract away installation directory differences.
- MCP client registration is handled at bootstrap time via the `--mcp-host` flag, maintaining core neutrality.

## Frequently Asked Questions

### Does reverse-skill use the same installation script for Linux and macOS?

Yes. Both operating systems use [`skills/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-reverse.sh), but the script detects the platform and uses the appropriate package manager—`apt` for Linux distributions and **Homebrew** for macOS. The script also handles platform-specific path differences when installing tools, though it exposes identical capability names to the routing layer.

### How does the routing engine handle different installation paths across platforms?

The routing engine reads [`skills/tool-index.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.json), which is generated by the platform-specific `refresh-tool-index` scripts. On Windows, `refresh-tool-index.ps1` scans the `$PATH` and known directories like `C:\Program Files`, while the Bash version on Linux and macOS checks `/usr/bin`, `~/tools`, and Homebrew prefixes. This lets the router reference tools by capability name rather than absolute path.

### Can I use reverse-skill without registering an MCP host?

Yes. The `--mcp-host` parameter is optional in both `bootstrap-reverse.ps1` and [`bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-reverse.sh). When omitted, the bootstrap installs all requested tools without writing client-specific MCP configuration files, making the setup suitable for any client environment including Claude Code, Codex CLI, or Cursor.

### Where are the platform-specific setup instructions documented?

Linux setup details are in [`docs/platforms/linux.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/platforms/linux.md), macOS instructions are in [`docs/platforms/macos.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/platforms/macos.md), and Windows guidance is embedded within the PowerShell bootstrap script and the Windows-specific skill modules. All documents provide exact commands for their respective package managers and directory layouts.