用途
openspec-propose 用于在 OpenSpec 工作流中提出一个新的变更。当用户想快速描述要构建或修复的内容,并希望一次性获得完整提案时使用。该工作流只创建规划产物,不编辑项目代码。
主要能力
- 根据用户描述派生 kebab-case 变更名称(例如 "add user authentication" → add-user-auth)。
- 使用配置的默认 schema 或用户显式指定的 schema 创建变更目录。
- 按依赖顺序生成 schema 定义的全部产物。默认 spec-driven schema 包括:
- proposal.md(做什么与为什么)
- specs/<capability-path>/spec.md(系统必须做什么——增量,而非主规格)
- design.md(如何实现)
- tasks.md(实现步骤)
- 支持已注册的 store:通过 openspec store list --json 发现 store id,并在读写规格与变更的命令上附加 --store <id>。
- 通过 openspec status --change "<name>" --json 获取产物构建顺序、依赖边、路径与作用域上下文。
- 通过 openspec instructions <artifact-id> --change "<name>" --json 获取每个产物的模板、规则、指令与输出路径。
使用方式
- 用户提供变更名称(kebab-case)或描述。若输入不清晰,技能会询问:"What change do you want to work on? Describe what you want to build or fix."
- 若存在会实质影响范围、外部可观察行为、兼容性或验收标准的歧义,先向用户确认;次要细节可做合理假设并记录在规划产物中。
- 确定工作流 schema:默认使用配置的默认 schema;用户显式指定名称时使用 --schema <schema-name>;用户询问有哪些工作流时,先运行 openspec context --json 解析权威根,再在返回的 root.path 下运行 openspec schemas --json 让用户选择。
- 创建变更目录:
- 默认:openspec new change "<name>"
- 指定 schema:openspec new change "<name>" --schema "<schema-name>"
- 获取产物构建顺序:openspec status --change "<name>" --json,解析 applyRequires、artifacts、planningHome、changeRoot、artifactPaths、actionContext。
- 按依赖顺序创建所需集合中的每个产物:
- 对就绪产物运行 openspec instructions <artifact-id> --change "<name>" --json。
- 从磁盘重新读取已完成的依赖产物(即使用户之前看过,也可能已被编辑)。
- 若 instruction 字段委托给特定技能或命令,调用它生成产物,然后验证文件存在于 resolvedOutputPath。
- 否则使用 template 作为结构,写入 resolvedOutputPath;若为 glob,按 instruction 选择具体路径。
- context 与 rules 是约束,不得复制进文件。
- 显示简要进度:"Created "。
- 每创建一个产物后重新运行 openspec status --change "<name>" --json。
- 所需集合为 applyRequires 加上从这些产物沿 requires 边可达的全部产物(传递闭包)。status 仅反映文件是否存在,因此需依据 requires 边而非 status 构建集合。
- 仅当 status 报告 skipped,或其 instruction 标记为可选时才跳过产物。spec-driven 的 design.md 符合条件;specs 仅通过 skipped 状态符合,不得自行判断。
- 若产物需要用户输入(上下文不清),询问用户后继续。
- 显示最终状态:openspec status --change "<name>"。
输出
完成所有产物后,总结:
- 变更名称与位置
- 已创建产物列表及简要描述,以及跳过的条件产物及原因
- 就绪状态:"All artifacts needed for implementation are ready."
- 提示:"The artifacts are ready for review. When you are ready, run $openspec-apply-change (Codex) or /openspec-apply-change (other agents) or ask me to apply this change."
适用场景
- 用户想快速描述要构建或修复的内容并获得完整提案。
- 需要生成规划产物(提案、规格增量、设计、任务)而不立即实现。
- 使用 OpenSpec 管理规格与变更的项目。
- 使用已注册 store 的独立 OpenSpec 仓库。
限制
- 该工作流仅授权规划。即使用户请求中包含构建或修复指令,也不得编辑项目代码、启动 apply 工作流或在同一响应中开始实现。
- 展示产物后必须停止,等待用户新的请求再启动 apply 工作流。
- 不得跳过 specs 产物,除非 status 报告 skipped。
- 不得将 context、rules、project_context 块复制进产物。
- 若同名变更已存在,需询问用户是继续还是新建。
- 写入每个产物后需验证文件存在再继续。
- 其他命令不接受 --store 标志。
- 关于收费、价格、平台、效果等具体信息暂未提供。