♻️ 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
+25 -53
View File
@@ -24,14 +24,15 @@ playbook/
```text
templates/
├── AGENTS.template.md # 项目主入口与导航模板
├── AGENT_RULES.template.md # Matt Pocock ticket-native 执行规则模板
├── AGENT_RULES.template.md # 任务入口与按需 skill 路由模板
├── gitignore.template # .scratch 持久状态与本机运行时忽略规则
├── memory-bank/ # 稳定项目知识模板(3 个),不是机器状态源
├── cpp/ # C++ 工具链模板
└── python/ # Python 工具链模板
```
完整主链只在 `AGENT_RULES.template.md` 定义
`AGENT_RULES.template.md` 定义常驻边界和 Skill 入口;任务路由、完整主链与本地 Markdown
ticket 协议只在第一方 `skills/cook-it-through/` 定义,并在工程任务中按需加载。
## 模板分类
@@ -66,7 +67,8 @@ Playbook 只处理框架提供的同名文件。项目新增的 `memory-bank/*`
### memory-bank/
`memory-bank/` 保存 grilling、设计和实现都需要的稳定项目知识。它不记录 owner、
heartbeat、ticket 或集成状态;机器状态只以 `.scratch/` `main_loop.py` 为准。
heartbeat、ticket 或集成状态;`.scratch/` 是唯一机器状态源,状态格式、转换语义和执行入口
由第一方 `cook-it-through` Skill 权威定义。
| 文件 | 用途 |
| ----------------------------- | ---------------------------------------------- |
@@ -76,23 +78,18 @@ heartbeat、ticket 或集成状态;机器状态只以 `.scratch/` 和 `main_lo
### AGENT_RULES.template.md
部署为项目的 `AGENT_RULES.md`是任务入口路由、Matt Pocock 工程主链、ticket 调度、
worktree、验证和集成协议的唯一流程权威。`<!-- playbook:rules:start/end -->` 区块内的
部署为项目的 `AGENT_RULES.md`只常驻指令优先级、项目边界和 Skill 加载入口。
`<!-- playbook:rules:start/end -->` 区块内的
内容由 Playbook 维护并在重新同步时刷新,项目补充写在区块外。项目私有规则写入
`AGENT_RULES.local.md`;该文件由项目维护,Playbook 不覆盖。
完整工程流程由 `cook-it-through` skill 按需定义;rules 只保留加载触发条件,不复制其协议。
### AGENTS.template.md
部署为项目的 `AGENTS.md`,只提供语言规则、核心规则和工程上下文导航。
标记区块的更新约束见下文“AGENTS 模板标记”。
## 任务入口
四个入口按成本递增,取第一个满足的:直接执行(零行为变更)、单切片改动(单模块、
已有 seam、一个 session 内)、已明确预期行为的 bug(`diagnosing-bugs` Phase 1-6)、
新 feature 或设计变更(完整主链)。边界不清时从单切片改动起步,触到升级条件再转入
完整主链,不要预付最重的流程。判据与升级条件见 `AGENT_RULES.template.md`
## 部署
```toml
@@ -108,49 +105,26 @@ langs = ["python"]
mode = "all"
```
部署后首次使用正式流程时运行 `setup-matt-pocock-skills`,并为本地主循环选择
local markdown tracker
本示例启用了 `[sync_rules]`,因此安装集合必须包含 `cook-it-through`
`[install_skills].mode = "list"` 时显式列出,`mode = "all"` 时不得通过 `exclude` 排除
只有不部署官方 `AGENT_RULES.md` 且不使用正式工程主链的安装场景,才可以排除该 skill。
同一配置违反该约束时,部署器会在写入任何同步文件前拒绝执行。
部署后首次使用正式流程时运行 `setup-matt-pocock-skills`,并为本地主循环选择 local Markdown
tracker;工程工作流与主循环协议只查该 skill。
## 正式开发流程
只有第四个入口(新 feature 或设计变更走这条链;前三个入口不入队、不建 ticket branch
新 feature 或设计变更走这条链;任务分级和是否升级到主链的判据只查 `cook-it-through`
```text
setup-matt-pocock-skills
-> grill-with-docs
-> to-spec
-> to-tickets
-> main_loop.py enqueue
-> 提交 planning baselinespec + tickets + queue
-> main_loop.py claim
-> 本地 ticket 执行协议(tdd
-> commit
-> code-review
-> main_loop.py finish
-> main_loop.py integrate
-> 提交 final workflow state
-> 按 cook-it-through 的本地 ticket 生命周期继续
```
产物职责
- `.scratch/<feature>/spec.md`feature spec
- `.scratch/<feature>/issues/*.md`ticket DAG 与执行状态
- `.scratch/queue.md`feature 开发和集成顺序
- `CONTEXT.md`:稳定领域词汇
- `docs/adr/`:长期架构决策
- `docs/agents/*.md`tracker 与领域文档配置
本批次 feature 全部 `enqueue` 后,先把对应 spec、tickets 和 queue 提交为一个 planning
baseline,再开始任何 `claim`。生成和入队步骤本身不隐式提交。
feature 集成成功后,再在主干提交该 feature 的最终 `.scratch` 持久状态。此提交位于 feature
merge commit 之后,并与其他活动 feature 的未提交状态隔离。
明确串行时可用 in-place,不创建 worktree;计划多个 session 并发时,第一个 claim
就指定 worktree。并发 sessions 必须共享同一文件系统与 Git common directory
`main_loop.py` 不支持跨机器、独立 clone 或远程 tracker adapter。Matt skills 可单独
使用远程 issue tracker,但不能把远程状态接入本主循环。完整隔离、恢复和证据协议见
`AGENT_RULES.template.md`
`to-tickets` 到 final workflow state 的格式、命令、产物职责、隔离、恢复、证据和集成顺序
只查 `cook-it-through`;本 README 不维护第二份流程定义。
## AGENTS 模板标记
@@ -159,7 +133,7 @@ merge commit 之后,并与其他活动 feature 的未提交状态隔离。
- `<!-- playbook:templates:start/end -->`:项目流程入口
`playbook:agents` 必须嵌在 `playbook:framework` 内。框架区块替换时,
`preserve_agents_subblock()` 依赖该嵌套保留项目按 `langs` 生成的语言入口。
该嵌套关系用于保留项目按 `langs` 生成的语言入口。
## 占位符
@@ -170,7 +144,6 @@ merge commit 之后,并与其他活动 feature 的未提交状态隔离。
| `{{DATE}}` | 同步日期 | 是 |
| `{{PROJECT_NAME}}` | 可选项目名 | 配置 `project_name` 时替换 |
| `{{PLAYBOOK_ROOT}}` | 项目内 Playbook 根目录 | 是 |
| `{{PLAYBOOK_SCRIPTS}}` | 项目内脚本目录 | 是 |
| `{{PROJECT_GOAL}}` | 项目目标 | 否,项目手工填写 |
| `{{PROJECT_DESCRIPTION}}` | 项目描述 | 否,项目手工填写 |
| 其他 `{{...}}` | 模板中的项目特定内容 | 否,项目手工填写或删除所在行 |
@@ -193,7 +166,10 @@ project/
```
`[install_skills]` 安装到 `agents_home/skills/`,通常不在项目目录内。`mode = "list"`
要求用户逐项列出 skills 及其依赖;`mode = "all"` 安装全部 skills。
要求用户逐项列出 skills 及其依赖;`mode = "all"` 安装全部未排除的 skills。两种模式都可用
`exclude = ["skill-name"]` 从本次安装集合排除同名 skill;该选项不会卸载已有目录。
同时启用 `[sync_rules]` 时,必须遵守上文对 `cook-it-through` 的保留约束。
`cook-it-through` 会随 skill 一起安装并包含其内部执行引擎,不依赖 snapshot 根目录下的脚本路径。
## 正式流程运行后按需产生的结构
@@ -201,7 +177,7 @@ project/
project/
├── CONTEXT.md # setup 后按需创建的稳定领域词汇
├── .scratch/
│ ├── queue.md # main_loop.py 维护的 feature 顺序
│ ├── queue.md # claim 优先级与严格的 feature 集成顺序
│ └── <feature>/
│ ├── spec.md # to-spec 产物
│ └── issues/ # to-tickets 产物与机器状态
@@ -209,7 +185,3 @@ project/
├── agents/ # setup 生成的 tracker/domain 配置
└── adr/ # grilling 过程中按需沉淀的长期决策
```
---
**最后更新**2026-08-07