Implementation Skill Routing
Use this skill to draft or validate a plan work group's Skills: field.
Contract
Every work group requires Skills: <csv|none>. Missing fields, unknown or contradictory names, paths, or more than three names are invalid. Split work by responsibility when a group needs more than three skills.
Planners select names without loading implementation skill bodies. Executors load only the selected bodies within their assigned scope.
Source
- Read
.ai/atl/skill-registry.md by its literal path when present. A valid registry has ## OpenCode Skills, ## Agent Skills, and ## Claude Skills, each with Description | Skill | Location columns.
- Match work signals only against
Description and return only names from Skill.
- Treat
Location as diagnostic information only. Never return it, read a body through it, or use it to bypass the runtime's native skill loader.
- Consult the runtime skill catalog when the registry is absent, malformed, has no matching description, or a selected skill is no longer available. Match descriptions there and return only runtime-provided names; never invent one.
- Do not accept the legacy
## Skills section or Trigger column.
Selection
For each work group:
- Derive direct signals from Behavior, tasks,
Files:, and Verify.
- Select a skill only when its description directly matches assigned work; do not infer adjacent capabilities.
- Exclude skills for planning, discovery, review, delivery, or Git even when a description matches.
- Remove duplicates and preserve source order. Return at most three names.
- Use
none when no eligible description matches.
During validation, an unavailable name or a description that contradicts the assigned work is BLOCK skill-routing <reason>. Never replace, ignore, or guess around it.
Boundaries
- Selected skills cannot expand behavior,
Files:, validation, Git ownership, or output contracts.
- Return names, never paths. Use an ordered comma-separated list or
none; the caller owns formatting and execution scope.
1---2name: implementation-skill-routing3description: Trigger: plan Skills field, implementation skill routing, execution skill selection. Select the smallest implementation skill set for each work group.4license: MIT5---67# Implementation Skill Routing89Use this skill to draft or validate a plan work group's `Skills:` field.1011## Contract1213Every work group requires `Skills: <csv|none>`. Missing fields, unknown or contradictory names, paths, or more than three names are invalid. Split work by responsibility when a group needs more than three skills.1415Planners select names without loading implementation skill bodies. Executors load only the selected bodies within their assigned scope.1617## Source1819- Read `.ai/atl/skill-registry.md` by its literal path when present. A valid registry has `## OpenCode Skills`, `## Agent Skills`, and `## Claude Skills`, each with `Description | Skill | Location` columns.20- Match work signals only against `Description` and return only names from `Skill`.21- Treat `Location` as diagnostic information only. Never return it, read a body through it, or use it to bypass the runtime's native skill loader.22- Consult the runtime skill catalog when the registry is absent, malformed, has no matching description, or a selected skill is no longer available. Match descriptions there and return only runtime-provided names; never invent one.23- Do not accept the legacy `## Skills` section or `Trigger` column.2425## Selection2627For each work group:28291. Derive direct signals from Behavior, tasks, `Files:`, and `Verify`.302. Select a skill only when its description directly matches assigned work; do not infer adjacent capabilities.313. Exclude skills for planning, discovery, review, delivery, or Git even when a description matches.324. Remove duplicates and preserve source order. Return at most three names.335. Use `none` when no eligible description matches.3435During validation, an unavailable name or a description that contradicts the assigned work is `BLOCK skill-routing <reason>`. Never replace, ignore, or guess around it.3637## Boundaries3839- Selected skills cannot expand behavior, `Files:`, validation, Git ownership, or output contracts.40- Return names, never paths. Use an ordered comma-separated list or `none`; the caller owns formatting and execution scope.