返回技能市场
开发运维 安全

to-tickets

@admin/to-tickets

Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edges as text in one file per ticket locally, or native blocking links on a real tracker).

admin 热度 316v0.0.1

拆分工单

将计划、规格或对话拆分为一组 工单:tracer-bullet 垂直切片,每个工单声明 阻塞 它的其他工单。

应该已向你提供 issue tracker 和 triage 标签词汇。如果没有,告诉用户运行 /setup-matt-pocock-skills

流程

1. 收集上下文

基于对话上下文中已有的内容开展工作。如果用户将引用(规格路径、issue 编号或 URL)作为参数传入,请获取它并读取其完整正文和评论。

2. 探索代码库(可选)

如果你尚未探索代码库,请这样做以理解代码当前状态。工单标题和描述应使用项目的领域术语表词汇,并尊重你涉及区域的 ADR。

寻找预重构代码的机会,使实现更容易。“先让改动变得容易,然后做出容易的改动。”

3. 起草垂直切片

将工作拆分为 tracer bullet 工单。

<vertical-slice-rules>

  • 每个切片都贯穿每一层(schema、API、UI、tests)切出一条窄但完整的路径:垂直,而不是某一层的水平切片
  • 完成的切片本身可演示或可验证
  • 每个切片的规模应适合在单个新上下文窗口中完成
  • 任何预重构都应先完成

</vertical-slice-rules>

为每个工单给出其 阻塞边:在它开始前必须完成的其他工单。没有阻塞项的工单可以立即开始。

大型重构是垂直切片的例外。 大型重构 是一项机械变更(重命名列、更改共享符号类型),其 影响半径 扩散到整个代码库,因此一次编辑会同时破坏数千个调用点,并且没有垂直切片可以以绿色落地。不要强行把它做成 tracer bullet;按 扩展–收缩 排序。先扩展:在旧形式旁边添加新形式,使任何内容都不破坏。然后按影响半径分批迁移调用点(按包、按目录),每批都是自己的工单并由扩展工单阻塞,因为旧形式仍然存在,所以批次之间保持 CI 绿色。最后收缩:当不再有调用者时,在一个由每个迁移批次阻塞的工单中删除旧形式。当即使各批次也无法单独保持绿色时,保持该序列,但让它们共享一个集成分支,并且所有分支都阻塞一个最终的集成并验证工单;绿色只在那里得到保证。

4. 向用户提问

以编号列表展示提议的拆分。对每个工单,显示:

  • Title: 简短描述性名称
  • Blocked by: 哪些其他工单(如有)必须首先完成
  • What it delivers: 该工单使什么端到端行为工作

询问用户:

  • 粒度是否合适?(太粗 / 太细)
  • 阻塞边是否正确:每个工单是否只依赖真正限制它的工单?
  • 是否应该合并或进一步拆分任何工单?

迭代直到用户批准该拆分。

5. 将工单发布到已配置的跟踪器

发布已批准的工单。如何发布 取决于 /setup-matt-pocock-skills 配置的跟踪器;无论哪种方式,工单都相同,只有阻塞边的形状会变化:

  • 本地文件 → 在 .scratch/<feature-slug>/issues/<NN>-<slug>.md 下为每个工单写一个文件,按依赖顺序从 01 开始编号(阻塞项在前)。每个文件的 "Blocked by" 列出它依赖的编号/标题。使用下面的每工单文件模板:每个文件一个工单,绝不要单个合并文件。
  • 真实 issue tracker(GitHub、Linear、……) → 按依赖顺序(阻塞项在前)为每个工单发布一个 issue,以便每个工单的阻塞边可以引用真实标识符。如果平台有原生阻塞 / 子 issue 关系,就使用它;否则将每个工单的 "Blocked by" 设置为阻塞它的 issue。除非另有指示,否则应用 ready-for-agent triage 标签;这些工单按构造就是 agent 可领取的。

处理 前沿:所有阻塞项都已完成的工单。对于纯线性链,这意味着从上到下。

不得关闭或修改任何父 issue。

<local-ticket-template>

<NN>: <Ticket title>

What to build: 该工单使什么端到端行为工作,从用户视角,而不是逐层实现列表。

Blocked by: 阻塞本工单的工单编号/标题,或 "None (can start immediately)"。

Status: ready-for-agent

  • [ ] 验收标准 1
  • [ ] 验收标准 2

</local-ticket-template>

<issue-template>

Parent

对跟踪器上父 issue 的引用(如果来源是现有 issue,否则省略此节)。

What to build

该工单使什么端到端行为工作,从用户视角,而不是逐层实现。

Acceptance criteria

  • [ ] 标准 1
  • [ ] 标准 2

Blocked by

  • 对每个阻塞工单的引用,或 "None (can start immediately)"。

</issue-template>

无论哪种形式,避免具体文件路径或代码片段:它们很快就会过时。例外:如果原型产生了一个比散文更精确编码决策的片段(状态机、reducer、schema、类型形状),将其内联并简要注明它来自原型。只裁剪到决策丰富的部分,而不是可工作演示,只要重要部分。

qianwen skills install @admin/to-tickets