一键导入
to-tickets
Break a plan, spec, or the current conversation into tracer-bullet tickets, each declaring its blocking edges and saved as a local Markdown file.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Break a plan, spec, or the current conversation into tracer-bullet tickets, each declaring its blocking edges and saved as a local Markdown file.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Review changes since a fixed point (commit, branch, tag, or merge-base) along two axes - Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/PRD asked for?). Runs both reviews in parallel subagents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to review since X.
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
Implement a piece of work based on a spec or set of tickets.
Review all local code changes
Turn the current conversation into a spec saved under .scratch - no interview, just synthesis of what you've already discussed.
| name | to-tickets |
| description | Break a plan, spec, or the current conversation into tracer-bullet tickets, each declaring its blocking edges and saved as a local Markdown file. |
| disable-model-invocation | true |
Break a plan, spec, or conversation into a set of tickets - tracer-bullet vertical slices, each declaring the tickets that block it.
The skills speak in terms of five canonical triage roles. This table maps those roles to the actual label strings used in this repo's issue tracker.
| Labels | Label in our tracker | Meaning |
|---|---|---|
needs-triage | needs-triage | Maintainer needs to evaluate this issue |
needs-info | needs-info | Waiting on reporter for more information |
ready-for-agent | ready-for-agent | Fully specified, ready for an AFK agent |
ready-for-human | ready-for-human | Requires human implementation |
wontfix | wontfix | Will not be actioned |
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.
Input/reference:
$ARGUMENTS
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.
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.
Present the proposed breakdown as a numbered list. For each ticket, show:
Ask the user:
Iterate until the user approves the breakdown.
Infer a short, descriptive kebab-case feature slug from the conversation or existing .scratch artifacts. If it cannot be inferred confidently, ask the user for the feature slug and wait for their answer.
Write one file per approved ticket under .scratch/<feature-slug>/issues/<NN>-<slug>.md, numbered from 01 in dependency order (blockers first). Each file's "Blocked by" lists the numbers/titles it depends on. Assign ready-for-agent unless the ticket genuinely requires human implementation, in which case assign ready-for-human; use the mapped tracker string from the Triage Labels table. Use the per-ticket file template below - one ticket per file, never a single combined file.
Work the frontier: any ticket whose blockers are all done. For a purely linear chain that means top to bottom.
What to build: the end-to-end behaviour this ticket makes work, from the user's perspective - not a layer-by-layer implementation list.
Blocked by: the numbers/titles of the tickets that gate this one, or "None - can start immediately".
Triage label: <mapped ready-for-agent or ready-for-human label>
In each ticket, avoid specific file paths or code snippets - they go stale fast. Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it and note briefly that it came from a prototype. Trim to the decision-rich parts - not a working demo, just the important bits.
After saving the tickets, tell the user to clear context between tickets and invoke the implement skill for one frontier ticket at a time (/implement <ticket-path> in Claude).