Install any skill in seconds. Free to start, no credit card required.
Get Started Free →tobihagemann/pick-next-shell
Pick the next shell whose dependencies are satisfied and carry it through planning: expand, refine, self-improve, halt.
Passed 8 of 14 test cases with the skill, and 5 of 14 without it.
and 4 more in the full report
5 fixed7 passed either way9 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 5 test cases the skill fixed. Same model, same prompt, with and without the skill.
For shell `03-dashboard.md` with `depends_on: [01-auth]`, where should we look to verify if `01-auth` is complete, and what frontmatter key and value must be present?
| Checked | Without skill | With skill |
|---|---|---|
| Checks .turbo/plans/01-auth.md for completion status. | Missed | Passed |
| Requires status field in frontmatter to equal done. | Missed | Passed |
The instructions your model reads when the skill loads.
Pick the next shell from .turbo/shells/ whose dependencies are satisfied, then carry it through the planning pipeline: expand → refine → self-improve → halt.
At the start, use update_plan to track each step, restating any remaining steps of a parent workflow alongside them:
$expand-shell skill$refine-plan skill$self-improve skillCheck terminal conditions first:
status: done for all — the project is complete; stopdone status — there are unfinished plans; stopIf shells exist in .turbo/shells/, glob .turbo/shells/*.md and read each file's YAML frontmatter. A shell's depends_on entry is satisfied when .turbo/plans/<dep-slug>.md exists with status: done in its frontmatter.
depends_on are all satisfieddepends_onIf there are no candidates (everything is blocked), report which shells are blocked and which dependencies they're waiting on, then stop.
If multiple candidates exist, pick the one with the lowest shell number (from the NN- prefix $draft-shells gives each file). If ambiguous, use request_user_input to let the user choose.
State the picked shell path and its dependencies before continuing.
Workflow state lives at .turbo/workflows/<slug>.md — slug from the picked shell's basename without .md. 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 this invocation's update_plan list 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 shell at through expand, refine, and self-improve, mark the plan ready, and halt after the summary. 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 halt that follows the plan-ready summary." If an unfinished goal already exists, an outer workflow owns it; continue without creating one.
$expand-shell Skilltest cases passed, vs 5 / 14 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.