What Is the Purpose of the `tool-index.md` File in Reverse-Skill?

tool-index.md is a machine-specific, auto-generated index that catalogs every security tool available on the host where Reverse-Skill runs, enabling safe skill routing and automated capability detection.

The [tool-index.md](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.md.template) file sits at the heart of Reverse-Skill's capability-discovery subsystem. Unlike static documentation, this file is generated on-demand by platform-specific scripts and serves as the single source of truth for which reverse-engineering tools are installed, their versions, and whether required Micro-Capability Protocol (MCP) services are online.

How tool-index.md Is Generated

Reverse-Skill provides two generation scripts that scan the host environment and produce the index:

These scripts populate a markdown table with the following columns:

Windows Column Linux/macOS Column Purpose
工具 / Tool Tool Binary or service name (jadx, frida, nmap, etc.)
归属 skill / Skill Skill Which Reverse-Skill capability requires this tool
作用 / Purpose Purpose Human-readable description of the tool's function
可用 / Available Available Boolean: Yes if detected, No if missing
路径 / Path Path Absolute path to the binary or service endpoint
版本 / Version Version Detected version string
来源 / Source Install hint Installation command or source (apt, pip, winget, GitHub release)
脚本引用 / Script reference Windows-specific invocation snippet
能力状态视图 / Capability Status Capability Status MCP registration status, TCP health check, auto-install flags

The generation process leverages helper libraries like [kali/scripts/lib/tool-discovery.sh](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/lib/tool-discovery.sh) for low-level binary detection and version parsing.

Why tool-index.md Is Gitignored

The file does not ship with the repository. It is intentionally excluded via .gitignore because:

  • Tool availability varies by workstation
  • Version strings differ across environments
  • MCP service endpoints are host-specific

Instead, the repository contains a template at skills/tool-index.md.template that documents the expected schema and generation workflow.

Runtime Uses of tool-index.md

The generated index drives four critical runtime behaviors in Reverse-Skill.

1. Pre-Execution Tool Validation

Before invoking a skill, the routing engine checks whether required tools are present. This prevents mid-execution failures.


# Example: Verify nmap availability before network scan

$toolIndex = Get-Content -Path ".\tool-index.md" -Raw
if ($toolIndex -match '\| nmap \|.*\| Yes \|') {
    Write-Host "nmap detected — proceeding with scan..."
} else {
    Write-Error "nmap missing — aborting skill execution."
}

2. MCP Service Health Verification

MCP-based capabilities (idapro, burpsuite-mcp, anything-analyzer) require both registration and network reachability. The Capability Status sub-table provides this data.


# Check if IDA Pro MCP is registered and responsive

$capabilityMatch = $toolIndex -match '\| idapro \|.*\| (?<mcp>Yes|No) \|.*\| (?<online>Online|Offline) \|'
if ($Matches.mcp -eq 'Yes' -and $Matches.online -eq 'Online') {
    Invoke-IDAProAnalysis
}

3. Automatic Installation Guidance

When tools are missing, the Source / Install hint column provides actionable commands.


# Extract install hint for frida

if grep -q '| frida |.*| No |' tool-index.md; then
    install_cmd=$(grep '| frida |' tool-index.md | awk -F'|' '{print $8}' | xargs)
    echo "Install with: $install_cmd"
    # Output: pip install frida-tools

fi

4. Routing Decisions in routing.json

The [skills/config/routing.json](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json) configuration references tool-index.md to determine which skill implementation to execute based on available capabilities.

Architecture: From Template to Runtime Index


┌─────────────────────────┐     ┌─────────────────────────────┐
│ tool-index.md.template  │────→│ Platform-specific generator │
│  (schema documentation) │     │  (PowerShell or Bash)       │
└─────────────────────────┘     └─────────────────────────────┘
                                          │
                                          ▼
                              ┌─────────────────────────────┐
                              │   tool-discovery.sh/.ps1    │
                              │   (binary/version/MCP scan) │
                              └─────────────────────────────┘
                                          │
                                          ▼
                              ┌─────────────────────────────┐
                              │     ./tool-index.md         │
                              │   (host-specific, ignored)  │
                              └─────────────────────────────┘
                                          │
                    ┌─────────────────────┼─────────────────────┐
                    ▼                     ▼                     ▼
              skill scripts         routing.json           operator dashboard
           (pre-flight checks)    (capability-based      (human-readable
                                    routing logic)          status view)

Generating and Refreshing the Index

Windows (PowerShell)


# Execute generation script with bypassed execution policy

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

Linux/macOS (Bash)


# Run on Kali or other Linux distributions

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

Regenerate the index whenever you:

  • Install new security tools
  • Upgrade existing tool versions
  • Deploy or restart MCP services

Summary

Frequently Asked Questions

What happens if tool-index.md is missing when a skill runs?

Reverse-Skill will fail safe. Skills check the index before execution; if the file or a required tool entry is absent, the skill aborts with an error directing the operator to run the appropriate refresh script.

Can I manually edit tool-index.md?

Manual edits are discouraged. The file is overwritten on each generation run. To customize tool detection logic, modify [kali/scripts/lib/tool-discovery.sh](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/lib/tool-discovery.sh) or the equivalent Windows discovery functions.

How does Reverse-Skill detect MCP service health?

The generation scripts perform TCP ping and HTTP handshake against configured MCP endpoints (e.g., http://localhost:8080/health for burpsuite-mcp). Results populate the Capability Status column as Online or Offline.

Why are the Windows and Linux column names different?

The Windows script targets Chinese-speaking operators with bilingual headers (工具/Tool, 归属 skill/Skill), while the Linux script uses English-only headers. Both schemas encode identical semantic information for consumption by the routing engine.

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 →