用途:修订某个 OpenSpec 变更的现有规划产物,并保持各产物之间的一致。明确不编辑代码。
选择存储:若用户指定 store(本机注册的独立 OpenSpec 仓库)或工作位于其中,先运行 openspec store list --json 获取已注册 store id,再在读写 spec 与 change 的命令(new change、status、instructions、list、show、validate、archive、doctor、context、schemas、view)上追加 --store <id>;选定后在该工作流余下步骤中持续使用。其余命令不接受该标志。未指定 store 时,命令作用于最近的本地 openspec/ 根目录。
输入:可选指定变更名;省略时可从对话上下文推断;含糊或歧义时必须提示用户从可用变更中挑选。
主要步骤:选择变更;用 openspec status --change "<name>" --json 获取产物状态(含 schemaName、artifacts、isPlanningComplete、路径与作用域上下文);理解请求(具体修订或一致性审查);读取并核对相关产物与其余现有产物,任一方向的修改都可能需要反向修订;只修订已存在的文件(existingOutputPaths),不创建新产物、不在 glob 产物下新增文件。
确认与应用:逐产物展示修订内容与原因,经用户确认后再写入;用户拒绝则不写入。需要大幅重写时,先运行 openspec instructions "<artifact-id>" --change "<name>" --json 获取规则与模板。
后续指引(仅建议,不执行):产物缺失指向 /openspec-continue-change;已实现指向 /openspec-apply-change;全部完成指向 /openspec-archive-change。建议前需确认对应可选工作流是否已安装。
限制与护栏:只处理规划产物,绝不动实现代码;不基于硬编码产物名分支;只编辑 existingOutputPaths 中的具体文件,绝不写入 glob 的 resolvedOutputPath;不推进构建前沿(不新增产物与文件);每次写入前须经用户确认。若请求改变的是变更意图而非细化,先确认 /openspec-new-change 是否可用,可用则建议全新开始,否则要求一个未使用的新名称并建议 openspec new change "<new-change-name>"。输出时说明修订了哪些产物、被拒绝的修订、延后到 /openspec-continue-change 的内容及推荐的下一条命令。