What Is the Tool Registry in reverse-skill and Where Is It Located?

The tool registry in reverse-skill is the auto-generated file skills/tool-index.md (and its JSON counterpart skills/tool-index.json) that serves as the single source of truth for external tool availability, paths, and versions on the host machine.

The reverse-skill framework maintains a centralized tool registry to coordinate external dependencies across reverse engineering workflows. This machine-specific index records which reverse engineering tools are installed, where they reside on the filesystem, and how to obtain any missing utilities. According to RULES.md (lines 115-116), all CLI clients read from this shared registry and write back to it after installations, ensuring consistent state across all skill modules.

Where the Tool Registry Is Located

The primary tool registry resides at skills/tool-index.md in the repository root. This markdown file contains a machine-generated table mapping tool names to their system locations. A parallel machine-readable version exists at skills/tool-index.json for programmatic consumption by scripts and AI agents.

Both files are git-ignored because they contain host-specific absolute paths and availability states. The repository instead tracks skills/tool-index.md.template, which documents the expected schema and instructs users to run the refresh scripts on first use.

The registry concept is formally defined in RULES.md, which declares: "tool-index.md is the shared registry — all CLIs read from it, all CLIs write to it after installing."

Registry Schema and Data Columns

The markdown registry follows a structured table format with eight distinct columns. Each row represents one external tool and its relationship to the host system:

  • Tool — The executable name (e.g., jadx, frida, apktool)
  • Skill — The specific skill module that consumes the tool
  • Purpose — Functional category such as decompiling, dynamic analysis, or disassembly
  • Available — Detection status (yes if found on host, no if absent)
  • Path — Absolute filesystem path to the binary or launch script
  • Version — Version string obtained via the tool's native version command
  • Source — Discovery mechanism: command (PATH lookup), path-probe (known location), or
  • Install hint — Platform-specific guidance for obtaining the tool if missing

This schema allows the framework to distinguish between tools available via system PATH versus those installed in custom directories like ~/tools/ or C:\tools\.

How the Registry Is Generated

The tool registry is generated automatically by platform-specific refresh scripts that probe the system without installing software. These scripts are detection-only utilities that query the host environment and emit updated registry files.

Linux, macOS, and Kali Linux: The bash script skills/scripts/refresh-tool-index.sh performs the detection. It checks for tools using command -v, scans known installation directories, and writes both skills/tool-index.md and skills/tool-index.json.

Windows: The PowerShell script skills/scripts/refresh-tool-index.ps1 performs equivalent detection on Windows hosts, handling .exe and .bat extensions and Windows-specific installation paths.

Both scripts execute version commands on discovered binaries to populate the Version column and generate installation hints for missing tools based on the skill requirements.

Working with the Tool Registry

Refresh the Registry on Linux or macOS

After installing new reverse engineering tools, regenerate the index to update availability and paths:


# Generate fresh registry files

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

# Verify a specific tool entry

cat skills/tool-index.md | grep frida

Example output showing a detected Frida installation:


| frida | reverse-engineering | Dynamic instrumentation CLI | yes | /home/user/.local/bin/frida | 16.0.0 | command | pipx: pipx install frida-tools |

Refresh the Registry on Windows

On Windows systems, use the PowerShell equivalent to update the tool index:


# Execute the refresh script

powershell -NoProfile -ExecutionPolicy Bypass -File "skills/scripts/refresh-tool-index.ps1"

# Search for a specific tool entry

Select-String -Path "skills\tool-index.md" -Pattern "jadx"

Example output showing JADX detection:


| jadx | apk-reverse | APK Java/Kotlin decompiler | yes | C:\tools\jadx\bin\jadx.bat | 1.2.1 | command | GitHub release: download jadx ZIP to ~/tools/jadx |

Programmatic Access via JSON

For automation scripts or AI agents, parse the JSON registry instead of the markdown table:

import json
import pathlib

# Load the machine-readable registry

registry_path = pathlib.Path("skills/tool-index.json")
registry = json.loads(registry_path.read_text())

# Locate Ghidra's installation path

ghidra_entry = next(e for e in registry if e["Tool"] == "ghidra")
print(ghidra_entry["Path"])

# Output: /home/user/tools/ghidra/ghidraRun

This approach eliminates string parsing of the markdown table and provides direct access to structured fields like Version and Install hint.

Summary

  • The tool registry consists of skills/tool-index.md (human-readable) and skills/tool-index.json (machine-readable), both located in the skills/ directory and generated from host system state.
  • These files are git-ignored because they contain machine-specific absolute paths; the repository tracks skills/tool-index.md.template as documentation.
  • The registry tracks eight data points per tool: name, skill association, purpose, availability, absolute path, version, discovery source, and installation guidance.
  • Generation is handled by skills/scripts/refresh-tool-index.sh (Linux/macOS) or refresh-tool-index.ps1 (Windows), which only detect existing tools without installing software.
  • RULES.md mandates that all CLI clients treat tool-index.md as the single shared source of truth for tool locations across the framework.

Frequently Asked Questions

What is the purpose of the tool registry in reverse-skill?

The tool registry serves as the central coordination point for external dependencies. It allows skill modules to locate tools like apktool or ghidra dynamically without hardcoding paths, while providing installation guidance when tools are missing. This ensures portability across different development machines and operating systems.

How do I update the tool registry after installing new software?

Run the appropriate refresh script for your platform. On Linux or macOS, execute bash skills/scripts/refresh-tool-index.sh. On Windows, run powershell -NoProfile -ExecutionPolicy Bypass -File "skills/scripts/refresh-tool-index.ps1". These scripts will probe your system and rewrite skills/tool-index.md and skills/tool-index.json with current availability and paths.

Why is the tool-index.md file git-ignored?

skills/tool-index.md and skills/tool-index.json are git-ignored because they contain absolute file system paths and machine-specific availability states that vary between environments (e.g., /home/user/.local/bin/frida versus C:\Users\name\tools\frida.exe). Including these in version control would cause conflicts between different developer machines. The repository tracks skills/tool-index.md.template instead, which documents the format without host-specific data.

Can I manually edit the tool-index.md file?

While technically possible, manual edits are discouraged because the refresh scripts will overwrite your changes on the next execution. According to RULES.md, the registry is maintained exclusively through the detection scripts or CLI write-back operations after successful tool installations. For persistent custom tool locations, modify the detection logic in the refresh scripts rather than the generated registry files.

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 →