1实现原理 · 为什么它能做到
纯 prompt 编排:整份 skill 是给模型的一套拆解纪律 + 两个输出模板,无脚本、无模板文件、无运行时代码。产出物不是文件而是「一组带阻断边的工单」。
Break a plan, spec, or conversation into a set of **tickets**: tracer-bullet vertical slices, each declaring the tickets that **block** it.
名称沿革:队列 slug `to-issues` 在 pin HEAD 已被删除——v1.1 把 to-plan 与 to-issues 合并为 to-tickets,to-issues 整体消失(其能力被吸收进新 skill)。
**`to-plan` and `to-issues` are merged into one `to-tickets` skill, and `to-issues` is deleted.**
核心机制是 tracer bullet 垂直切片 + 阻断边:每张工单必须切穿所有层(schema/API/UI/测试)且能独立演示,尺寸限定在一个新鲜上下文窗口内,并显式声明「被谁阻塞」;无阻塞者即为可立即开工的 frontier。
- Each slice cuts a narrow but COMPLETE path through every layer (schema, API, UI, tests): vertical, NOT a horizontal slice of one layer
宽重构是垂直切片的显式例外,改按 expand–contract 排程:先加新形态、再按爆炸半径分批迁移、最后删旧形态;连分批都难保绿时,允许共用集成分支并让全部批次阻塞一张最终联调票。
**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**.
发布前必过用户 quiz:把拆解结果按编号列出(标题/被谁阻塞/交付什么行为),逐条问粒度、阻断边是否正确、是否该合并或拆分,直到用户批准才写入 tracker。
Are the blocking edges correct: does each ticket only depend on tickets that genuinely gate it?
输出形态随 tracker 切换而阻断边表达不同:本地模式一票一文件、编号即在依赖序(blockers first),明令禁止合并成单文件;真 tracker 模式按依赖序建 issue,优先用平台原生阻塞/子任务关系,并打 ready-for-agent 标签。
- **Local files** → write one file per 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. Use the per-ticket file template below: one ticket per file, never a single combined file.
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | gh(GitHub CLI)——条件依赖,真 tracker 模式下的发布与原生依赖关系操作 |
| cli | glab(GitLab CLI)——条件依赖 |
| network | GitHub Issues + 原生 issue dependencies API(经 gh 批量建票、加阻断边、打标签) |
| network | 用户以参数传入的任意 URL:skill 指示 fetch 该引用并读全文与评论(取数面由参数决定,未见主机白名单) |
| package | skills CLI / Claude Code 插件(分发渠道) |
4管控建议与判定依据
- 外部 API: 向外部平台执行发帖、资源创建或修改写入
- 本地工作目录: 文件读写与工件输出: 本地模式:`.scratch/<feature-slug>/issues/<NN>-<slug>.md` 一票一文件,按依赖序编号(禁止合并成单个 t
5第二遍独立确认
- [discrepancy] 队列 slug `to-issues` 在 pin commit 是否作为目录存在 — 不存在。HEAD 树内无 skills/engineering/to-issues(也无 to-tickets 之外的 to-plan);CHANGELOG 明写 '`to-plan` and `to-issues` are merged into one `to-tickets` skill, and `to-issues` is deleted.'。本 JSON 以 HEAD 实名 to-tickets 记录,页面 slug 与文件名沿用任务书的 to-issues。
- [ok] 『to-issues 的功能确已并入 to-tickets』是否属实(而非删掉即失去) — CHANGELOG PR #469 记 to-issues 曾获得 wide-refactor(expand–contract)与 Co-located reference blocks;现行 to-tickets/SKILL.md line 40 完整保留该段(expand/migrate/contract 与集成分支兜底),说明能力是迁移而非丢失。
- [ok] 阻断边的落点是否真由 tracker 文档决定(而非 skill 硬编码路径) — to-tickets 正文只给形态要求('Use the platform's native blocking / sub-issue relationship where it has one')与本地路径约定;具体命令(gh api …/dependencies/blocked_by、gh issue edit --add-assignee 等)与 frontier 查询定义全在 setup-matt-pocock-skills/issue-tracker-github.md 内,两处措辞一致。
- [ok] 『无网络外发』类声明是否成立 — skill 文件 token 扫描无 http/curl/fetch 关键字;网络行为全部经 tracker 文档定义的 gh/glab 间接发生,已按条件性记入 network_calls。
- [discrepancy] 取参 fetch 是否有限制(主机白名单/大小/去指令化) — 定位不到任何限制:SKILL.md 只写 'fetch it and read its full body and comments',无主机白名单、无大小上限、无 untrusted/防注入条款;对超长 spec 的截断问题反倒在 docs 页被当作环境问题(建议同窗口不要 clear/compact)来描述,说明 skill 层面无防护。此点按「定位不到不硬写」只记事实,不升级档位。
- [ok] installs / stars 口径 — installs=353800 来自 skills.sh 注册表的旧 slug 记录(queue-100.json 的 to-issues 条目),仓库内无此数值;stars=262519 为 2026-09-15 gh api 实测。口径不同,页面并列时需标注来源。
6结论
0a4d30fcc2a2ce67…