| name | dev-lead-routing |
| description | Routes development tasks to the correct language or framework expert agent. Use when user requests code review, implementation, refactoring, or debugging. |
| scope | core |
| user-invocable | false |
| context | fork |
Mandatory delegation directive (R010 bypassPermissions)
When this skill spawns a subagent via the Agent tool, the spawned prompt MUST include this directive verbatim (or equivalent):
이 스킬이 Agent tool로 서브에이전트를 스폰할 때 mode: "bypassPermissions"를 반드시 포함한다. 서브에이전트는 .claude/ 경로에 직접 Write/Edit/Bash를 사용한다(/tmp 우회 불필요, CC v2.1.121+). See R010.
This directive is preserved inline because Agent-tool prompt synthesis can drop SKILL.md notes; inline mandatory directives survive (#1046 lesson).
Dev Lead Routing
Engineers
| Type | Agents |
|---|
| Language | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java-expert |
| Frontend | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
| Backend | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-nestjs-expert, be-express-expert, be-django-expert |
| Tooling | tool-npm-expert, tool-optimizer, tool-bun-expert |
| Database | db-supabase-expert, db-postgres-expert, db-redis-expert, db-alembic-expert |
| Architect | arch-documenter, arch-speckit-agent |
| Security | sec-codeql-expert |
| Infra | infra-docker-expert, infra-aws-expert |
| Slack | slack-cli-expert |
File Extension Mapping
| Extension | Agent |
|---|
.go | lang-golang-expert |
.py | lang-python-expert |
.rs | lang-rust-expert |
.kt, .kts | lang-kotlin-expert |
.ts, .tsx | lang-typescript-expert |
.java | lang-java-expert |
.js/.jsx (React) | fe-vercel-agent |
.vue | fe-vuejs-agent |
.svelte | fe-svelte-agent |
.dart, pubspec.yaml | fe-flutter-agent |
.sql (PG) | db-postgres-expert |
.sql (Supabase) | db-supabase-expert |
alembic.ini, alembic/versions/*.py | db-alembic-expert |
Dockerfile, *.dockerfile | infra-docker-expert |
*.tf, *.tfvars | infra-aws-expert |
*.yaml, *.yml (CloudFormation) | infra-aws-expert |
Keyword Mapping
| Keywords | Agent |
|---|
| go, golang | lang-golang-expert |
| python, py | lang-python-expert |
| rust | lang-rust-expert |
| kotlin | lang-kotlin-expert |
| typescript, ts | lang-typescript-expert |
| java | lang-java-expert |
| react, next.js, vercel | fe-vercel-agent |
| vue | fe-vuejs-agent |
| svelte | fe-svelte-agent |
| flutter, dart, riverpod, bloc, widget | fe-flutter-agent |
| design, typography, color, motion, ux writing, ui design, "design system", "design review", impeccable | fe-design-expert |
| fastapi | be-fastapi-expert |
| django | be-django-expert |
| spring, springboot | be-springboot-expert |
| nestjs | be-nestjs-expert |
| express | be-express-expert |
| npm | tool-npm-expert |
| optimize, bundle | tool-optimizer |
| bun | tool-bun-expert |
| postgres, postgresql, psql, pg_stat | db-postgres-expert |
| redis, cache, pub/sub, sorted set | db-redis-expert |
| supabase, rls, edge function | db-supabase-expert |
| alembic, migration, db revision, db upgrade, db downgrade | db-alembic-expert |
| docker, dockerfile, container, compose | infra-docker-expert |
| aws, cloudformation, vpc, iam, s3, lambda, cdk, terraform | infra-aws-expert |
| security, codeql, cve, vulnerability, sarif, sast, security audit | sec-codeql-expert |
| architecture, adr, openapi, swagger, diagram | arch-documenter |
| spec, specification, tdd, requirements | arch-speckit-agent |
| slack, slack-cli, slack app, slack deploy, slack trigger, slack datastore | slack-cli-expert |
Model Selection
| Task | Model |
|---|
| Architecture analysis | opus |
| Code review/implementation | sonnet |
| Quick validation/search | haiku |
Routing Decision (Priority Order)
Before selecting an expert agent, evaluate in this order:
Step 1: Agent Teams Eligibility (R018)
Check if Agent Teams is available (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 or TeamCreate/SendMessage tools present).
| Scenario | Preferred |
|---|
| Single-language review | Task Tool |
| Multi-language code review (3+) | Agent Teams |
| Code review + fix cycle | Agent Teams |
| Cross-layer debugging (FE + BE + DB) | Agent Teams |
| Simple file search/validation | Task Tool |
Step 2: Expert Agent Selection
Route to appropriate language/framework expert based on file extension and keyword mapping.
Permission Mode: When spawning agents via Agent tool, always pass mode: "bypassPermissions". The Agent tool default (acceptEdits) overrides agent frontmatter permissionMode, causing permission prompts during unattended execution.
Step 4: Ontology-RAG Enrichment (R019)
If get_agent_for_task MCP tool is available, call it with the original query and inject suggested_skills into the agent prompt. Skip silently on failure.
Step 4b: Wiki-RAG Enrichment
For ambiguous routing (confidence < 90%), query the wiki for context:
- Search
wiki/index.yaml for agent/skill pages matching detected keywords
- If wiki suggests a specific skill or guide for the task, inject as
suggested_context in the agent prompt
- This helps agents receive relevant guide references automatically
wiki-rag query: "{user_request}" → wiki agent/skill pages → suggested_context injection
Advisory only — skip silently if wiki unavailable.
Step 5: Soul Injection (R006)
If the selected agent has soul: true in frontmatter, read and prepend .claude/agents/souls/{agent-name}.soul.md content to the prompt. Skip silently if file doesn't exist.
Routing Rules
Multi-language: detect all languages, route to parallel experts (max 4). Single-language: route to matching expert. Cross-layer (frontend + backend): multiple experts in parallel.
No Match Fallback
When file extension or keyword doesn't match any existing agent:
User Input → No matching development agent
↓
Detect: File extension (.rb, .swift, .php, etc.) or language keyword
↓
Delegate to mgr-creator with context:
domain: detected language/framework
type: sw-engineer
keywords: extracted from user input
file_patterns: detected extensions
skills: auto-discover from .claude/skills/
guides: auto-discover from templates/guides/
Examples of dynamic creation triggers:
- Unrecognized file extension (e.g.,
.rb → Ruby expert, .swift → Swift expert)
- New framework keyword (e.g., "Flutter 앱 리뷰해줘", "Rails API 만들어줘")
- Language detected but no specialist exists
Not user-invocable. Auto-triggered on development intent.