Use FIRST when any new piece of work arrives — a request, feature, change, fix, question, or idea — before starting on it or choosing an approach. Not for continuing work already routed to a workflow skill.
npx skills add https://github.com/JetBrains/thinkrail --skill choosing-a-workflow
The root router of the workflow family in packages/pi-thinkrail-workflow. It classifies the incoming
work and names the workflow skill that governs it — nothing more. A routed skill's steps live in that
skill alone; read it, don't run it from memory.
Read the request and the workspace, then answer three questions — usually silently, from what is already
in front of you:
the user brings a raw idea, or an existing codebase being set up / specced for the first time.
tended — created, brought up to date, given screenshots, its checks watched, its review comments
addressed. Fixes that flow from a PR's own review comments belong here, not to feature work.
behavior change, a nontrivial design decision — anything that alters what the project is or does.
If the route is genuinely ambiguous from the request alone, ask one short clarifying question
(ask_user_question, composed per the asking-user-questions concept skill) rather than guessing.
| Classification | Route |
|---|---|
| Project onboarding — no spec graph yet: an empty workspace with a raw idea, or an existing codebase to set up / spec | Read and follow setting-up-a-project — a dispatcher that routes on the workspace's state |
| The PR lifecycle — finished work to ship as a pull request, or an existing PR to tend: create, bring up to date, screenshots, checks, review comments | Read and follow shipping-a-pr |
| The work creates or changes anything in the project — a new feature, added functionality, a behavior change, a nontrivial design decision | Read and follow brainstorming — however small it looks; that skill owns the "too small" judgment |
| Anything else — answering questions, explaining code, running commands or checks, work that changes nothing | No matching workflow. Say so in one line (e.g. "No workflow skill covers this; proceeding directly.") and proceed with your own judgment. Never stretch a route to fit — a forced route is worse than none. |
One route per piece of work. If a request bundles work from different rows (e.g. "explain X, then
change Y"), route the part that changes the project and handle the rest directly.
brainstorming's call, not the router's.
This skill ends by naming exactly one of: setting-up-a-project, shipping-a-pr,
brainstorming, or no matching workflow (proceed with judgment). Adding a workflow to the family adds a row to the table above —
see the writing-workflow-skills skill.
Take jetbrains/choosing-a-workflow from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.