# Why Does the DSL VM Reverse Skill Have the Highest Priority in reverse-skill?

> Discover why the DSL VM reverse skill gets top priority in reverse-skill. Learn how the routing matrix immediately matches this entry, preventing further processing and ensuring its precedence.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: deep-dive
- Published: 2026-08-22

---

**The DSL VM reverse skill holds the highest priority because the routing matrix in [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) processes the "DSL VM / 自定义虚拟机" target-type row first, causing an immediate match that short-circuits all subsequent entries.**

The `reverse-skill` repository implements a deterministic routing system to select the most appropriate reverse engineering module for each task. When multiple skills could potentially handle the same bytecode or virtual machine input, the system relies on a priority-ordered matrix to prevent ambiguous selections. This article examines why the DSL VM reverse skill consistently outranks generic WASM or Python bytecode handlers according to the source code architecture.

## How the Routing Matrix Determines Skill Priority

The routing engine evaluates three dimensions—**target type**, **user intent**, and **toolchain**—to resolve which skill module executes. According to the source code in [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md), the system processes a decision table where rows represent specific target environments. Because the matrix evaluates entries sequentially from top to bottom, the physical order of rows directly dictates selection precedence.

### Top-Down Processing of Target Types

In the **"By Target Type"** table, the row containing **WASM / Python bytecode / .NET / DSL VM / 自定义虚拟机** appears before all other target-type entries at line 27 of [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md). When the routing engine matches a task against this row—detecting indicators such as a custom JavaScript-based virtual machine—it immediately selects the DSL VM reverse skill without evaluating lower-priority entries. This short-circuit behavior guarantees that the most specialized handler takes precedence over generic fallbacks.

### The Three-Dimensional Matching System

The routing algorithm requires alignment across three attributes to trigger a skill selection. The **target type** dimension identifies the runtime environment, while **user intent** captures descriptive phrases like "DSL VM / 自定义指令集 / 风控引擎逆向". The **toolchain** dimension specifies the analysis tools available. A match on the DSL VM row satisfies the target type criteria with high specificity, forcing the engine to route to [`reverse-engineering/dsl-vm-reverse/SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/reverse-engineering/dsl-vm-reverse/SKILL.md) before considering broader categories.

## Technical Reasons for DSL VM Priority

Two architectural factors elevate the DSL VM skill above competing modules: highly specific detection signatures and redundant routing mappings that eliminate ambiguity.

### Unique Identification Features in SKILL.md

The DSL VM skill defines concrete detection signatures in [`skills/reverse-engineering/dsl-vm-reverse/SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/reverse-engineering/dsl-vm-reverse/SKILL.md) (lines 53-57). These signatures identify **Immediately Invoked Function Expressions (IIFE)** combined with single-letter variable names and a `DG()` switch-case interpreter pattern. Because these markers uniquely distinguish custom DSL virtual machines from generic WebAssembly or standard Python bytecode, the routing system treats the DSL VM category as a high-precision match requiring immediate specialized handling.

### Explicit Routing Mappings for User Intent

Both the **Target-Type** row and the **User-Intent** row explicitly map DSL VM-related phrases to the same skill document. This redundancy ensures that any request mentioning "DSL VM", "自定义指令集", or "风控引擎逆向" routes directly to [`reverse-engineering/dsl-vm-reverse/SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/reverse-engineering/dsl-vm-reverse/SKILL.md). By placing these mappings at the top of their respective tables, the system guarantees that DSL VM classification occurs before fallback handlers like generic WASM analyzers are considered.

## Verifying Priority with Code Examples

You can confirm the DSL VM priority programmatically or via the provided routing scripts.

To check the routing decision using the master script:

```bash

# Bash (Linux/macOS) – invoke the master routing script

bash skills/scripts/master-route.sh --hint "DSL VM / 风控引擎逆向"

# Output shows the selected skill:

# → reverse-engineering/dsl-vm-reverse/SKILL.md

```

On Windows systems, use the PowerShell equivalent:

```powershell

# PowerShell (Windows)

.\skills\scripts\master-route.ps1 -Hint "DSL VM / 自定义指令集"

# Returns:

# SelectedSkill = "reverse-engineering/dsl-vm-reverse/SKILL.md"

```

For programmatic verification, inspect the JSON routing configuration directly:

```python
import json, pathlib

routing_path = pathlib.Path("skills/config/routing.json")
routing = json.loads(routing_path.read_text())

# Find the first entry that matches the DSL VM target type

dsl_entry = next(
    e for e in routing
    if e["target_type"] == "DSL VM"
)
print(dsl_entry["skill_path"])

# -> "reverse-engineering/dsl-vm-reverse/SKILL.md"

```

## Key Source Files Controlling the Priority

Four files govern the priority assignment and routing behavior:

- **[`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md)** – Contains the routing matrix table where the DSL VM row appears first, granting it top priority.
- **[`skills/reverse-engineering/dsl-vm-reverse/SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/reverse-engineering/dsl-vm-reverse/SKILL.md)** – Defines the DSL VM detection features and concrete reverse-engineering workflow.
- **[`docs/ARCHITECTURE.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/ARCHITECTURE.md)** – Documents the overall system flow, emphasizing that routing occurs before any skill execution.
- **[`skills/config/routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json)** – The authoritative JSON source consumed by `master-route` scripts; the DSL VM entry is the first matching rule in the target_type array.

## Summary

- The **DSL VM reverse skill** holds the highest priority because it occupies the first row in the "By Target Type" routing table at [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md).
- **Top-down processing** causes the routing engine to short-circuit and select the DSL VM skill immediately upon detecting custom virtual machine indicators.
- **Unique detection signatures** (IIFE patterns, single-letter variables, `DG()` switch-case interpreters) in [`SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/SKILL.md) lines 53-57 provide the specificity required for high-priority matching.
- **Explicit routing mappings** for both target type and user intent ensure DSL VM tasks bypass generic handlers like WASM or Python bytecode analyzers.
- The priority is **hard-coded** in [`skills/config/routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json), making it deterministic and consistent across all platform-specific routing scripts.

## Frequently Asked Questions

### What makes the DSL VM reverse skill different from other reverse engineering skills?

The DSL VM skill specifically targets obfuscated JavaScript-based virtual machines that implement custom instruction sets. Unlike generic WASM or .NET analyzers, it recognizes unique structural patterns such as IIFE wrappers and `DG()` switch-case interpreters, enabling opcode-by-opcode deobfuscation that other skills cannot perform.

### How does the routing system handle conflicts between multiple matching skills?

The routing matrix processes entries sequentially from top to bottom. When a task matches the DSL VM target type at line 27 of [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md), the engine immediately routes to that skill without evaluating subsequent rows. This short-circuit mechanism prevents conflicts by prioritizing the most specific match available.

### Can I override the default DSL VM priority for specific use cases?

Yes. While the default priority is encoded in [`skills/config/routing.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/config/routing.json) and [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md), you can modify the JSON configuration to reorder entries or use the `--force-skill` flag in [`master-route.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/master-route.sh) to bypass automatic selection. However, removing DSL VM from the top position may cause misclassification of custom virtual machine bytecode.

### Where are the DSL VM detection signatures defined?

The detection signatures are defined in [`skills/reverse-engineering/dsl-vm-reverse/SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/reverse-engineering/dsl-vm-reverse/SKILL.md) at lines 53-57. These signatures include patterns for IIFE structures, single-letter variable naming conventions, and the distinctive `DG()` switch-case interpreter that characterizes DSL VM implementations.