Input: the request and one active profile from profiles.json. Select only from that profile's expanded skill set. directory.json registers skills owned by this repository; stack skills are registered by their own repositories in profiles.json.
Output exactly one next-skill line:
Next skill: <repository>/<skill>
For behavior changes, add Proof: <focused test or check>. Add Block: <risk> only for migrations, security or authorization, deployment, destructive actions, or an unverified external API. Omit unused lines; routine work does not need a human handoff.
Route by intent
Use a narrower domain skill from the active profile when one matches; otherwise select the row's exact skill. Resolve to one canonical skill ID before output.
| Request | Select |
|---|---|
| Clarify a rough request or acceptance criteria | requirements-clarifier |
| Draft a product brief | create-prd |
| Review a product brief | review-prd |
| Rank a backlog | prioritize-backlog |
| Estimate work | estimate-tasks |
| Plan a sprint | plan-sprint |
| Report delivery status | generate-status-report |
| Draft tracker tickets | plan-tickets |
| Create or update GitHub issues | github-issue |
| Implement a Rails feature | rails-feature |
| Review Rails code | rails-review |
| Perform routine Rails maintenance | rails-maintenance |
| Plan or review a Rails migration | review-migration |
| Implement Ecto/database work | ecto-essentials |
| Implement other Elixir/Phoenix work | elixir-essentials |
| Implement Rust work or verify a crate API | rust-essentials |
| Diagnose an ownership or borrowing issue | ownership-borrowing |
| Design Rust types for domain constraints | type-driven-design |
| Handle Rust errors | error-handling |
| Implement plain Ruby work | code-workflow |
If the request names a skill, use it when it belongs to the active profile. Role words such as product owner, project manager, and tech lead refine intent; they do not start a separate workflow. Do not emit alternatives or multiple next skills. The selected skill owns the task and can consult a specialist when needed.
Optional Complexity Classification
When the request includes "Classify complexity before routing" or similar intent, optionally call task-complexity-classifier before routing to inform the routing decision. Use the classification output to refine skill selection (e.g., complex tasks may warrant specialist skills). This is optional; proceed with normal routing if classification is unavailable or the request does not specify it.