用途:openspec-propose 是 OpenSpec 的规划工作流技能,用于在一步内创建新变更并生成全部规划产物。它只做规划,不修改项目代码;即使用户请求中包含实现或修复意图,该请求也只授权规划。产物完成后应停止,等待用户新请求再启动 apply 工作流。
主要能力:按 schema 生成产物。默认 spec-driven schema 包括 proposal.md(做什么与为什么)、specs/<capability-path>/spec.md(系统必须做什么,是增量而非主 spec)、design.md(怎么做)、tasks.md(实现步骤)。<capability-path> 是相对 specs/ 的目录,如 user-auth 或 identity/user-auth。
使用方式:输入需包含 kebab-case 变更名或需求描述,否则先询问用户。若存在影响范围、外部行为、兼容性或验收标准的歧义,先澄清。创建变更目录:openspec new change "<name>",指定 schema 时加 --schema "<schema-name>"。获取产物构建顺序:openspec status --change "<name>" --json,解析 applyRequires、artifacts 及其 requires 依赖边。按依赖顺序逐个获取指令:openspec instructions <artifact-id> --change "<name>" --json,读取 template、instruction、resolvedOutputPath、dependencies,写入产物文件。每创建一个产物后重新运行 status。最终运行 openspec status --change "<name>" 并汇总。
Store 选择:若用户指定 store 或工作位于其中,先运行 openspec store list --json 获取 id,再在读写 specs 与 changes 的命令上追加 --store <id>,并保持粘性。
限制:不得编辑项目代码、不得启动 apply 工作流;context 与 rules 是约束,不得写入产物文件;必须从磁盘重读依赖产物;status 仅反映文件是否存在,需按 requires 边构建必需集合;已标记 skipped 的产物不得创建;design.md 等条件性产物仅在指令标记可选时跳过。