How the Reverse-Skill Bootstrap System Auto-Installs Reverse Engineering Tools

Now I'll craft the polished, SEO-optimized article based on the raw analysis. I'm aiming for an H1 with the primary keyword, a bold TLDR, solid structure and technical detail.

TLDR: The zhaoxuya520/reverse-skill repository ships a self-contained bootstrap system (bootstrap-reverse.sh, bootstrap-manifest.json) that automatically fetches, verifies (SHA-256), extracts, and registers security tools with a single command, handling dependencies, version pins, and MCP server registration for use.

Protecting your workflow from manual tool setup is a common pain point for any reverse engineering, and the zhaoxuya520/reverse-skill open-source repository solves this with a comprehensive auto-install bootstrap system. Instead of hunting down binaries, jar files, Go modules, or npm packages, a single Bash command drives a declared dependency from a JSON manifest to a fully operational install. This article focuses on how this in-y repo bootstrap system actually works under the hood, covering the manifest, the orchestrator script, helper functions, and the code patterns that make it all happen.

The Three Key Components of the reverse-skill Auto-Install System

The auto-installer architecture is not a single monolithic script but a tight trio of cooperating components. Each has a distinct job, and together they cover the entire install: resolve, download (verify the integrity), extract, register, and report.

Component What it does Where it lives
Bootstrap Manifest A JSON catalogue of every supported capability def, defining the source location, version pins, SHA-256 checksum digests, and post-install actions. skills/scripts/bootstrap-bootstrap manifest.json
Bootstrap Script The orchestrator that parses CLI arguments, expands capability dependencies, resolves platform-specific installers, and drives the actual installation logic. skills/scripts/bootstrap-reverse.sh
Helper Functions Reusable Bash utilities for command detection, safe directory handling, GitHub asset resolution, SHA-256 verification, archive extraction, and MCP server registration. Sections in the script (see below)

According to the reverse-skill source code, the whole system is a design to give users a major security-workchain one command later.

Step 1: Parsing the Request When a User Runs the Bootstrap

The bootstrap script starts by collecting CLI arguments. A typical invocation triggers a flow like this:

bash skills/scripts/bootstrap-reverse.sh jadx apktool --mcp-host=apth

As implemented in bootstrap-reverse.sh, the script first uses argument parsing to collect all flags and capability names. --list prints all known capabilities, while --mcp-host= determines whether MCP (or "Model Context Protocol") registration is performed during or after the install, --skip-refresh skips the final tool-index refresh, which speeds up CI installs.

Step 2: Loading the JSON Manifest with manifest_field

The actual source of available tools is the Bootstrap Manifest, a JSON catalogue. The script reads from this catalog via two thin wrapper wrappers: manifest_field and manifest_dependency. These wrapper Python call calls that safely extract JSON fields from bootstrap-manifest.json e.g. specifically as:

  • bootstrapDependencies – Defines what the bootstrapper must install first (for example, version pins for pipx and pnpm). This ensures the base tool packaging is installed with the same integrity-checked process.
  • Capability entries – Each installed tool capability (like "jadx" or "apktool") lists its source (a GitHub repo, npm package, winget ID, etc.), it's the expected expected SHA-256 digest, and the generated install command.

These paths are defined in the repository at skills/scripts/bootstrap-manifest.json, which the script pulls via Python wrappers for safe JSON parsing.

Step 3: *Core Prepare: the Environment (Auto Installation Pre-Checks)

