Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@rpamis/comet

Package Overview
Dependencies
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rpamis/comet - npm Package Compare versions

Comparing version
0.3.5
to
0.3.6
+3
-3
assets/skills-zh/comet-archive/SKILL.md

@@ -27,3 +27,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <name> archive
"$COMET_BASH" "$COMET_STATE" check <name> archive
```

@@ -38,3 +38,3 @@

```bash
bash "$COMET_ARCHIVE" "<change-name>"
"$COMET_BASH" "$COMET_ARCHIVE" "<change-name>"
```

@@ -71,3 +71,3 @@

归档脚本会把 `openspec/changes/<name>/` 移动到 `openspec/changes/archive/YYYY-MM-DD-<name>/`。归档成功后**不要再对原 change 名运行** `bash "$COMET_GUARD" <change-name> archive`,因为原活跃目录已经不存在。归档完整性以脚本退出码和归档目录状态为准。
归档脚本会把 `openspec/changes/<name>/` 移动到 `openspec/changes/archive/YYYY-MM-DD-<name>/`。归档成功后**不要再对原 change 名运行** `"$COMET_BASH" "$COMET_GUARD" <change-name> archive`,因为原活跃目录已经不存在。归档完整性以脚本退出码和归档目录状态为准。

@@ -74,0 +74,0 @@ ## 完成

@@ -26,3 +26,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <name> build
"$COMET_BASH" "$COMET_STATE" check <name> build
```

@@ -36,3 +36,3 @@

**立即执行:** 使用 Skill 工具加载 `superpowers:writing-plans` 技能。禁止跳过此步骤。
**立即执行:** 使用 Skill 工具加载 Superpowers `writing-plans` 技能。禁止跳过此步骤。

@@ -58,3 +58,3 @@ 技能加载后,按其指引制定计划。计划要求:

### 2. 更新计划状态
### 2. 更新计划状态并提供 plan-ready 暂停点

@@ -64,3 +64,3 @@ 先记录 plan 路径:

```bash
bash "$COMET_STATE" set <name> plan docs/superpowers/plans/YYYY-MM-DD-feature.md
"$COMET_BASH" "$COMET_STATE" set <name> plan docs/superpowers/plans/YYYY-MM-DD-feature.md
```

@@ -70,4 +70,35 @@

计划写入后,立即提供一个新的用户决策点:
| 选项 | 行为 | 说明 |
|------|------|------|
| A | 继续执行 | 保持在当前模型中,进入 Step 3 选择工作区隔离和执行方式 |
| B | 暂停切换模型 | 记录 `build_pause: plan-ready`,本次 `/comet-build` 停止,用户稍后可从 `/comet` 或 `/comet-build` 恢复 |
这是用户决策点。**必须使用 AskUserQuestion 工具暂停并等待用户明确选择**,不得自动继续,也不得把暂停写入 `build_mode`。
用户选择继续时:
```bash
"$COMET_BASH" "$COMET_STATE" set <name> build_pause null
```
用户选择暂停时:
```bash
"$COMET_BASH" "$COMET_STATE" set <name> build_pause plan-ready
```
设置 `build_pause: plan-ready` 后,当前调用停止。不要选择 `isolation` 或 `build_mode`,不要加载执行技能。
### 3. 选择工作方式
如果恢复时检测到 `build_pause: plan-ready` 且 `plan` 文件存在,不要重新运行 `writing-plans`。先告知用户当前停在 plan-ready 暂停点;用户确认继续后,设置:
```bash
"$COMET_BASH" "$COMET_STATE" set <name> build_pause null
```
然后继续本步骤选择工作区隔离和执行方式。
计划已写入当前分支。在开始执行前,**一次性询问用户**选择工作区隔离方式和执行方式:

@@ -90,4 +121,4 @@

|------|------|---------|
| A | `superpowers:subagent-driven-development` | 任务独立、复杂度高、需要双阶段审查 |
| B | `superpowers:executing-plans` | 任务简单、无子agent环境、轻量快速 |
| A | Superpowers `subagent-driven-development` | 任务独立、复杂度高、需要双阶段审查 |
| B | Superpowers `executing-plans` | 任务简单、无子agent环境、轻量快速 |

@@ -104,4 +135,4 @@ **执行方式推荐规则**:

```bash
bash "$COMET_STATE" set <name> isolation <branch|worktree>
bash "$COMET_STATE" set <name> build_mode <subagent-driven-development|executing-plans|direct>
"$COMET_BASH" "$COMET_STATE" set <name> isolation <branch|worktree>
"$COMET_BASH" "$COMET_STATE" set <name> build_mode <subagent-driven-development|executing-plans|direct>
```

@@ -114,4 +145,4 @@

```bash
bash "$COMET_STATE" set <name> direct_override true
bash "$COMET_STATE" set <name> build_mode direct
"$COMET_BASH" "$COMET_STATE" set <name> direct_override true
"$COMET_BASH" "$COMET_STATE" set <name> build_mode direct
```

@@ -124,3 +155,3 @@

- **branch**:执行 `git checkout -b <change-name>`,后续工作在新分支上进行
- **worktree**:必须使用 Skill 工具加载 `superpowers:using-git-worktrees` 技能创建隔离工作区。禁止用普通 shell 命令或原生工具绕过该技能;如该技能不可用,停止流程并提示安装或启用 Superpowers 技能。
- **worktree**:必须使用 Skill 工具加载 Superpowers `using-git-worktrees` 技能创建隔离工作区。禁止用普通 shell 命令或原生工具绕过该技能;如该技能不可用,停止流程并提示安装或启用 Superpowers 技能。

@@ -145,3 +176,3 @@ 创建隔离后,确认计划文件可访问(分支方式天然可访问;worktree 方式需确认计划已提交)。

| 小 | 遗漏验收场景、边界条件 | 直接编辑 delta spec + design.md,追加 tasks.md 任务 |
| 中 | 接口变更、新增组件、数据流变化 | **使用 AskUserQuestion 工具暂停并等待用户确认后**,必须使用 Skill 工具加载 `superpowers:brainstorming` 更新 Design Doc + delta spec |
| 中 | 接口变更、新增组件、数据流变化 | **使用 AskUserQuestion 工具暂停并等待用户确认后**,必须使用 Skill 工具加载 Superpowers `brainstorming` 更新 Design Doc + delta spec |
| 大 | 全新 capability 需求 | **必须使用 AskUserQuestion 工具暂停并等待用户确认拆分**;用户确认后,通过 `/comet-open` 创建独立 change |

@@ -164,3 +195,3 @@

- **每完成一个 task**:立即勾选 tasks.md 并提交代码,确保 `.comet.yaml` 和文件状态持久化
- **上下文压缩后恢复**:先运行 `bash "$COMET_STATE" check <change-name> build --recover`,脚本输出结构化恢复上下文(isolation/build_mode 状态、plan 路径、任务完成进度、恢复动作)。根据 Recovery action 决定下一步。
- **上下文压缩后恢复**:先运行 `"$COMET_BASH" "$COMET_STATE" check <change-name> build --recover`,脚本输出结构化恢复上下文(isolation/build_mode 状态、plan 路径、任务完成进度、恢复动作)。根据 Recovery action 决定下一步。
- **用户手动修改恢复**:按 `comet/reference/dirty-worktree.md` 协议处理未提交改动。该协议定义了检查步骤、归因分类和禁令。build 阶段的特殊处理:

@@ -177,3 +208,3 @@ 1. 归因后,若 diff 暗示计划或 spec 已变化,按 Step 4「Spec 增量更新」分级处理

- `build_mode` 已写为 `subagent-driven-development`、`executing-plans` 或带显式 override 的 `direct`
- **阶段守卫**:运行 `bash "$COMET_GUARD" <change-name> build --apply`,全部 PASS 后自动流转到 `phase: verify`
- **阶段守卫**:运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply`,全部 PASS 后自动流转到 `phase: verify`

@@ -193,3 +224,3 @@ Guard 会优先读取项目配置中的命令:

```bash
bash "$COMET_GUARD" <change-name> build --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply
```

@@ -196,0 +227,0 @@

@@ -26,3 +26,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <name> design
"$COMET_BASH" "$COMET_STATE" check <name> design
```

@@ -39,3 +39,3 @@

```bash
bash "$COMET_HANDOFF" <change-name> design --write
"$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
```

@@ -65,3 +65,3 @@

```bash
bash "$COMET_HANDOFF" <change-name> design --write --full
"$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write --full
```

@@ -77,3 +77,3 @@

**立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming` 技能,ARGUMENTS 包含:
**立即执行:** 使用 Skill 工具加载 Superpowers `brainstorming` 技能,ARGUMENTS 包含:

@@ -101,3 +101,3 @@ ```

如 `superpowers:brainstorming` 不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。
如 Superpowers `brainstorming` 技能不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。

@@ -129,9 +129,9 @@ 技能加载后,按其指引产出设计方案(以对话形式呈现):

# 记录 design_doc 路径
bash "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
"$COMET_BASH" "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
# 如有 delta spec 变更,重新生成 handoff(更新 hash)
bash "$COMET_HANDOFF" <change-name> design --write
"$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
# 自动流转到下一阶段
bash "$COMET_GUARD" <change-name> design --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
```

@@ -150,3 +150,3 @@

- `design_doc` 已写入 `.comet.yaml`
- **阶段守卫**:运行 `bash "$COMET_GUARD" <change-name> design --apply`,全部 PASS 后自动流转到 `phase: build`
- **阶段守卫**:运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply`,全部 PASS 后自动流转到 `phase: build`

@@ -156,3 +156,3 @@ 退出前必须使用 `--apply`:

```bash
bash "$COMET_GUARD" <change-name> design --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
```

@@ -165,3 +165,3 @@

```bash
bash "$COMET_STATE" check <change-name> design --recover
"$COMET_BASH" "$COMET_STATE" check <change-name> design --recover
```

@@ -168,0 +168,0 @@

@@ -49,3 +49,3 @@ ---

```bash
bash "$COMET_STATE" init <name> hotfix
"$COMET_BASH" "$COMET_STATE" init <name> hotfix
```

@@ -56,3 +56,3 @@

```bash
bash "$COMET_STATE" check <name> open
"$COMET_BASH" "$COMET_STATE" check <name> open
```

@@ -63,3 +63,3 @@

```bash
bash "$COMET_GUARD" <change-name> open --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
```

@@ -69,3 +69,3 @@

使用 hotfix 默认值:`build_mode: direct`。跳过 `superpowers:brainstorming` 和 `superpowers:writing-plans`(除非任务 > 3 个;若超过 3 个任务,转入 `/comet-build` 的计划与执行方式选择)。
使用 hotfix 默认值:`build_mode: direct`。跳过 Superpowers `brainstorming` 和 `writing-plans`(除非任务 > 3 个;若超过 3 个任务,转入 `/comet-build` 的计划与执行方式选择)。

@@ -104,3 +104,3 @@ 继续或开始修改前,按 `comet/reference/dirty-worktree.md` 协议处理未提交改动。若归因后发现修复范围超出 hotfix,按本文件“升级条件”处理。

```bash
bash "$COMET_GUARD" <change-name> build --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply
```

@@ -162,3 +162,3 @@

```bash
bash "$COMET_STATE" set <name> workflow full
"$COMET_BASH" "$COMET_STATE" set <name> workflow full
```

@@ -175,2 +175,2 @@

- 如有 spec 变更,已同步到 main spec
- **阶段守卫**:build → verify 前运行 `bash "$COMET_GUARD" <change-name> build --apply`,verify → archive 前按 `/comet-verify` 规则运行 `bash "$COMET_GUARD" <change-name> verify --apply`
- **阶段守卫**:build → verify 前运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply`,verify → archive 前按 `/comet-verify` 规则运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`

@@ -52,3 +52,3 @@ ---

bash "$COMET_STATE" init <name> full
"$COMET_BASH" "$COMET_STATE" init <name> full
```

@@ -61,3 +61,3 @@

```bash
bash "$COMET_STATE" check <name> open
"$COMET_BASH" "$COMET_STATE" check <name> open
```

@@ -99,3 +99,3 @@

- **用户已确认** proposal、design、tasks 内容符合预期
- **阶段守卫**:运行 `bash "$COMET_GUARD" <change-name> open --apply`,全部 PASS 后自动流转到下一阶段
- **阶段守卫**:运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply`,全部 PASS 后自动流转到下一阶段

@@ -105,3 +105,3 @@ 退出前必须使用 `--apply`,否则 `.comet.yaml` 仍停留在 `phase: open`,下一阶段入口检查会失败。

```bash
bash "$COMET_GUARD" <change-name> open --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
```

@@ -108,0 +108,0 @@

@@ -52,3 +52,3 @@ ---

```bash
bash "$COMET_STATE" init <name> tweak
"$COMET_BASH" "$COMET_STATE" init <name> tweak
```

@@ -59,3 +59,3 @@

```bash
bash "$COMET_STATE" check <name> open
"$COMET_BASH" "$COMET_STATE" check <name> open
```

@@ -66,3 +66,3 @@

```bash
bash "$COMET_GUARD" <change-name> open --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
```

@@ -72,3 +72,3 @@

使用 tweak 默认值:`build_mode: direct`。跳过 `superpowers:brainstorming` 和 `superpowers:writing-plans`。
使用 tweak 默认值:`build_mode: direct`。跳过 Superpowers `brainstorming` 和 `writing-plans`。

@@ -90,3 +90,3 @@ 继续或开始修改前,按 `comet/reference/dirty-worktree.md` 协议处理未提交改动。若归因后发现范围超出 tweak,按本文件“升级条件”处理。

```bash
bash "$COMET_GUARD" <change-name> build --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply
```

@@ -147,3 +147,3 @@

```bash
bash "$COMET_STATE" set <name> workflow full
"$COMET_BASH" "$COMET_STATE" set <name> workflow full
```

@@ -160,2 +160,2 @@

- 未新增 capability、架构调整或接口变化
- **阶段守卫**:build → verify 前运行 `bash "$COMET_GUARD" <change-name> build --apply`,verify → archive 前按 `/comet-verify` 规则运行 `bash "$COMET_GUARD" <change-name> verify --apply`
- **阶段守卫**:build → verify 前运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply`,verify → archive 前按 `/comet-verify` 规则运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`

@@ -26,3 +26,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <change-name> verify
"$COMET_BASH" "$COMET_STATE" check <change-name> verify
```

@@ -39,3 +39,3 @@

```bash
bash "$COMET_STATE" scale <change-name>
"$COMET_BASH" "$COMET_STATE" scale <change-name>
```

@@ -55,3 +55,3 @@

# 仅在用户确认修复后执行
bash "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
```

@@ -62,3 +62,3 @@

```bash
PLAN=$(bash "$COMET_STATE" get <change-name> plan)
PLAN=$("$COMET_BASH" "$COMET_STATE" get <change-name> plan)
BASE_REF=$(grep '^base-ref:' "$PLAN" 2>/dev/null | head -1 | sed 's/^base-ref: *//')

@@ -71,3 +71,3 @@ git diff --stat "$BASE_REF"...HEAD

```bash
bash "$COMET_STATE" set <change-name> verify_mode full
"$COMET_BASH" "$COMET_STATE" set <change-name> verify_mode full
```

@@ -77,3 +77,3 @@

验证不通过时**必须使用 AskUserQuestion 工具暂停并等待用户决定修复或接受偏差**。不得自动运行 `bash "$COMET_STATE" transition <change-name> verify-fail`,也不得自动调用 `/comet-build`。禁止仅输出文字提示后继续执行。
验证不通过时**必须使用 AskUserQuestion 工具暂停并等待用户决定修复或接受偏差**。不得自动运行 `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`,也不得自动调用 `/comet-build`。禁止仅输出文字提示后继续执行。

@@ -88,3 +88,3 @@ 暂停时必须列出:

用户选择后按以下方式继续:
- **全部修复**:运行 `bash "$COMET_STATE" transition <change-name> verify-fail`,然后调用 `/comet-build` 修复
- **全部修复**:运行 `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`,然后调用 `/comet-build` 修复
- **逐项处理**:CRITICAL 失败项必须修复;非 CRITICAL 失败项可选择接受偏差,但必须在验证报告中记录接受原因和影响范围。若存在任何 CRITICAL 失败项,不允许跳过修复直接全部接受

@@ -108,3 +108,3 @@

# 仅在用户确认修复后执行
bash "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
```

@@ -139,3 +139,3 @@

# 仅在用户确认修复后执行
bash "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
```

@@ -146,3 +146,3 @@

- 选项 A:在 design doc 追加 "Implementation Divergence" 节记录偏差原因。选项 A 属于 verify 阶段允许产物;写入后不得因该 design doc 变更再次触发 Step 1b dirty-worktree 决策
- 选项 B:用户选择 B 后,运行 `bash "$COMET_STATE" transition <change-name> verify-fail`,然后调用 `/comet-build`;由 `/comet-build` 的 Spec 增量更新规则加载 `superpowers:brainstorming` 更新 Design Doc + delta spec
- 选项 B:用户选择 B 后,运行 `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`,然后调用 `/comet-build`;由 `/comet-build` 的 Spec 增量更新规则加载 Superpowers `brainstorming` 更新 Design Doc + delta spec
- 选项 C:确认偏差可接受,继续验证(归档时 design doc 将标记为 `superseded-by-main-spec`)

@@ -152,5 +152,5 @@

**立即执行:** 使用 Skill 工具加载 `superpowers:finishing-a-development-branch` 技能。禁止跳过此步骤。
**立即执行:** 使用 Skill 工具加载 Superpowers `finishing-a-development-branch` 技能。禁止跳过此步骤。
如 `superpowers:finishing-a-development-branch` 不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。
如 Superpowers `finishing-a-development-branch` 技能不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。

@@ -178,4 +178,4 @@ 技能加载后,按其指引收尾。分支处理选项:

bash "$COMET_STATE" set <change-name> verification_report docs/superpowers/reports/YYYY-MM-DD-<change-name>-verify.md
bash "$COMET_STATE" set <change-name> branch_status handled
"$COMET_BASH" "$COMET_STATE" set <change-name> verification_report docs/superpowers/reports/YYYY-MM-DD-<change-name>-verify.md
"$COMET_BASH" "$COMET_STATE" set <change-name> branch_status handled
```

@@ -189,3 +189,3 @@

- `.comet.yaml` 中 `branch_status: handled`
- **阶段守卫**:运行 `bash "$COMET_GUARD" <change-name> verify --apply`,全部 PASS 后通过 `comet-state transition verify-pass` 自动流转到 `phase: archive`
- **阶段守卫**:运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`,全部 PASS 后通过 `comet-state transition verify-pass` 自动流转到 `phase: archive`

@@ -195,3 +195,3 @@ 验证和分支处理均完成后,运行 guard 自动流转:

```bash
bash "$COMET_GUARD" <change-name> verify --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply
```

@@ -206,3 +206,3 @@

```bash
bash "$COMET_STATE" check <change-name> verify --recover
"$COMET_BASH" "$COMET_STATE" check <change-name> verify --recover
```

@@ -209,0 +209,0 @@

@@ -56,5 +56,9 @@ ---

- 只要存在 active change 且工作区有未提交改动,必须按 `comet/reference/dirty-worktree.md` 协议处理。该协议定义了检查步骤、归因分类和禁令,本文件不重复
- 若 `phase: build`,先检查 `build_mode` 和 `isolation` 是否已设置;若有未设置的字段,回到 `/comet-build` 对应步骤补充后再执行;若均已设置,读取 tasks.md 的下一个未勾选任务继续
- 若 `phase: verify` 且 `verify_result: fail`,进入验证失败决策阻塞点:暂停并询问用户修复或接受偏差;用户选择修复后才运行 `bash "$COMET_STATE" transition <name> verify-fail` 并调用 `/comet-build`
- 若 `phase: open` 但 proposal/design/tasks 已完整,先运行 `bash "$COMET_GUARD" <change-name> open --apply` 修正状态,再继续判定
- 若 `phase: build`,先检查 `build_pause`、`plan`、`build_mode` 和 `isolation`:
- 若 `build_pause: plan-ready` 且 plan 文件存在,回到 `/comet-build` 的 plan-ready 恢复点,提示用户继续选择隔离方式和执行方式,不重新生成 plan
- 若 `build_pause: plan-ready` 但 plan 文件缺失,回到 `/comet-build` 处理状态损坏或重新生成 plan
- 若 `build_mode` 或 `isolation` 未设置,回到 `/comet-build` 对应步骤补充后再执行
- 若均已设置,读取 tasks.md 的下一个未勾选任务继续
- 若 `phase: verify` 且 `verify_result: fail`,进入验证失败决策阻塞点:暂停并询问用户修复或接受偏差;用户选择修复后才运行 `"$COMET_BASH" "$COMET_STATE" transition <name> verify-fail` 并调用 `/comet-build`
- 若 `phase: open` 但 proposal/design/tasks 已完整,先运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply` 修正状态,再继续判定
- 若 `phase: archive`,只允许调用 `/comet-archive`;归档成功后 change 会移动到 archive 目录,不再对原活跃目录运行 guard

@@ -96,3 +100,3 @@

| 子 skill 不可用 | 停止流程,提示安装或启用对应 skill |
| `.comet.yaml` 格式异常或缺失 | 以文件状态为准,用 `bash $COMET_STATE set` 修正后继续 |
| `.comet.yaml` 格式异常或缺失 | 以文件状态为准,用 `"$COMET_BASH" "$COMET_STATE" set` 修正后继续 |
| 构建/测试失败 | 返回 build 阶段修复,不进入 verify |

@@ -115,3 +119,3 @@ | change 目录结构不完整 | 按 `comet-open` 产物要求补齐 |

2. brainstorming 确认设计方案
3. build 阶段选择工作方式(隔离方式 + 执行方式,一次交互完成)
3. build 阶段 plan-ready 暂停选择,以及随后选择工作方式(隔离方式 + 执行方式)
4. verify 不通过时决定修复或接受偏差(含 Spec 漂移处理方式选择)

@@ -177,2 +181,3 @@ 5. finishing-branch 选择分支处理方式

build_mode: subagent-driven-development
build_pause: null
isolation: branch

@@ -196,2 +201,3 @@ verify_mode: light

| `build_mode` | 已选择的执行方式,可为空 |
| `build_pause` | build 阶段内部暂停点。`null` 表示无暂停,`plan-ready` 表示 plan 已生成,用户选择切换模型后暂停 |
| `isolation` | `branch` 或 `worktree`,工作区隔离方式。full 初始化可为 `null`,但只允许持续到 `/comet-build` Step 3 前;hotfix/tweak 默认 `branch` |

@@ -218,2 +224,3 @@ | `verify_mode` | `light` 或 `full`,可为空 |

- `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`

@@ -244,3 +251,3 @@

```bash
bash "$COMET_GUARD" <change-name> <phase> --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> <phase> --apply
```

@@ -251,8 +258,8 @@

```bash
bash "$COMET_STATE" transition <change-name> open-complete
bash "$COMET_STATE" transition <change-name> design-complete
bash "$COMET_STATE" transition <change-name> build-complete
bash "$COMET_STATE" transition <change-name> verify-pass
bash "$COMET_STATE" transition <change-name> verify-fail
bash "$COMET_STATE" transition <archive-name> archived
"$COMET_BASH" "$COMET_STATE" transition <change-name> open-complete
"$COMET_BASH" "$COMET_STATE" transition <change-name> design-complete
"$COMET_BASH" "$COMET_STATE" transition <change-name> build-complete
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-pass
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <archive-name> archived
```

@@ -263,3 +270,3 @@

```bash
bash "$COMET_ARCHIVE" <change-name>
"$COMET_BASH" "$COMET_ARCHIVE" <change-name>
```

@@ -266,0 +273,0 @@

@@ -27,3 +27,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <name> archive
"$COMET_BASH" "$COMET_STATE" check <name> archive
```

@@ -38,3 +38,3 @@

```bash
bash "$COMET_ARCHIVE" "<change-name>"
"$COMET_BASH" "$COMET_ARCHIVE" "<change-name>"
```

@@ -71,3 +71,3 @@

The archive script moves `openspec/changes/<name>/` to `openspec/changes/archive/YYYY-MM-DD-<name>/`. After successful archive, **do not run** `bash "$COMET_GUARD" <change-name> archive` against the old active change name; the active directory no longer exists. Archive completeness is determined by script exit code and archived directory state.
The archive script moves `openspec/changes/<name>/` to `openspec/changes/archive/YYYY-MM-DD-<name>/`. After successful archive, **do not run** `"$COMET_BASH" "$COMET_GUARD" <change-name> archive` against the old active change name; the active directory no longer exists. Archive completeness is determined by script exit code and archived directory state.

@@ -74,0 +74,0 @@ ## Complete

@@ -26,3 +26,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <name> build
"$COMET_BASH" "$COMET_STATE" check <name> build
```

@@ -36,3 +36,3 @@

**Immediately execute:** Use the Skill tool to load the `superpowers:writing-plans` skill. Skipping this step is prohibited.
**Immediately execute:** Use the Skill tool to load the Superpowers `writing-plans` skill. Skipping this step is prohibited.

@@ -58,3 +58,3 @@ After the skill loads, follow its guidance to create a plan. Plan requirements:

### 2. Update Plan Status
### 2. Update Plan Status and Provide Plan-Ready Pause Point

@@ -64,3 +64,3 @@ Record plan path:

```bash
bash "$COMET_STATE" set <name> plan docs/superpowers/plans/YYYY-MM-DD-feature.md
"$COMET_BASH" "$COMET_STATE" set <name> plan docs/superpowers/plans/YYYY-MM-DD-feature.md
```

@@ -70,4 +70,35 @@

After the plan is recorded, immediately provide a new user decision point:
| Option | Behavior | Description |
|--------|----------|-------------|
| A | Continue execution | Stay in the current model and proceed to Step 3 to choose workspace isolation and execution method |
| B | Pause to switch model | Record `build_pause: plan-ready`, stop this `/comet-build` invocation, and allow the user to resume later from `/comet` or `/comet-build` |
This is a user decision point. **Must use the AskUserQuestion tool to pause and wait for the user to explicitly choose**. Must not auto-continue and must not write the pause into `build_mode`.
When the user chooses to continue:
```bash
"$COMET_BASH" "$COMET_STATE" set <name> build_pause null
```
When the user chooses to pause:
```bash
"$COMET_BASH" "$COMET_STATE" set <name> build_pause plan-ready
```
After setting `build_pause: plan-ready`, stop the current invocation. Do not choose `isolation` or `build_mode`, and do not load an execution skill.
### 3. Select Workflow Configuration
If resuming with `build_pause: plan-ready` and the `plan` file exists, do not rerun `writing-plans`. First tell the user the workflow is stopped at the plan-ready pause point; after the user confirms continuing, set:
```bash
"$COMET_BASH" "$COMET_STATE" set <name> build_pause null
```
Then continue this step to choose workspace isolation and execution method.
Plan has been written to the current branch. Before starting execution, **ask the user to choose both workspace isolation and execution method in a single interaction**:

@@ -90,4 +121,4 @@

|------|------|-------------------|
| A | `superpowers:subagent-driven-development` | Independent tasks, high complexity, requires two-phase review |
| B | `superpowers:executing-plans` | Simple tasks, no subagent environment, lightweight and fast |
| A | Superpowers `subagent-driven-development` | Independent tasks, high complexity, requires two-phase review |
| B | Superpowers `executing-plans` | Simple tasks, no subagent environment, lightweight and fast |

@@ -104,4 +135,4 @@ **Execution method recommendation rules**:

```bash
bash "$COMET_STATE" set <name> isolation <branch|worktree>
bash "$COMET_STATE" set <name> build_mode <subagent-driven-development|executing-plans|direct>
"$COMET_BASH" "$COMET_STATE" set <name> isolation <branch|worktree>
"$COMET_BASH" "$COMET_STATE" set <name> build_mode <subagent-driven-development|executing-plans|direct>
```

@@ -114,4 +145,4 @@

```bash
bash "$COMET_STATE" set <name> direct_override true
bash "$COMET_STATE" set <name> build_mode direct
"$COMET_BASH" "$COMET_STATE" set <name> direct_override true
"$COMET_BASH" "$COMET_STATE" set <name> build_mode direct
```

@@ -124,3 +155,3 @@

- **branch**: Run `git checkout -b <change-name>`, subsequent work on the new branch
- **worktree**: Must use the Skill tool to load `superpowers:using-git-worktrees` skill to create isolated workspace. Do not bypass this skill with plain shell commands or native tools; if the skill is unavailable, stop the process and prompt to install or enable Superpowers skills.
- **worktree**: Must use the Skill tool to load the Superpowers `using-git-worktrees` skill to create isolated workspace. Do not bypass this skill with plain shell commands or native tools; if the skill is unavailable, stop the process and prompt to install or enable Superpowers skills.

@@ -145,3 +176,3 @@ After creating isolation, confirm plan file is accessible (naturally accessible with branch method; for worktree method, confirm plan has been committed).

| Small | Missing acceptance scenarios, edge cases | Directly edit delta spec + design.md, append tasks.md tasks |
| Medium | Interface changes, new components, data flow changes | **Must use the AskUserQuestion tool to pause and wait for the user to explicitly confirm**, then must use Skill tool to load `superpowers:brainstorming` to update Design Doc + delta spec |
| Medium | Interface changes, new components, data flow changes | **Must use the AskUserQuestion tool to pause and wait for the user to explicitly confirm**, then must use Skill tool to load the Superpowers `brainstorming` skill to update Design Doc + delta spec |
| Large | Brand-new capability requirements | **Must use the AskUserQuestion tool to pause and wait for the user to explicitly confirm the split**; after user confirms, create independent change through `/comet-open` |

@@ -164,3 +195,3 @@

- **After each task**: immediately check off tasks.md and commit code so `.comet.yaml` and file state are durable
- **After context compaction**: first run `bash "$COMET_STATE" check <change-name> build --recover` — the script outputs structured recovery context (isolation/build_mode status, plan path, task progress, recovery action). Follow the Recovery action to determine next step.
- **After context compaction**: first run `"$COMET_BASH" "$COMET_STATE" check <change-name> build --recover` — the script outputs structured recovery context (isolation/build_mode status, plan path, task progress, recovery action). Follow the Recovery action to determine next step.
- **User manual-change resume**: handle uncommitted changes through `comet/reference/dirty-worktree.md`. That protocol defines checks, attribution, and prohibitions. Build-specific handling:

@@ -177,3 +208,3 @@ 1. After attribution, if the diff implies plan or spec changes, handle it through Step 4 "Spec Incremental Updates"

- `build_mode` has been written as `subagent-driven-development`, `executing-plans`, or `direct` with explicit override
- **Phase guard**: Run `bash "$COMET_GUARD" <change-name> build --apply`; after all PASS, state advances to `phase: verify`
- **Phase guard**: Run `"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply`; after all PASS, state advances to `phase: verify`

@@ -193,3 +224,3 @@ Guard reads project command configuration first:

```bash
bash "$COMET_GUARD" <change-name> build --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply
```

@@ -196,0 +227,0 @@

@@ -26,3 +26,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <name> design
"$COMET_BASH" "$COMET_STATE" check <name> design
```

@@ -39,3 +39,3 @@

```bash
bash "$COMET_HANDOFF" <change-name> design --write
"$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
```

@@ -65,3 +65,3 @@

```bash
bash "$COMET_HANDOFF" <change-name> design --write --full
"$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write --full
```

@@ -77,3 +77,3 @@

**Immediately execute:** Use the Skill tool to load the `superpowers:brainstorming` skill, ARGUMENTS containing:
**Immediately execute:** Use the Skill tool to load the Superpowers `brainstorming` skill, ARGUMENTS containing:

@@ -101,3 +101,3 @@ ```

If `superpowers:brainstorming` is unavailable, stop the process and prompt to install or enable Superpowers skills. Do not substitute this step with normal conversation.
If the Superpowers `brainstorming` skill is unavailable, stop the process and prompt to install or enable Superpowers skills. Do not substitute this step with normal conversation.

@@ -129,9 +129,9 @@ After the skill loads, follow its guidance to produce design proposals (presented as conversation):

# Record design_doc path
bash "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
"$COMET_BASH" "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
# If delta spec changes exist, regenerate handoff (update hash)
bash "$COMET_HANDOFF" <change-name> design --write
"$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
# Auto-transition to next phase
bash "$COMET_GUARD" <change-name> design --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
```

@@ -150,3 +150,3 @@

- `design_doc` written to `.comet.yaml`
- **Phase guard**: Run `bash "$COMET_GUARD" <change-name> design --apply`; after all PASS, auto-transitions to `phase: build`
- **Phase guard**: Run `"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply`; after all PASS, auto-transitions to `phase: build`

@@ -156,3 +156,3 @@ Must use `--apply` before exit:

```bash
bash "$COMET_GUARD" <change-name> design --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
```

@@ -165,3 +165,3 @@

```bash
bash "$COMET_STATE" check <change-name> design --recover
"$COMET_BASH" "$COMET_STATE" check <change-name> design --recover
```

@@ -168,0 +168,0 @@

@@ -49,3 +49,3 @@ ---

```bash
bash "$COMET_STATE" init <name> hotfix
"$COMET_BASH" "$COMET_STATE" init <name> hotfix
```

@@ -56,3 +56,3 @@

```bash
bash "$COMET_STATE" check <name> open
"$COMET_BASH" "$COMET_STATE" check <name> open
```

@@ -63,3 +63,3 @@

```bash
bash "$COMET_GUARD" <change-name> open --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
```

@@ -69,3 +69,3 @@

