Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Decompose a decided plan, spec, issue, or design conversation into dependency-ordered tracer-bullet tickets written as local markdown files. Use when asked to "break this into tickets," "create implementation tickets," or "decompose into work items" — any time a decided scope needs slicing into executable vertical-slice tickets with blocking edges.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 45% | 0% |
Decompose an already-decided scope into vertical-slice implementation tickets with dependency ordering. Each ticket is a thin, end-to-end tracer bullet through every affected layer. You produce local markdown files — you never talk to a tracker API.
Work from whatever is already in the conversation. If the user passes a reference (spec path, issue URL), fetch and read it.
Stop if input is too vague. If there is no clear what-to-build and no scope boundaries, do not invent tickets. Tell the user what's missing:
> I need at least: what to build, why, scope boundaries, and any constraints (tech stack, patterns). Can you provide more detail?
If the user has already sketched a partial breakdown, work with that structure — do not discard it and start from scratch.
If the conversation already contains file paths, function names, or architectural references specific to the project, skip this step.
Otherwise, explore the codebase to:
Ask the user where to write tickets. Default to tickets/<slug>/ relative to the project root. Derive the slug from the scope description. One question, one line:
> I'll write tickets to tickets/<slug>/. OK, or different path?
Never use a hidden dot-directory. Never cache the answer.
Break the work into tickets. Each ticket must follow these rules:
<vertical-slice-rules>
</vertical-slice-rules>
<wide-refactor-exception> When a single mechanical change (rename, retype) fans across the entire codebase, do NOT force it into a vertical slice. Sequence as expand-contract:
If batches cannot individually stay green, use an integration branch with a final integrate-and-verify ticket. </wide-refactor-exception>
Blocking edges:
blocked-by means "cannot start until these are done."Ticket template — one file per ticket, named NN-slug.md:
markdown--- id: NN title: "<ticket title>" blocked-by: [] --- ## What to build <End-to-end behavior from the user's perspective. Not a layer-by-layer list. For spikes: the question to answer and the deliverable artifact.> ## Acceptance criteria - [ ] <observable criterion — something you can see, run, or query> - [ ] <at least one negative case: "Does not..."> - [ ] <at least one idempotency/re-run case where applicable> ## Decisions <Forks this ticket closes — interface contracts, param names, precedence rules. Freeze as literal examples (URLs, commands, JSON shapes, type signatures), not prose. Omit this section if no decisions to freeze.> ## Scope fence <What this ticket does NOT touch. Aim at the riskiest over-reach — blast radius, architecture boundaries, concept boundaries.>
YAML frontmatter rules:
id matches the NN in the filename: 01, 02, etc.blocked-by lists IDs: [01, 03].blocks field. Forward edges are derivable from blocked-by and must never be stored — redundant data drifts.Content quality rules:
Before presenting tickets to the user, run two validation passes:
DAG validation:
blocked-by fields references an existing ticket.Per-ticket quality check:
Fix every failure before presenting. Do not punt quality issues to the user.
Large-scope nudge: If the decomposition produces 20 or more tickets, warn before starting the quiz:
> This produced N tickets. That may be too large for one pass — would you like to split the scope and decompose in parts, or proceed with the full set?
Single-ticket case: If decomposition produces exactly one ticket, say so. Do not artificially split.
Wave-based presentation: Present tickets in dependency waves — not one flat list.
Iterate until all waves are approved.
Write one markdown file per approved ticket to the confirmed output location. Number sequentially in dependency order (blockers first; within a wave, order by conceptual flow).
After writing all files, render a DAG summary with forward edges computed from blocked-by, so the user sees the complete graph.
Then ask: write to disk only, or also hand to a tracker integration the session already has? The skill's output is tracker-agnostic markdown — if the user wants tracker publishing, produce the content for the session to publish.
blocks (forward edges) in ticket files.Other measured skills in the registry, with their headline benchmark lift.