Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Analyze task complexity and route to a mode by artifact: direct fix for clear-scope changes, plan file when the approach needs to be written down, or spec and shells for multi-session projects. Use when the user asks to "turboplan", "run turboplan", "plan this task", "turbo plan mode", "plan and implement", or "use turboplan instead of plan mode".
.claude/skills/tobihagemann-turboplan/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-14 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -37% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-15 | ✓→✗ | ▼ Worse | -9% | 0% |
| case-18 | ✓→✗ | ▼ Worse | 36% | 0% |
Analyze task complexity to recommend an execution mode, then let the user set the final route.
Categorize the user-supplied task along these dimensions using subjective judgment. This analysis makes the recommendation informed:
Modes are named by what they produce: no plan, or a plan file.
| Mode | Criteria | Route | |---|---|---| | Direct | Clear scope, with any remaining decisions small enough to settle in conversation rather than write down. Aligns on the shape, then implements. | Read references/direct-mode.md and follow its steps. | | Plan | The approach warrants writing down before implementing — to survey patterns, settle architectural decisions, or survive a fresh session. Produces a plan file, however large the work turns out to be. | Read references/plan-mode.md and follow its steps. |
Form a recommended route from the dimensions and criteria above. Output the recommendation as text: the recommended mode and a line or two on why it fits over its neighbor.
Then use request_user_input to have the user set the final route. Offer the recommended mode first, marked "(Recommended)", alongside the other mode; the auto-appended "Other" lets the user describe a different path.
Add a third Get a second opinion option whenever committing to the wrong mode would cost a session of rework, and whenever the recommended mode does not earn "(Recommended)" with conviction. It runs the $consult-claude skill for the soundest route given the task's scope, stakes, and unknowns. Then resolve the route with that answer in hand, re-asking when the choice stays the user's.
Workflow state lives at .turbo/workflows/<slug>.md — slug from the task summary (lowercased, non-alphanumerics to hyphens, truncated to 40 characters at a word boundary). It pairs one-to-one with the thread's goal. When this run's create_goal attempt succeeds, write the file fresh: Status: active plus the confirmed route's step list from its reference file as a checkbox list. When an unfinished goal already exists, mirror into the workflow file its objective names; when it names none, continue without workflow state. Mirror every update_plan call into the file; it holds the pipeline's remaining steps and their statuses. When this run created the goal, run the terminal step in order: mark the final entry completed and mirror it, set Status: closed, mark the goal complete with update_goal, then emit any halt message.
Attempt create_goal with the objective: "Carry the task '<task summary>' through the confirmed <route> route's final step; for the plan route that is the route's designed summarize-and-halt, and if the confirmed route changes, the new route's final step applies. Workflow state: .turbo/workflows/<slug>.md; mirror every update_plan call into it. Loop state lives under .turbo/loops/. After any context compaction, re-read the workflow file and any active ledger, and continue from the first unfinished entry. Mark this goal complete at the route's final step, before any designed halt message." If an unfinished goal already exists, an outer workflow owns it; continue without creating one.
Carry the confirmed route into its reference file from the table above and follow its steps. If this run created the goal, resolve it inside the route's own flow rather than after it: mark it complete with update_goal when the route's final step is reached, before emitting any designed halt message.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 8,589 | 4,667 | -46% | 1 | 1 | 0% | 1,296 | 1,637 | +26% | 0 | 0 | — |
case-02 | fail→fail | 6,115 | 3,150 | -48% | 1 | 1 | 0% | 975 | 1,339 | +37% | 0 | 0 | — |
case-03 | fail→fail | 11,003 | 7,156 | -35% | 1 | 1 | 0% | 1,767 | 1,997 | +13% | 0 | 0 | — |
case-04 | fail→fail | 14,861 | 4,634 | -69% | 1 | 1 | 0% | 2,182 | 1,576 | -28% | 0 | 0 | — |
case-05 | fail→fail | 3,630 | 2,527 | -30% | 1 | 1 | 0% | 549 | 1,273 | +132% | 0 | 0 | — |
case-06 | fail→fail | 13,597 | 5,274 | -61% | 1 | 1 | 0% | 2,133 | 1,651 | -23% | 0 | 0 | — |
case-07 | fail→fail | 10,124 | 6,104 | -40% | 1 | 1 | 0% | 1,741 | 1,919 | +10% | 0 | 0 | — |
case-08 | fail→fail | 13,147 | 4,220 | -68% | 1 | 1 | 0% | 1,974 | 1,441 | -27% | 0 | 0 | — |
case-09 | fail→fail | 5,863 | 7,340 | +25% | 1 | 1 | 0% | 357 | 2,054 | +475% | 0 | 0 | — |
case-10 | fail→fail | 7,127 | 8,604 | +21% | 1 | 1 | 0% | 1,023 | 1,619 | +58% | 0 | 0 | — |
case-11 | fail→fail | 7,515 | 6,770 | -10% | 1 | 1 | 0% | 1,230 | 1,279 | +4% | 0 | 0 | — |
case-12 | fail→fail | 28,517 | 4,446 | -84% | 1 | 1 | 0% | 168 | 1,020 | +507% | 0 | 0 | — |
case-13 | pass→pass | 8,796 | 7,916 | -10% | 1 | 1 | 0% | 1,167 | 2,209 | +89% | 0 | 0 | — |
case-14 | fail→pass | 11,271 | 6,455 | -43% | 1 | 1 | 0% | 1,669 | 1,906 | +14% | 0 | 0 | — |
case-15 | pass→fail | 9,683 | 3,533 | -64% | 1 | 1 | 0% | 1,566 | 1,432 | -9% | 0 | 0 | — |
case-16 | fail→pass | 19,415 | 6,555 | -66% | 1 | 1 | 0% | 2,907 | 1,828 | -37% | 0 | 0 | — |
case-17 | pass→pass | 6,158 | 9,320 | +51% | 1 | 1 | 0% | 957 | 1,869 | +95% | 0 | 0 | — |
case-18 | pass→fail | 8,335 | 4,915 | -41% | 1 | 1 | 0% | 1,239 | 1,681 | +36% | 0 | 0 | — |
case-19 | fail→pass | 6,499 | 3,666 | -44% | 1 | 1 | 0% | 960 | 1,520 | +58% | 0 | 0 | — |
case-20 | pass→fail | 5,892 | 9,106 | +55% | 1 | 1 | 0% | 869 | 1,289 | +48% | 0 | 0 | — |
case-21 | pass→fail | 15,798 | 3,354 | -79% | 1 | 1 | 0% | 2,774 | 1,284 | -54% | 0 | 0 | — |
case-22 | pass→fail | 13,981 | 4,320 | -69% | 1 | 1 | 0% | 2,344 | 1,489 | -36% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -9 percentage points is the difference between those two pass rates over the 18 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.