smart-routing
An intelligent routing engine for Claude's /toh command that analyzes user intent, calculates confidence scores, checks memory context, and routes requests to appropriate specialized agents. It handles ambiguous inputs, detects IDE environments for parallel execution, and maintains project context through memory files.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install wasintoh-toh-framework-smart-routing
Repository
Skill path: src/skills/smart-routing
An intelligent routing engine for Claude's /toh command that analyzes user intent, calculates confidence scores, checks memory context, and routes requests to appropriate specialized agents. It handles ambiguous inputs, detects IDE environments for parallel execution, and maintains project context through memory files.
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack, Integration.
Target audience: Developers building multi-agent Claude workflows who need intelligent request routing between specialized agents, particularly those working on Thai/English bilingual projects..
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: wasintoh.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install smart-routing into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/wasintoh/toh-framework before adding smart-routing to shared team environments
- Use smart-routing for meta workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: smart-routing
description: >
Intelligent request routing for /toh command. Analyzes user intent,
assesses confidence, detects IDE environment, and routes to the
appropriate agent(s). Memory-first approach ensures context awareness.
Triggers: /toh command, natural language requests, ambiguous inputs.
---
# Smart Routing Skill
Intelligent routing engine for the `/toh` smart command. Routes any natural language request to the right agent(s).
---
## π§ Routing Pipeline
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER REQUEST β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β STEP 0: MEMORY CHECK (ALWAYS FIRST!) β
β βββ Read .toh/memory/active.md β
β βββ Read .toh/memory/summary.md β
β βββ Read .toh/memory/decisions.md β
β βββ Build context understanding β
β β
β STEP 1: INTENT CLASSIFICATION β
β βββ Pattern matching (keywords, phrases) β
β βββ Context inference (from memory) β
β βββ Scope detection (simple/complex) β
β β
β STEP 2: CONFIDENCE SCORING β
β βββ HIGH (80%+) β Direct execution β
β βββ MEDIUM (50-80%) β Plan Agent first β
β βββ LOW (<50%) β Ask for clarification β
β β
β STEP 3: IDE DETECTION β
β βββ Claude Code β Parallel execution enabled β
β βββ Other IDEs β Sequential execution only β
β β
β STEP 4: AGENT SELECTION & EXECUTION β
β βββ Route to appropriate agent(s) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
---
## π Intent Classification Matrix
### Primary Patterns β Agent Mapping
| Pattern Category | Keywords (EN) | Keywords (TH) | Primary Agent | Confidence |
|------------------|---------------|---------------|---------------|------------|
| **Create UI** | create, add, make, build + page/component/UI | ΰΈͺΰΈ£ΰΉΰΈ²ΰΈ, ΰΉΰΈΰΈ΄ΰΉΰΈ‘, ΰΈΰΈ³ + ΰΈ«ΰΈΰΉΰΈ²/component | UI Agent | HIGH |
| **Add Logic** | logic, state, function, hook, validation | logic, state, function, ΰΉΰΈΰΈ΄ΰΉΰΈ‘ logic | Dev Agent | HIGH |
| **Fix Bug** | bug, error, broken, fix, not working | bug, error, ΰΈΰΈ±ΰΈ, ΰΉΰΈ‘ΰΉΰΈΰΈ³ΰΈΰΈ²ΰΈ, ΰΉΰΈΰΉ | Fix Agent | HIGH |
| **Improve Design** | prettier, beautiful, design, polish, style | ΰΈͺΰΈ§ΰΈ’, design, ΰΈΰΈ£ΰΈ±ΰΈ design | Design Agent | HIGH |
| **Testing** | test, check, verify | test, ΰΈΰΈΰΈͺΰΈΰΈ, ΰΉΰΈΰΉΰΈ | Test Agent | HIGH |
| **Connect Backend** | connect, database, Supabase, API, backend | ΰΉΰΈΰΈ·ΰΉΰΈΰΈ‘, database, Supabase | Connect Agent | HIGH |
| **Deploy** | deploy, ship, production, publish | deploy, ship, ΰΈΰΈΆΰΉΰΈ production | Ship Agent | HIGH |
| **LINE Platform** | LINE, LIFF, Mini App | LINE, LIFF | LINE Agent | HIGH |
| **Mobile Platform** | mobile, iOS, Android, Expo, React Native | mobile, ΰΈ‘ΰΈ·ΰΈΰΈΰΈ·ΰΈ | Mobile Agent | HIGH |
| **New Project** | new project, start, build app, create system | project ΰΉΰΈ«ΰΈ‘ΰΉ, ΰΈͺΰΈ£ΰΉΰΈ²ΰΈ app | Vibe Agent | HIGH |
| **Planning** | plan, analyze, PRD, architecture | ΰΈ§ΰΈ²ΰΈΰΉΰΈΰΈ, ΰΈ§ΰΈ΄ΰΉΰΈΰΈ£ΰΈ²ΰΈ°ΰΈ«ΰΉ | Plan Agent | HIGH |
| **AI/Prompt** | prompt, AI, chatbot, system prompt | prompt, AI, chatbot | Dev Agent + prompt-optimizer | HIGH |
| **Continue** | continue, resume, go on | ΰΈΰΈ³ΰΈΰΉΰΈ, ΰΈΰΉΰΈ | Memory β Last Agent | MEDIUM |
| **Complex Request** | Multiple features, system, e-commerce, etc. | ΰΈ£ΰΈ°ΰΈΰΈ + ΰΈ«ΰΈ₯ΰΈ²ΰΈ’ features | Plan Agent | MEDIUM |
| **Vague Request** | help, fix it, make better (without context) | ΰΈΰΉΰΈ§ΰΈ’ΰΈΰΉΰΈ§ΰΈ’, ΰΉΰΈΰΉΰΈΰΈ΅ | Ask Clarification | LOW |
---
## π― Confidence Scoring Algorithm
```typescript
interface ConfidenceFactors {
keywordMatch: number; // 0-40 points
contextClarity: number; // 0-30 points
memorySupport: number; // 0-20 points
scopeDefinition: number; // 0-10 points
}
function calculateConfidence(request: string, memory: Memory): number {
let score = 0;
// Keyword matching (0-40 points)
// Strong match with primary patterns = 40
// Partial match = 20
// No match = 0
score += keywordMatchScore(request);
// Context clarity (0-30 points)
// Specific page/component mentioned = 30
// General area mentioned = 15
// No specifics = 0
score += contextClarityScore(request);
// Memory support (0-20 points)
// Request relates to active task = 20
// Request relates to project = 10
// No memory context = 0
score += memorySupportScore(request, memory);
// Scope definition (0-10 points)
// Single clear task = 10
// Multiple related tasks = 5
// Unclear scope = 0
score += scopeDefinitionScore(request);
return score; // 0-100
}
// Thresholds
const HIGH_CONFIDENCE = 80; // Execute directly
const MEDIUM_CONFIDENCE = 50; // Route to Plan Agent
// Below 50 = Ask for clarification
```
---
## π₯οΈ IDE Detection
### Detection Method
```typescript
function detectIDE(): 'claude-code' | 'cursor' | 'gemini' | 'codex' | 'unknown' {
// Check for IDE-specific markers
// Claude Code detection
if (hasClaudeCodeMarkers()) {
return 'claude-code';
}
// Cursor detection
if (hasCursorRules()) {
return 'cursor';
}
// Gemini CLI detection
if (hasGeminiConfig()) {
return 'gemini';
}
// Codex CLI detection
if (hasCodexConfig()) {
return 'codex';
}
return 'unknown';
}
```
### Execution Strategy by IDE
| IDE | Multi-Agent Strategy | Reason |
|-----|---------------------|--------|
| **Claude Code** | Parallel (spawn sub-agents) | Native support for parallel tool calls |
| **Cursor** | Sequential | More predictable, follows diff flow |
| **Gemini CLI** | Sequential | Safer execution model |
| **Codex CLI** | Sequential | Linear task processing |
| **Unknown** | Sequential (default) | Safe fallback |
---
## π Routing Decision Tree
```
Request arrives
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β 1. Load Memory Context β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β 2. Is request "continue"/"ΰΈΰΈ³ΰΈΰΉΰΈ"? β
βββ YES β Read memory, resume task β
βββ NO β Continue analysis β
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β 3. Calculate Confidence Score β
βββββββββββββββββββββββββββββββββββββββ
β
βββ Score >= 80 (HIGH)
β βββ Select agent based on intent
β βββ Execute directly
β
βββ Score 50-79 (MEDIUM)
β βββ Route to Plan Agent
β βββ Plan Agent analyzes & routes
β
βββ Score < 50 (LOW)
βββ Ask clarifying question
βββ Wait for user response
```
---
## π Clarification Patterns
### When to Ask
| Situation | Example | Action |
|-----------|---------|--------|
| No verb/action | "the login" | Ask: "What would you like to do with login?" |
| No target | "make it work" | Ask: "Which page/component should I fix?" |
| Multiple interpretations | "improve it" | Ask: "Design, performance, or features?" |
| Missing context + no memory | "fix it" | Ask: "What's broken? Describe the issue." |
### When NOT to Ask
| Situation | Example | Action |
|-----------|---------|--------|
| Clear intent | "create login page" | Execute directly |
| Memory provides context | "continue" + active task exists | Resume from memory |
| Reasonable default exists | "add a button" | Add to current page context |
---
## π¨ Skill Loading by Intent
| Detected Intent | Skills to Load |
|-----------------|----------------|
| New Project | vibe-orchestrator, design-mastery, business-context, response-format |
| Create UI | ui-first-builder, design-excellence, response-format |
| Add Logic | dev-engineer, error-handling, response-format |
| Fix Bug | debug-protocol, error-handling, response-format |
| Connect Backend | backend-engineer, integrations, response-format |
| Improve Design | design-excellence, design-mastery, response-format |
| AI/Chatbot | prompt-optimizer, dev-engineer, response-format |
| Testing | test-engineer, error-handling, response-format |
| Planning | plan-orchestrator, business-context, response-format |
**Note:** `response-format` skill is ALWAYS loaded for proper output formatting.
---
## πΎ Memory Integration
### Pre-Routing Memory Check
```markdown
Before routing, ALWAYS:
1. Read .toh/memory/active.md
- Current task context
- In-progress work
- Blockers
2. Read .toh/memory/summary.md
- Project overview
- Completed features
- Tech stack used
3. Read .toh/memory/decisions.md
- Past architectural decisions
- Design choices
- Naming conventions
Use memory to:
- Boost confidence (if request matches active work)
- Provide context (for ambiguous "it" references)
- Maintain consistency (follow established patterns)
```
### Post-Execution Memory Save
```markdown
After routing completes, ALWAYS:
1. Update .toh/memory/active.md
- Mark completed items
- Update current focus
- Set next steps
2. Add to .toh/memory/decisions.md
- If new decisions were made
3. Update .toh/memory/summary.md
- If feature was completed
β οΈ NEVER finish without saving memory!
```
---
## π Examples
### Example 1: High Confidence β Direct
```
Request: "/toh ΰΈͺΰΈ£ΰΉΰΈ²ΰΈΰΈ«ΰΈΰΉΰΈ² dashboard"
Analysis:
- Keyword match: "ΰΈͺΰΈ£ΰΉΰΈ²ΰΈ" + "ΰΈ«ΰΈΰΉΰΈ²" = Create UI (40 pts)
- Context clarity: "dashboard" = specific page (30 pts)
- Memory: Project has other pages (15 pts)
- Scope: Single page (10 pts)
Total: 95 pts = HIGH
Route: UI Agent (direct)
```
### Example 2: Medium Confidence β Plan First
```
Request: "/toh build e-commerce"
Analysis:
- Keyword match: "build" = Create (40 pts)
- Context clarity: "e-commerce" = general concept (10 pts)
- Memory: New project (0 pts)
- Scope: Multiple features (0 pts)
Total: 50 pts = MEDIUM
Route: Plan Agent first β then execute plan
```
### Example 3: Low Confidence β Ask
```
Request: "/toh fix it"
Analysis:
- Keyword match: "fix" (20 pts)
- Context clarity: "it" = unclear (0 pts)
- Memory: No recent bugs (0 pts)
- Scope: Unknown (0 pts)
Total: 20 pts = LOW
Action: Ask "What would you like me to fix? Please describe the issue."
```
---
## β οΈ Critical Rules
1. **Memory ALWAYS first** - Never route without checking context
2. **Confidence drives action** - Trust the scoring system
3. **Plan Agent is your friend** - When in doubt, route to Plan
4. **IDE awareness matters** - Parallel only in Claude Code
5. **response-format always loaded** - Every response needs 3 sections
---
*Smart Routing Skill v1.0.0 - Intelligent Request Routing Engine*