♻️ refactor(cook-it-through): move workflow engine into skill

This commit is contained in:
csh
2026-08-20 17:02:34 +08:00
parent f6854d065a
commit 9b95bf2682
19 changed files with 3905 additions and 1474 deletions
@@ -0,0 +1,55 @@
# 入口 4feature 规划与入队
## 选择与建立上下文
巨大而模糊的工作先用 `wayfinder`;需要外部事实时用 `research`。先进入 `grill-with-docs`
研究报告不能替代 grilling。进入 `grill-with-docs` 前,重读
`memory-bank/project-brief.md``memory-bank/tech-context.md`
`memory-bank/system-patterns.md` 以及会改变设计的项目规则、领域文档和 ADR。
首次运行 `setup-matt-pocock-skills` 时选择 local Markdown tracker。
`grilling` 清空 design frontier 并取得用户确认;seam confirmation 在 `to-spec``tdd`
`tdd` 不得在未经确认的 seam 上开始。按顺序推进:
`setup-matt-pocock-skills -> grill-with-docs -> to-spec -> to-tickets`
`-> main_loop.py enqueue -> 提交 planning baseline -> main_loop.py claim`
关键规划链是 `to-spec -> to-tickets`
## Ticket 身份与依赖格式
- `FeatureId`:小写字母或数字开头,只含小写字母、数字和连字符。
- `TicketId`qualified `feature-slug/NN`feature slug 与至少两位数字共同构成身份。
- `FeatureIntegrationId``feature-slug@integrated`
- Dependency 只能是后两类身份;标题和文件名中的可读 slug 不是身份。
每个 ticket 必须恰有一行 `**Blocked by:** None`,或
`**Blocked by:** feature-a/01; feature-b@integrated`。执行 hard cut`None` 只能单独出现;
同 feature 也写完整身份;只用分号;拒绝裸数字、标题描述、逗号、隐式当前 feature、
非法/重复/缺失目标、自依赖和跨 feature cycle。旧格式必须在 enqueue 前人工迁移;
禁止增加 fallback、双解析器或自动重写。
## 全局图与两个 Frontier
- 锁内加载全部 queued features:每个 ticket 是节点,每个 feature 增加 integration node。
- ticket 使用 `Blocked by` 边;integration node 依赖本 feature 全部 ticketsqueue 顺序只连接
integration nodes,不形成 ticket claim 门槛。
- ticket frontier 是依赖已满足且 `ready-for-agent` 的 tickets,按 queue feature、ticket number、
稳定 slug 排序;integration frontier 是首个尚未集成的 feature,两者独立。
- ticket 在 `resolved``skipped` 时满足;integration dependency 只在持久状态含有效
`integration_commit` 时满足。`skipped` 令 feature partial,集成时必须显式授权。
- 枚举顺序不得改变 frontier、claim 或错误顺序。
## 入队与 planning baseline
第三方 `to-tickets` 只定义通用 tracker 行为;主循环格式以本文件和执行引擎为准。
跨 feature 前向依赖必须把相关 feature 放在同一批次;同批重复 `--feature` 与现有 queue 一起校验。
任一解析、目标或 DAG 校验失败,都不得写 queue、ticket metadata/status 或 feature state
`enqueue` 是最终机器校验边界。参数与结果只查相应 `--help`,不维护命令职责表。
生成和入队不隐式提交。任何 claim 前,提交 `.scratch/<feature>/spec.md`
`.scratch/<feature>/issues/*.md``.scratch/queue.md` 作为 planning baseline;随后读
`workflows/ticket-execution.md`,由 `main_loop.py status` / `main_loop.py claim` 取得正式 assignment。
尚未 claim ticket 时,加载 `to-questionnaire`,把问题写入 control checkout 的
`.scratch/questions/<slug>.md`,并从 `grill-with-docs` 恢复;不得把问题写入稳定知识。