Install any skill in seconds. Free to start, no credit card required.
Get Started Free →fradser/to-tickets
Breaks a plan, spec, or conversation into tracer-bullet tickets that declare their blocking edges, published to the configured tracker.
Passed 13 of 19 test cases with the skill, and 7 of 19 without it.
and 8 more in the full report
7 fixed8 passed either way7 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
What status field and dependency header belong in a local ticket file under `.scratch/`?
| Checked | Without skill | With skill |
|---|---|---|
| Includes "Blocked by" in the local ticket markdown template. | Missed | Passed |
| Includes "Status: ready-for-agent" in the local ticket markdown template. | Missed | Passed |
The instructions your model reads when the skill loads.
Break a plan, spec, or conversation into a set of tickets: tracer-bullet vertical slices, each declaring the tickets that block it. If the spec contains Gherkin scenarios (from /mattpocock:bdd), each ticket should map to one or more scenarios; the scenarios are the authoritative acceptance criteria.
The issue tracker and triage label vocabulary should have been provided to you. If not, tell the user to run /mattpocock:setup-matt-pocock-skills.
Work from whatever is already in the conversation context. If the user passes a reference (a spec path, an issue number or URL) as an argument, fetch it and read its full body and comments.
If you have not already explored the codebase, do so to understand the current state of the code. Ticket titles and descriptions should use the project's domain glossary vocabulary, and respect ADRs in the area you're touching.
Look for opportunities to prefactor the code to make the implementation easier. "Make the change easy, then make the easy change."
Break the work into tracer bullet tickets.
Each ticket cuts a narrow but COMPLETE path through every layer — schema, API, UI, tests — sized to fit one fresh context window, and demoable on its own. A wide refactor is the exception: sequence it as expand–contract, never force it into a tracer bullet.
Give each ticket its blocking edges: the other tickets that must complete before it can start. A ticket with no blockers can start immediately.
Wide refactors are the exception to vertical slicing. A wide refactor is one mechanical change (rename a column, retype a shared symbol) whose blast radius fans across the whole codebase, so a single edit breaks thousands of call sites at once and no vertical slice can land green. Don't force it into a tracer bullet; sequence it as expand–contract. First expand: add the new form beside the old so nothing breaks. Then migrate the call sites over in batches sized by blast radius (per package, per directory), each batch its own ticket blocked by the expand, keeping CI green batch to batch because the old form still exists. Finally contract: delete the old form once no caller remains, in a ticket blocked by every migrate batch. When even the batches can't stay green alone, keep the sequence but let them share an integration branch that all block a final integrate-and-verify ticket; green is promised only there.
test cases passed, vs 7 / 19 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.