📊 页面导航

适用角色与上手难度

角色推荐度上手难度
🛠️ 开发★★★★★★★★☆☆
🧪 测试★★★★☆★★★☆☆
📦 产品★★★☆☆★★★★☆

🎯 学习产出: 掌握垂直切片票据拆解,能把规格变成可独立认领、带阻塞关系的任务图

🚀 AI 能力提升: 任务编排、粒度控制

/to-tickets

预计阅读时间: 5 分钟

票据拆解。把计划、规格或当前对话拆成一组曳光弹票据(tracer-bullet tickets):每个都是窄但完整的垂直切片,声明自己的阻塞边界(blocking edges),发布到配置的追踪器。

概述

曳光弹是让整条路径先亮起来的一发子弹——每张票据切一条窄但完整的路径穿过所有层,完成后可独立演示。票据之间用阻塞关系连成任务图:前沿(所有阻塞者都完成的票据)随时可被认领。

日常使用

/to-tickets
/to-tickets 参照 specs/checkout.md
/to-tickets 参照 #42

实战

1. 收集上下文

用对话里已有的内容;用户传了引用(规格路径、issue 号或 URL)就取来读全文和评论。

2. 探索代码库(可选)

理解代码现状,票据标题和描述用领域词汇表词汇,尊重改动区域 ADR。寻找前置重构机会——"先让改动容易,再做容易的改动"。

3. 起草垂直切片

垂直切片规则:每个切片穿过所有层(schema、API、UI、测试),完成后可独立演示/验证,尺寸适合单个全新上下文窗口,前置重构先行。给每张票据标阻塞边界——必须先完成的其它票据;没有阻塞者的可以立即开始。

宽重构是例外。机械性大改动(重命名列、重打共享类型)爆炸半径覆盖全库,按 expand–contract 编排:先 expand(旁边加新形式,什么都不破坏)→ 按爆炸半径分批迁移调用点(每批一张票据,逐批保持 CI 绿)→ 最后 contract(无调用者后删旧形式,被所有迁移批阻塞)。批次也无法独立保持绿时,共享一个集成分支,最终由一张"集成验证"票据承诺绿色。

4. 向用户确认

逐张展示:标题被谁阻塞交付什么(端到端行为)。问三个问题:

  • 粒度合适吗?(太粗 / 太细)
  • 阻塞边界对吗?每张只依赖真正门禁它的票据?
  • 要合并或拆分吗?

迭代到用户批准。

5. 发布到追踪器

setup-matt-pocock-skills 配置的追踪器发布,票据本身相同,只有阻塞边的形态不同:

  • 本地文件.scratch/<feature-slug>/issues/<NN>-<slug>.md,按依赖顺序从 01 编号(阻塞者在前),每张票据一个文件,"Blocked by" 列出依赖的编号/标题。一张票据一个文件,绝不合并成单个文件
  • 真实追踪器(GitHub/Linear 等):按依赖顺序发 issue,用平台原生阻塞/子 issue 关系,否则在每张的 "Blocked by" 里引用阻塞 issue,打 ready-for-agent 标签

本地票据模板:

# <NN>: <Ticket title>

**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)".

**Status:** ready-for-agent

- [ ] Acceptance criterion 1
- [ ] Acceptance criterion 2

不关闭或修改任何父 issue。避免具体文件路径和代码片段(很快过时),原型产出的决策载体除外。

与其它技能的关系

  • 上游/to-spec(规格)或直接对话
  • 下游/implement 逐个认领票据
  • 前置setup-matt-pocock-skills 配置的追踪器