init version

This commit is contained in:
张宗平
2026-06-29 21:16:52 +08:00
commit 7a5a1d033f
101 changed files with 22202 additions and 0 deletions
@@ -0,0 +1,27 @@
# 自动衔接下一阶段协议
规范路径:`comet/reference/auto-transition.md`
本协议由所有 comet 子 skill 共享,定义阶段守卫推进后的自动衔接规则。
## 术语区分
「阶段守卫推进」由 guard `--apply` 完成,更新 `.comet.yaml``phase` 字段——这一步**始终发生**,与 `auto_transition` 无关。本协议的「自动衔接」只决定**是否自动调用下一个 skill**,由 `auto_transition` 控制。
## 执行方式
退出条件满足且阶段守卫推进 phase 后,运行:
```bash
"$COMET_BASH" "$COMET_STATE" next <change-name>
```
脚本根据 `phase``workflow``auto_transition` 输出确定性的下一步:
- `NEXT: auto` → 调用 `SKILL` 指向的 skill 进入下一阶段
- `NEXT: manual` → 不要调用下一 skill,按 `HINT` 提示用户手动运行 `/<SKILL>`
- `NEXT: done` → 流程已完成,无需继续
## preset 路由
`workflow: hotfix` 时,`phase: build` 返回 `comet-hotfix``workflow: tweak` 时返回 `comet-tweak`。其余 phase`verify``archive`)按标准 skill 名称返回(`comet-verify``comet-archive`),不受 workflow 类型影响。preset skill 内部的"连续执行模式"可能覆盖 `auto_transition` 行为——详见对应 preset 的 `<IMPORTANT>` 块。
@@ -0,0 +1,71 @@
# .comet.yaml 字段说明
规范路径:`comet/reference/comet-yaml-fields.md`
本文件是 `.comet.yaml` 状态文件的字段参考。按需查阅,不随 skill 一次性加载。
## 示例
```yaml
workflow: full
phase: build
design_doc: docs/superpowers/specs/YYYY-MM-DD-topic-design.md
plan: docs/superpowers/plans/YYYY-MM-DD-feature.md
base_ref: a1b2c3d4e5f6...
build_mode: subagent-driven-development
build_pause: null
subagent_dispatch: confirmed
tdd_mode: tdd
review_mode: standard
isolation: branch
verify_mode: light
verify_result: pending
verification_report: null
branch_status: pending
created_at: 2026-05-26
verified_at: null
archived: false
```
## 必需字段
| 字段 | 含义 |
|------|------|
| `workflow` | `full``hotfix``tweak` |
| `phase` | 当前阶段:`open``design``build``verify``archive`init 统一设为 `open`guard 负责过渡) |
| `design_doc` | 关联的 Superpowers Design Doc 路径,可为空 |
| `plan` | 关联的 Superpowers Plan 路径,可为空 |
| `base_ref` | init 时记录的 git commit SHA,用于 scale 评估。无 plan 时作为改动文件数统计基准 |
| `build_mode` | 已选择的执行方式,可为空 |
| `build_pause` | build 阶段内部暂停点。`null` 表示无暂停,`plan-ready` 表示 plan 已生成,用户选择切换模型后暂停 |
| `subagent_dispatch` | `null``confirmed`。仅当已确认当前平台存在真实后台 subagent / Task / multi-agent 调度能力时,`build_mode: subagent-driven-development` 才能写入并用于离开 build 阶段 |
| `tdd_mode` | `tdd``direct`。full workflow 离开 build 阶段前必须已选择。`tdd` 强制每个任务先写失败测试再实现;`direct` 不强制 TDD。hotfix/tweak 默认 `direct` |
| `review_mode` | `off``standard``thorough`。full workflow 离开 build 阶段前必须已选择;hotfix/tweak 默认 `off` |
| `isolation` | `branch``worktree`,工作区隔离方式。full 初始化可为 `null`,但只允许持续到 `/comet-build` Step 3 前;hotfix/tweak 默认 `branch` |
| `verify_mode` | `light``full`,可为空 |
| `auto_transition` | `true``false`。只控制阶段守卫推进 phase 后是否自动调用下一个 skill;`false` 时由 `comet-state next` 输出 `manual`,暂停下一 skill 调用,但不阻止 phase 字段更新 |
| `verify_result` | `pending``pass``fail` |
| `verification_report` | 验证报告文件路径,verify 通过前必须指向已存在文件 |
| `branch_status` | `pending``handled`,分支处理完成后设为 `handled` |
| `created_at` | change 创建日期(init 时自动写入),格式 `YYYY-MM-DD` |
| `verified_at` | 验证通过时间,可为空 |
| `archived` | change 是否已归档 |
## 可选字段
| 字段 | 含义 |
|------|------|
| `direct_override` | `true`/`false`。full workflow 如需使用 `build_mode: direct`,必须显式设为 `true` |
| `build_command` | 项目构建命令。guard 优先运行该命令,失败时打印命令输出 |
| `verify_command` | 项目验证命令。verify guard 优先运行该命令,未配置时回退到构建命令 |
## 状态机硬约束
- `build → verify` 前,`isolation` 必须是 `branch``worktree`
- `build → verify` 前,`build_mode` 必须已选择
- `build_mode: subagent-driven-development` 必须同时有 `subagent_dispatch: confirmed`
- full workflow 离开 build 阶段前 `tdd_mode` 必须已选择为 `tdd``direct`
- full workflow 离开 build 阶段前 `review_mode` 必须已选择为 `off``standard``thorough`
- `build_mode: direct` 默认只允许 `hotfix` / `tweak`full workflow 需要 `direct_override: true`
- `build_pause` 不是执行方式,不得写入 `build_mode`
- 这些约束同时存在于 `comet-guard.sh build --apply``comet-state.sh transition <name> build-complete`
@@ -0,0 +1,35 @@
# 上下文压缩恢复协议
规范路径:`comet/reference/context-recovery.md`
本协议由所有可能触发上下文压缩的 comet 子 skill 共享。当 agent 怀疑发生上下文压缩(之前对话被摘要、找不到之前讨论的内容)时,按本协议恢复。
## 恢复步骤
```bash
"$COMET_BASH" "$COMET_STATE" check <change-name> <phase> --recover
```
脚本输出结构化恢复上下文(phase、已完成字段、待完成字段、恢复动作)。按 **Recovery action** 决定下一步。
## build 阶段特殊恢复
若恢复脚本输出 `build_mode: subagent-driven-development`
1. 使用 Skill 工具重新加载 Superpowers `subagent-driven-development` 技能
2. 重新阅读 `comet/reference/subagent-dispatch.md` 获取 Comet 专属扩展
3. 读取 `openspec/changes/<name>/.comet/subagent-progress.md`,恢复当前 task 或 final review、实现提交、RED/GREEN 证据、已通过审查、未解决反馈和审查-修复轮次
4. 禁止在主会话中直接执行 task
5. 按检查点记录的精确阶段恢复;检查点缺失或不匹配时才从第一个未勾选 task 的 implementer 派发开始
6. task 按 `review_mode` 完成验收并完成定向勾选验证后,立即继续下一个 task,不得总结或询问是否继续
## design 阶段特殊恢复
- 若用户尚未确认设计方案,回到 brainstorming 继续
- 若用户已确认,继续创建 Design Doc
- 恢复时重新加载 `brainstorm-summary.md` + handoff 上下文文件
## verify/archive 阶段恢复
- verify:脚本输出验证状态、分支状态和恢复动作
- archive:若 `archived: true` 且归档目录存在,归档已完成,无需再次执行
+17
View File
@@ -0,0 +1,17 @@
# 异常调试协议
规范路径:`comet/reference/debug-gate.md`
本协议由 build、hotfix、tweak 等会直接修改代码的 comet 子 skill 共享。当运行程序、测试、构建或手动验证时出现崩溃、异常行为、测试失败或构建失败,必须进入异常调试协议。
## 核心规则
- 立即使用 Skill 工具加载 Superpowers `systematic-debugging` 技能
- 在完成根因调查前,不得提出或实施源码修复
## 四阶段流程
1. 先复现并定位根因,读取完整错误、检查近期变更、追踪数据流
2. 若根因指向源码 bug,先补充能复现该崩溃/异常的最小失败测试,再修改源码
3. 修复后运行该失败测试、相关测试和项目构建/验证命令,确认全部通过
4. 将测试、源码修复和 tasks.md 勾选保留在当前 change 内;不得通过另起一个“写测试用例”的 change 来替代当前 change 的验证闭环
@@ -0,0 +1,20 @@
# 用户决策点协议
规范路径:`comet/reference/decision-point.md`
本协议由所有包含用户决策点的 comet 子 skill 共享。凡标注为“阻塞点”或“用户决策点”的步骤,都必须按本协议处理。
## 核心规则
- 决策点是阻塞点。到达决策点时必须暂停,等待用户明确选择后才能继续
- 必须使用当前平台可用的用户输入/确认机制获取选择
- 若当前平台没有结构化提问工具,则必须在对话中提出明确选项并停止流程,等待用户回复
- 不得用推荐规则、默认值、历史偏好或“用户应该会同意”的推断代替当前确认
- 用户明确选择前,不得写入对应状态字段、执行对应分支操作或自动继续下一阶段
## 最低呈现要求
- 说明当前决策点正在决定什么
- 给出清晰可选项;需要用户单选时,选项必须互斥且可执行
- 如有推荐,只能作为说明,不能替代用户确认
- 用户选择后,再执行对应命令或状态更新
@@ -0,0 +1,59 @@
# Dirty Worktree 协议
规范路径:`comet/reference/dirty-worktree.md`
本协议由所有涉及代码修改的 comet 子 skill 共享。当 agent 恢复上下文或继续执行时,必须按本协议处理未提交的工作区改动。各子 skill 可在本协议基础上定义阶段特例(如 verify 阶段对实现改动的特殊处理),详见对应子 skill 文件。本文件不重复阶段特例。
## 1. 检查步骤
继续或开始修改前,必须先运行以下命令:
```bash
git status --short
git diff --stat
git diff --cached --stat
git ls-files --others --exclude-standard
```
必要时再查看 `git diff` / `git diff --cached` / 新建文件内容。
## 2. 核心规则
- 用户可能不会说明自己改了哪里。只要存在 dirty worktree(包括 Git 状态里显示为 `??` 的新建文件),就先假设改动可能来自用户或混合来源
- **构建产物排除**`??` 文件若匹配 `.gitignore` 中的模式(如 `node_modules/``dist/``__pycache__/``*.o``target/``build/` 等),自动跳过归因,不视为用户改动
- dirty worktree 只代表代码事实,不会自动推进 `.comet.yaml``phase` 或勾选 `tasks.md`;只有完成归因、验证、同步必要文档,并通过对应阶段 guard 后,才允许推进 Comet 状态
## 3. 归因分类
将 dirty diff 分为三类:
1. **属于当前 change**:文件和内容能对应当前 change 的目标、tasks.md、plan 或 delta spec。将其纳入当前任务继续,不重复改同一处
2. **不属于当前 change**:文件或内容与当前目标无关。暂停并询问用户:并入当前 change、拆成新 change、保留不处理,或明确授权丢弃
3. **来源不确定**:无法从 diff 和文档判断归属。暂停并向用户汇报文件列表和判断依据,不继续推进阶段
## 4. 常见处理模式
### 已实现但 tasks.md 未勾选
先验证实现(运行构建和测试),通过后补勾任务。不要因为任务未勾选就重做一遍,也不要因为状态文件滞后而忽略代码事实。若当前子 skill 定义了阶段特例,以子 skill 为准。
### 暗示计划或范围已变化
按当前子 skill 的升级、增量更新或回退规则处理,本协议不重复阶段特例。
### 模糊恢复意图
用户说"继续""接着跑""我改了一点""刚才不满意""重新弄""代码动过""先按现在的来"等模糊恢复意图时,按本协议处理。不要要求用户先回忆具体改了哪里。
### open/design 阶段出现代码改动
若当前仍处于 `open``design`,但 dirty worktree 已经包含代码改动,先按本协议归因,不要直接推进阶段:
- 属于当前 change 的改动:作为需求或设计输入记录到 proposal/design/spec/design doc/tasks 中;进入 build 前仍需完成对应阶段 guard
- 不属于当前 change 或来源不确定:暂停询问用户是并入当前 change、拆成新 change、保留不处理,还是明确授权丢弃
- 禁止在 open/design 阶段直接把代码改动当作已完成实现并推进到 verify
## 5. 禁令
- 禁止在未理解 dirty diff 来源时覆盖、回滚、格式化重写或忽略用户改动
- 禁止在 dirty diff 未解释清楚时判定验证通过
@@ -0,0 +1,28 @@
# 文件结构参考
规范路径:`comet/reference/file-structure.md`
本文件是 Comet 项目文件结构参考。按需查阅,不随 skill 一次性加载。
```text
openspec/ # OpenSpec — WHAT
├── config.yaml
├── changes/
│ ├── <name>/ # 活跃 change
│ │ ├── .openspec.yaml
│ │ ├── .comet.yaml
│ │ ├── proposal.md # Why + What
│ │ ├── design.md # 高层架构决策
│ │ ├── specs/<capability>/spec.md # Delta 能力规格
│ │ ├── .comet/handoff/ # 脚本生成的阶段交接包
│ │ └── tasks.md # 任务清单
│ └── archive/YYYY-MM-DD-<name>/ # 已归档
└── specs/<capability>/spec.md # 主 specs(归档时按 OpenSpec delta 语义合并)
docs/superpowers/ # Superpowers — HOW
├── specs/YYYY-MM-DD-<topic>-design.md # 设计文档(技术 RFC,归档时标注状态)
└── plans/YYYY-MM-DD-<feature>.md # 实施计划(文件头含 change 关联元数据)
.comet/
└── config.yaml # Comet 项目配置(context_compression 默认 off,可设 beta
```
@@ -0,0 +1,120 @@
# Subagent 驱动开发的 Comet 扩展
规范路径:`comet/reference/subagent-dispatch.md`
本文档提供在 Superpowers `subagent-driven-development` 技能**之上**应用的 Comet 专属扩展。该技能负责核心派发循环(每个 task 派发全新 implementer → spec compliance review → code quality review → 下一个 task)并强制连续执行。本文档添加 Comet 特有的真实后台调度、任务追踪、状态验证、代码审查模式和上下文恢复。若 Superpowers 技能与本文档发生冲突时,以本文档中更具体的 Comet 约束为准。
> **⚠️ 关键约束 — 任务之间禁止暂停**
>
> 当一个 task 按 `review_mode` 完成验收并被勾选后,**立即派发下一个 task**,不得停止、总结或询问用户是否继续。用户期望所有 task 按顺序自动执行,无需手动干预。任务之间暂停会中断工作流,导致用户每次都需要手动恢复。
>
> 仅在以下情况才停止并等待用户输入:
> - 任务处于 **BLOCKED** 状态(`review_mode: standard` 下一轮轻量复查仍未通过,或 `review_mode: thorough` 下批次/最终审查 2 轮审查-修复仍未通过)
> - 存在无法从仓库、计划或既有上下文消除的真实歧义
> - 平台没有真实后台 agent 调度能力,需要用户改选 `executing-plans`
> - 用户**明确**要求暂停
>
> 此规则适用于整个派发循环,而非单个任务。
## 开始前
1. 读取计划一次,按顺序提取所有未勾选 task 的完整文本。
2. 为每个 task 保存唯一标识:plan 中 checkbox 后的完整任务文本,以及它映射的 OpenSpec task 完整文本(若存在)。若文本不唯一,停止并先修正计划,禁止依赖"第一个匹配项"。
3. 尊重依赖关系;依赖尚未完成的 task 不得提前派发。
## 每个 Task 的 Comet 扩展
在每个 task 上应用这些扩展,叠加在 Superpowers 技能的派发循环之上:
### 0. 派发强制约束(关键)
主会话**仅负责协调**,禁止直接执行 task。主会话禁止修改源代码。协调者唯一允许的文件修改是 plan、OpenSpec task 和 subagent 进度检查点的持久化更新。不得把多个 task 打包给同一个 agent。每个 task 派发一个全新的后台 implementer agent;当 `review_mode` 需要审查或修复时,spec reviewer、code quality reviewer、修复 agent 和 final reviewer 也必须分别使用全新的后台 agent:
- **Claude Code**:对每个 implementer,以及 `review_mode` 要求的 spec reviewer、code quality reviewer、修复 agent 和 final reviewer 使用 `Agent` 工具并设置 `run_in_background: true`。禁止内联执行 task,禁止错误进入需要预先创建 team 的团队模式。
- **其他平台**:使用平台等效的后台 agent / Task / 多 agent 派发机制。
- **禁止**跨 task 或角色复用 implementer、reviewer 或修复 agent。每个 agent 拥有全新的隔离上下文,并且只接收当前角色所需的单个 task 上下文。
- 若平台无真实后台派发能力,不得继续;暂停并等待用户改选 `build_mode: executing-plans`
### 1. 派发 Prompt 与回报契约
每个 implementer 或修复 agent prompt 必须包含:
- 当前单个 task 的完整文本、架构背景和依赖上下文
- `Language: 使用触发本次工作流的用户请求语言输出`
- 允许修改的文件范围和禁止修改的范围
- 必须执行的测试命令和提交要求
- 修复 agent 还必须收到对应 reviewer 的完整反馈
agent 回报状态必须为 `DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT`,并包含实现内容、测试结果、提交哈希、变更文件和顾虑。进入审查前,主会话必须确认提交和文件在当前工作树可见;若平台使用隔离副本,先拉取或合并变更。
`review_mode` 需要 reviewer 时,每个 reviewer prompt 必须包含完整 task、实现提交或差异以及 RED/GREEN 证据(`tdd_mode: tdd` 时)。reviewer 不得只依据 implementer 的总结进行审查。
### 2. Implementer 范围限制
implementer 只负责实现、测试和提交代码。**implementer 不得勾选 plan 或 OpenSpec task**,也不得只更新内置 Todo 或对话 checklist。
### 3. TDD 硬约束
`tdd_mode: tdd`,每个 implementer 和修复 agent 必须先使用 Skill 工具加载 Superpowers `test-driven-development` 技能,并在 prompt 中同时注入:
```text
You MUST follow TDD: write a failing test first, watch it fail, then write minimal code to pass. No production code without a failing test first.
```
implementer 或修复 agent 回报必须提供 **RED 失败命令与失败摘要**、**GREEN 通过命令与通过摘要**;缺少任一证据不得进入审查。spec compliance reviewer 和 code quality reviewer 都必须核验 RED/GREEN 证据与测试覆盖。
### 4. 持久进度检查点
主会话必须维护 `openspec/changes/<name>/.comet/subagent-progress.md`,并在每次派发、agent 回报、审查结果、修复轮次变化和 task 勾选后立即更新。检查点至少记录:
- 当前 plan task 唯一文本及映射的 OpenSpec task 文本
- 当前阶段:`implementing | spec-review | quality-review | checkoff | done | blocked | final-review | final-fix`
- 实现提交哈希、变更文件和 RED/GREEN 证据
- 已选择的 `review_mode`
- 已通过的审查阶段及尚未解决的 reviewer 反馈
- 当前 task、批次或 final review 的审查-修复轮次(`standard` 最多 1 轮,`thorough` 最多 2 轮,`off` 为 0 轮)
该文件只保存恢复所需的协调状态,不替代 plan 或 OpenSpec checkbox。当前 task 完成后保留其最终记录,开始下一个 task 时用下一 task 的记录替换。
### 5. 代码审查模式与轮次限制
`review_mode: standard` 时,每个 task 不自动派发 per-task reviewerimplementer 必须自测、提交并回报证据,协调者完成定向勾选验证。所有 task 完成后只派发一次最终轻量 code reviewer,审查范围限定为正确性、安全和边界条件。若最终轻量审查发现 CRITICAL 或 IMPORTANT 问题,最多自动派发一轮修复 agent 并复查一次;复查仍未通过时标记 **BLOCKED**,暂停并把反馈交给用户。非 CRITICAL 发现可记录接受理由后继续。
`review_mode: thorough` 时,不执行每 task 双审查。协调者按批次或风险边界运行合并审查:每完成最多 3 个 task、或完成一个跨模块/高风险边界时,派发一个 reviewer 同时检查 spec compliance 与 code quality。若总 task 数不超过 3 且没有高风险边界,可跳过中途批次审查,只做最终完整审查。所有 task 完成后再派发一次最终完整 reviewer。批次和最终审查各最多 2 轮审查-修复;仍未通过则标记 **BLOCKED**,暂停并把累计反馈交给用户。
`review_mode: off` 时,不自动派发 spec reviewer、code quality reviewer、final reviewer 或审查修复 agent。任务完成依据 implementer 的测试/构建证据、当前工作树确认、任务唯一文本勾选验证和用户显式要求。若执行过程中出现测试失败、构建失败或异常行为,仍必须按异常调试协议处理,不得用 `off` 跳过真实问题。
### 6. Task 勾选与验证
**按 `review_mode` 完成验收后**,主会话:
1. 将 plan 中保存的唯一 task 文本从 `- [ ]` 改为 `- [x]`
2. 若存在映射,再同步勾选 OpenSpec task
3. 提交这次进度更新
4. 运行定向验证:
```bash
"$COMET_BASH" "$COMET_STATE" task-checkoff "$PLAN_FILE" "$PLAN_TASK_TEXT"
"$COMET_BASH" "$COMET_STATE" task-checkoff "openspec/changes/<name>/tasks.md" "$OPENSPEC_TASK_TEXT"
```
仅在对应映射存在时运行第二条。脚本会要求任务文本恰好出现一次且该项已勾选;验证失败时不得进入下一个 task。
## 收尾
- **自动继续**:按 `review_mode` 完成验收并勾选 task 后,立即派发下一个未勾选的 task。禁止总结、禁止询问用户是否继续、禁止在任务之间等待用户输入。这是不可协商的 —— Superpowers 技能强制连续执行,文档顶部的关键约束进一步强化此规则。
- 所有 task 完成后,若 `review_mode: standard`,将检查点切换为 `final-review`,只派发一次最终轻量 code reviewer。CRITICAL 或 IMPORTANT 问题最多自动修复和复查一轮;仍未通过则暂停交给用户。通过或接受非 CRITICAL 发现后继续返回 `comet-build`
- 所有 task 完成后,若 `review_mode: thorough`,将检查点切换为 `final-review`,派发一次最终完整 reviewer。CRITICAL 或 IMPORTANT 问题最多自动修复和复查两轮;仍未通过则暂停交给用户。通过或接受非 CRITICAL 发现后继续返回 `comet-build`
- 所有 task 完成后,若 `review_mode: off`,不进入 `final-review``final-fix`,但必须在持久产物中记录跳过自动代码审查的原因,然后返回 `comet-build`
- final review 通过后,结束的只是 subagent 派发循环,不是 Comet workflow。不得加载 `finishing-a-development-branch`,不得停下来询问用户下一步;必须返回 `comet-build` 继续执行退出条件、阶段守卫和后续阶段衔接。
## 上下文恢复
重新加载 Superpowers `subagent-driven-development` 技能并重新阅读本文档。先读取 `openspec/changes/<name>/.comet/subagent-progress.md`,再与第一个未勾选 task 和当前工作树核对:
- 检查点与未勾选 task 匹配时,从记录的精确阶段恢复,保留实现提交、RED/GREEN 证据、`review_mode`、已通过的审查阶段、未解决反馈和当前审查-修复轮次;不得重置轮次或重复已经通过的阶段。
- 检查点缺失或与未勾选 task 不匹配时,为第一个未勾选 task 创建新检查点并从 implementer 派发开始。
- 检查点中的提交或文件在当前工作树不可见时,先拉取、合并或恢复对应变更;不得假定实现已存在。
- 所有 task 已勾选且检查点处于 `final-review``final-fix` 时,从最终审查的精确阶段恢复,并保留最终反馈和审查-修复轮次;不得重新进入已完成的 task。
已提交但未按 `review_mode` 完成验收的 task 保持未勾选,并按检查点重新进入对应的验证、审查或修复流程。