用途:在 OpenSpec 变更流程中继续推进工作,按当前 schema 的顺序创建下一个产物(artifact)。适用于用户希望推进变更、创建下一个产物或继续未完成工作时。
主要能力:
- 选择变更:若未提供变更名,运行 openspec list --json 获取按最近修改排序的变更,用 AskUserQuestion 让用户选择,展示名称、schema、状态与修改时间,并标记最近修改项为推荐;不得猜测或自动选择。
- 查看状态:openspec status --change "<name>" --json,解析 schemaName、artifacts(done/ready/blocked)、isComplete,以及 planningHome、changeRoot、artifactPaths、actionContext 等路径与范围信息。
- 获取指令:openspec instructions <artifact-id> --change "<name>" --json,解析 context、rules、template、instruction、resolvedOutputPath、dependencies。
- 创建产物:读取已完成依赖文件,按 template 结构填写,遵守 context 与 rules 约束但不写入文件,写入 resolvedOutputPath;若为 glob 模式则据 schema 指令与变更上下文选择具体路径。
- 完成后运行 openspec status --change "<name>" 展示进度与已解锁产物。
Store 选择:若用户指定 store 或工作位于某个 store,先运行 openspec store list --json 获取已注册 store id,再在读写 specs 与 changes 的命令(new change、status、instructions、list、show、validate、archive、doctor、context)上加 --store <id>;其他命令不接受该标志。命令提示中已带该标志时,后续命令需保留。未指定 store 时,命令作用于最近的本地 openspec/ 根目录。
常见 schema 模式(spec-driven:proposal → specs → design → tasks):proposal.md 填写 Why、What Changes、Capabilities、Impact,Capabilities 中每项能力需对应一个 spec 文件;specs/<capability>/spec.md 按能力名而非变更名创建;design.md 记录技术决策与实现方案;tasks.md 拆分为复选框任务。其他 schema 以 CLI 输出的 instruction 字段为准。
限制与约束:每次调用只创建一个产物;创建前必须读取依赖产物;不得跳过或乱序创建;上下文不清时先询问用户;写入后需确认文件存在再标记进度;使用 schema 的产物顺序,不假设具体产物名;context 与 rules 是给执行者的约束,不得复制 <context>、<rules>、<project_context> 块到产物中。若所有产物完成,则祝贺用户、展示最终状态并建议实现或归档后停止;若无 ready 产物(全部 blocked),展示状态并建议检查问题。