# Format of Tool Paths in reverse-skill's Tool Index: Complete Specification

> Discover the tool path format in reverse-skill's tool index. This comprehensive guide details the markdown table structure and columns for efficient security tool management.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: api-reference
- Published: 2026-08-24

---

**The tool-index in reverse-skill is a markdown table with five columns—Tool Name, Available, Path to Executable, Version Info, and Source/Notes—that stores the exact command-line paths to security tools like r2, ida, and frida, generated automatically by refresh scripts.**

The `zhaoxuya520/reverse-skill` repository maintains a centralized **tool-index** to standardize how skill modules locate external security utilities across Windows, Linux, and macOS environments. Understanding the format of tool paths in reverse-skill's tool index ensures your automation scripts correctly resolve binaries like radare2, IDA Pro, and Frida regardless of host configuration.

## Tool-Index Structure and Column Format

The tool-index follows a strict markdown table structure defined in `skills/tool-index.md.template`. Each row represents a single external utility with five specific fields that standardize path references.

### The Five-Column Markdown Table

The layout uses these columns to capture executable metadata:

- **Tool Name**: The canonical identifier for the utility (e.g., `r2`, `ida`, `frida`, `gdb`).
- **Available?**: A boolean flag (**yes/no**) indicating whether the tool was detected on the current host.
- **Path to Executable**: The exact command or filesystem path used to invoke the tool. This may be a simple command like `r2.bat`, an absolute path like `/usr/local/bin/ida`, or a Windows path like `C:\Program Files\Frida\frida-run.exe`.
- **Version Info**: The detected version string (e.g., `radare2 6.2.0`, `IDA Pro 9.0`).
- **Source/Notes**: The discovery method employed, such as **FallbackPath**, **Registry**, or **which**, plus any additional context.

## How Tool Paths Are Discovered and Recorded

The tool-index is not maintained manually. Instead, the **refresh-tool-index** scripts populate the table by scanning the system and resolving executable locations using platform-specific strategies.

### Discovery Scripts

Two scripts handle cross-platform detection and write to [`skills/tool-index.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.md):

- `skills/scripts/refresh-tool-index.ps1`: PowerShell implementation for Windows environments.
- [`skills/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/refresh-tool-index.sh): Bash implementation for Linux and macOS.

### Path Resolution Methods

The scripts employ multiple strategies to locate executables and determine which path format to record:

- **which**: Standard Unix command resolution for binaries in `$PATH`.
- **FallbackPath**: Default installation paths when standard resolution fails.
- **Registry**: Windows registry lookups for commercial tools like IDA Pro.

## Working with the Tool-Index Files

Understanding the relationship between the template and generated files ensures you can both consume and regenerate the index correctly.

### Template vs. Generated Output

The repository stores `skills/tool-index.md.template` as the structural blueprint containing the column headers and empty skeleton. When you run the refresh scripts, they clone this structure into [`skills/tool-index.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.md), filling in the actual detected paths and versions for the current host.

### Consuming the Tool-Index Programmatically

Refresh the index before consuming it to ensure paths are current for your environment:

```powershell

# Regenerate the tool-index on Windows

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

# Parse the generated table to extract r2's path and execute

$toolIndex = Get-Content skills/tool-index.md | ConvertFrom-Markdown
$r2Path = ($toolIndex | Where-Object Name -eq 'r2').Path
& $r2Path -A main.bin

```

```bash

# Regenerate the index on Linux/macOS

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

# Extract gdb's executable path using awk

gdbPath=$(awk -F'|' '/\bgdb\b/ {print $3}' skills/tool-index.md | xargs)
"$gdbPath" --args ./binary

```

## Summary

- The tool-index uses a **five-column markdown table** format with Tool Name, Available, Path to Executable, Version Info, and Source/Notes columns.
- Tool paths can be **simple commands, relative paths, or absolute filesystem paths** depending on the discovery method and operating system.
- The `refresh-tool-index.ps1` and [`refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/refresh-tool-index.sh) scripts in `skills/scripts/` automatically generate the populated index.
- The template file at `skills/tool-index.md.template` defines the structure, while [`skills/tool-index.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.md) contains the runtime data specific to the host.
- Discovery methods include **which**, **FallbackPath**, and **Registry** lookups to accommodate different installation conventions.

## Frequently Asked Questions

### What columns are in the reverse-skill tool-index?

The tool-index contains five columns: **Tool Name**, **Available?** (yes/no), **Path to Executable**, **Version Info**, and **Source/Notes**. This format is defined in `skills/tool-index.md.template` and populated by the refresh scripts into [`skills/tool-index.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.md).

### How is the tool-index generated in reverse-skill?

The index is generated automatically by running either `skills/scripts/refresh-tool-index.ps1` on Windows or [`skills/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/refresh-tool-index.sh) on Unix systems. These scripts scan for known security tools, resolve their executable paths using methods like `which` or registry lookups, and write the formatted markdown table to [`skills/tool-index.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/tool-index.md).

### Where are the tool path discovery scripts located?

The discovery scripts reside in the `skills/scripts/` directory. Specifically, `refresh-tool-index.ps1` handles Windows environments using PowerShell and registry detection, while [`refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/refresh-tool-index.sh) handles Linux and macOS using standard Unix utilities.

### Can tool paths be absolute or relative in the index?

Yes, the **Path to Executable** column accepts various formats. It may contain simple command names like `r2.bat`, absolute paths like `/opt/ida/ida64`, or Windows paths like `C:\Program Files\Frida\frida-run.exe`. The refresh scripts record whatever path format successfully invokes the tool on the host system.