用途: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 及其 requires 依赖边、路径上下文;按依赖顺序对每个产物运行 openspec instructions <artifact-id> --change "<name>" --json,读取 template、instruction、resolvedOutputPath 与依赖文件后写入产物;每写完一个重新检查状态,最后运行 openspec status --change "<name>" 汇总。
适用场景:需要快速产出结构化变更提案、规格增量、设计说明与任务清单,供评审后再进入实施阶段。
限制:该工作流仅授权规划,即使用户要求直接实现也不得编辑项目代码或启动 apply;产物就绪后必须停止,等待新的用户请求再进入 apply 工作流。必须创建 apply 阶段传递依赖的全部产物,而不只是 apply.requires 列出的 id;status 只反映文件是否存在,需按 requires 边判断依赖。已标记 skipped 的产物不得创建。存在会实质影响范围、外部行为、兼容性或验收标准的歧义时须先询问用户,次要细节可合理假设并记录。若同名变更已存在,需询问是继续还是新建。context 与 rules 是约束,不得写入产物文件。