Use hotfix defaults: `build_mode: direct`. Skip `superpowers:brainstorming` and `superpowers:writing-plans` (unless tasks > 3; if exceeds 3 tasks, transfer to `/comet-build`'s plan and execution method selection).
Use hotfix defaults: `build_mode: direct`. Skip Superpowers `brainstorming` and `writing-plans` (unless tasks > 3; if exceeds 3 tasks, transfer to `/comet-build`'s plan and execution method selection).

@@ -104,3 +104,3 @@ Before continuing or starting changes, handle uncommitted changes through `comet/reference/dirty-worktree.md`. If attribution shows the fix scope exceeds hotfix, handle it through this file's "Upgrade Conditions".

```bash
bash "$COMET_GUARD" <change-name> build --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply
```

@@ -162,3 +162,3 @@

```bash
bash "$COMET_STATE" set <name> workflow full
"$COMET_BASH" "$COMET_STATE" set <name> workflow full
```

@@ -175,2 +175,2 @@

- If spec changes, synced to main spec
- **Phase guard**: Before build → verify run `bash "$COMET_GUARD" <change-name> build --apply`; before verify → archive follow `/comet-verify` and run `bash "$COMET_GUARD" <change-name> verify --apply`
- **Phase guard**: Before build → verify run `"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply`; before verify → archive follow `/comet-verify` and run `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`

@@ -52,3 +52,3 @@ ---

bash "$COMET_STATE" init <name> full
"$COMET_BASH" "$COMET_STATE" init <name> full
```

@@ -61,3 +61,3 @@

```bash
bash "$COMET_STATE" check <name> open
"$COMET_BASH" "$COMET_STATE" check <name> open
```

@@ -99,3 +99,3 @@

- **User has confirmed** proposal, design, tasks content meets expectations
- **Phase guard**: Run `bash "$COMET_GUARD" <change-name> open --apply`; after all PASS, auto-transitions to next phase
- **Phase guard**: Run `"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply`; after all PASS, auto-transitions to next phase

@@ -105,3 +105,3 @@ Must use `--apply` before exit, otherwise `.comet.yaml` remains at `phase: open` and the next phase entry check will fail.

```bash
bash "$COMET_GUARD" <change-name> open --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
```

@@ -108,0 +108,0 @@

@@ -52,3 +52,3 @@ ---

```bash
bash "$COMET_STATE" init <name> tweak
"$COMET_BASH" "$COMET_STATE" init <name> tweak
```

@@ -59,3 +59,3 @@

```bash
bash "$COMET_STATE" check <name> open
"$COMET_BASH" "$COMET_STATE" check <name> open
```

@@ -66,3 +66,3 @@

```bash
bash "$COMET_GUARD" <change-name> open --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
```

@@ -72,3 +72,3 @@

Use tweak defaults: `build_mode: direct`. Skip `superpowers:brainstorming` and `superpowers:writing-plans`.
Use tweak defaults: `build_mode: direct`. Skip Superpowers `brainstorming` and `writing-plans`.

@@ -90,3 +90,3 @@ Before continuing or starting changes, handle uncommitted changes through `comet/reference/dirty-worktree.md`. If attribution shows scope exceeds tweak, handle it through this file's "Upgrade Conditions".

```bash
bash "$COMET_GUARD" <change-name> build --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply
```

@@ -147,3 +147,3 @@

```bash
bash "$COMET_STATE" set <name> workflow full
"$COMET_BASH" "$COMET_STATE" set <name> workflow full
```

@@ -160,2 +160,2 @@

- No new capability, architecture adjustments or interface changes
- **Phase guard**: Before build → verify run `bash "$COMET_GUARD" <change-name> build --apply`; before verify → archive follow `/comet-verify` and run `bash "$COMET_GUARD" <change-name> verify --apply`
- **Phase guard**: Before build → verify run `"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply`; before verify → archive follow `/comet-verify` and run `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`

@@ -26,3 +26,3 @@ ---

. "$COMET_ENV"
bash "$COMET_STATE" check <change-name> verify
"$COMET_BASH" "$COMET_STATE" check <change-name> verify
```

@@ -39,3 +39,3 @@

```bash
bash "$COMET_STATE" scale <change-name>
"$COMET_BASH" "$COMET_STATE" scale <change-name>
```

@@ -55,3 +55,3 @@

# Execute only after user confirms fix
bash "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
```

@@ -62,3 +62,3 @@

```bash
PLAN=$(bash "$COMET_STATE" get <change-name> plan)
PLAN=$("$COMET_BASH" "$COMET_STATE" get <change-name> plan)
BASE_REF=$(grep '^base-ref:' "$PLAN" 2>/dev/null | head -1 | sed 's/^base-ref: *//')

@@ -71,3 +71,3 @@ git diff --stat "$BASE_REF"...HEAD

```bash
bash "$COMET_STATE" set <change-name> verify_mode full
"$COMET_BASH" "$COMET_STATE" set <change-name> verify_mode full
```

@@ -77,3 +77,3 @@

When verification does not pass, **must use the AskUserQuestion tool to pause and wait for the user to decide fix or accept deviation**. Must not automatically run `bash "$COMET_STATE" transition <change-name> verify-fail`, nor automatically invoke `/comet-build`. Must not just output a text prompt and then continue executing.
When verification does not pass, **must use the AskUserQuestion tool to pause and wait for the user to decide fix or accept deviation**. Must not automatically run `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`, nor automatically invoke `/comet-build`. Must not just output a text prompt and then continue executing.

@@ -88,3 +88,3 @@ When pausing, must list:

After user selection, continue as follows:
- **Fix all**: Run `bash "$COMET_STATE" transition <change-name> verify-fail`, then invoke `/comet-build` to fix
- **Fix all**: Run `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`, then invoke `/comet-build` to fix
- **Handle item by item**: CRITICAL failures must be fixed; non-CRITICAL failures may choose to accept deviation, but must record acceptance reason and impact scope in verification report. If any CRITICAL failure exists, skipping fix to accept all is not allowed

@@ -108,3 +108,3 @@

# Execute only after user confirms fix
bash "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
```

@@ -139,3 +139,3 @@

# Execute only after user confirms fix
bash "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
```

@@ -146,3 +146,3 @@

- Option A: Append "Implementation Divergence" section to design doc recording deviation reason. Option A is a verify phase allowed artifact; after writing, must not re-trigger Step 1b dirty-worktree decision due to that design doc change
- Option B: After user selects B, run `bash "$COMET_STATE" transition <change-name> verify-fail`, then invoke `/comet-build`; `/comet-build`'s Spec Incremental Update rules will load `superpowers:brainstorming` to update Design Doc + delta spec
- Option B: After user selects B, run `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`, then invoke `/comet-build`; `/comet-build`'s Spec Incremental Update rules will load the Superpowers `brainstorming` skill to update Design Doc + delta spec
- Option C: Confirm deviation is acceptable, continue verification (design doc will be marked as `superseded-by-main-spec` during archiving)

@@ -152,5 +152,5 @@

**Immediately execute:** Use the Skill tool to load the `superpowers:finishing-a-development-branch` skill. Skipping this step is prohibited.
**Immediately execute:** Use the Skill tool to load the Superpowers `finishing-a-development-branch` skill. Skipping this step is prohibited.
If `superpowers:finishing-a-development-branch` is unavailable, stop the process and prompt to install or enable Superpowers skills. Do not substitute this step with normal conversation.
If the Superpowers `finishing-a-development-branch` skill is unavailable, stop the process and prompt to install or enable Superpowers skills. Do not substitute this step with normal conversation.

@@ -178,4 +178,4 @@ After the skill loads, follow its guidance to finish. Branch handling options:

bash "$COMET_STATE" set <change-name> verification_report docs/superpowers/reports/YYYY-MM-DD-<change-name>-verify.md
bash "$COMET_STATE" set <change-name> branch_status handled
"$COMET_BASH" "$COMET_STATE" set <change-name> verification_report docs/superpowers/reports/YYYY-MM-DD-<change-name>-verify.md
"$COMET_BASH" "$COMET_STATE" set <change-name> branch_status handled
```

@@ -189,3 +189,3 @@

- `branch_status: handled` in `.comet.yaml`
- **Phase guard**: Run `bash "$COMET_GUARD" <change-name> verify --apply`; after all PASS, auto-transitions to `phase: archive` through `comet-state transition verify-pass`
- **Phase guard**: Run `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`; after all PASS, auto-transitions to `phase: archive` through `comet-state transition verify-pass`

@@ -195,3 +195,3 @@ After both verification and branch handling are complete, run guard for auto-transition:

```bash
bash "$COMET_GUARD" <change-name> verify --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply
```

@@ -212,5 +212,5 @@

```bash
bash "$COMET_STATE" check <change-name> verify --recover
"$COMET_BASH" "$COMET_STATE" check <change-name> verify --recover
```
The script outputs structured recovery context (phase, verification status, branch status, recovery action). Follow the Recovery action to determine next step.

@@ -8,2 +8,4 @@ #!/bin/bash

COMET_BASH="${COMET_BASH:-${BASH:-bash}}"
red() { echo -e "\033[31m$1\033[0m" >&2; }

@@ -74,3 +76,3 @@ green() { echo -e "\033[32m$1\033[0m" >&2; }

if [ -f "$STATE_SH" ]; then
bash "$STATE_SH" get "$CHANGE" "$field" 2>/dev/null
"$COMET_BASH" "$STATE_SH" get "$CHANGE" "$field" 2>/dev/null
else

@@ -275,3 +277,3 @@ if [ -f "$YAML" ]; then

if [ -f "$ARCHIVE_YAML" ]; then
bash "$STATE_SH" transition "$ARCHIVE_NAME" archived >/dev/null
"$COMET_BASH" "$STATE_SH" transition "$ARCHIVE_NAME" archived >/dev/null
step_ok "archived: true"

@@ -278,0 +280,0 @@ else

@@ -20,2 +20,46 @@ #!/bin/bash

_comet_bash_is_usable() {
local _comet_bash_candidate="$1"
if [ -z "$_comet_bash_candidate" ]; then
return 1
fi
case "$_comet_bash_candidate" in
*/Windows/System32/bash.exe|*/windows/system32/bash.exe|*\\Windows\\System32\\bash.exe|*\\windows\\system32\\bash.exe)
return 1
;;
esac
"$_comet_bash_candidate" -lc 'printf comet-bash-ok' >/dev/null 2>&1
}
_comet_resolve_bash() {
local _comet_bash_candidate
if _comet_bash_is_usable "${COMET_BASH:-}"; then
printf '%s\n' "$COMET_BASH"
return 0
fi
if _comet_bash_is_usable "${BASH:-}"; then
printf '%s\n' "$BASH"
return 0
fi
_comet_bash_candidate="$(command -v sh 2>/dev/null | awk '{ sub(/\/sh(\.exe)?$/, "/bash.exe"); print }')"
if _comet_bash_is_usable "$_comet_bash_candidate"; then
printf '%s\n' "$_comet_bash_candidate"
return 0
fi
_comet_bash_candidate="$(command -v bash 2>/dev/null || true)"
if _comet_bash_is_usable "$_comet_bash_candidate"; then
printf '%s\n' "$_comet_bash_candidate"
return 0
fi
return 1
}
COMET_BASH="$(_comet_resolve_bash || true)"
export COMET_BASH
_comet_env_fail() {

@@ -26,6 +70,12 @@ echo "ERROR: Comet scripts not found. Ensure the comet skill is installed completely." >&2

_comet_bash_fail() {
echo "ERROR: usable bash not found. Install Git Bash or set COMET_BASH to a working bash executable." >&2
echo "Windows WSL launcher bash.exe is not supported for Comet scripts." >&2
}
_comet_env_abort() {
local _comet_env_was_sourced="$_comet_env_sourced"
unset _comet_env_source _comet_script_dir _comet_script _comet_env_missing _comet_env_sourced
unset -f _comet_env_fail
unset _comet_bash_candidate
unset -f _comet_env_fail _comet_bash_fail _comet_bash_is_usable _comet_resolve_bash
if [ "$_comet_env_was_sourced" -eq 1 ]; then

@@ -39,2 +89,6 @@ unset -f _comet_env_abort

_comet_env_missing=0
if [ -z "$COMET_BASH" ]; then
_comet_bash_fail
_comet_env_missing=1
fi
for _comet_script in \

@@ -57,3 +111,4 @@ "$COMET_GUARD" \

unset _comet_env_source _comet_script_dir _comet_script _comet_env_missing _comet_env_sourced
unset -f _comet_env_fail _comet_env_abort
unset _comet_bash_candidate
unset -f _comet_env_fail _comet_bash_fail _comet_bash_is_usable _comet_resolve_bash _comet_env_abort
fi

@@ -10,2 +10,4 @@ #!/bin/bash

COMET_BASH="${COMET_BASH:-${BASH:-bash}}"
red() { echo -e "\033[31m$1\033[0m" >&2; }

@@ -185,3 +187,3 @@ green() { echo -e "\033[32m$1\033[0m" >&2; }

echo "+ $command" >&2
bash -lc "$command"
"$COMET_BASH" -lc "$command"
}

@@ -245,4 +247,4 @@

if [ -f "$validate_script" ]; then
if ! bash "$validate_script" "$CHANGE" 2>/dev/null; then
bash "$validate_script" "$CHANGE"
if ! "$COMET_BASH" "$validate_script" "$CHANGE" 2>/dev/null; then
"$COMET_BASH" "$validate_script" "$CHANGE" || true
red "FATAL: .comet.yaml schema validation failed"

@@ -306,3 +308,3 @@ exit 1

echo "Next: ask the user to choose branch or worktree, create the chosen isolation, then run:" >&2
echo " bash \"\$COMET_STATE\" set $CHANGE isolation <branch|worktree>" >&2
echo " \"\$COMET_BASH\" \"\$COMET_STATE\" set $CHANGE isolation <branch|worktree>" >&2
return 1

@@ -320,4 +322,4 @@ ;;

echo "build_mode must be selected before leaving build, got '${build_mode:-null}'" >&2
echo "Next: ask the user to choose an implementation mode, then run:" >&2
echo " bash \"\$COMET_STATE\" set $CHANGE build_mode <subagent-driven-development|executing-plans>" >&2
echo "Next: ask the user to choose an execution mode, then run:" >&2
echo " \"\$COMET_BASH\" \"\$COMET_STATE\" set $CHANGE build_mode <subagent-driven-development|executing-plans>" >&2
return 1

@@ -344,3 +346,3 @@ ;;

echo "build_mode=direct is only allowed for hotfix/tweak unless direct_override: true is recorded" >&2
echo "Next: switch build_mode to executing-plans or subagent-driven-development, or stop and ask the user for an explicit direct override." >&2
echo "Next: choose executing-plans or subagent-driven-development, or stop and ask the user for an explicit direct override." >&2
return 1

@@ -376,3 +378,3 @@ ;;

echo "handoff_context is missing from .comet.yaml" >&2
echo "Next: run bash \"\$COMET_HANDOFF\" $CHANGE design --write before invoking Superpowers." >&2
echo "Next: run \"\$COMET_BASH\" \"\$COMET_HANDOFF\" $CHANGE design --write before invoking Superpowers." >&2
return 1

@@ -555,6 +557,6 @@ fi

case "$p" in
open) bash "$state_sh" transition "$CHANGE" open-complete ;;
design) bash "$state_sh" transition "$CHANGE" design-complete ;;
build) bash "$state_sh" transition "$CHANGE" build-complete ;;
verify) bash "$state_sh" transition "$CHANGE" verify-pass ;;
open) "$COMET_BASH" "$state_sh" transition "$CHANGE" open-complete ;;
design) "$COMET_BASH" "$state_sh" transition "$CHANGE" design-complete ;;
build) "$COMET_BASH" "$state_sh" transition "$CHANGE" build-complete ;;
verify) "$COMET_BASH" "$state_sh" transition "$CHANGE" verify-pass ;;
esac

