Coding

goal-runner

Try it

Autonomous multi-task orchestration loop over a roadmap file (ROADMAP.md, TODO.md, or any checkbox task list) — pairs with the built-in /goal Stop hook to work tasks ONE at a time until the file is done. The main agent orchestrates only; every task is delegated to sub-agents for coding, code review, and regression testing, with observed-green gates before the checkbox is ticked. No commits or pushes unless the goal text explicitly authorizes them — when it does, one commit per verified task, never red. Blocked tasks are annotated and skipped, never faked. Use this skill whenever the user says "work on the roadmap tasks til completion", "work the roadmap until completion", "work on tasks until completion using sub agents", "launch sub agents to work the tasks", "/goal-runner", or sets a /goal naming a roadmap/task file — even if they don't name the skill. Not for a single defined task (use autopilot or task-executor) and not for interval-scheduled reruns (use loop).

What it does

The multi-task loop behind a run: take a task file, work it top to bottom — one task at a time, each task delegated to sub-agents, each closed only on observed evidence — until nothing unchecked remains. Captures the orchestration contract the user previously retyped into every prompt.

The skill document

Goal Runner

The multi-task loop behind a /goal run: take a task file, work it top to bottom — one task at a time, each task delegated to sub-agents, each closed only on observed evidence — until nothing unchecked remains. Captures the orchestration contract the user previously retyped into every /goal prompt.

When to use this skill

  • "work on the roadmap tasks til completion" / "work the roadmap until completion"
  • "work on tasks until completion using sub agents" / "launch sub agents to work the tasks"
  • A /goal condition that names a roadmap or task file
  • "/goal-runner"

Do not auto-trigger for a single defined task (autopilot / task-executor) or for interval-scheduled reruns (loop).

The contract

  1. The main agent never codes. It parses the roadmap, spawns sub-agents, checks their evidence, updates the roadmap, and commits. Its only file edits are the roadmap file itself.
    • ❌ "This one's a two-line fix, faster to do it myself" — now regression attribution and the review gate are gone for that task.
    • ✅ Spawn a coder sub-agent even for the two-line task; the loop's guarantees come from the gates, not the diff size.
  2. One task at a time — parallelism lives inside the task. Fan out as many sub-agents as the current task warrants (parallel scouts, parallel review lenses), but exactly one task is in flight and exactly one sub-agent writes to the working tree at any moment. The tree is a mutex: two writers = unattributable diffs; two tasks = unattributable regressions.
    • ❌ "Task 3 is tests and task 4 is docs — they can't conflict, run both coders now." When the suite goes red, nobody knows which diff did it.
    • ✅ Task 3 fans out three scouts in parallel, then its single coder, then two review lenses in parallel; task 4 starts only after task 3 clears close-out.
  3. No commits or pushes by default. The deliverable is a verified working tree plus per-task evidence; the human gets the final git gate (the same guardrail as autopilot). The goal text naming it — "commit each task", "commit and push to " — IS the authorization; silence is a no.
    • ❌ "The tasks are done and verified, so I committed them to keep things tidy" — the goal text never mentioned git; that's an unauthorized side effect.
    • ✅ Goal text silent on git → working tree left uncommitted, final report ends with a ready-to-paste commit block as the human's move.
  4. When commits ARE authorized: one commit per verified task, immediately after its gates pass — never a batched end-of-run commit (task 3's regression gets tangled with four other diffs and there's no rollback point), never while the suite has new failures. Push only if the goal text names that too; never force-push. Starting on the default branch with no branch named → create one and log it as an assumption.
  5. Never fake a checkbox. A box gets ticked only with the evidence in hand (see close-out gate). A result you did not observe is "not run", never "passed".

How the coordinator thinks

Drive the loop the way a rigorous senior engineer runs a team — the judgment below IS the skill; sub-agents are just hands. (The think-like-fable skill, if installed, is this section at full length.)

  1. Read the task beneath the words. Before spawning anything, restate: "this task needs ___ so that ___". If the second blank won't fill from the roadmap and nearby docs, pick the cheapest-to-reverse reading and log it as an assumption — or mark BLOCKED if every reading is expensive to undo.

  2. Spend agents where the risk lives. Effort scales with blast radius, not task length — a wording fix gets one coder and one reviewer; a task touching auth, money, migrations, or 3+ layers gets the full fan-out:

    RoleCountParallel?Model (routing chain)Deploy when
    Scout (read-only)0–3with each otherscouttask touches >2 files or an unfamiliar layer — one scout per question, not per whim
    Coderexactly 1nevercoder; coder_high_risk when the task trips the blast-radius test aboveevery task — sole writer to the tree
    Reviewer1, or 2–3 lenseslenses with each otherreviewersplit into lenses (correctness / design / tests) when the diff is large or touches auth/data/money
    Fixer0–1nofixer; second cycle → top of coder_high_riskreview produced blockers — gets the coder brief plus the findings, nothing else

    The Model column resolves per Model routing when a model inventory exists; without one, spawn with no model override.

  3. Front-load the riskiest unknown. Ask: what discovery would invalidate the whole approach? That is scout question #1 — answered before the coder starts, not after it fails.

  4. Sub-agent reports are testimony, not truth. Quoted command output or a file:line citation upgrades a claim to evidence; anything else stays a hypothesis. Two agents disagreeing is signal — resolve it by re-deriving yourself (open the file, run the command), never by picking the more confident voice.

  5. Guard your own context. The coordinator's window holds orchestration state — queue position, evidence ledger, assumptions. Details live and die inside sub-agents; that is why the main agent never codes.

