How to Add a New Skill to the reverse-skill Package: A Step-by-Step Guide
Adding a new skill to the reverse-skill package requires creating a skill directory with a SKILL.md entry point, registering the skill in skills/config/routing.json, and regenerating the auto-generated index through PowerShell helper scripts.
The reverse-skill package routes security and reverse-engineering requests to specialized capability modules called skills—self-contained workflows defined by markdown documentation and regex-based routing rules. This guide walks through the exact source code locations and commands needed to extend the system without breaking existing functionality.
Step 1: Create the Skill Directory and Entry Point
Every skill resides in its own folder under skills/ and must contain a SKILL.md file that serves as the master entry point.
# From the repository root
mkdir -p skills/my-new-skill
cat > skills/my-new-skill/SKILL.md <<'EOF'
# My New Skill
> Short description of what the skill does.
## Overview
Explain the workflow, required tools, and expected inputs/outputs.
## Steps
1. Prepare the environment.
2. Run the analysis.
3. Produce artifacts.
## References
- Link to any internal docs or external guides.
EOF
The router reads the skill field from routing.json and opens this markdown file when the route is selected. You may also add supporting files like tool configurations or reference materials in subdirectories such as references/.
Step 2: Register the Skill in routing.json
Open skills/config/routing.json and add a new object under the "routes" key:
{
"R41": {
"label": "My New Skill",
"skill": "my-new-skill/SKILL.md",
"keywords": [
{
"must": "mynew|awesome|customkeyword",
"note": "These terms will cause the router to select this skill."
}
]
}
}
| Field | Purpose |
|---|---|
Route ID (e.g., R41) |
Unique identifier; check existing IDs in routing.json and pick the next unused number |
| label | Human-readable name for the routing matrix |
| skill | Path relative to skills/ pointing to your SKILL.md |
| keywords | Matching rules using "must", "mustAll", or "exclude" regex patterns |
The router first evaluates all routes whose keyword rules match, then selects the winner based on the "priority" array order. Insert your new route ID into this array at the appropriate position:
"priority": [
"R4", "R1", "R39", "R41", "R0"
]
Place IDs near the top for high-priority matching, or near the bottom (just before the fallback R0) for catch-all behavior.
Step 3: Regenerate Indexes and Verify Routing
Run three PowerShell scripts to update auto-generated files and validate your changes:
# Regenerate the central navigation index from SKILL.md frontmatter
powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/extract-summaries.ps1
# Verify routing.json matches MASTER-ROUTING.md priority order
powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/verify-routing-coherence.ps1
# Execute the 163-case regression suite to detect broken routes
powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/test-routing.ps1
These scripts serve distinct purposes according to the reverse-skill source:
extract-summaries.ps1— Parses frontmatter from everySKILL.mdand rebuildsskills/INDEX.md, the central navigation index referenced by the READMEverify-routing-coherence.ps1— Cross-checks thatMASTER-ROUTING.mdpriority order matchesrouting.jsontest-routing.ps1— Runs the full routing regression suite; any failure will block CI
Address any reported errors before committing your changes.
Step 4: Update Documentation and Tool Index (Optional)
For complete integration:
- Add a description to
README.mdso contributors discover the new skill - Run
skills/scripts/refresh-tool-index.*for your platform if the skill requires external binaries, ensuringskills/tool-index.mdreflects tool availability
Summary
- Create
skills/<new-skill>/SKILL.mdas the entry point with workflow documentation and references - Add a route object to
skills/config/routing.jsonwith unique ID, label, skill path, and keyword rules - Insert the new route ID into the
"priority"array to control evaluation order - Run
extract-summaries.ps1to regenerateskills/INDEX.md - Run
verify-routing-coherence.ps1to validate priority consistency withMASTER-ROUTING.md - Run
test-routing.ps1to confirm all 163 regression cases pass - Optionally update README documentation and refresh the tool index
Frequently Asked Questions
What file format must the skill entry point use?
The entry point must be a SKILL.md markdown file. The router specifically expects this filename and parses its frontmatter to populate the auto-generated index. No other file extensions are recognized as skill entry points.
How do I choose a route ID that won't conflict with future additions?
Route IDs follow the pattern R<number> where the number increments sequentially. Examine the existing "routes" object in skills/config/routing.json to find the highest current number, then use the next integer. The project maintains this convention to prevent collisions during parallel development.
What happens if I forget to update the priority array?
The router will fail to resolve your new skill deterministically. Requests matching your keywords may fall through to lower-priority routes, or the coherence verification script will flag the mismatch between routing.json and MASTER-ROUTING.md. Always include the new ID in the priority array and run the verification suite before submitting.
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 →