What Are the Dimensions of the Three-Axis Routing Matrix in reverse-skill?

The three-axis routing matrix in reverse-skill consists of Target Type, User Intent, and Toolchain, which together determine how requests are dispatched to skill modules.

The reverse-skill repository implements an intelligent routing system that matches user requests to specialized skill modules using a three-dimensional lookup matrix. This routing architecture is defined in skills/routing.md and serves as the core dispatch mechanism for reverse engineering tasks. Understanding these three dimensions is essential for extending the system or debugging routing failures.

The Three Dimensions of the Routing Matrix

The routing matrix operates on three orthogonal axes. A request must match values along all three dimensions before the router selects a specific skill entry.

Target Type

The Target Type dimension identifies the kind of artifact or environment the user wants to analyze. According to skills/routing.md lines 16-45, this dimension includes categories such as "APK / Android app", "Binary exe/dll/so/elf", "Wi-Fi / wireless", and "Windows AD / Kerberos". If the target type cannot be inferred from the request, the system triggers the Ambiguous Intent Recovery Protocol.

User Intent

The User Intent dimension captures the specific action or goal the user wants to achieve. Defined in lines 66-89 of the same file, valid intents include "decompile / IDA analyze", "Frida hook / dynamic inject", "remove anti-debug / anti-detection", and "拿 flag / crackme / keygen". This axis distinguishes between static analysis, dynamic instrumentation, and bypass operations.

Toolchain

The Toolchain dimension specifies the concrete tooling employed to execute the task. Lines 105-119 of skills/routing.md define values such as "IDA Pro (idapro_*)", "radare2 (r2/rabin2/rasm2)", "Frida", and "anything-analyzer MCP". This dimension ensures the selected skill matches the user's preferred analysis environment.

How the Matrix Routes Requests

The router performs a nested dictionary lookup using the three dimensions. When a request arrives, the system infers values for each axis and queries the matrix.


# Simple routing lookup (pseudo-code)

def route(request):
    target    = infer_target_type(request)       # e.g. "APK / Android app"

    intent    = infer_user_intent(request)       # e.g. "decompile / IDA analyze"

    toolchain = infer_toolchain(request)         # e.g. "IDA Pro"

    
    # Look-up the matrix (implemented as a nested dict in routing.py)

    skill = ROUTING_MATRIX[target][intent][toolchain]
    return skill

If the combination does not exist in the matrix, the system handles the mismatch gracefully.


# Handling a missing combination

def route(request):
    try:
        return route(request)                   # as above

    except KeyError:
        # Ambiguous / unmatched – trigger recovery protocol

        return propose_new_skill(request)

These examples illustrate the logical flow implemented in the repository's routing component.

Source Files and Documentation

The three-axis routing matrix is documented across several files in the repository:

  • skills/routing.md – Contains the definitive routing matrix tables. Target Type definitions occupy lines 16-45, User Intent spans lines 66-89, and Toolchain entries are found at lines 105-119.
  • skills/routing_zh.md – Provides a Chinese localization of the same three-dimensional matrix.
  • docs/ARCHITECTURE.md – Describes the overall routing architecture and how the three-axis matrix fits into the request processing pipeline.
  • skills/MASTER-ROUTING.md – Serves as the entry point for primary routing logic before consulting the three-axis matrix.

Summary

  • The three-axis routing matrix uses Target Type, User Intent, and Toolchain to dispatch requests.
  • All three dimensions must match for successful skill selection; otherwise, the Ambiguous Intent Recovery Protocol activates.
  • Definitions are located in skills/routing.md at specific line ranges: lines 16-45 (Target Type), lines 66-89 (User Intent), and lines 105-119 (Toolchain).
  • The matrix supports multiple languages via skills/routing_zh.md and integrates with the master routing system defined in skills/MASTER-ROUTING.md.

Frequently Asked Questions

What happens if one dimension is missing from the request?

When any dimension is missing or ambiguous, the router cannot complete the three-axis lookup. According to the implementation in skills/routing.md, the system triggers the Ambiguous Intent Recovery Protocol, which either requests clarification from the user or proposes a new skill entry to handle the undefined combination.

Can the routing matrix be extended with new toolchains?

Yes. The matrix in skills/routing.md is designed to accommodate additional toolchains. You can add new entries to the Toolchain table (lines 105-119) and corresponding skill mappings in skills/MASTER-ROUTING.md. The nested dictionary structure allows runtime extension without modifying the core routing logic.

Is there a performance difference between the three dimensions?

The repository implements the matrix as a nested dictionary lookup where all three dimensions are evaluated equally. As shown in the pseudo-code examples, the router performs O(1) hash lookups for Target Type, User Intent, and Toolchain sequentially. No single dimension incurs additional overhead during the routing decision.

Where can I find examples of resolved routing decisions?

Concrete examples of how the three-axis matrix resolves specific requests are documented in skills/routing.md within the table definitions. For architectural context regarding how these decisions integrate with the broader system, refer to docs/ARCHITECTURE.md.

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 →