How to Install Tools Automatically Using reverse-skill Bootstrap Scripts
The reverse-skill repository provides cross-platform bootstrap scripts that automate the fetching, verification, and installation of security tools via a declarative manifest system.
reverse-skill is an open-source security automation framework that eliminates manual tool installation through intelligent bootstrap scripts. These scripts read a centralized manifest—skills/scripts/bootstrap-manifest.json—to determine exact versions, download sources, and platform-specific installation methods for each capability. Whether you are configuring a Kali Linux attack box or a macOS analysis workstation, the bootstrap system handles dependency resolution, cryptographic verification, and PATH configuration automatically.
How the Bootstrap Architecture Works
The bootstrap system operates on a capability-based model defined in skills/scripts/bootstrap-manifest.json. This JSON file maps tool names (capabilities) to their supply-chain metadata, including GitHub release URLs, package manager identifiers (apt/brew/winget), and SHA-256 checksums.
When you invoke the bootstrap script, the expand_capabilities function (found in skills/scripts/bootstrap-reverse.sh at lines 92-104) first resolves any aliases and implicit dependencies. For example, requesting frida-ps automatically expands to include the base frida package. The system then dispatches each capability to the appropriate installer via ensure_capability (lines 307-334), which selects between apt-get, brew, winget, direct GitHub downloads, or language-specific managers like pipx and npm.
Prerequisites and Initial Setup
Before running the bootstrap scripts, ensure you have internet access and standard shell permissions. The scripts automatically detect your platform—Linux, macOS, Windows, or Kali Linux—and adjust behavior accordingly.
Clone the repository to access the scripts:
git clone https://github.com/zhaoxuya520/reverse-skill.git
cd reverse-skill
No additional dependencies are required to start; the bootstrap scripts themselves install the necessary runtimes (Python, Node.js, Java) via the ensure_python_runtime, Ensure-NodeRuntime, and Ensure-JavaRuntime functions.
Installing Tools on Linux and macOS
The Bash implementation at skills/scripts/bootstrap-reverse.sh handles Unix-like systems. This script orchestrates platform detection, runtime installation, and tool deployment.
Basic Installation Syntax
To install a single tool, pass its capability name as an argument:
bash skills/scripts/bootstrap-reverse.sh jadx
For multiple tools, separate them with spaces:
bash skills/scripts/bootstrap-reverse.sh jadx apktool frida
Verification and Extraction Pipeline
When installing from GitHub releases, the install_github_release function (lines 100-121) performs the following:
- Downloads the asset to a temporary location.
- Validates the SHA-256 digest using the checksum stored in the manifest.
- Extracts the archive to
$HOME/tools(or the directory specified byREVERSE_SKILL_TOOLS_DIR). - Appends the binary location to your shell’s PATH.
Python Runtime Guarantees
The ensure_python_runtime function (lines 63-72) ensures that python3 and pipx are present at the exact versions specified in the manifest, preventing environment drift between team members.
Installing Tools on Windows
Windows users utilize the PowerShell counterpart at skills/scripts/bootstrap-reverse.ps1. This script mirrors the Bash logic but leverages Windows-native package management.
PowerShell Execution
Run the script with the -Capability parameter accepting an array of tool names:
.\skills\scripts\bootstrap-reverse.ps1 -Capability jadx,apktool,frida
Windows Package Management
The Ensure-WingetPackage function handles system packages through winget, while the Assert-DownloadedFileIntegrity function performs SHA-256 validation equivalent to the Bash implementation. For GitHub-hosted tools, the script uses Invoke-WebRequest followed by extraction logic defined in skills/scripts/lib/BootstrapSupplyChain.ps1.
Integrating with MCP Servers
The bootstrap scripts can automatically register tools as Model-Control-Protocol (MCP) servers for AI assistants like Claude and Codex. This enables AI-driven reverse engineering workflows where tools expose standardized endpoints.
Use the --mcp-host flag (Bash) or -McpHostTarget parameter (PowerShell) to specify the target client:
bash skills/scripts/bootstrap-reverse.sh frida --mcp-host=claude
.\skills\scripts\bootstrap-reverse.ps1 -Capability frida -McpHostTarget Both
The write_mcp_server, write_claude_mcp_server, and write_codex_mcp_server functions (lines 78-98) generate the appropriate configuration files at ~/.claude/mcp.json or ~/.codex/config.toml, pointing to the tool’s executable path.
Starting Background Services
Long-running analysis engines like anything-analyzer or idapro MCP servers require persistent processes. The bootstrap system can launch these and verify port availability using the --start-services flag:
bash skills/scripts/bootstrap-reverse.sh anything-analyzer --start-services --mcp-host=both
.\skills\scripts\bootstrap-reverse.ps1 -Capability anything-analyzer -StartServices -McpHostTarget Both
The script polls the service ports (e.g., port 23816 for anything-analyzer) before completing, ensuring dependent tools have fully initialized.
Customizing the Installation Directory
By default, tools install to $HOME/tools. Override this by setting the REVERSE_SKILL_TOOLS_DIR environment variable:
export REVERSE_SKILL_TOOLS_DIR="$HOME/security-tools"
bash skills/scripts/bootstrap-reverse.sh pentestswarm
$env:REVERSE_SKILL_TOOLS_DIR = "$HOME\security-tools"
.\skills\scripts\bootstrap-reverse.ps1 -Capability nmap,pentestswarm
This variable propagates through the install_github_release logic and PATH modification routines in both the Bash and PowerShell implementations.
Discovering Available Capabilities
To list all installable tools without executing installations:
bash skills/scripts/bootstrap-reverse.sh --list
On Windows, use the help mechanism:
.\skills\scripts\bootstrap-reverse.ps1 -Capability @() -McpHostTarget None -Help
Summary
- Declarative Installation: Tools are defined in
skills/scripts/bootstrap-manifest.json, ensuring version consistency across teams. - Cross-Platform: Use
skills/scripts/bootstrap-reverse.shfor Linux/macOS andskills/scripts/bootstrap-reverse.ps1for Windows. - Automatic Dependency Resolution: The
expand_capabilitiesfunction resolves tool aliases and prerequisites automatically. - Supply-Chain Security: SHA-256 verification is enforced via
verify_sha256(Bash) andAssert-DownloadedFileIntegrity(PowerShell) for all GitHub releases. - AI Integration: Optional MCP server registration supports Claude and Codex via
--mcp-hostor-McpHostTarget. - Service Orchestration: The
--start-servicesflag manages long-running background processes and port readiness.
Frequently Asked Questions
Where does reverse-skill store the installed tools?
By default, binaries extract to $HOME/tools on Unix systems or the equivalent user profile directory on Windows. You can customize this location by setting the REVERSE_SKILL_TOOLS_DIR environment variable before running the bootstrap script, as implemented in the path resolution logic of both bootstrap-reverse.sh and bootstrap-reverse.ps1.
How does the script handle tool version conflicts?
The bootstrap system reads exact versions from skills/scripts/bootstrap-manifest.json. When ensure_capability dispatches to package managers like apt-get or brew, it specifies version constraints where possible. For GitHub releases, the install_github_release function downloads the exact release asset listed in the manifest and validates it against the embedded SHA-256 checksum, preventing version drift.
Can I use the bootstrap script on Kali Linux?
Yes. The repository includes Kali-specific variants at kali/scripts/bootstrap-reverse.sh and kali/scripts/bootstrap-manifest.json that utilize the same core functions—expand_capabilities, ensure_python_runtime, and install_github_release—but with manifest entries optimized for penetration testing workflows common to Kali environments.
What happens if a tool is already installed?
The ensure_capability function and its PowerShell equivalent Ensure-WingetPackage first check for existing installations via which (Bash) or Get-Command (PowerShell) before attempting installation. If the installed version matches the manifest specification, the script skips redundant operations; if versions differ, it updates the tool according to the manifest’s supply-chain configuration.
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 →