使用 Classic 预设流程修复局部缺陷。在用户明确调用 /comet-hotfix、选择 hotfix,或恢复 workflow: hotfix 时使用。
开始或恢复任务前,必须先读取并遵守 comet-classic/reference/classic-layout.md。本文件中的 OpenSpec CLI 调用必须通过适配器执行,文件路径必须基于该协议绑定的 <classic-*> 逻辑根目录。
快速缺陷修复流程:open → build → 根因消除检查 → verify → archive。跳过 brainstorming 和完整实施计划,适用于修复已有行为、不需要设计新功能的场景。
适用条件(必须全部满足):
不适用:修复过程中如发现「升级判定」章节列出的变化,需要由用户决定是否改用完整 /comet-classic 流程。
精简版 OpenSpec 产物必须使用 Comet 配置产物语言。.comet.yaml 尚不存在时依次读取项目 .comet/config.yaml 和全局 ~/.comet/config.yaml 的 classic.language,初始化后使用 comet state get <name> language 读取。
执行顺序:open → build → 根因消除检查 → verify → archive。Hotfix 预设各阶段的执行方式:创建必要文档后直接构建,检查根因是否消除,按规模选择验证方式,验证通过后进入归档前的最终确认。
开始前,按 comet-classic/reference/scripts.md 使用正式支持的 Comet CLI;从任意入口恢复任务时,先按 comet-classic/reference/context-recovery.md 检查 phase/workflow。
恢复已有 hotfix change 时,第一项状态操作必须是 comet state select <change-name>;创建新 change 时,在 .comet.yaml 初始化成功后立即运行该命令,再进入源码写入步骤。
进入 hotfix 工作区并读取当前状态 phase 后,运行 comet task <project-root> --task "<用户原始请求>" --phase "<phase>" --session "<本次任务稳定标识>" --json,按以下规则使用返回的上下文:
text 加入当前上下文。Context Manifest(manifest / <context_manifest>)只包含摘要、应用原因和固定 ID;需要正文、来源或验证方式时,增加 --expand-context "<id>"。路径、操作或阶段变化后,使用同一 --session 重新选择适用条目。comet memory remember ... --scope global|project。对于用户未明确要求记忆、但可重复采用且相对稳定的协作方式,才调用 comet memory observe;不得保存任务摘要、进展、命令输出或测试结果。comet knowledge remember <project-root> --title "<简明标题>" --text "<现象、做法、验证结果>" --type <fact|decision|pattern|procedure|constraint|failure-resolution> --json。同一标题默认更新已有条目;没有可复用经验时跳过,任务摘要、一次性命令输出和未验证的猜测不得写入项目记忆。applications[].applicationId(Hook 文本中的 application_id),运行 comet task <project-root> --task "<用户原始请求>" --application "<application-id>" --outcome used-successfully|ignored|overridden|corrected|contributed-to-failure --json,记录使用结果。comet memory observe,再在完成命令中传 --learning-check submitted;确认没有合格观察时传 --learning-check no-observation,没有执行检查时传 --learning-check not-run。观察 JSON 的 learning.result 和 status.learning.lastCheck 用于区分候选、晋级、去重和跳过;不要提交任务摘要或测试结果。--complete --workflow <workflow> --change <change-id> --learning-check submitted|no-observation|not-run 的 comet task。没有 Hook 时,由本 Skill 调用相同接口;comet memory context 只作为兼容入口。插件失败不阻断缺陷修复。复用 Comet open 创建 change,并采用 hotfix 默认配置:不执行 openspec-explore 的完整探索,直接创建修复所需的文档。
立即执行: 使用 Skill 工具加载 openspec-new-change 技能。禁止跳过此步骤。
外部 OpenSpec Skill 适配规则: 加载后,不执行其中直接运行官方 CLI、采用固定 cwd 或读写固定 OpenSpec 目录的指令。所有 OpenSpec 命令改用 comet classic openspec -- <args...>,所有 change 与产物路径改用本轮绑定的 <classic-*> 逻辑根目录。
开始工作时,先由用户选择工作区隔离方式,不能默认写入 current(选 worktree 时必须先决定隔离,再初始化状态——change 目录在初始化后才存在,事后补选 worktree 会因目录不在 worktree 中而失败)。按 comet-classic/reference/decision-point.md 暂停,以单选题让用户选择:
--isolation current,如实绑定当前分支)hotfix/YYYYMMDD/<change-name>(--isolation branch)using-git-worktrees 技能,由该技能创建隔离工作区(--isolation worktree)随后准备工作区并在返回的 projectRoot 中初始化与选中 change(中断后恢复亦按此顺序):
comet classic workspace prepare <name> --isolation <selected-isolation> --json
cd <返回的 projectRoot>
comet state init <name> hotfix --isolation <selected-isolation>
comet state select <name>
comet state check <name> open多条只读 comet 命令(如 state get、state next、state artifacts)可以合并成一条 shell 调用依次执行,减少进程启动开销。
若上述 select / check 输出 BLOCKED 或分支绑定 ERROR,且原因是 bound_branch 与当前分支不一致,立即按 comet-classic/reference/decision-point.md 暂停,让用户单选:切回绑定分支后重新运行入口验证,或在用户明确确认当前分支应接管该 change 后运行 comet state rebind <change-name> 并重新入口验证。不得自行切换分支,不得自行换绑。
随后按指引创建精简版产物:
proposal.md — 问题描述 + 根因分析 + 修复目标(无需方案对比)design.md — 修复方案(1 个即可,无需多方案对比)tasks.md — 修复任务清单阶段守卫完成 open → build 过渡:
comet guard <change-name> open --apply检查 auto_transition 决定是否继续:
comet state next <name>NEXT: auto → 继续 Step 2NEXT: manual → 按 HINT 交还控制权并结束当前调用;不要再询问用户是否继续使用 hotfix 默认值:build_mode: direct、tdd_mode: direct、review_mode: off。isolation 必须沿用 Step 1 中用户已确认的工作区隔离方式,不得自行改回 current。
direct 表示不采用完整的规划和逐任务 TDD 流程,仍然必须复现问题、运行回归测试并完成验证。跳过 Superpowers brainstorming 和 writing-plans;任务数量本身不触发 /comet-build。任务较多时,仍按当前 hotfix 的 tasks.md 顺序执行。只有出现后文列出的升级条件,或文件数超过提示阈值且没有有效授权时,才交给用户决定是否改用 full。
开始或继续修改前,按 comet-classic/reference/dirty-worktree.md 处理未提交改动。确认改动归属后,如发现修复涉及下文列出的升级条件,或改动文件数超过提示阈值,按本文件「升级判定」处理。
修改实现前,必须先复现问题并记录失败证据:
完成 RED 证据后,按 tasks.md 逐个执行任务:
<classic-change-dir>/tasks.md,获取未完成任务列表mvn spotless:apply、npm run format 等)- [ ] 勾选为 - [x]fix: <简述修复>执行 hotfix 期间,只要运行程序、测试、构建或手动验证时出现崩溃、异常行为、测试失败或构建失败,必须使用 Skill 工具加载 Superpowers systematic-debugging 技能。在完成根因调查前,不得提出或实施源码修复。
根因调查、最小失败测试、修复后的验证,以及如何在当前 change 中完成这些步骤,均按 comet-classic/reference/debug-gate.md 执行。
如修复影响已有 spec 验收场景:
<classic-change-dir>/specs/<capability>/spec.md 创建 delta spec## MODIFIED Requirements 部分在运行 build guard 之前执行,确保修复确实消除了问题根因:
升级判定信号:
根因确认消除后,运行阶段守卫完成 build → verify 过渡:
comet guard <change-name> build --apply状态文件自动更新为 phase: verify、verify_result: pending,然后进入验证。
复用 /comet-verify,由 comet-verify 的规模评估决定轻量或完整验证。
立即执行: 使用 Skill 工具加载 comet-verify 技能。禁止跳过此步骤。
无 delta spec 的小范围 hotfix 通常满足轻量验证条件(≤ 3 tasks、改动文件数低于 scale 阈值),按 comet-verify 的轻量验证清单逐项检查;默认 review_mode: off 时,不自动安排代码审查。若用户希望增加审查,可在验证前运行 comet state set <name> review_mode standard 或 thorough。若 hotfix 创建了 delta spec,则根据 comet-verify 的规模评估规则进入完整验证路径。
验证通过后,按 /comet-verify 的规则将 .comet.yaml 的 verify_result 记录为 pass,归档前不得跳过该状态。验证通过后仍必须进入 /comet-archive 的归档前最终确认,不得自动运行归档脚本。
复用 /comet-archive。归档前必须满足 .comet.yaml 中 verify_result: pass,并等待 /comet-archive 的归档前最终确认。
立即执行: 使用 Skill 工具加载 comet-archive 技能进行归档。禁止跳过此步骤。
如有 delta spec,按 comet-archive 规则同步到 main spec,并处理关联 Design Doc 与 Plan 的归档标注。
/comet-classic 流程执行顺序:快速开启 → 直接构建 → 根因消除检查 → 验证 → 归档 → 完成
每个阶段完成后立即进入下一阶段。阶段内部仍必须按上文要求调用对应 Comet/OpenSpec/Superpowers skill,被调用的 skill 如有自己的用户决策点,按该 skill 规则执行。
hotfix 的升级判定只决定是否从预设流程转为 full。文件数量不会自动触发升级。comet state scale 只建议采用轻量还是完整验证,不写入配置;最终由 Verify 根据实际风险选择。
如果 /comet-classic 入口已传入需求意图摘要(intent frame),hotfix 在 build 前只复核 risk_signal,以及是否新增功能、引入公共 API、修改结构化数据格式(schema)、需要跨模块协调或涉及深层架构问题。出现这些情况时,按本节请用户决定是否升级,不重新判断入口已经识别的用户意图。
修复过程中,持续检查是否出现以下需要重新评估流程的变化:
出现任一情况时,Agent 不得自行升级,也不得自行决定继续使用 hotfix。
文件数量只触发范围复核,不等同于实质升级信号。改动文件数超过提示阈值(如 > 4 个文件)时,先统计当前 change 的交付文件,再按下文检查是否存在有效的用户授权;文件多不代表一定需要完整流程。缺陷修复通常集中在 1-3 个文件,超过阈值说明涉及范围偏大,需要复核是否仍适合预设流程。
交付文件只包括源码、测试、用户文档、配置和生成物。统计覆盖确认基线之后已提交的变更、暂存、未暂存和未跟踪文件,并按路径去重;排除当前 change 目录中的 OpenSpec 产物、.comet 元数据以及与当前 change 无关的脏文件。不能把 OpenSpec 产物或无关脏文件计入阈值,也不能因为文件数量较少而跳过实质升级信号检查。
只有当前 change 的用户明确授权“范围、风险不变且仅文件数超限时继续”,才能建立或复用授权。普通开始修复、调用 Skill、历史偏好或 Personal Memory 都不是授权。授权记录只写入 <classic-change-dir>/.comet/rulings.md,并使用以下稳定结构;change 目录尚未初始化时,先保留待写入状态,不能假定授权已经成立:
### Preset file-count authorization
- status: active|invalidated
- workflow: hotfix
- decision: continue-on-file-count-only
- scope: <当前 change 已确认的范围>
- allowed-file-categories: implementation, tests, user-docs, config, generated
- authorization-basis: user-explicit
- reason: <用户授权依据和继续理由>没有有效 ruling 的首次超过阈值时,仍按 comet-classic/reference/decision-point.md 暂停并让用户选择继续 hotfix(选项 A)或升级 full(选项 B)。只有用户明确选择 A,并明确说明范围、风险不变且仅文件数超限,才写入上述 ruling;后续同一范围内的文件增长可以复用 status: active 的记录而不重复提问。已有有效授权时不提问,但必须先报告文件总数、分类、与确认范围的对应关系、ruling 记录位置,以及没有命中实质升级信号的依据,然后继续 hotfix;验证深度仍按实际风险和 comet state scale 的建议决定。
恢复任务时,先读取当前 change 的 ruling。有效的 status: active 记录按同样条件继续;status: invalidated、缺失、不可读、含糊或与当前 scope 不匹配时,必须暂停并重新提供继续 hotfix 或升级 full 的选择。
只有同时满足以下条件,status: active 才有效:workflow 与当前 hotfix 匹配,scope、验收和风险假设没有变化,所有新增交付文件仍在 allowed-file-categories 内,且当前触发原因只有文件数超限。用户撤销授权、切换 workflow、范围或验收变化、出现新的模块/API/schema/capability/架构问题(例如新增公共 API、修改结构化数据格式(schema)),或文件落到授权类别之外时,必须把记录标为 status: invalidated 并回到暂停流程。rulings.md 缺失、不可读、含糊或已失效时,无有效授权时必须暂停;升级到 full 时也将记录标为 status: invalidated,之后不得继续复用该授权。
因此,出现任何实质升级信号,或没有有效授权而改动文件数超过提示阈值时,必须按 comet-classic/reference/decision-point.md 暂停并等待用户明确选择。不得直接进入 /comet-design,也不得自动补充 Design Doc。
用户选择升级(选项 B)后,运行状态机提供的升级命令,将预设流程转为 full,并回到 design 阶段:
comet state transition <name> preset-escalate该命令会原子地将 workflow/classic_profile 设为 full、将 phase 改为 design、清空 design_doc,并清除预设专属的 build_mode、tdd_mode、review_mode、isolation、verify_mode,同时清空 bound_branch 等工作区绑定——升级后必须在进入 build 前按 comet-classic/reference/decision-point.md 重新决定隔离方式并重新绑定(state set <name> isolation ...),否则 guard 会以 isolation 缺失拦截。然后,立即使用 Skill 工具加载 comet-design skill,在当前 change 的基础上补充 Design Doc。进入 build 后,必须在同一轮提问中重新确认完整的工作方式配置。
用户选择继续(选项 A)时,只有在用户明确确认范围和风险不变且仅文件数超限时,才继续 hotfix,并按上述结构记录用户授权依据和继续理由;仅说“开始修复”或“继续”而没有这项授权语义时,仍按暂停流程等待澄清。
comet guard <change-name> build --apply,verify → archive 前按 /comet-verify 规则运行 comet guard <change-name> verify --apply按 comet-classic/reference/auto-transition.md 和成功结果中的 agent.continuation 继续。已有仍然有效的状态信息时,不重复 next、select 或 check。只有丢失上下文后恢复任务、外部状态变化,或旧结果未提供这些信息时,才运行:
comet state next <name>NEXT: auto → 调用 SKILL 指向的 skill 继续 hotfix 流程(phase: build 返回 comet-hotfix,verify 返回 comet-verify,archive 返回 comet-archive)NEXT: manual → 不调用下一 skill,按 HINT 交还控制权并结束当前调用;不再创建确认点NEXT: done → 流程已完成,无需继续899d1fb
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.