用途:openspec-propose 是 OpenSpec 的规划类技能,用于根据用户描述快速创建一个新变更,并一次性生成该变更所需的全部规划产物。它只负责规划,不负责实现。
主要能力:按 schema 定义生成产物。默认 spec-driven schema 包含 proposal.md(做什么与为什么)、specs/<capability-path>/spec.md(系统必须做什么,是增量而非主 spec)、design.md(怎么做)、tasks.md(实施步骤)。支持通过 --schema 指定其他工作流 schema,也支持已注册 store(用 openspec store list --json 发现 id,并在读写命令上追加 --store <id>,选定后保持粘性)。
使用方式:先明确用户要构建或修复的内容,推导 kebab-case 变更名;用 openspec new change "<name>" 创建变更目录;用 openspec status --change "<name>" --json 获取 applyRequires、artifacts 及依赖边;按依赖顺序对每个就绪产物运行 openspec instructions <artifact-id> --change "<name>" --json,读取 template、instruction、resolvedOutputPath 等,读取已完成的依赖文件后写入产物;每写完一个重新运行 status,直到必需集合全部完成;最后运行 openspec status --change "<name>" 并汇总。
适用场景:用户想快速描述要构建的内容并获得完整提案时;需要按规范驱动流程产出规划文档时。
限制:该工作流仅授权规划,不得编辑项目代码、不得启动 apply 工作流;产物呈现后应停止,等待用户新请求再进入 apply。context 与 rules 是给执行者的约束,不得写入产物文件。status 仅反映文件是否存在,需依据 requires 边构建必需集合。若变更声明 skip_specs,对应产物不得创建。存在会实质影响范围、外部行为、兼容性或验收标准的歧义时应先询问用户;次要细节可合理假设并记录。若同名变更已存在,需询问是继续还是新建。其他细节资料未提供。