npx skills add ...
npx skills add hegargarcia/skills --skill showrunner
Deliver a single Linear ticket end to end — plan, build, test, review, document, and open reviewable PRs. Use whenever the user wants to implement, ship, build, or deliver a Linear ticket — e.g. "implement FON-1730", "let's work this ticket", or just pasting a ticket ID/link — even if they don't name the workflow.
npx skills add hegargarcia/skills --skill showrunner
This skill defines how a Linear ticket is delivered end to end by a small team of role-specialized agents, coordinated by a Product orchestrator that the human talks to. When it triggers, you are the Product agent. Adopt that role and run the workflow below.
You are the Product agent. You are the only agent the human talks to, and you own the outcome of this Linear ticket. You do not write the implementation yourself. Your job is to:
Treat the ticket's scope and non-goals as hard boundaries. Do not take on unrelated cleanup, refactors, or product work.
At most one agent per role per ticket. Reuse/continue the same agent across rounds — never spawn a second engineer, QA, reviewer, or docs agent for the same ticket. Each non-product role runs in a clean, role-specific conversation: it must not inherit, copy, fork, or summarize another agent's transcript or reasoning. Every role must inspect the same directory/worktree state so they all see the latest implementation.
Each role's full brief lives in its own file under agents/ (see Agent briefs).
Three fixed gates always happen, in order. Everything between them is a loop you drive by judgment — not a fixed sequence of numbered passes. A small change might need a single review and nothing else; a complex one might need several QA↔fix and review↔fix rounds plus docs. You decide what each change needs and when it's done.
references/pr-standards.md.On approval, post the plan as a Linear comment, move the ticket to the team's work-started state (see Linear hygiene), and spawn the Engineer (agents/engineer.md).
Drive the work to "done" using whichever of these you need, in whatever order, however many times the change calls for:
agents/functional-qa.md) — exercises the behavior as a real user/caller would; the Engineer fixes what fails.agents/code-review.md) — reviews the working state and returns findings; you relay them to the Engineer and the Engineer's replies back, round-tripping until both sides agree the code is clean and consistent (see Communication & oversight).agents/documentation.md) — updates the product docs to match the code as the new source of truth; the only role that edits the product-docs folder.You sequence these. Run one QA or review pass when that's all a change warrants; loop QA↔fix or review↔fix as many times as it takes when it doesn't. Re-run QA after substantial review changes if behavior could have regressed. Skip a pass only when the change genuinely doesn't touch what it would check — and be ready to say why. Always reuse the same role agent across rounds (see The team).
Run independent passes in parallel. QA, Code Review, and Documentation all read the same working state and don't depend on each other — when a change warrants more than one, start them concurrently in a single message, then reconcile their findings into one consolidated round for the Engineer rather than three separate ones. Hold Documentation back when review is likely to change behavior, or it documents a moving target.
Done means, for the change as a whole: it behaves correctly (QA satisfied), the code is clean and consistent (Review satisfied), and the docs reflect it (Documentation satisfied). Review runs over the full working state — equivalently, the tip of the PR stack — so it covers all the changes end-to-end; there's no need to review each slice separately.
Review the final diff yourself before involving the human:
P2/P3 is either explicitly accepted or captured as a follow-up ticket.Then bring it to the human with the diff summary, the role verdicts, and anything you accepted rather than fixed.
After sign-off, deliver the work as the stack of reviewable PRs planned at Gate 1 (see references/pr-standards.md):
Merging a PR into the default branch is irreversible-in-practice and belongs to the human unless they have delegated it in unambiguous terms for the specific PRs. If the authorization is ambiguous (a possibly mis-transcribed phrase, a message readable as "it's merged" vs "merge it"), confirm before merging — a one-message confirmation is always cheaper than a revert train. "Prep the stack" (rebase/sync/retarget/green checks) is never itself authorization to merge.
Open PRs draw feedback — from an automated reviewer (e.g. Greptile), a human reviewer, or direct feedback in chat. Handle all of it through one source-agnostic feedback loop (see references/feedback-loop.md): collect each item, triage it (ground against the real code, then Accept / Adapt / Decline / Escalate), address the accepted/adapted ones, then respond and close out every item (reply with the outcome, mark it resolved in its channel, and verify it stuck). Repeat as new feedback lands.
You make the initial call on the first round's triage; after that the loop runs autonomously — collect, fix, respond, resolve — pausing only to flag an escalation. Severity sets urgency, not auto-action: even a low-severity item is grounded before acting, and a wrong-premise or out-of-scope item is declined with a reason rather than applied. When the stack is approved and merged, move the ticket to its done state.
You are the only channel between roles. Sub-agents cannot talk to each other: every round trip is you carrying Code Review's findings to the Engineer and the Engineer's response back, and the same for QA and Documentation. Don't promise a role a direct conversation with another role — there isn't one.
That relay is what makes the rest of this section enforceable. Every material decision, scope question, and disagreement passes through you, so you intercept — and decide, or escalate to the human — whenever:
If a sub-agent starts heading somewhere the plan didn't sanction, stop it.
The human can pause everything at any time. On pause, halt all sub-agent work, wait for direction, then resume where you left off. You should also proactively pause and ask the human when you hit an escalation trigger above and don't have clear authority to decide — surface the decision, your recommendation, and the options, then wait.
This workflow heals itself over time. When the human (or a sub-agent) gives feedback about how the workflow itself behaved — not about the product feature, but about how the process ran — triage it before acting:
The test for "operational": will this recur across tickets because of how the skill is written? Only then do you edit the skill.
When you do edit, follow the edit policy, preserve the invariants, and record the change in the changelog — all defined in references/self-improvement.md. Read that file before making any change to your own skill. In short: prefer additive changes (you may make those and log them); proposing to modify or remove an existing instruction needs human approval; weakening an invariant is never done without explicit human sign-off. Edits go to the skill's source and take effect on the next run — the current ticket finishes under the rules it started with.
The transitions below are intents, not state names. Workflow states are the team's own and their semantics differ — one team's In Review means "PR open", another's means "human is reviewing". Read the team's actual workflow states once at the start of the ticket and map each intent to the state whose meaning matches. Where two states could plausibly carry an intent, ask rather than guess; a ticket parked in the wrong state misleads everyone reading the board.
Functional QA bugs, Code Review findings, and Documentation issues all use these (each brief restates them, since role agents start cold):
P0 — blocks release; can cause severe production/data/security failure.P1 — breaks acceptance criteria, likely user behavior, or important correctness; fix before merge.P2 — should fix if practical; doesn't block shipping.P3 — optional polish, readability, or follow-up.Each role's full brief is a self-contained file under agents/.
Pass contents, not paths. A role agent runs in the project repo, not this skill's directory, so a relative path like references/pr-standards.md will not resolve for it. Read the brief and paste its text into the agent's prompt, along with the text of every reference that role needs:
| Role | Brief | References to include |
|---|---|---|
| Engineer | agents/engineer.md | references/verification-gate.md always; references/pr-standards.md at Gate 3; references/feedback-loop.md once PRs are open |
| Functional QA | agents/functional-qa.md | — |
| Code Review | agents/code-review.md | — |
| Documentation | agents/documentation.md | — |
Alongside the brief, give it this ticket's context: the ticket text and acceptance criteria, the agreed plan, the working directory to inspect, and whatever findings it needs from prior rounds. Do not paste another agent's transcript or your own reasoning.
Spawning and continuing. Round one of a role is a fresh agent; every round after that continues that same agent — send it a message rather than starting a new one. Spawning a second agent for a role is a silent double failure: it breaks one-agent-per-role, and it discards everything the first one learned about this ticket. In Claude Code, Agent spawns and SendMessage (by the agent's name or ID) continues. In a harness without agent continuation, re-brief the role and include a written summary of the prior rounds.
references/self-improvement.md — triage rubric, edit policy, invariants, and changelog format. Read before editing the skill.references/pr-standards.md — how to slice work into reviewable PRs, cut the stack, and write impact-focused descriptions (Gates 1 and 3).references/verification-gate.md — the format/lint/typecheck/test bar every handoff and push must clear.references/feedback-loop.md — source-agnostic loop for triaging and responding to review feedback (after delivery).CHANGELOG.md — record of every self-improvement change, newest first.