📝 docs(templates): refine superpowers prompt boundaries

This commit is contained in:
csh 2026-05-25 15:02:16 +08:00
parent 25d895d8b3
commit 61afff9d48
18 changed files with 342 additions and 296 deletions

1
.gitignore vendored
View File

@ -22,6 +22,7 @@ tags
reports/
.worktrees/
tmp/
docs/superpowers/
scripts/__pycache__
tests/__pycache__

View File

@ -41,9 +41,9 @@ Playbook工程规范与代理规则合集当前覆盖
`templates/` 目录除了语言配置模板外,还包含 AI 代理工作环境的项目架构模板:
- `templates/memory-bank/`项目上下文文档模板project-brief、tech-context、system-patterns、active-context、progress、decisions
- `templates/prompts/`工作流入口模板agent-behavior、clarify、verify-change、close-task、update-memory、code-review
- `templates/AGENTS.template.md`路由中心模板(项目主入口)
- `templates/AGENT_RULES.template.md`执行流程模板
- `templates/prompts/`任务入口模板agent-behavior、clarify、verify-change、close-task、update-memory、code-review,不是流程权威
- `templates/AGENTS.template.md`入口导航模板(项目主入口)
- `templates/AGENT_RULES.template.md`superpowers-first 执行规则模板
### 快速部署
@ -95,6 +95,14 @@ python <deploy_root>/scripts/playbook.py \
`memory-bank/progress.md`
真正执行 Plan 仍然走 `main_loop.py claim/finish`
完整主链只在 `templates/AGENT_RULES.template.md` 定义,这里不重复展开。
如果项目采用 `superpowers`
- 设计产物落到 `docs/superpowers/specs/`
- 计划产物落到 `docs/superpowers/plans/`
- 状态留痕通过 `playbook.py -record-spec/-record-plan`
`main_loop.py claim/finish` 维护
详见:`templates/README.md`
## rulesets/(规则集模板库 - 三层架构)
@ -271,6 +279,7 @@ git commit -m ":package: deps(playbook): add tsl standards"
```
2. 在目标项目根创建 `playbook.toml`,并用 `deploy_root` 指定项目内的部署根。例如:
- `project_root` 写目标项目根目录。
- `deploy_root` 写目标项目内的相对路径。
- 不要把外部 clone 的路径(如 `/opt/playbook`)写进 `deploy_root`;那只是你执行脚本的位置。

View File

@ -21,9 +21,9 @@
- [memory-bank/active-context.md](memory-bank/active-context.md) - 当前上下文
- [memory-bank/progress.md](memory-bank/progress.md) - 进度追踪
### 工作流入口
### 任务入口
- [docs/prompts/README.md](docs/prompts/README.md) - 提示词与流程入口
- [docs/prompts/README.md](docs/prompts/README.md) - 提示词与任务入口
<!-- playbook:templates:end -->
<!-- playbook:framework:end -->

View File

@ -2,6 +2,10 @@
目的:为本仓库提供稳定的执行流程与行为规范。
本文件是项目内唯一流程约束中心;`docs/superpowers/`
是唯一设计与计划产物中心;执行状态统一写回
`memory-bank/progress.md`
## 优先级
1. 系统/开发者指令与安全约束

View File

@ -1,14 +1,15 @@
# 项目架构模板
本目录包含项目架构的模板文件,用于快速初始化新项目的 AI 代理工作环境。
本目录包含以 `superpowers` 为基石的项目模板,用于快速初始化新项目的
AI 代理工作环境。
## 目录结构
```text
templates/
├── README.md # 本文件
├── AGENTS.template.md # 路由中心模板
├── AGENT_RULES.template.md # 执行流程模板
├── AGENTS.template.md # 入口导航模板
├── AGENT_RULES.template.md # superpowers-first 执行规则模板
├── memory-bank/ # 项目上下文模板
│ ├── project-brief.template.md
│ ├── tech-context.template.md
@ -16,7 +17,7 @@ templates/
│ ├── active-context.template.md
│ ├── progress.template.md
│ └── decisions.template.md
├── prompts/ # 提示词库模板
├── prompts/ # 任务入口模板(不是流程权威)
│ ├── README.md
│ ├── system/
│ │ └── agent-behavior.template.md
@ -48,6 +49,7 @@ templates/
- **会同步更新的框架模板**
- `AGENT_RULES.md`
- `docs/prompts/README.md`
- `docs/prompts/system/*.md`
- `docs/prompts/coding/*.md`
- `AGENTS.md`、`CLAUDE.md`(按 playbook 区块更新)
@ -69,6 +71,8 @@ templates/
不会被 playbook 删除。
- `CLAUDE.md` 如已有 playbook 区块则更新;如未引用
`@AGENTS.md` 则追加;如已手工引用 `@AGENTS.md` 则跳过。
- 流程约束统一收敛到 `AGENT_RULES.md``docs/prompts/`
只负责把代理导向正确的任务入口。
## 快速部署
@ -158,6 +162,12 @@ force = true
### docs/superpowers 命名约定
`docs/superpowers/` 统一承载设计稿和实施计划:
- 设计只落到 `specs/`
- 计划只落到 `plans/`
- 执行状态只写回 `memory-bank/progress.md`
为与 thirdparty `superpowers` 上游当前工作流对齐,建议统一使用:
- `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md`
@ -169,28 +179,20 @@ force = true
### 生命周期总览
```text
需求澄清
-> using-superpowers
-> brainstorming
-> docs/superpowers/specs/*.md
-> playbook.py -record-spec
-> writing-plans
-> docs/superpowers/plans/*.md
-> playbook.py -record-plan
-> main_loop.py claim
-> executing-plans
-> [代码类任务] + karpathy-guidelines + .agents + AGENT_RULES
-> main_loop.py finish
-> update-memory / close-task
```
完整主链只在 `AGENT_RULES.template.md` 定义;本文件不重复展开。
这里仅说明职责分层:
- `docs/prompts/`:任务入口层,只负责把代理导向正确入口
- `docs/superpowers/specs/`:设计稿
- `docs/superpowers/plans/`:实施计划与主执行输入
- `memory-bank/progress.md`:执行状态留痕
### 部署后的目录结构
```text
project/
├── AGENTS.md # 路由中心Codex 入口)
├── AGENT_RULES.md # 执行流程
├── AGENTS.md # 入口导航Codex 入口)
├── AGENT_RULES.md # superpowers-first 执行规则
├── AGENT_RULES.local.md # 项目私有规则(自动创建,项目维护)
├── CLAUDE.md # Claude Code 入口(按规则维护/追加 playbook 区块)
├── memory-bank/ # 项目上下文
@ -201,7 +203,7 @@ project/
│ ├── progress.md
│ └── decisions.md
└── docs/
├── prompts/ # 提示词库
├── prompts/ # 任务入口层
│ ├── README.md
│ ├── system/agent-behavior.md
│ └── coding/
@ -251,33 +253,37 @@ project/
### prompts/
工作流程模板(部署后去掉 `.template` 后缀):
任务入口模板(部署后去掉 `.template` 后缀):
其中 `templates/prompts/README.md` 部署后对应 `docs/prompts/README.md`
作为任务入口索引。
| 文件 | 用途 | 使用场景 |
| ----------------------------------- | ------------ | ------------------- |
| `system/agent-behavior.template.md` | 工作流入口 | 选择执行路径 |
| `system/agent-behavior.template.md` | 入口路由模板 | 选择执行路径 |
| `coding/clarify.template.md` | 需求澄清模板 | 需求不明确时 |
| `coding/verify-change.template.md` | 变更验证模板 | 声称完成前验证 |
| `coding/close-task.template.md` | 本轮收尾模板 | 一轮工作结束时 |
| `coding/update-memory.template.md` | 回写记忆模板 | 上下文变化后回写 |
| `coding/code-review.template.md` | 代码评审流程 | 执行 MR/PR 代码评审 |
| `coding/code-review.template.md` | 代码评审入口 | 执行 MR/PR 代码评审 |
### AGENT_RULES.template.md
执行流程规范,定义 AI 的工作循环和约束。
执行规则模板,定义 AI 的工作循环和约束。
如需项目私有规则,建议维护 `AGENT_RULES.local.md`;该文件通常由 `[sync_rules]`
首次自动创建,其优先级高于 `AGENT_RULES.md`,且后续不会被 `playbook.py` 覆盖。
计划编排与执行细节建议放在 `prompts/README.md` 或相关 workflow 文档中,
计划编排与执行细节统一指向 `docs/superpowers/`
`playbook.py -record-spec/-record-plan``main_loop.py claim/finish`
这里仅说明模板职责与部署边界。
### AGENTS.template.md
路由中心模板,作为项目的主入口。
入口导航模板,作为项目的主入口。
**设计理念**
- **最小化内容**:只包含导航链接,不包含详细规则
- **结构化导航**:分为核心规则、项目上下文、工作流程三个板块
- **结构化导航**:分为核心规则、项目上下文、任务入口三个板块
**playbook 标记**(用于自动更新):

View File

@ -35,6 +35,13 @@
- {{CONSTRAINT_1}}
## 成功定义
<!-- 【必填】至少写出本轮或本项目如何判断“完成” -->
- 功能完成的判定标准:{{SUCCESS_1}}
- 本轮不覆盖的内容:{{OUT_OF_SCOPE_1}}
## 核心概念
<!-- 【可选】项目特有的术语或概念 -->

View File

@ -61,6 +61,12 @@
- {{DEPENDENCY_OR_LIMIT_1}}
## 不可假设项
<!-- 【可选】记录 AI 不能默认成立、必须先验证的信息 -->
- {{DO_NOT_ASSUME_1}}
## 验证约定
<!-- 【可选】什么叫“验证通过” -->

View File

@ -1,6 +1,8 @@
# 提示词入口
本目录包含 AI 代理的工作流入口模板,用于把任务路由到合适的执行路径。
本目录包含 AI 代理的任务入口模板,用于把任务路由到合适的执行路径。
它是薄入口层,不是流程权威;完整流程与执行约束只在
`AGENT_RULES.md` 定义。
## 目录结构
@ -8,13 +10,13 @@
prompts/
├── README.md # 本文件
├── system/
│ └── agent-behavior.md # 工作流入口
│ └── agent-behavior.md # 入口路由
├── coding/
│ ├── clarify.md # 需求澄清模板
│ ├── verify-change.md # 变更验证模板
│ ├── close-task.md # 本轮收尾模板
│ ├── update-memory.md # 回写记忆模板
│ └── code-review.md # MR/PR 代码评审流程
│ └── code-review.md # MR/PR 代码评审入口
└── custom/ # 可选:项目私有提示词
```
@ -22,53 +24,31 @@ prompts/
| 模板 | 触发场景 |
| --------------------- | -------------------- |
| **agent-behavior.md** | 选择工作流入口 |
| **agent-behavior.md** | 选择任务入口 |
| **clarify.md** | 需求不明确时澄清 |
| **verify-change.md** | 声称完成前做验证 |
| **close-task.md** | 本轮工作收尾 |
| **update-memory.md** | 上下文变化后回写记忆 |
| **code-review.md** | 执行 MR/PR 代码评审 |
| **custom/*.md** | 项目私有补充流程 |
| **custom/\*.md** | 项目私有补充入口 |
## 工作流程
## 入口边界
```text
需求不清 → clarify.md
入口约束 → using-superpowers
头脑风暴 → $brainstorming skill → docs/superpowers/specs/*-design.md
spec 完成后 → `playbook.py -record-spec <path> -progress memory-bank/progress.md`
生成计划 → $writing-plans skill → docs/superpowers/plans/*.md
plan 完成后 → `playbook.py -record-plan <path> -progress memory-bank/progress.md`
领取计划 → `main_loop.py claim`
执行计划 → `$executing-plans`
代码类任务 → `karpathy-guidelines` + `.agents/` + `AGENT_RULES.md`
写回状态 → `main_loop.py finish`
更新摘要 → update-memory.md
验证改动 → verify-change.md
本轮收尾 → close-task.md
代码评审(有 MR/PR 时)→ code-review.md
```
- 需求不明确:看 `clarify.md`
- 需要判断设计、计划或执行路径:先回到 `AGENT_RULES.md`
- 需要验证交付结果:看 `verify-change.md`
- 需要结束本轮并整理交付摘要:看 `close-task.md`
- 需要回写上下文:看 `update-memory.md`
- 需要评审 MR/PR`code-review.md`
- 需要保留设计与计划产物:只写入 `docs/superpowers/`
> `coding/` 下是可被框架覆盖更新的标准模板;
> 项目私有流程应沉淀到 `custom/`
> `coding/` 下是可被框架覆盖更新的标准入口模板;
> 项目私有补充入口应沉淀到 `custom/`
>
> `prompts/` 是入口层;核心规则在 `AGENT_RULES.md`
> 长期记忆在 `memory-bank/`,状态留痕必须走
> `playbook.py -record-spec/-record-plan` 与
> `main_loop.py claim/finish`
> `prompts/` 只负责把代理导向正确入口;`AGENT_RULES.md`
> 是唯一流程权威;`AGENT_RULES.local.md` 保存项目私有规则;
> `memory-bank/` 保存项目上下文与状态;`docs/superpowers/`
> 保存设计与计划产物。
---

View File

@ -1,51 +1,53 @@
# 需求澄清模板
<!--
按需使用:当需求不明确或存在歧义时参考本模板
Vibe-coding 场景下可跳过,直接开始实现
用途:当需求存在歧义时,只补齐会改变实现或验证路径的最小信息
触发:需求不明确、存在两种以上合理实现路径、缺少关键约束时
-->
## 何时使用
- 需求描述不明确
- 存在多种理解方式
- 缺少关键信息
- 存在多种合理理解方式
- 缺少会改变实现路径的关键信息
---
## 先读
- `AGENT_RULES.md`
- `memory-bank/project-brief.md`
- `memory-bank/active-context.md`
## 规则
- 每轮最多问 1 个问题
- 只问会改变实现或验证路径的问题
- 能低风险继续时,优先给出默认项后推进
- 不重复询问已能从上下文推断的信息
## 澄清步骤
### 1. 复述需求
1. 用自己的话复述当前理解
2. 识别真正影响实现路径的歧义点
3. 只提出 1 个最高价值问题
4. 给出推荐默认项和理由
```text
我理解你的需求是:[用自己的话复述]
## 输出协议
```markdown
## Current Understanding
- ...
## Open Question
- ...
## Recommended Default
- ...
```
### 2. 识别歧义
## 停止条件
- 歧义 1[描述不明确的地方]
- 歧义 2[可能有多种理解的地方]
### 3. 提出问题
> 只问阻塞问题,最多 12 个;优先给出选项让用户选择。
- 这个功能是否包括 [场景 A]
- 当 [条件 X] 时,应该 [行为 Y] 还是 [行为 Z]
### 4. 提供选项
**选项 A**[方案描述]
- 优点:...
- 缺点:...
**选项 B**[方案描述]
- 优点:...
- 缺点:...
**推荐**[推荐哪个,为什么]
- 已有足够信息可低风险推进时停止提问
- 问题不影响实现路径时停止提问
---

View File

@ -1,59 +1,66 @@
# 收尾模板
<!--
用途:一轮实现或一个 Plan 结束后做收尾
触发:准备结束当前任务、切换上下文、交付结果前
用途:一轮实现或一个 Plan 结束后形成可交付摘要,并把下一轮仍重要的信息留痕。
触发:准备结束当前任务、切换上下文、交付结果前
-->
## 目标
确认当前任务已经形成可交付结果,并把后续工作所需的信息留痕。
## 先读
- `AGENT_RULES.md`
- `memory-bank/active-context.md`
- `memory-bank/progress.md`
## 规则
- 如果任务状态变更,优先通过 `main_loop.py finish` 留痕
- 未验证内容必须显式说明
- 只写对下一轮仍重要的信息
- 不手工改写 `workflow-state``plan-status` 状态块
## 执行步骤
### 1. 核对结果
1. 核对已完成项与未完成项
2. 核对已运行验证与未运行验证
3. 核对 `main_loop.py finish` 是否已经写回 `plan-status`
4. 核对 `workflow-state.phase` 是否与当前结果一致
5. 如需回写上下文,更新 `active-context`、`progress` 上半部分和 `decisions`
6. 输出本轮摘要与下一步
- 已完成哪些改动?
- 哪些内容仍未完成?
- 是否存在阻塞、风险或待确认事项?
### 2. 核对验证
- 已运行哪些验证?
- 哪些验证未运行,原因是什么?
- 当前结果是否满足本轮交付标准?
### 3. 核对状态留痕
## 状态留痕复核
- `main_loop.py finish` 是否已经写回 `plan-status`
- `workflow-state.phase` 是否与当前结果一致
- 如为代码类执行,`workflow-state` 中是否保留了
`executor=executing-plans` 与既定 `constraints`
### 4. 回写上下文
- 需要写入 `memory-bank/active-context.md` 的信息
- 需要写入 `memory-bank/progress.md` 上半部分摘要
- 需要写入 `memory-bank/decisions.md` 的关键决策
### 5. 输出收尾摘要
## 输出协议
```markdown
## 本轮结果
## Completed
- ...
- 已完成:...
- 未完成:...
- 验证:...
- 风险 / 待确认:...
- 下一步:...
## Not Completed
- ...
## Verification
- ...
## Risks
- ...
## Next Steps
- ...
```
## 原则
## 停止条件
- 只写对下一轮仍然重要的信息
- 未验证的内容必须显式说明
- 如果任务状态变更,优先通过 `main_loop.py finish` 留痕
- 不手工改写 `workflow-state``plan-status` 状态块
- 如状态未写回,先完成留痕再收尾
- 如验证不足以支持交付,停止并标记风险
---

View File

@ -1,4 +1,4 @@
# Code Review 流程
# Code Review 入口
## 触发场景
@ -20,62 +20,38 @@ gh pr view <PR_NUMBER>
gh pr diff <PR_NUMBER>
```
## 评审流程
## 审查顺序
逐步执行以下维度。改动简单时可跳过某些步骤。
1. 先理解业务目标;目标不明确先要求补足上下文
2. 优先审查 bug、风险、回归和缺失测试
3. 再审查代码清晰度、KISS 和单一职责
4. 最后汇总剩余风险与待确认项
### 1. 理解业务目标
## 规则
- 能否理解本次改动的业务目标?
- 如果目标不明确,先确认再评审。
- Findings 优先,按严重度排序
- 每条结论必须附文件路径、行号或可复现依据
- 没有证据的问题按待确认假设处理
- 评审不只看 diff需结合代码库整体上下文
### 2. High-level Review
## 输出协议
- 改动是否放在了合适的位置?
- 是否尽可能复用已有实现?
- 是否有破坏现有设计与逻辑的可能?
```markdown
## Findings
1. [severity] path - issue
### 3. Bug 检查
## Open Questions
- ...
- 是否隐含业务错误、逻辑纰漏或安全问题?
- **未修改**的相关联代码是否有遗漏?
## Residual Risk
- ...
```
### 4. 代码清晰度
## 停止条件
- 逻辑是否简洁易懂?
- 命名是否清晰合理?
- 一年后再读,是否能轻松理解?
- 目标不明时停止并要求补足上下文
- 缺少 diff 或无法读取关键上下文时停止并说明
### 5. KISS 原则
---
- 是否有不必要的复杂度?
- 是否有未使用的定义、过多参数?
- 是否重复造轮子?
### 6. 单一职责
- 每个函数/类是否只做一件事?
- 文件/类/方法行数是否合理?
### 7. 测试覆盖
- 复杂业务逻辑(含 if/else/for是否有测试
- 测试是否有效(非空实现)?
- 不应过度测试无控制逻辑的代码。
## 输出
评审完成后,总结发现的**重点问题**,按严重性排列。
## AI 与人工的分工
| 维度 | 负责方 | 说明 |
| -------------------------- | ------------- | ------------------------------------- |
| Bug、逻辑漏洞、安全问题 | **AI + 人工** | AI 负责初筛与证据收集,结论需人工复核 |
| 代码清晰度、KISS、单一职责 | **AI + 人工** | AI 提供候选问题,人工决定是否采纳 |
| 架构合理性、业务对齐 | **人工** | AI 反馈少且准确率低,需人工把关 |
| 兼容性、历史债务、战略取舍 | **人工** | 依赖背景知识AI 难以判断 |
> 规则AI 结论必须附文件路径、行号或可复现依据;缺少证据时按待确认假设处理。
>
> 注意:评审不只看 diff需结合代码库整体上下文做评估。
**最后更新**{{DATE}}

View File

@ -1,8 +1,8 @@
# 回写记忆模板
<!--
用途:在任务完成、方向切换或发现新规律后更新 memory-bank
触发:完成一轮实现、形成新决策、当前焦点变化时
用途:在任务完成、方向切换或发现新规律后更新 memory-bank
触发:完成一轮实现、形成新决策、当前焦点变化时
-->
## 什么时候需要回写
@ -12,12 +12,17 @@
- 发现新的系统模式或约束
- 做出了值得保留的决策
## 回写路径
## 先读
- `memory-bank/active-context.md`
- `memory-bank/progress.md`
- `memory-bank/decisions.md`
- `memory-bank/system-patterns.md`
## 回写目标
### `memory-bank/active-context.md`
更新:
- 当前目标
- 最近变更
- touched files
@ -25,55 +30,55 @@
### `memory-bank/progress.md`
更新:
- 先读取 `workflow-state`当前阶段、spec、plan、executor、constraints
- 再读取 `plan-status`:当前 Plan 的机器状态
- Current Focus
- Recent Changes
- Next Steps
- Open Risks
只更新上半部分的人类摘要,不修改状态块。
推荐写法:
- `Current Focus`:当前阶段结束后,项目现在最重要的工作
- `Recent Changes`:本轮实际完成的变更、写回的状态、关键验证结果
- `Next Steps`:下一轮最自然的 1-3 个动作
- `Open Risks`:仍未解决的阻塞、环境约束、待确认事项
禁止:
- 手工改写 `<!-- workflow-state:start/end -->`
- 手工改写 `<!-- plan-status:start/end -->`
- 把临时聊天内容、未验证猜测写进摘要
- 只更新上半部分的人类摘要,不修改状态块
### `memory-bank/decisions.md`
仅在出现重要决策时记录 ADR
- 为什么这样做
- 备选方案是什么
- 影响范围是什么
### `memory-bank/system-patterns.md`
仅在发现稳定模式时更新:
- 模块边界
- 不变量
- 扩展路径
- 禁止破坏的约束
##
## 规则
- 只回写长期有价值的信息
- 临时聊天内容不要写进去
- 高变化信息放 `active-context`,稳定约束放 `system-patterns`
- 高变化信息放 `active-context`,稳定技术模式放 `system-patterns`
- 流程规则或项目私有约束变更写入 `AGENT_RULES.local.md`
- `progress.md` 的状态块只由 `main_loop.py` 维护
- 摘要应与 `workflow-state` / `plan-status` 保持一致
## 禁止事项
- 手工改写 `<!-- workflow-state:start/end -->`
- 手工改写 `<!-- plan-status:start/end -->`
- 把临时聊天内容、未验证猜测写进摘要
## 输出协议
```markdown
## Updated Files
- ...
## New Context
- ...
## Outstanding Risks
- ...
```
## 停止条件
- 如果没有值得沉淀的信息,则停止并说明
---
**最后更新**{{DATE}}

View File

@ -1,38 +1,56 @@
# 变更验证模板
<!--
用途:在声明“完成 / 修复 / 可交付”前,明确验证范围与证据
触发:代码修改、配置修改、模板修改、规则修改后
用途:在声明“完成 / 修复 / 可交付”前,用 fresh run 证明改动成立。
触发:代码、配置、模板、规则修改后;准备交付结果前。
-->
## 验证目标
- 这次改动要证明什么?
- 哪些行为必须通过?
- 哪些验证本轮不做?
- 这次改动要证明什么
- 哪些行为必须通过
- 哪些验证本轮不做
## 先读
- `AGENT_RULES.md`
- `memory-bank/progress.md`
- 如存在:`docs/prompts/custom/verify.md`
## 规则
- 没有证据,不宣称完成
- 验证命令必须 fresh run
- 局部修改优先局部验证
- 不能运行的验证必须写明原因
- 不手工改写 `workflow-state``plan-status` 状态块
## 验证步骤
### 1. 语法 / 结构检查
1. 做语法或结构检查,确认改动文件可读、可解析
2. 运行与本次改动直接相关的验证命令
3. 记录命令、结果和关键输出
4. 复核 diff 是否只包含预期修改
5. 复核 `workflow-state.phase`、`plan-status` 与当前声明一致
6. 汇总未覆盖项和剩余风险
- 确认修改文件可读、可解析、无明显结构错误
## 输出协议
### 2. 定向验证
```markdown
## Validated
- ...
- 只跑与本次改动直接相关的验证命令
- 记录命令、结果和关键输出
- 如仓库存在项目私有验证提示词(例如 `docs/prompts/custom/verify.md`),先读取并执行其中的附加约束
## Evidence
- ...
```bash
{{VERIFY_CMD}}
## Not Validated
- ...
## Risks
- ...
```
### 3. 差异复核
- 核对 diff 是否只包含预期修改
- 确认没有误删、误改、命名漂移或路径漂移
### 4. 状态留痕复核
## 状态留痕复核
- `workflow-state.phase` 是否与当前声明一致
- `plan-status` 是否已经通过 `main_loop.py finish` 写回
@ -40,29 +58,10 @@
`executor=executing-plans`
`constraints=karpathy-guidelines,.agents,AGENT_RULES`
### 5. 剩余风险
## 停止条件
- 本轮未覆盖的验证
- 环境限制
- 需要人工确认的点
## 输出格式
```markdown
## 验证结果
- 已验证:...
- 证据:...
- 未验证:...
- 风险:...
```
## 原则
- 没有证据,不宣称完成
- 局部修改优先局部验证
- 不能运行的验证要明确写原因
- 不手工改写 `workflow-state``plan-status` 状态块
- 关键验证失败时停止并汇报
- 证据不足以支持“完成”结论时停止并汇报
---

View File

@ -1,49 +1,27 @@
# 工作流入口
# 任务入口路由
<!--
本文件不重复定义核心规则;它只负责把任务路由到合适的工作流入口。
本文件不重复定义核心规则;它只负责把任务路由到合适的任务入口。
安全红线、验证要求、主循环规则见 AGENT_RULES.md。
-->
## 路由原则
- 需求不明确:先看 `docs/prompts/coding/clarify.md`
- 需要设计或拆解方案:走
`using-superpowers``$brainstorming``$writing-plans`
- `brainstorming` 结束后:立即
`playbook.py -record-spec <path> -progress memory-bank/progress.md`
- `writing-plans` 结束后:立即
`playbook.py -record-plan <path> -progress memory-bank/progress.md`
- 需要执行已有 Plan`main_loop.py claim`,再走
`$executing-plans`
- 如为代码类执行:在 `$executing-plans` 前强制叠加
`karpathy-guidelines`,并同时遵循 `.agents/``AGENT_RULES.md`
- 需要判断设计、计划或执行路径:先回到 `AGENT_RULES.md`
- 需要确认改动是否站得住:看 `docs/prompts/coding/verify-change.md`
- 一轮工作收尾:看 `docs/prompts/coding/close-task.md`
- 需要更新上下文:看 `docs/prompts/coding/update-memory.md`
- 需要评审 MR/PR`docs/prompts/coding/code-review.md`
## 最小工作流
```text
需求不清 -> clarify
需求明确 -> using-superpowers / brainstorming / writing-plans
brainstorming 完成 -> record planning/spec
writing-plans 完成 -> record plan/executor/constraints
进入执行 -> claim -> executing-plans
代码执行 -> + karpathy-guidelines + .agents + AGENT_RULES
执行结束 -> finish -> update-memory
准备交付 -> verify-change
本轮结束 -> close-task
上下文变化 -> update-memory
```
## 说明
## 边界说明
- `prompts/` 是入口,不是规则权威
- 稳定约束写入 `memory-bank/``AGENT_RULES.local.md`
- 执行留痕以 `memory-bank/progress.md`
`workflow-state``plan-status` 为准
- 完整流程与执行约束只在 `AGENT_RULES.md`
- 项目私有规则写入 `AGENT_RULES.local.md`
- 设计产物只放 `docs/superpowers/specs/`
- 计划产物只放 `docs/superpowers/plans/`
- 项目上下文与执行状态写入 `memory-bank/`
---

View File

@ -71,6 +71,8 @@ fi
if validate_file_exists "$AGENT_RULES_TEMPLATE" "AGENT_RULES.template.md"; then
validate_contains "$AGENT_RULES_TEMPLATE" "AGENT_RULES" "包含 AGENT_RULES 标题"
validate_contains "$AGENT_RULES_TEMPLATE" "{{DATE}}" "包含 {{DATE}} 占位符"
validate_contains "$AGENT_RULES_TEMPLATE" "docs/superpowers/plans/" "包含 superpowers plans 路径"
validate_contains "$AGENT_RULES_TEMPLATE" "using-superpowers -> brainstorming -> writing-plans" "包含规划主链"
fi
validate_file_exists "$README_TEMPLATE" "templates/README.md"

View File

@ -57,6 +57,7 @@ class DeploymentRoutesE2ETests(unittest.TestCase):
for rel in expected:
with self.subTest(path=rel):
self.assertTrue((project_root / rel).exists(), f"missing: {rel}")
self.assertFalse((project_root / "docs" / "workflows").exists())
def assert_docs_prefix(self, project_root: Path, docs_prefix: str) -> None:
agents_index = (project_root / ".agents" / "index.md").read_text(encoding="utf-8")

View File

@ -66,6 +66,7 @@ deploy_root = "{DEFAULT_DEPLOY_ROOT}"
self.assertTrue(custom.exists())
self.assertTrue((prompts / "system" / "agent-behavior.md").is_file())
self.assertFalse((root / "docs" / "workflows").exists())
def test_sync_memory_bank_force_overwrites_template_files_only(self):
with tempfile.TemporaryDirectory() as tmp_dir:

View File

@ -36,11 +36,18 @@ class SyncTemplatesPlaceholdersTests(unittest.TestCase):
)
self.assertNotIn("{{MAIN_LANGUAGE}}", templates_readme)
self.assertNotIn("{{LANGUAGE_1}}", templates_readme)
self.assertNotIn("docs/workflows/", templates_readme)
self.assertNotIn("templates/workflows/", templates_readme)
self.assertIn("docs/superpowers/", templates_readme)
self.assertIn("docs/prompts/README.md", templates_readme)
self.assertIn("完整主链只在 `AGENT_RULES.template.md` 定义", templates_readme)
agents_template = (ROOT / "templates" / "AGENTS.template.md").read_text(
encoding="utf-8"
)
self.assertNotIn("{{MAIN_LANGUAGE}}", agents_template)
self.assertIn("AGENT_RULES.md", agents_template)
self.assertIn("docs/prompts/README.md", agents_template)
tech_context_template = (
ROOT / "templates" / "memory-bank" / "tech-context.template.md"
@ -48,36 +55,91 @@ class SyncTemplatesPlaceholdersTests(unittest.TestCase):
self.assertNotIn("{{MAIN_LANGUAGE}}", tech_context_template)
self.assertNotIn("{{LANGUAGE_1}}", tech_context_template)
self.assertNotIn("**主要语言**", tech_context_template)
self.assertIn("## 不可假设项", tech_context_template)
project_brief_template = (
ROOT / "templates" / "memory-bank" / "project-brief.template.md"
).read_text(encoding="utf-8")
self.assertIn("## 成功定义", project_brief_template)
update_memory_template = (
ROOT / "templates" / "prompts" / "coding" / "update-memory.template.md"
).read_text(encoding="utf-8")
self.assertIn("workflow-state", update_memory_template)
self.assertIn("plan-status", update_memory_template)
self.assertIn("## Updated Files", update_memory_template)
self.assertIn("## New Context", update_memory_template)
self.assertIn("## Outstanding Risks", update_memory_template)
self.assertIn("AGENT_RULES.local.md", update_memory_template)
close_task_template = (
ROOT / "templates" / "prompts" / "coding" / "close-task.template.md"
).read_text(encoding="utf-8")
self.assertIn("main_loop.py finish", close_task_template)
self.assertIn("workflow-state.phase", close_task_template)
self.assertIn("## Completed", close_task_template)
self.assertIn("## Not Completed", close_task_template)
self.assertIn("## Verification", close_task_template)
self.assertIn("## Risks", close_task_template)
self.assertIn("## Next Steps", close_task_template)
verify_change_template = (
ROOT / "templates" / "prompts" / "coding" / "verify-change.template.md"
).read_text(encoding="utf-8")
self.assertIn("workflow-state.phase", verify_change_template)
self.assertIn("plan-status", verify_change_template)
self.assertIn("## Validated", verify_change_template)
self.assertIn("## Evidence", verify_change_template)
self.assertIn("## Not Validated", verify_change_template)
self.assertIn("## Risks", verify_change_template)
clarify_template = (
ROOT / "templates" / "prompts" / "coding" / "clarify.template.md"
).read_text(encoding="utf-8")
self.assertNotIn("Vibe-coding", clarify_template)
self.assertIn("## Current Understanding", clarify_template)
self.assertIn("## Open Question", clarify_template)
self.assertIn("## Recommended Default", clarify_template)
code_review_template = (
ROOT / "templates" / "prompts" / "coding" / "code-review.template.md"
).read_text(encoding="utf-8")
self.assertIn("## Findings", code_review_template)
self.assertIn("## Open Questions", code_review_template)
self.assertIn("## Residual Risk", code_review_template)
prompts_readme = (
ROOT / "templates" / "prompts" / "README.md"
).read_text(encoding="utf-8")
self.assertIn("playbook.py -record-spec", prompts_readme)
self.assertIn("playbook.py -record-plan", prompts_readme)
self.assertIn("AGENT_RULES.md", prompts_readme)
self.assertIn("docs/superpowers/", prompts_readme)
self.assertIn("不是流程权威", prompts_readme)
self.assertNotIn("playbook.py -record-spec", prompts_readme)
self.assertNotIn("playbook.py -record-plan", prompts_readme)
self.assertNotIn("using-superpowers", prompts_readme)
self.assertNotIn("main_loop.py claim", prompts_readme)
self.assertNotIn("docs/workflows/", prompts_readme)
self.assertIn("设计与计划产物", prompts_readme)
agent_behavior_template = (
ROOT / "templates" / "prompts" / "system" / "agent-behavior.template.md"
).read_text(encoding="utf-8")
self.assertIn("playbook.py -record-spec", agent_behavior_template)
self.assertIn("playbook.py -record-plan", agent_behavior_template)
self.assertIn("AGENT_RULES.md", agent_behavior_template)
self.assertIn("AGENT_RULES.local.md", agent_behavior_template)
self.assertIn("docs/superpowers/specs/", agent_behavior_template)
self.assertIn("docs/superpowers/plans/", agent_behavior_template)
self.assertNotIn("using-superpowers", agent_behavior_template)
self.assertNotIn("main_loop.py claim", agent_behavior_template)
self.assertNotIn("playbook.py -record-spec", agent_behavior_template)
self.assertNotIn("playbook.py -record-plan", agent_behavior_template)
self.assertIn("项目上下文与执行状态写入 `memory-bank/`", agent_behavior_template)
rules_template = (
ROOT / "templates" / "AGENT_RULES.template.md"
).read_text(encoding="utf-8")
self.assertIn("唯一流程约束中心", rules_template)
self.assertIn("唯一设计与计划产物中心", rules_template)
self.assertIn("memory-bank/progress.md", rules_template)
def test_sync_templates_replaces_playbook_scripts_without_main_language_support(self):
with tempfile.TemporaryDirectory() as tmp_dir: