How the zhaoxuya520/reverse-skill Skill Router Chooses Reverse Engineering Modules
The skill router selects reverse engineering modules by matching user task hints against curated regex patterns in skills/config/routing.json, scoring matches, and applying a deterministic priority order to break ties.
The zhaoxuya520/reverse-skill repository implements a declarative routing system that eliminates guesswork when dispatching reverse engineering tasks. Instead of hard-coded logic, the skill router uses a JSON-driven classification engine that maps natural language hints to specialized modules like APK reverse engineering, kernel exploitation, or WiFi penetration testing.
How the Routing Decision Works
The skill router follows a five-step evaluation pipeline defined in skills/config/routing.json. Each route (R0 through R40) represents a distinct reverse engineering domain with its own keyword signatures and module path.
Step 1: Keyword Matching with Regex Rules
Every route contains a keywords array defining must regex patterns (plus optional exclude or mustAll expressions). When a user provides a hint, the router scans against all 40+ rule sets simultaneously.
R1(APK reverse):\bapk\b|smali|jadx|apktool|…R6(IDA reverse):ida|idapro|hexrays|…R28(Kernel exploit):kernel|rootkit|lkernel|…
A hint containing "apk reverse and root detection" matches R1 because \bapk\b satisfies its must condition.
Step 2: Scoring Matched Candidates
Each route that matches at least one keyword set receives a score equal to its number of matched keyword objects. Multiple matches are common—hints like "analyze APK with IDA" may trigger both R1 and R6.
Step 3: Priority Resolution
The router consults the ordered priority array (lines 310–314 of routing.json) to break ties. The highest-priority candidate with the maximal score wins. If R1 appears before R6 in priority and both score equally, R1 becomes the PRIMARY route.
Step 4: Fallback to Generic Skill
When no keywords match, the router uses fallbackId: "R0" (lines 5–6), directing to reverse-engineering/SKILL.md—the generic reverse engineering module.
Step 5: Module Activation
The selected route's skill field provides the relative path to its SKILL.md file (e.g., apk-reverse/SKILL.md). This markdown file contains the actual instructions, tools, and workflows for that domain.
Running the Router: PowerShell Implementation
The routing algorithm is implemented in skills/scripts/master-route.ps1, which reads routing.json and executes the exact matching and scoring logic described above.
# Execute routing with a specific task hint
powershell -NoProfile -ExecutionPolicy Bypass `
-File skills\scripts\master-route.ps1 -Hint "apk reverse and root detection"
# Expected output:
# PRIMARY = R1 – apk-reverse/SKILL.md
# Reason = "matched keyword set {must: '\bapk\b|smali|jadx|apktool'} with score 2"
The script loads the JSON configuration, applies regex evaluation, tallies scores, applies priority ordering, and emits the selected route with diagnostic reasoning.
Fallback Behavior Demonstrated
# Generic hints trigger the fallback route
powershell -File skills\scripts\master-route.ps1 -Hint "general reverse engineering"
# Output:
# PRIMARY = R0 – reverse-engineering/SKILL.md
# Reason = "no keyword matched → fallbackId"
This ensures the system always produces actionable output even for ambiguous or novel task descriptions.
Key Configuration Files
Understanding these files is essential for customizing or debugging the skill router:
| File | Purpose |
|---|---|
skills/config/routing.json |
Central routing definition containing all routes, keyword regexes, priority array, and fallback configuration |
skills/scripts/master-route.ps1 |
PowerShell implementation of the matching, scoring, and selection algorithm |
skills/MASTER-ROUTING.md |
Human-readable documentation of routing contracts and priority tables |
apk-reverse/SKILL.md |
Example specialized module for Android APK analysis |
reverse-engineering/SKILL.md |
Generic fallback module for unspecified reverse engineering tasks |
Customizing Route Priority
To change how the skill router chooses reverse engineering modules, modify the priority array in routing.json. Earlier entries win ties. To add new domains, define a route with:
- Unique
id(e.g.,R41) keywordsarray with targeted regex patternsskillpath pointing to your module'sSKILL.md- Insertion into the
prioritylist at your preferred rank
The regex-based approach allows precise vocabulary control without code changes—domain expertise is encoded declaratively in JSON.
Summary
- Single source of truth:
skills/config/routing.jsondrives all routing decisions - Regex keyword matching: Routes define vocabulary signatures with must, exclude, and mustAll conditions
- Score-based selection: More matched keywords increase candidacy strength
- Deterministic priority tie-breaking: Ordered priority array guarantees reproducible outcomes
- Guaranteed fallback:
R0generic skill handles unmatched hints - PowerShell automation:
master-route.ps1implements the complete algorithm for scripting integration
Frequently Asked Questions
How do I add support for a new reverse engineering domain?
Create a new route entry in skills/config/routing.json with a unique ID, define targeted regex patterns in the keywords array, set the skill path to your module's SKILL.md, and insert the ID into the priority array at your desired rank. No PowerShell code changes are required.
What happens when multiple routes match with identical scores?
The router consults the priority array in order. The candidate appearing earlier in this list wins. This deterministic rule prevents random selection and ensures consistent, auditable behavior across identical hints.
Can I use negative keywords to exclude certain matches?
Yes. Routes support exclude regex patterns in their keyword definitions. If a hint matches an exclusion pattern, that route is disqualified regardless of other matches. This enables precise boundary drawing between overlapping domains like mobile and binary analysis.
Where is the fallback route configured?
The fallback is defined at lines 5–6 of skills/config/routing.json via the fallbackId field, which defaults to R0. This points to reverse-engineering/SKILL.md, ensuring every hint receives a actionable response even when no specialized keywords trigger.
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 →