Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Steward one substantial goal from a rough request to verified completion - clarify consequential decisions, compile a verifiable goal brief, walk the closed seven-route cascade to the smallest fit (four outcome routes total-tdd, wayfinder, direct, to-tickets; three interstitial outcomes grilling pass, human pause, no-work receipt), drive the dependency-ready ticket frontier through existing harness and tracker mechanisms, re-plan when evidence invalidates the graph, and finish with integration-l
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-21 | ✗→✓ | ▲ Improved | 89% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 121% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 152% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 153% | 0% |
Steward one goal from rough request to verified DONE. SPEC.md in this directory is the normative contract; when in doubt, it wins. You compose existing mechanisms — tracker skill, harness gate/build/verify/judge, TDD, review council, delegation — and never build a controller, scheduler, daemon, state store, tracker adapter, or second ticket runner. The tests/ and evals/ here validate this skill's delivery; never run them to drive real work.
Before stewarding, confirm the tools this skill composes are actually available — a missing mechanism is a stop, not something to reimplement:
bashlinear auth whoami >/dev/null || echo "tracker CLI unavailable - authenticate or stop" harness --help >/dev/null || echo "harness unavailable - per-unit gating impossible" council --preflight-only --workspace . # reviewer seats ready? fail-closed
Check the parent tracker issue for a current non-stale steward claim. If one exists, stop — you are not the steward. Otherwise claim the parent through the host's task controls and the tracker comment:
bashlinear issue view GOAL-123 # look for a current [claim] comment linear issue comment add GOAL-123 --body "[claim] steward=<agent> session=<id> started=<iso8601>"
Only the steward mutates the graph or claims child tickets; workers execute steward-issued units and never self-claim.
Compile the overall goal with goal-spec into one binary destination. On the parent issue record: goal-brief version 1, the SHA-256 of the exact UTF-8 goal-brief block, and graph revision 1 ([graph-revision] 1 + [graph-reconciled] 1). The parent issue is the sole lifecycle authority; local files are evidence snapshots, never state.
A goal-brief version changes only after an authorized material scope change. Each new version records its digest, predecessor digest, authorization reference, effective graph revision, and the verbatim block. An authorized version bump advances the graph revision and runs the section 6 reconciliation; claims resume only after the new [graph-reconciled] marker — recording the same revision and resuming is not enough.
bash# hash the exact UTF-8 goal-brief block, then record it on the parent issue shasum -a 256 goal-brief-v1.txt linear issue comment add GOAL-123 --body-file brief-v1-record.md # version, sha, [graph-revision] 1, [graph-reconciled] 1
Walk this cascade top-down; first match wins. The route vocabulary is closed.
total-tdd.boundedness and route certainty. A value unknown because a decision is unsettled → at most one bounded grilling pass per goal-brief version, then reclassify once. Grilling settles decisions, not facts: an unknown that only an investigation can resolve (a dependency's real behavior, a spike outcome) stays unknown here and is handled by wayfinder at rule 5. A decision that cannot be made until such a fact is known is contingent — do not force it closed in the grilling pass; leave it pending and let the goal route to wayfinder with the fact, where it is decided on the re-route.
at the current graph revision, and terminate.
wayfinder. Never re-grill the same goal-brief version.
to-tickets.Consequences: whole-app ownership beats fogginess; one bounded unit beats decomposition; if any unit of a multi-unit set is uncertain the whole set goes to wayfinder; only an entirely bounded, route-certain multi-unit set reaches to-tickets.
wayfinder is not a dead end. It owns route discovery — resolving investigation tickets (whose shape wayfinder owns; goal-to-done only records their evidence, which is not an implementation receipt) until the units are bounded and route-certain. When the fog clears, re-run this cascade over the same goal-brief version on the now-known facts, with the grilling predicate closed for the version (rule 2's grilling sub-step does not fire again) — which lands on direct (one unit) or to-tickets (two or more) for actual execution. This first exit decomposes under the current, already-reconciled graph revision: there is no prior implementation plan to invalidate, so no [graph-revision] bump and no section 6 reconciliation are due here. Reconciliation (section 6) fires only later, when evidence invalidates an implementation plan that already exists.
A decision that wayfinder's facts settle — one grilling already chose and discovery reopened, or one left pending as contingent at rule 2 — is decided on this re-route, never by re-grilling: if the discovered fact now determines it, record it and continue; if it still needs human judgment, it meets a human stop condition and you pause (rule 3). Investigation tickets live under the current graph revision and do not advance it — they yield evidence, not a change to the implementation-plan shape.
Every implementation ticket and claim carries: a mini goal brief, explicit dependency edges, a structured verification receipt contract, a stop condition, the goal-brief version, and the graph revision. Tickets are vertical, independently verifiable slices.
Claim and dispatch only dependency-ready tickets, serialized after the matching [graph-reconciled] marker. Run each unit through the existing mechanisms — harness gate/build/verify/judge, TDD, council review, delegation — never through anything this skill invents:
bashharness --gate-only PLAN.md # gate the unit's plan; nonzero = not clean, fix or stop harness run --repo . PLAN.md # build/verify/judge the bounded unit council --gates . ARTIFACT.md # judge a diff/spec; trust only its COUNCIL RESULT line
Treat the composed CLIs' exit codes as the verdict: a nonzero exit or a missing/duplicated result line is a failed gate, never noise to route around. A ticket completes only when its receipt validates against its mini-goal rubric and stop condition at the current goal-brief version and graph revision. Failed, missing, or stale proof means rework; only a validated current-revision pass unlocks dependents.
When evidence invalidates the plan: append a new [graph-revision] marker first (in-flight receipts go stale), block new claims, impact-analyze completed/queued/in-flight work, invalidate stale receipts and downstream unlocks, move affected work to rework or obsolete, rewrite tracker relations, record carry-forward validation for unaffected completed work, revalidate the new frontier, then append [graph-reconciled] before claims resume. A claim or receipt is valid only if its revision's reconciled marker predates it and no newer revision marker exists — unless a recorded current-revision carry-forward validation preserves it across the revision change (SPEC section 8), which is how unaffected completed work stays valid after a re-plan instead of deadlocking the frontier. Never preserve a stale backlog through shims or special cases.
Pause for the human when a discovered requirement materially changes scope, authority, architecture, or irreversible behavior — or when work would publish, merge, release, deploy, or broaden authority. Stop and re-design if you ever need a second runtime state store or ticket runner. Record routine decisions and continue.
When you pause, hand the human a decision, not a status dump: what changed and the evidence, which tickets/receipts are affected (the impact analysis), the options with one recommendation, and exactly what authorization you are requesting.
Completed tickets alone are not DONE. After the subject is committed: re-read the authoritative tracker graph, verify every contributing ticket at the current graph revision, recompute and verify the goal-brief digest chain, open the draft PR, then post the final receipt to the parent issue naming the goal-brief version, digest chain, graph revision, complete ticket closure, the exact subject commit or artifact digest, and the PR. The receipt lives outside the subject it certifies.
grilling owns decision resolution; you get at most one pass per goal-briefversion.
goal-spec owns brief compilation (overall and per-ticket mini briefs).wayfinder owns route discovery through fog.to-tickets owns decomposition of clear multi-unit plans.total-tdd owns whole-app audit/test/fix loops.gate/build/verify/judge; host task controls own admission; delegation skills own heavy lifting.
This skill never creates a daemon, scheduler, tracker API, harness, TDD method, or review council.
| Issue | Fix | |---|---| | Tracker CLI missing or unauthenticated (linear not found, auth errors) | Install/authenticate the tracker CLI first; without the tracker there is no lifecycle authority — stop, do not track state in local files instead. | | harness or council not on PATH | Install the harness checkout and its shims. Do not hand-roll a substitute gate; a unit that cannot be gated stays unclaimed. | | Council preflight below quorum (fail-closed status=unavailable) | Read each COUNCIL SEAT: line's failure_class and decoded recovery (for example claude auth login, restore provider credits). Fix seats or explicitly configure a smaller honest panel; never present a degraded panel as clean. | | A current steward claim already exists on the parent issue | You are not the steward. Stop; report to the human instead of double-claiming. | | Goal-brief digest mismatch on rehash | The brief block was edited outside an authorized version change. Halt claims, find the unauthorized edit, restore the verbatim block or record an authorized new version before continuing. | | [graph-revision] marker with no matching [graph-reconciled] | Reconciliation is incomplete: claims are blocked. Finish impact analysis and post the reconciled marker before any claim. | | A worker's receipt fails, is missing, or is stamped with a stale revision | Send the ticket to rework at the current revision; never unlock dependents from stale or missing proof. |
Other measured skills in the registry, with their headline benchmark lift.