@@ -561,0 +563,0 @@ else

@@ -7,2 +7,4 @@ #!/bin/bash

COMET_BASH="${COMET_BASH:-${BASH:-bash}}"
red() { echo -e "\033[31m$1\033[0m" >&2; }

@@ -253,4 +255,4 @@ green() { echo -e "\033[32m$1\033[0m" >&2; }

if [ -x "$STATE_SH" ] || [ -f "$STATE_SH" ]; then
bash "$STATE_SH" set "$CHANGE" handoff_context "$CONTEXT_JSON" >/dev/null
bash "$STATE_SH" set "$CHANGE" handoff_hash "$CONTEXT_HASH" >/dev/null
"$COMET_BASH" "$STATE_SH" set "$CHANGE" handoff_context "$CONTEXT_JSON" >/dev/null
"$COMET_BASH" "$STATE_SH" set "$CHANGE" handoff_hash "$CONTEXT_HASH" >/dev/null
else

@@ -257,0 +259,0 @@ red "ERROR: comet-state.sh not found; cannot record handoff fields"

@@ -208,2 +208,3 @@ #!/bin/bash

build_mode: $build_mode
build_pause: null
isolation: $isolation

@@ -268,3 +269,3 @@ verify_mode: $verify_mode

;;
workflow|build_mode|isolation|verify_mode|verify_result|verification_report|branch_status|archived|design_doc|plan|verified_at|created_at|direct_override|build_command|verify_command|handoff_context|handoff_hash|base_ref)
workflow|build_mode|build_pause|isolation|verify_mode|verify_result|verification_report|branch_status|archived|design_doc|plan|verified_at|created_at|direct_override|build_command|verify_command|handoff_context|handoff_hash|base_ref)
# Valid field

@@ -275,3 +276,3 @@ ;;

red "Valid fields:" >&2
red " workflow, phase, design_doc, plan, build_mode, isolation," >&2
red " workflow, phase, design_doc, plan, build_mode, build_pause, isolation," >&2
red " verify_mode, verify_result, verification_report, branch_status," >&2

@@ -295,2 +296,5 @@ red " verified_at, created_at, archived, base_ref, direct_override," >&2

;;
build_pause)
validate_enum "$value" "null" "plan-ready"
;;
isolation)

@@ -639,3 +643,3 @@ validate_enum "$value" "branch" "worktree"

local design_doc plan verify_result verify_mode verification_report
local branch_status handoff_context handoff_hash isolation build_mode direct_override
local branch_status handoff_context handoff_hash isolation build_mode build_pause direct_override
design_doc=$(cmd_get "$change_name" "design_doc")

@@ -651,2 +655,3 @@ plan=$(cmd_get "$change_name" "plan")

build_mode=$(cmd_get "$change_name" "build_mode")
build_pause=$(cmd_get "$change_name" "build_pause" 2>/dev/null || true)
direct_override=$(cmd_get "$change_name" "direct_override" 2>/dev/null || true)

@@ -697,2 +702,3 @@

field_status "build_mode" "$build_mode"
field_status "build_pause" "$build_pause"
if [ "$build_mode" = "direct" ] && [ "$workflow" != "hotfix" ] && [ "$workflow" != "tweak" ]; then

@@ -717,3 +723,9 @@ field_status "direct_override" "$direct_override"

echo ""
if [ "$isolation" = "null" ] || [ -z "$isolation" ]; then
if [ "$build_pause" = "plan-ready" ] && [ -n "$plan" ] && [ "$plan" != "null" ] && [ -f "$plan" ] && { [ "$isolation" = "null" ] || [ -z "$isolation" ] || [ "$build_mode" = "null" ] || [ -z "$build_mode" ]; }; then
echo "Recovery action: Plan-ready pause detected. Ask the user whether to continue, then choose isolation and build mode without regenerating the plan."
elif [ "$build_pause" = "plan-ready" ] && { [ -z "$plan" ] || [ "$plan" = "null" ] || [ ! -f "$plan" ]; }; then
echo "Recovery action: Plan-ready pause is recorded, but the plan file is missing. Restore the plan file or rerun writing-plans before choosing execution."
elif [ "$build_pause" = "plan-ready" ]; then
echo "Recovery action: Plan-ready pause is stale because build decisions are already selected. Clear build_pause to null, then continue from the first unchecked task."
elif [ "$isolation" = "null" ] || [ -z "$isolation" ]; then
echo "Recovery action: Isolation not selected. Use AskUserQuestion to ask user for branch/worktree choice."

@@ -720,0 +732,0 @@ elif [ "$build_mode" = "null" ] || [ -z "$build_mode" ]; then

@@ -129,2 +129,3 @@ #!/bin/bash

build_mode=$(field_value "build_mode")
build_pause=$(field_value "build_pause")
isolation=$(field_value "isolation")

@@ -144,2 +145,3 @@ verify_mode=$(field_value "verify_mode")

validate_enum "build_mode" "$build_mode" "subagent-driven-development executing-plans direct"
validate_enum "build_pause" "$build_pause" "null plan-ready"
validate_enum "isolation" "$isolation" "branch worktree"

@@ -179,3 +181,3 @@ validate_enum "verify_mode" "$verify_mode" "light full"

# --- Unknown keys check ---
KNOWN_KEYS="workflow phase design_doc plan build_mode isolation verify_mode verify_result verification_report branch_status verified_at created_at archived direct_override build_command verify_command handoff_context handoff_hash base_ref"
KNOWN_KEYS="workflow phase design_doc plan build_mode build_pause isolation verify_mode verify_result verification_report branch_status verified_at created_at archived direct_override build_command verify_command handoff_context handoff_hash base_ref"
while IFS=: read -r key _; do