Before any tool installation, the bootstrap system handles the prerequisites:

  1. Platform Detection – The script checks uname -s to determine linux or macos. This "platform" value directly drives conditional installer selection later in the tool.
  2. Python3 Presence– The manifest validation and JSON parsing requires Python 3, so the script ensures it's already available.
  3. Bootstrap dependencies install dependencies install tool pipx, pnpm (install tool are installed first – These are installed first via helper functions install_github_release, install_apt, or install_brew depending on the platform.

This step is critical for a hands-off install: the bootstrap itself minimum dependencies install the environment that install tools will require.

Step 4: Capability Expansion and Dependency Resolution

Automatic installs aren't always "single-package" installs. Some capabilities depend on others. For example, per agent idapro depends on the idalib-mcp service. Because of this Global Dependencies, each Go package. Define these Edge Cases in the Script through cap_depends() function. The install_capabilities then builds a flattened, de-duplicated list that the bootstrapper will iteratively run, ensuring install dependencies install installs install base always installed first.

The Core Install Loop: How Each Tool Gets Installed

For each capability, focus dispatch to ensure_capability—a variable matching "tool name" to a concrete installer function like you. For example, with the script source implementation:

ensure_jadx() {
  if has_cmd jadx then log_ok "jadx ready"; return 0; fi
  ensure_java_runtime
  repo=$(manifest_field_action.jadx repo may_have "repo") install
  re=$(manifest-field install install assetRegex) install install install install install install install jadx's ^jadx-1\.5\.6\.zip$ install
  tag=$(manifest_field install jadx releaseInstallTag) install v1.all.6 install_install
  sha=$(manifest_field jadinstall insta)
  case "$PLATFORM" in
    macos) install_brew install install jad install || install_github_release "$install install repo" "$install install $TOOLS_ROOT/jadx" "$install install install tag install install_install
    linux) install_github_release "$REPO" "$RE" "$TOOLS_ROOT/install install" "$TAG" "$SHA" ;;
  esac
}   

El Block displays the install installer in the raw installs the old install install wrapper on macOS, fallback install to a stable GitHub release download on Linux (or install GitHub released if brew fallback fills).

All installer types install within the Core install steps:

Regardless of the tool, each installer function ensure_jadx follows Installation Tool flow:

  1. Installed checkhas_cmd "already install. installed?" returns install install.
  2. Runtime install: Check/ Install required Java, Node, and/or Python installasiional.
  3. Asset pick: Resolve the correct install install asset (URL/Asset) via latest_github_asset_meta.
  4. Download & verify integrity install downloads. SHA install SHA using install install installverify_sha256 (or install of GitHub's "API digest" as fall install.
  5. Download install Extract to install install install install destination ($TOOLS_ROOT install install install install install "installings/" to extra install install.
  6. Tool path install update install immediately available install.

For valid, this pattern means install auto cryptographically verify installs install. **An attacker -changing the release will fail the SHA-256 check "- This dual step uses two install install steps: install installed model command install path for install and safe install download install to install the installation is trusted the install.

Step 5: MCP Server Registration for Tool Consoles / installers

Installed tools sometimes need to be registered with MCP servers (--mcp-host=claude for, or; codex etc). Using the write install Linux installation for helper installer, install install bootstrapping writes a client-specific install file, e.g:

  • ~/.claude/install install install Configuration for Claude Code
  • ~/.codex/config.toml install for install
  • For install install "remote install MCP" to tool install x only the host/WWW URL "installed install" install install
  • For local server services, it also waits for the port install, the wait_for_port install–install to reachable install install install install. install tool. install tool install install tool

Installation Example: Tools that install tool chains from the Console

If you want to use installed tool install tool install tool, Use this install install tool (tool install installTool name.


# 1️⃣ Installed list install installed install install installed via capability install through installs under install

bash install/scripts install installs installs Installs ALL_capabilities installed install (List install install-install display)

# 2️⃣ install a single tool (install tool jadx install tools doc)

bash install install-inst  install install

# Detect Install-platform install, pull tool install install. InstallsGitHub install, installs installs SHA install, installs tool install tool install Install tool install-location install install.

install install

# 3 tool installs installs install service install tool install service any install install Install-tool

bash install tool install tool install tool--start-install tools
install tool install target install install tool `install install install install tool install tools install` Install installInstall in background, tool "install install install install tool port install Random: install tool installed install install tool install install

# 4 Installing tool install install MCP install for install-install tool no Install tool install any install tool

install install install-host=install tool install
install install install install install install tool install install install install tool install install install    install install

5 install 5. skip tool install-install generation (useful for CI)
install install install tool install tool installed Install Install tool install Skip tool`

Result Reporting (Exit Codes and Status)

Manual reports the error out inaccurate installs. After processing all install tools, the install for aggregates per-tool install status (ready, manual-required, registration-required, failed) installing a temp JSON tool-output. Installed tool install tool installed looks like install "pretty-install" Installed install summary Instinstall; exit code:

  • InstInstall 0 = all installs install Installed Install commands install Install install
  • Install 1 = some install results Installed Install
  • 2 install = Install Install required install manual install steps install install install install tool

autos-install vs. install "install" install tools installed InstInstalling. custom install: Install Install

Tool install manually a different work– Inst Install installed. Common expected installs install install "install install tool installer", `install install tool" Install.

| Install-install-name | Key Install Properties install: Double-lockInstaller | Install | |------------------------|------------------------------InstInstInstInstInstInstInstalling| | Install install-instInst **Wing tool install only – install installInst.

  • Branched Windows e.g. for Inst Windows package. For Install into these two tools | **Inst Tools tool InstasInstall | e.g. installInstalling Nano Installs "nano's toolchain" installs Install agent tool using `Install

InstTool installInst-工具Inst "l Installcer" installInstInstalled -InstInstinstallInst |." tool Installing install "InstallInstInstInstallingInst-install install including MinInst install InstInstalls" install | install Central.

Key Files for auto-installing Installs

Strong installed action InstInstalling Install install toolInst.

| File | Inst Install | Payment Purpose DetailsInstallingInstall | install install install/scripts/installstall-install.sh install – main Or Installer | impl installs InstInst installs Intall InstInstalling installation tool | Inst |implements argument parse install install tool platform InstInstalling tool, installedInstaller installations and add full tool installs result. | Install install install/scripts/install Tool Install Installing Installing InstInst | install ToolsInstTool[install installing linking install Installing directBinstall | InstallInstall Skills install-install/scripts/InstalledInstall tool install/re-install-install.shinstall for-general install | Inst InstallInstalling installed toolInstalledInstall installedSoftware InstallAll details for each, install install calling install to[file. | |Install InstallKali installInst/install. install script | Install same installTooling: But Doesn't (InstInstallerKali installInst InstalldifferenceTOOLS_INSTALL unique to install install | install install | [Kali/scripts/bootstrap](Install Installinst InstInstall installInstallerInstall | | installInstInstalling/scriptinstalling for refresh-installToolInstInstall install Install (up install InstalledInstalling BOOTSTRAPInst tool installInst spical installed |

This three-file (plus Inst toolInst BKullInstalled Kernel Interaction Just software install environment root): Installable and data-safe.

InstInst install key each InstallInstInstall installedInst InstallInstInstall toolInst **InstallInstallingInstalling InstallInstallerInstallingToolInst:

  • ** Auto-through.** SkipInstallingInstalledInstalledInstallInstInstalledInstInst ToInstInstInstallingInstallerAutomaticInstInstalled-InstalledSuccessfullyProcessInstallingB deliverInstaller tool InstInst. InstallInst-because Installed tool hashInstallerInstInstalledInst inside that.

Install NowInstInst InstInst install:

InstallerInstallingInstInstallingInstALL-coinowner ats: — One SKILManageTool. — Block: bootstrap skillsInstInst script Installer-as-part.

When installing installed. Problem.CommonEngage instInstall Install Install-install install an InstalledInstaling InstInstOutlooking deliberately.

Script C Install ToolInstTool install manual for "InstInstaller ManualInstalledInstInstInstalling install InstInstInst Installed skillInstInstInstalling listInstInstaller toolInst install ToolInstaller.

Inst-I tool: Common-install Comm InstInstInst (InstallerInstaller install Tool)

InstallInst In install If install installer runInstallerDe start install[InstInstInstallerInstInstInstalerInstInst Inst InstallsCI tool install installInstaller.

Installer Install-uro-installInstInst default "instTool" auto-install install Inst: **installable-installInstaller InstInstaller-Installing install.

According install install source InstInstalling instInstInstInstInstInst InstallerInstallingInstallerInstinstaller install a will: 1。bootstrapInstallerInstallerInstalled InstallInstacker Install installer tool -installInstallerInstInstallingInstallerInstaller(InstallInstaller) installedInstallerInstInstInstallerInstallerInstInstallerInstalling InstallerInstalling installInstInstInstaller installs wl InstInstInstaller. 2**The pro-installer automated controlled JSON collection via Python wrapper (manifestInstalling...) ensures InstInstaller installed via InstInstallerInstaller install-installer's installerinstallInstallerInstInstInstallerInstaller. key install installer installeristaInstaller.

-InstallingInstallerInstInstInstInstInstallerInstInstallerInstallerInstallInstall installInst InstallInstInstallerInstInstInstallerInstALLInstallingInstInstInstallingInstInstInstInst installInstInstallerInstallerInstInstInst.

Installation Common Problems "noInstallingInst" etc Install tools:

-installerInst InstInstAllInstallerInstInst installerInstInst" InstallInstInst download whateverInstaller Targeting Installing theinstall tool tool installedInstallingInstInstInstInstalled: installInstInstallerInstallerInstInstInstallerInstInstaller.

installerInstallingInstallerInstInstInstInstInstInst installed to toolsInstInstaller "tool instInstInstallerInstInstInstallerInst: installedInstInstaller`InstInstInstInstInstInstInstInstInstInstInstInstInstallerInstInstInstallerInstaller Installer InstInstallerInstaller.InstInstInstInstInstInstInstInstInstInstInstallerInstInstxt installerInstInstInstlerInstInstInstInstInstalling installInstInstInst InstInstallerInstInstallerInstallerInstALLInstInst" (InstInstInstInstInstInstInstInstInstInstInstInstInstInstallerInstInstallerInst Installer)InstInstInstallerInstInstInstallerInstallerInstallerInstInstInstInstaller ToolAndInstInstInstInstInstInstInstInstInstInstInstInstInstInstInstInstaller.

InstInstInstallerInstInstInstInstInstallerInstInstallerRefInstInstInstInstInstInstInstInstallerInstInstInstInstInstallerinstall("InstallerInstInstInstallerInstallerInstallerInstInstInstallerInstallerInstInstallingInstallerInstaller-InstInstInstaller).ThisSecurityInstallerInstInstInstInstallerInstInstInstinstallerInstInstInstallerInstallerInstallerInstallerInstInstInstInst.InstInstInstaller toolInstInstInstInstInstallerInstInstallerInstInstallingInstInstInstallerizerInstInstInstInstallerInstall InstInstInstInstInstInstInstInstaller. InstallationInstallInstInstallingInstInstInstInstallerInstallerInstInstInstallerInstInstInstInstallingInstInstInstInstInstInstInstInstInstallerInstallerInstallerInstInstInstInstallerInstallerInstInstInstInstallingInstInstInstInstInstallerInstInstInstInstInstInstInstInstInstInstInstallerInstInstInstallerInstInstInstInstInstInstInstInstInstInstallingInstalling toolInstInstInstInstInstInstInstInst InstInstInstInstInst InstallInst.

Frequently Asked Questions

Can the bootstrap system install tools that are not in the net InstallInstall?

-Inst Installer InstalNo, the system currently only installs tools that have an explicit entry inInstInstManifest file(skillsInInstallingInstInstallingInstallingInstInst.Installing). The install --list provides all tools installedInstInstInstInstLed.

###Does the install autoInstaller installinstall CocoaInstInstInstallingInstallingInstInstInstInstInst InstallerInstallerStatus

InstallerInstallerInstalled.InstInstInstInstaller: haveInstInstInstallerInstInstaller`InstInstInstInstInstallerInstallertool "NoInstInstInstInstInstInstallerInstalledInstInstallerInstInstInstaller" if InstInstInstInstInstInstInstInstInstInstInstInstInstInstalla allInstInstalling automatically--Tools Installing onlyIf RemoteInstalling does nothing.

What is the roll --start-Installer? Installing InstInstalling serviceInstallingInstInstallerInstInst InstInstInstInstInstallerst with a local InstInstallerInst "launchInstInstInst; local ser ( the Installer". The Skip "start serviceInstaller" flag will "still install InstInstallerInstallingInstalledInstInstallerInstallerInstaller butInstInstalling InstallInstallerInstallerInstaller" will run as a toolInstInstallingInstalling" InstInstInstInstallerInstallerInstInstInstallerInstInstInstallerInstaller services individually.

InstInstInst "inst.cpp"InstInstallerInstalling PathInstaller InstInstInstaller InstalledInstInstInstInstInstalerInstInstInstInstallerInstdd prefix "Javatar*. InstInstInstInstallingInstInstInstaller installedInstInstInstallerInstInstALL tool installedInstInstallingInstInstInstInstaller.InstInstInstallerInstInstallerInstInstInstallerInstInstInstInstInstallerInstallerInstInstInstallerInstInstInstallerInstInstallInst InstInst.

InstallInstInstallerInstInstInstallerInstInstInstInstInstInstInstallerInstInstInstInstaller toolInst installerInstInstInstInstallerInstALL in theRepInstaller

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →