dev-lead-routing
SkillProductivityRoutes development tasks to the correct language or framework expert agent. Use when user requests code review, implementation, refactoring, or debugging.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the dev-lead-routing skill
What this skill tells your AI
The instructions your AI receives, as published by baekenough/oh-my-customcode in .claude/skills/dev-lead-routing/SKILL.md and read by ahel’s review.
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 AND TeamCreate present in the tool list. The env var alone is NOT sufficient, and SendMessage presence is not evidence of Teams (see R018 Detection).
| 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 |
When Detection resolves to No, skip this step — route via the Agent tool under R009/R010.
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 frontmatterpermissionMode, 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.yamlfor agent/skill pages matching detected keywords - If wiki suggests a specific skill or guide for the task, inject as
suggested_contextin 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.
Signals
- GitHub stars
- 34
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
dev-lead-routing- Source
- github.com/baekenough/oh-my-customcode