@@ -182,0 +184,0 @@ key="${key// /}"

@@ -56,5 +56,9 @@ ---

- If there is an active change and the worktree has uncommitted changes, handle them through `comet/reference/dirty-worktree.md`. That protocol defines checks, attribution, and prohibitions; this file does not repeat them
- If `phase: build`, first check whether `build_mode` and `isolation` are set; if any fields are unset, return to `/comet-build` corresponding step to supplement before executing; if both are set, read the next unchecked task from tasks.md and continue
- If `phase: verify` and `verify_result: fail`, enter the verification failure decision blocking point: pause and ask the user to fix or accept deviation; only after the user chooses fix, run `bash "$COMET_STATE" transition <name> verify-fail` and invoke `/comet-build`
- If `phase: open` but proposal/design/tasks are complete, first run `bash "$COMET_GUARD" <change-name> open --apply` to repair state, then continue detection
- If `phase: build`, first check `build_pause`, `plan`, `build_mode`, and `isolation`:
- If `build_pause: plan-ready` and the plan file exists, return to the `/comet-build` plan-ready resume point, prompt the user to continue choosing isolation and execution method, and do not regenerate the plan
- If `build_pause: plan-ready` but the plan file is missing, return to `/comet-build` to handle corrupted state or regenerate the plan
- If `build_mode` or `isolation` is unset, return to the corresponding `/comet-build` step to supplement before executing
- If both are set, read the next unchecked task from tasks.md and continue
- If `phase: verify` and `verify_result: fail`, enter the verification failure decision blocking point: pause and ask the user to fix or accept deviation; only after the user chooses fix, run `"$COMET_BASH" "$COMET_STATE" transition <name> verify-fail` and invoke `/comet-build`
- If `phase: open` but proposal/design/tasks are complete, first run `"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply` to repair state, then continue detection
- If `phase: archive`, only invoke `/comet-archive`; after archive succeeds, the change moves to the archive directory, so do not run guard against the old active directory

@@ -96,3 +100,3 @@

| Sub-skill unavailable | Stop workflow, prompt to install or enable the corresponding skill |
| `.comet.yaml` malformed or missing | Use file state as source of truth, correct with `bash $COMET_STATE set` then continue |
| `.comet.yaml` malformed or missing | Use file state as source of truth, correct with `"$COMET_BASH" "$COMET_STATE" set` then continue |
| Build/test fails | Return to build phase for fixes, do not enter verify |

@@ -115,3 +119,3 @@ | Incomplete change directory structure | Fill missing files according to `comet-open` artifact requirements |

2. Confirm design approach during brainstorming
3. Select workflow configuration during build phase (isolation + execution method, single interaction)
3. Plan-ready pause choice during build phase, followed by workflow configuration selection (isolation + execution method)
4. Decide to fix or accept deviation when verify fails (including Spec drift handling)

@@ -177,2 +181,3 @@ 5. Choose branch handling method for finishing-branch

build_mode: subagent-driven-development
build_pause: null
isolation: branch

@@ -196,2 +201,3 @@ verify_mode: light

| `build_mode` | Selected execution method, can be empty |
| `build_pause` | Internal build-phase pause point. `null` means no pause; `plan-ready` means the plan has been generated and the user chose to pause for switching models |
| `isolation` | `branch` or `worktree`, workspace isolation method. Full workflow init may leave this as `null`, but only until `/comet-build` Step 3; hotfix/tweak default to `branch` |

@@ -218,2 +224,3 @@ | `verify_mode` | `light` or `full`, can be empty |

- `build_mode: direct` is allowed by default only for `hotfix` / `tweak`; full workflow requires `direct_override: true`
- `build_pause` is not an execution method and must not be written to `build_mode`
- These constraints are enforced by both `comet-guard.sh build --apply` and `comet-state.sh transition <name> build-complete`

@@ -244,3 +251,3 @@

```bash
bash "$COMET_GUARD" <change-name> <phase> --apply
"$COMET_BASH" "$COMET_GUARD" <change-name> <phase> --apply
```

@@ -251,8 +258,8 @@

```bash
bash "$COMET_STATE" transition <change-name> open-complete
bash "$COMET_STATE" transition <change-name> design-complete
bash "$COMET_STATE" transition <change-name> build-complete
bash "$COMET_STATE" transition <change-name> verify-pass
bash "$COMET_STATE" transition <change-name> verify-fail
bash "$COMET_STATE" transition <archive-name> archived
"$COMET_BASH" "$COMET_STATE" transition <change-name> open-complete
"$COMET_BASH" "$COMET_STATE" transition <change-name> design-complete
"$COMET_BASH" "$COMET_STATE" transition <change-name> build-complete
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-pass
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
"$COMET_BASH" "$COMET_STATE" transition <archive-name> archived
```

@@ -263,3 +270,3 @@

```bash
bash "$COMET_ARCHIVE" <change-name>
"$COMET_BASH" "$COMET_ARCHIVE" <change-name>
```

@@ -266,0 +273,0 @@

{
"name": "@rpamis/comet",
"version": "0.3.5",
"version": "0.3.6",
"description": "OpenSpec + Superpowers dual-star development workflow",

@@ -5,0 +5,0 @@ "keywords": [

@@ -312,2 +312,3 @@ <p align="center">

build_mode: subagent-driven-development
build_pause: null
isolation: branch

@@ -329,3 +330,3 @@ verify_mode: null

In full workflow, `build_mode`, `isolation`, and `verify_mode` may temporarily be `null`; `build_mode` and `isolation` must be resolved before `build → verify`. `verification_report` stays `null` until verification writes a report, and `verify-pass` requires that report to exist plus `branch_status: handled`. Fields after `archived` in the example are optional or script-derived: `direct_override` is only needed for full-workflow direct builds, project commands may be absent unless configured, and `handoff_context` / `handoff_hash` are recorded by `comet-handoff.sh` before leaving design. Projects can configure `build_command` / `verify_command` in the change or repo root, and guard will run those commands first and print failure output.
In full workflow, `build_mode`, `build_pause`, `isolation`, and `verify_mode` may temporarily be `null`; `build_mode` and `isolation` must be resolved before `build → verify`. `build_pause` records an internal build-phase pause point: `null` means no pause, while `plan-ready` means the plan has been generated and the user paused before choosing isolation and execution mode. It is not an execution mode and must not be written into `build_mode`. `verification_report` stays `null` until verification writes a report, and `verify-pass` requires that report to exist plus `branch_status: handled`. Fields after `archived` in the example are optional or script-derived: `direct_override` is only needed for full-workflow direct builds, project commands may be absent unless configured, and `handoff_context` / `handoff_hash` are recorded by `comet-handoff.sh` before leaving design. Projects can configure `build_command` / `verify_command` in the change or repo root, and guard will run those commands first and print failure output.

@@ -360,2 +361,3 @@ </details>

- `build_mode` must be selected before leaving build
- `build_pause: plan-ready` is a recoverable pause after plan generation, not a `build_mode`
- Full workflow `build_mode: direct` requires `direct_override: true`

@@ -425,3 +427,3 @@

<a href="https://github.com/rpamis/comet/graphs/contributors">
<img src="https://contrib.rocks/image?repo=rpamis/comet&max=999&columns=12&anon=1" />
<img src="https://contrib.rocks/image?repo=rpamis/comet&columns=12&anon=1" />
</a>

@@ -433,4 +435,14 @@

## Community
<p align="center">
<img src="https://github.com/rpamis/comet/blob/master/img/wechat.jpg" alt="WeChat Group" width="200" />
&nbsp;&nbsp;&nbsp;&nbsp;
<img src="https://github.com/rpamis/comet/blob/master/img/qq.jpg" alt="QQ Group" width="200" />
</p>
<p align="center">WeChat Group &nbsp;&nbsp;|&nbsp;&nbsp; QQ Group</p>
## Reference
[LINUX DO - 新的理想型社区](https://linux.do/)