Tier 4

orcs - Orchestrator Skill Design

Orchestrator Skill Design

Input: $ARGUMENTS


Step 1: Define the Orchestrator’s Domain

An orchestrator routes — it doesn’t analyze. Define what space it covers.

ORCHESTRATOR NAME: [abbreviation]
DOMAIN: [what kind of inputs it handles]
ROUTES TO: [how many target skills]
GOAL: [what the user gets — the right skill for their input]

Rule: An orchestrator should never produce its own analysis. Its only job is dispatching to the right skill.


Step 2: Design the Classification Scheme

Define how inputs get categorized.

CLASSIFICATION SCHEME:

| Class | Signal Words / Patterns | Target Skill | Example Input |
|-------|------------------------|-------------|---------------|
| [class 1] | [what to look for] | /[skill] | [example] |
| [class 2] | [what to look for] | /[skill] | [example] |
| [class 3] | [what to look for] | /[skill] | [example] |
| [class 4] | [what to look for] | /[skill] | [example] |
| [class 5] | [what to look for] | /[skill] | [example] |

Aim for 4-8 classes. Fewer than 4 means the orchestrator is too narrow. More than 8 means it should be split into sub-orchestrators.


Step 3: Design the Routing Logic

Define the decision process from input to dispatch.

ROUTING LOGIC:

1. SCAN: Read the input for signal words and patterns
2. CLASSIFY: Match to the strongest class
   - If clear match → route directly
   - If multiple matches → go to Step 4 (ambiguity handling)
   - If no match → go to Step 5 (fallback handling)
3. CONFIRM: State the classification and reasoning in one line
4. DISPATCH: → INVOKE: /[target_skill] [input]

Rule: Routing should take one pass. If classification requires deep analysis, the orchestrator scope is wrong.


Step 4: Handle Ambiguous Inputs

Some inputs match multiple classes. Design the tiebreaker.

AMBIGUITY HANDLING:

STRATEGY: [pick one]
- PRIORITY: Use a fixed priority order (class 1 > class 2 > class 3)
- DECOMPOSE: Split the input and route parts separately
- ASK: Present the top 2 matches and let the user choose
- DEFAULT: Route to the most general skill

PRIORITY ORDER (if using PRIORITY):
1. [highest priority class] — because [reason]
2. [next class]
3. [next class]
...

Step 5: Handle No-Match Inputs

Every input must go somewhere. No input should fall through.

FALLBACK HANDLING:

1. Check if input is malformed → ask user to rephrase
2. Check if input belongs to a different orchestrator → redirect
3. If genuinely novel → route to the most exploratory/general skill
4. Never return "I don't know what to do with this"

DEFAULT ROUTE: /[fallback skill]
REASON: [why this is the safest default]

Step 6: Test With Diverse Inputs

Verify routing accuracy across input types.

ROUTING TEST:

| # | Input | Expected Class | Routed To | Correct? |
|---|-------|---------------|-----------|----------|
| 1 | [clear input for class 1] | [class 1] | /[skill] | [yes/no] |
| 2 | [clear input for class 2] | [class 2] | /[skill] | [yes/no] |
| 3 | [ambiguous input] | [class ?] | /[skill] | [yes/no] |
| 4 | [edge case input] | [class ?] | /[skill] | [yes/no] |
| 5 | [input from outside domain] | [fallback] | /[skill] | [yes/no] |

If accuracy is below 80%, revise the classification scheme.


Step 7: Write the Orchestrator

Produce the complete SKILL.md.

ORCHESTRATOR FILE:

---
name: "[abbreviation] - [Full Name]"
description: [one sentence — routes X type of input to the right skill]
---

# [Full Name]

**Input**: $ARGUMENTS

## Classify
[classification table]

## Route
[routing logic with INVOKE statements]

## Integration
[list of all target skills]

Integration

Use with:

  • /chns -> Ensure target skills have compatible input contracts
  • /injc -> Add injectable checks before routing (e.g., input validation)
  • /stnl -> Verify each target skill works standalone after dispatch