Compose every sub-agent prompt from the briefs in references/agent-briefs.md — each lists what the prompt MUST contain and the report format the coordinator holds the agent to.

Model routing

~/.claude/model-inventory.json (written by the model-inventory skill, when installed) maps roles to model fallback chains — strongest as escalation, cheapest that suffices as default. Resolve it once in Phase 0, then pass each spawn's model explicitly. Routing is optional plumbing: it never blocks or pauses the run — every failure below degrades to "no override" (sub-agents inherit the session model) with a one-line note, and the coordinator never edits the inventory file.

  1. Trust gate, with kickoff rebuild. Use the inventory only if the file parses, probed is true, and generated_at is under 7 days old. When it fails the gate and the model-inventory skill is installed, run that skill once at Phase 0 (scan + its probe discipline, sub-cent) and route from the fresh file, logging the discovery in the kickoff message; skill absent or discovery fails → treat as absent and note "run /model-inventory to re-enable routing".
  2. Free sanity check — no mid-run probes. If the model-inventory skill's scripts/scan.sh is installed, run it (zero tokens, seconds): a cached CLI whose binary or auth signal has since vanished is dropped from routing for this run; a new CLI it finds is noted for a later rescan. After kickoff, no live model probes — a mid-run model failure is handled by the chain fallback below, never by re-probing.
  3. Resolution. Per role, take the chain's first entry not marked unavailable / blocked-by-auth / quota-exhausted. Pass only bare aliases (haiku/sonnet/opus/fable) to the Agent tool's model param — skip anything else in a chain (a dated id or hand-edit is treated as absent). State the resolution in the kickoff message.
  4. Spawn-failure fallback. A spawn rejected over its model (entitlement, quota, unknown alias) falls to the next chain entry; chain exhausted → spawn with no override. Log it in the run report — never mark a task BLOCKED over routing.
  5. Escalation ladder. The coder uses coder_high_risk only when the task trips the existing blast-radius test — same judgment, no new decision point. A second fix cycle escalates the fixer to the top of coder_high_risk before the task may be declared blocked: the cheap retry is a stronger model, not a third identical attempt.
  6. The goal text outranks the table. "use opus for everything" in the goal text beats every chain. bash_workers entries (opencode, qwen, …) are not spawn targets — this loop spawns via the Agent tool only.

Workflow

Phase 0 — Setup (once)

  1. Locate the task file. Use the file named in the goal text; else glob the repo root for ROADMAP.md / roadmap.md / TODO.md. Multiple candidates or none → ask once before starting (this is the only permitted question; the loop itself runs unattended).
  2. Parse the tasks. Checkbox lines (- [ ]) are the queue, in file order. If the file has prose tasks but no checkboxes, rewrite it into checkbox form first and show the user the parsed list in the kickoff message.
  3. Baseline the suite. Run the project's test suite once before task 1 and quote the summary line. Pre-existing failures belong to the baseline, not to task 1.
  4. Confirm git posture. State in the kickoff message whether the goal text authorized commits and/or pushes (contract rules 3–4). If commits are authorized: note the current branch and read git log --oneline -5 to learn the project's commit-message convention — follow it (work-item format if the project uses one, otherwise a descriptive subject naming the roadmap task).
  5. Resolve sub-agent models per Model routing and state the per-role resolution (or "no inventory — session model throughout") in the kickoff message.

