Bootstrapping Tools in reverse-skill: 12 Installation Methods Explained
The reverse-skill project provides a cross-platform bootstrapping engine that supports twelve distinct installation methods for reverse-engineering tools, ranging from package managers like APT and Homebrew to GitHub releases, Git checkouts, and Docker fallbacks.
The reverse-skill repository by zhaoxuya520 ships with automated bootstrapping scripts that eliminate manual setup friction for reverse-engineering and pentesting environments. The engine reads capability definitions from bootstrap-manifest.json and executes the appropriate installation strategy through bootstrap-reverse.sh (Linux/macOS) or bootstrap-reverse.ps1 (Windows).
Package Manager Installation Methods
APT Package Installation (Linux)
The APT method handles Debian-based distributions by updating package lists and installing system packages. According to the source code in skills/scripts/bootstrap-reverse.sh, the install_apt() function (lines 20-25) executes:
apt-get update
apt-get install -y <package>
This method is the default for capabilities targeting Ubuntu, Kali Linux, and other Debian derivatives.
Homebrew Formula and Cask (macOS)
For macOS environments, reverse-skill provides two Homebrew-based methods:
install_brew()– Installs standard Homebrew formulas usingbrew install <package>install_brew_cask()– Installs GUI applications and binaries viabrew install --cask <package>
Both functions reside in bootstrap-reverse.sh and automatically handle the macOS software ecosystem.
Language Runtime Methods
Python and pipx Installation
The Python runtime method ensures python3 is available before installing packages. The ensure_python_runtime() function prefers pipx install --force <package> for isolated tool installations, falling back to pip install --user when pipx is unavailable.
Capability-specific implementations like ensure_frida_tools() demonstrate this approach, checking for the Python interpreter before invoking package managers.
Node.js and npm/pnpm
Node-based tools follow a similar runtime verification pattern through ensure_node_runtime(). The engine:
- Verifies
node,npm, andnpxavailability - Executes
npm install -g <package>for global installation - Supports
pnpmviaensure_pnpm(), which runsnpm install -g <pnpm-package>
Specific capabilities like ensure_jshookmcp() and ensure_reqable_mcp() leverage this method to register MCP (Machine-Code-Provider) servers.
Go Installation
Go modules install via go install <module>, implemented in ensure_pentestswarm() (lines 331-363). The function adds resulting binaries to $PATH and monitors for installation failures.
Source and Binary Distribution Methods
GitHub Release Downloads
The install_github_release() function (lines 100-120 in bootstrap-reverse.sh) automates binary distribution:
- Queries the GitHub API for latest or tagged releases
- Verifies SHA-256 digests against the manifest
- Extracts archives to the tools root directory
- Updates
$PATHto include the binary location
This method bypasses package managers for tools distributed exclusively through GitHub.
Pinned Git Checkout
For bleeding-edge or specific versions, install_git_commit() (lines 224-268) performs:
- Cloning the repository into a temporary staging area
- Validating the checkout is clean and matches the target commit
- Moving the validated code into the target directory
This ensures reproducible builds from specific Git references.
Fallback and Manual Methods
Docker Fallback
When native compilation fails (notably in ensure_pentestswarm()), the engine falls back to Docker-based MCP definitions. Instead of installing binaries locally, the script registers an MCP server configuration that runs the tool inside a container, maintaining functionality without polluting the host system.
Manual Installation Marker
Tools requiring commercial licenses or complex manual builds trigger manual_required() (lines 445-452). This function:
- Prints configuration warnings
- Marks the capability status as
manual-required - Continues processing other capabilities without failing the entire bootstrap
Integration and Service Management
MCP Server Registration
After installing MCP-compatible tools, write_mcp_server() writes configuration entries to Claude (~/.claude/mcp.json) or Codex (~/.codex/config.toml). The helper functions write_claude_mcp_server() and write_codex_mcp_server() handle host-specific formatting.
Control the registration target with the --mcp-host=none|claude|codex|both flag.
Service Management
Capabilities requiring background services (such as idapro) support the --start-services flag. The engine checks the START_SERVICES environment variable in the main loop and invokes service-specific functions like ensure_idapro() to launch daemons post-installation.
Bootstrapping Workflow Execution
The bootstrap-reverse.sh script executes a six-phase workflow:
- Parse arguments – Collects capabilities and flags (
--start-services,--skip-refresh,--mcp-host) - Expand dependencies – Resolves capability chains (e.g.,
idaprorequiresidalib-mcp) - Ensure runtime – Validates Python, Node, Java, and other language interpreters
- Iterate capabilities – Executes matching
ensure_<capability>()functions using the manifest definitions - Report status – Returns
ready,manual-required,registration-required, orfailedfor each capability - Refresh tool index – Runs
refresh-tool-index.shunless--skip-refreshis specified
Practical Usage Examples
Install common reverse-engineering tools with capability names:
# Install jadx, apktool, and frida
bash skills/scripts/bootstrap-reverse.sh jadx apktool frida
Enable MCP registration and background services for IDA Pro:
bash skills/scripts/bootstrap-reverse.sh idapro --start-services --mcp-host=claude
Skip the post-installation tool index refresh for CI pipelines:
bash skills/scripts/bootstrap-reverse.sh pentestswarm --skip-refresh
Key implementation files include skills/scripts/bootstrap-reverse.sh (core engine), skills/scripts/bootstrap-reverse.ps1 (Windows parity), and skills/scripts/bootstrap-manifest.json (capability definitions).
Summary
- Twelve distinct methods handle everything from system packages (APT, Homebrew) to language-specific installs (Python/pipx, Node/npm, Go) and source retrieval (GitHub releases, Git commits)
- Docker fallback and manual markers ensure graceful degradation when automatic installation fails
- MCP registration integrates tools directly with Claude or Codex AI assistants via
write_mcp_server() - Cross-platform support spans Linux (Bash), macOS (Bash), and Windows (PowerShell) through unified manifest definitions
Frequently Asked Questions
What is the difference between bootstrap-reverse.sh and bootstrap-reverse.ps1?
bootstrap-reverse.sh is the primary Bash implementation for Linux and macOS environments, while bootstrap-reverse.ps1 provides PowerShell parity for Windows systems. Both scripts consume the same bootstrap-manifest.json definitions, ensuring consistent capability support across platforms.
How does reverse-skill handle tools not available in package managers?
The engine prefers GitHub release downloads via install_github_release() for precompiled binaries, or pinned Git checkouts via install_git_commit() for source builds. If these fail, it falls back to Docker containers or marks the tool as manual-required.
Can I use reverse-skill bootstrapping in CI/CD pipelines?
Yes. Pass the --skip-refresh flag to disable the tool index regeneration step, and use --mcp-host=none to skip AI assistant registration. The script returns appropriate exit codes and supports non-interactive execution.
Where are MCP server configurations stored after bootstrapping?
Configurations are written to ~/.claude/mcp.json for Claude Desktop or ~/.codex/config.toml for Codex CLI, depending on the --mcp-host parameter. The write_mcp_server() function automatically creates these directories if they do not exist.
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 →