# Comet Open

创建 Classic change，整理需求并请用户确认。在用户调用 /comet-open，或 Classic 进入 Open、恢复初始化时使用。

- Repository: https://github.com/rpamis/comet (3263 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add rpamis/comet --skill comet-open -g -a claude-code -y`
Codex: `npx skills add rpamis/comet --skill comet-open -g -a codex -y`
Cursor: `npx skills add rpamis/comet --skill comet-open -g -a cursor -y`
Gemini CLI: `npx skills add rpamis/comet --skill comet-open -g -a gemini-cli -y`

## Description

创建 Classic change，整理需求并请用户确认。在用户调用 /comet-open，或 Classic 进入 Open、恢复初始化时使用。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Comet 阶段 1：开启（Open）

首次进入阶段、交接给新 Agent 或上下文恢复后，读取并执行 [任务上下文与产物语言](../comet-classic/reference/scripts.md#任务上下文与产物语言)，优先采用当前 continuation 或已领取 Action 的 `contextRequest`；同一阶段连续执行不重复获取。

开始或恢复任务前，必须先读取并遵守 `comet-classic/reference/classic-layout.md`。本文件中的 OpenSpec CLI 调用必须通过适配器执行，文件路径必须基于该协议绑定的 `<classic-*>` 逻辑根目录。

## 前置条件

- 无活跃 change，或用户希望创建新 change

## 步骤

### 0. 设置输出语言

向 OpenSpec 传递提问和文档生成要求时，都必须明确指定 Comet 配置的产物语言，使用 `en`、`zh-CN` 这类规范化 ID。change 尚未初始化时，依次读取项目 `.comet/config.yaml` 和全局 `~/.comet/config.yaml` 的 `classic.language`；初始化后，复用当前有效响应中的 `configuration.language`；缺少时才使用 `comet state get <name> language` 读取。没有配置语言时，才采用当前用户请求的语言。生成的 `proposal.md`、`design.md`、`tasks.md` 必须以该语言为主。

### 0a. 当前 change 绑定

响应已有 `agent.continuation.mode` 时，先按 `comet-classic/reference/auto-transition.md` 处理；`wait` 按 auto-transition.md 区分手动衔接和原任务等待，不能因兼容字段 `nextAction.kind: reconcile` 再做恢复查询。使用当前响应的命令与输入；Skill 工作实际完成后才使用 `completion` 提交。下文依据 `nextAction.kind` 的恢复规则仅用于没有 `mode` 的旧响应。

恢复已有 change 时，复用同一工作区和 Run 的最新有效 continuation 与归属；冷恢复、外部状态变化或信息缺失时才运行 `comet state next <name> --json`，再按 `data.runtimeFormat` 处理：

- `sdk`：复用现有 Run，按 `data.nextAction.kind` 恢复；已领取但结果未明的 Action 先核对原结果，不重新创建 change 或重发外部工作。
- `compat`：复用原流程和 `.comet.yaml`；不能自动把该 change 改建为 SDK Run。
- 命令失败：核对错误、归属记录、Run 和实际状态文件。归属冲突或状态格式异常时停止并报告；若本地 Run 记录丢失，先检查状态文件中的 `run_checkpoint`，按 `/comet-classic` 的恢复步骤沿用已保存阶段。旧状态没有检查点且用户明确同意重启时，才回到 Open 重新核对证据和确认。只有证实尚无任何 Runtime 归属、change 目录有效时，才按所选隔离方式准备工作区并初始化。不得因缺少某一个文件名就重新初始化。

SDK 与旧 change 在冷恢复、工作区变化或绑定信息缺失时，通过以下命令核对并绑定工作区；已有有效选择和 projectRoot 时直接复用：

```bash
comet classic workspace resolve <change-name> --json
# 进入返回的 projectRoot
comet state select <change-name>
```

创建新 change 时，在创建 OpenSpec 基础目录后立即初始化 SDK Run，再运行上述 select 命令；初始化前不得手工写入 change 选择记录。

### 0b. Open 前工作区决策与准备

创建 Classic change 时，读取 `comet-classic/reference/workspace.md`。必须先确定工作区，再创建 OpenSpec 产物和 SDK Run，不能推迟到 Build：

The rest: https://github.com/rpamis/comet/blob/HEAD/assets/skills-zh/comet-open/SKILL.md
