把定稿的计划 / spec / 对话拆成带 blocking edges 的 tracer-bullet 票,发布到配置好的工单系统。 完整教学见 Lesson 0010; 原文见 SKILL.md、 agents/openai.yaml、 docs/engineering/to-tickets.md。
拆成垂直切片的票(穿透 schema / API / UI / tests,各自可独立演示、
装得进一个 fresh context window),每张声明 Blocked by,
你批准后才发布;前置:跑过 /setup-matt-pocock-skills。
只能人手输入 /to-tickets 启动(disable-model-invocation: true
+ allow_implicit_invocation: false)。
grill-with-docs → to-spec。implement,可跳过本步。triage;迷雾大工程 → wayfinder(雾散后在 to-spec 并回主流程)。Expand 新形态加在旧形态旁边,并存不删
Migrate 按爆炸半径分批迁调用点(per package / directory),每批一票,
都被 expand 阻塞;旧形态仍在 → 批间 CI 保持绿
Contract 无调用者后删旧形态;被每一张 migrate 票阻塞
变体:批次无法各自保绿 → 共享 integration branch,
全部阻塞最后的 integrate-and-verify 票,绿只在那里兑现
| 本地 markdown | 远程 tracker(GitHub / Linear) | |
|---|---|---|
| 落在哪 | .scratch/<feature-slug>/issues/<NN>-<slug>.md,一票一文件,绝不合并 |
一票一 issue;平台支持就用原生 blocking / sub-issue |
| 顺序 | 从 01 按依赖顺序编号(blocker 在前) |
按依赖顺序发(blocker 在前),后续票才能引用真实编号 |
| 标签 | 文件顶部 Status: ready-for-agent |
打 ready-for-agent 标签(除非另指示) |
| 执行 | 按编号从上往下,手动逐票推进 | 前沿票可被多个 agent 并行领走(fleet) |
模板字段:What to build(用户视角的端到端行为,非逐层清单)、 Blocked by、Status、验收标准复选框;远程版多一节 Parent(原料是已有 issue 时)。
.scratch/<feature>/issues/*.md 一批新文件;远程 → 一批新 issue + blocking 关系 + 标签。/implement(内部 tdd → code-review → 提交)。/handoff 再继续。| 症状 | 改哪里 |
|---|---|
| 拆成水平切片 | SKILL.md 第 3 节 <vertical-slice-rules> |
| 没问你就发布 | SKILL.md 第 4 节「Quiz the user」 |
| 票里全是路径 / 代码 | SKILL.md 末尾 no-paths 段 + prototype 例外 |
| 宽重构硬拆垂直切片 | SKILL.md 第 3 节 wide-refactor 段 |
| 发错位置 / 不知发哪 | setup 生成的 docs/agents/issue-tracker*.md(不是 skill 本身) |
| 标签打错 | setup 生成的 docs/agents/triage-labels.md 映射 |
| 父 issue 被动了 | SKILL.md 第 5 步「Do NOT close or modify…」 |
| agent 自行启动 | frontmatter disable-model-invocation + openai.yaml allow_implicit_invocation |