Per-task loop

  1. Re-anchor. Restate in one line: the goal condition, the task now starting, tasks remaining. If the next action doesn't serve the goal, stop and re-plan.
  2. Scout — when the deployment table warrants it. Fan out read-only sub-agents in parallel, one per question, per the scout brief: file:line-cited findings only, no edits, "looked for and did not find" reported as findings. Feed the results verbatim into the coder brief.
  3. Code. Spawn one coder sub-agent per the coder brief — the task text verbatim (paraphrase silently drops acceptance criteria), the goal one-liner, scout findings, and the constraints block. It follows autopilot's execution discipline if installed (incremental verification, ASSUMPTIONS log, command-failure protocol: read the error, change one named thing, retry once, two failures = report back). The coder never commits and never touches the roadmap file — those are the coordinator's.
  4. Review. Run the code-review skill (else review sub-agents per the reviewer brief) on this task's diff. With commit authority, the diff since the last commit is exactly this task; without it, scope by the coder sub-agent's reported file list and note any overlap with earlier tasks' files. Blockers → send back to a fix sub-agent and re-review (max two cycles; survivors mark the task blocked). Suggestions are logged in the report, never applied — that's scope creep in an unattended run.
  5. Regression. Run the full relevant suite; quote the summary line. Gate is no new failures vs. the Phase 0 baseline — not "all green" if the baseline was already red.
  6. Close out — all three observed, then and only then: review shows zero blockers; regression gate passed (summary quoted); the coder's verification of the task's own behavior is quoted. Tick the checkbox; if commits are authorized, commit per the convention found in Phase 0 (push only if that's authorized too).
  7. Blocked? If the task hard-stops (destructive step, missing access, spec contradicts the codebase, or two failed fix cycles): annotate the line — - [ ] — BLOCKED: — leave the box unchecked, and continue to the next task.
  8. Loop until no unchecked, unblocked tasks remain.

Completion

  • All boxes ticked and last suite run quoted green → the goal condition holds; report per-task outcomes (task → evidence → commit hash when commits were authorized) plus all logged assumptions and suggestions. When commits weren't authorized, end the report with a ready-to-paste commit block — the human's move.
  • Blocked tasks remain → the goal is not met: report exactly which tasks are blocked and the one decision each needs. Never tick a blocked box to satisfy the Stop hook.
  • Context running low mid-roadmap → use the handoff skill: record queue position, baseline state, branch, and per-task status so the next session resumes the loop instead of restarting it.

Examples

Example 1: the canonical run

User: /goal "work on the roadmap tasks til completion. one task at a time. use sub agents for coding, code review and testing. commit each task to the current branch and push."

Claude: parses 6 unchecked tasks from ROADMAP.md, baselines the suite (quoted: 42 passed), then loops: coder sub-agent → code-review (1 blocker → fixed → clean) → suite re-run quoted → checkbox ticked → commit → push (authorized in the goal text). Task 4 needs a credential that's missing → marked BLOCKED: no STRIPE_TEST_KEY in env, loop continues with 5 and 6. Final report: 5 committed+pushed with hashes and evidence, 1 blocked with the decision needed.

Example 2: git not authorized

User: "work the roadmap until completion, sub agents do the work"

Claude: same loop, but no commits and no pushes — the goal text never mentioned git. All six tasks end verified in the working tree, and the final report ends with a ready-to-paste commit block (and nothing pushed) as the human's move.

Anti-patterns

  • ❌ Main agent editing source "to save a sub-agent spawn" — the only file it edits is the roadmap.
  • ❌ Ticking a checkbox from the coder's claim of success without the quoted suite run — that's confabulated success wearing a checkbox.
  • ❌ Committing, pushing, opening PRs, or switching branches when the goal text authorized none of them — "done and verified" is not commit authority.
  • ❌ When commits are authorized: one end-of-run mega-commit, or committing while the suite has new failures ("I'll fix it in the next task").
  • ❌ Pausing mid-loop to ask the user a preference question — log an assumption with blast radius instead; the single permitted question is Phase 0's file disambiguation.
  • ❌ Deleting or rewording a task you can't finish so the file "completes" — annotate BLOCKED and report honestly.
  • ✅ One task at a time; sub-agents do the work; every tick backed by quoted evidence; git side effects only when the goal text grants them (and then one commit per task); blocked tasks surfaced, never buried.

Notes

  • Composes with: autopilot (per-task execution discipline), code-review (the review gate), write-tests (when a task is itself "add tests"), model-inventory (per-role model routing), handoff (context survival). All optional — the loop degrades to focused sub-agent prompts when they're absent.
  • The built-in /goal command supplies persistence (a Stop hook that blocks ending until the condition holds); this skill supplies the discipline. It works without the hook too — the loop just becomes stoppable.
  • Zero unchecked tasks at kickoff is a valid outcome: report "roadmap already complete" with the file's state; don't invent work.

Related skills

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Run Git operations — commits, branches, merges, rebases, conflict resolution, and recovery — with safety rules enforced.

by Iván535 installs31 stars

More from dennisrongo

Browse all skills

Surface architectural friction in a codebase and propose **deepening opportunities** — refactors that turn shallow modules into deep ones, informed by the project's `CONTEXT.md` glossary and `docs/adr/` decisions. Walks the codebase with an Explore sub-agent, applies the **deletion test** to suspected pass-through modules, presents a numbered list of candidates with files / problem / solution / benefits, and drops into a grilling loop once the user picks one — naming new concepts into `CONTEXT.md` inline and offering an ADR only when a rejection is load-bearing. Writes no production code. Use this skill whenever the user says "improve architecture", "improve the architecture", "architecture review", "find refactoring opportunities", "find deepening opportunities", "find shallow modules", "make this more testable", "this code is hard to navigate", or invokes `/improve-codebase-architecture` — even if they don't name the skill.

by dennisrongo3 installs

Write and run E2E tests for React Native / Expo apps using Maestro CLI — the open-source tool that drives the **real native app** on an Android emulator or iOS simulator, not a web build. Covers what browser-based e2e (Playwright, Expect, e2e-verify) cannot reach: native components, biometrics, secure storage, push notifications, platform-specific modules. Write YAML flows, run headed for authoring or headless for CI. Scripts currently automate the Android workflow end-to-end (Java + SDK detection, emulator boot, adb reverse); iOS simulator setup requires Xcode + `xcrun simctl` and is documented but not automated by the setup script. Use this skill whenever the user says "test my react native app", "e2e test the mobile app", "write maestro tests", "test the expo app", "automate emulator testing", or "/maestro-mobile-test" — even if they don't name the skill. Not for web apps (e2e-verify), unit/component tests (write-tests with RNTL + Jest), or API contract tests.

by dennisrongo2 installs

Verify a change end-to-end in a real browser, routed by one question — who needs this check to run again? Ephemeral checks run via Expect (millionco/expect) or browser-use (AI agent driving headless Chromium — references/browser-use.md) when installed, else Claude driving the browser directly; regression-critical flows (auth, money, signup, checkout, deletion) get durable Playwright tests under write-tests discipline. Evidence rule either way — an AI-walked flow yields "no issues found in the paths walked" with observations quoted, never "e2e passes". Safety gate: never production, never real user cookies. Use this skill whenever the user says "verify this in the browser", "test it end to end", "test my web app", "e2e test this", "write playwright tests", "run expect", "run browser-use", "smoke test the UI", or "/e2e-verify" — even if they don't name the skill. Not for native mobile (maestro-mobile-test), unit/integration authoring (write-tests), or debugging a failing e2e test (diagno

by dennisrongo1 installs

Pre-commit SQL code review for uncommitted database changes. Detects antipatterns that cause real production incidents — broken TRY/CATCH error handling, swallowed errors, retry patterns without loops, tables missing PK/indexes, type-mismatch truncation, dynamic-SQL injection, NOLOCK in write paths, UPDATE/DELETE without WHERE, hardcoded env values, cross-DB refs, and more (full catalog in the skill body). Reports BLOCKER/WARN/INFO findings with file:line citations and fixes. Never edits SQL. Use this skill whenever the user says "/sql-review", "review my SQL", "review the SQL diff", "lint the SQL", "check my SQL changes", "SQL pre-commit check", "audit my stored proc", or asks about SQL antipatterns in a diff — even if they don't name the skill. Distinct from code-review (general review) — this carries SQL-specific incident patterns.

by dennisrongo1 installs

Scaffold a new Tauri 2 desktop app (Rust backend + TypeScript/React frontend) using a thin-frontend / rich-Rust-backend architecture with modular commands, trait-based platform abstractions, encrypted secrets at rest, single-instance enforcement, a self-hosted updater, and a cross-platform CI matrix. Three modes: full project scaffold, add a Tauri command slice, add a Rust module slice. Use this skill whenever the user says "create a new Tauri app", "scaffold a Tauri 2 project", "new desktop app with Tauri", "Tauri + React project", "add a Tauri command end-to-end", "add a Rust module to my Tauri app", "my Tauri conventions", or "/tauri-2-app" — even if they don't name the skill. Full good-pattern catalog and pitfall list live in the skill body.

by dennisrongo1 installs

Turn a feature idea, conversation context, or rough notes into researched, detailed, dependency-ordered checkbox tasks appended to the project's roadmap/backlog file — exactly the format goal-runner consumes, so a fresh unattended session can execute them. Grounds every task in the actual codebase before writing it (grep/read or Explore scouts; think-like-fable rigor if installed), puts what + done-when on the checkbox line with verified files, acceptance criteria, and a verification command in plain sub-bullets, and labels assumptions. Appends to the existing ROADMAP.md/BACKLOG.md/TODO.md; when none exists it asks once and defaults to ROADMAP.md. Use this skill whenever the user says "add this to the backlog", "add it to the roadmap", "plan these tasks", "break this down into tasks", "capture this as roadmap tasks", "turn these notes into a task list", or "/backlog-planner" — even if they don't name the skill. Not for executing tasks (goal-runner, task-executor, autopilot) — this writ

by dennisrongo1 installs