SuperAPI AI 工具集

openspec-propose

编程与开发

查看项目

更新于 10-16 04:04

技能介绍

用途

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 获取每个产物的模板、规则、指令与输出路径。

使用方式

  1. 用户提供变更名称(kebab-case)或描述。若输入不清晰,技能会询问:"What change do you want to work on? Describe what you want to build or fix."
  2. 若存在会实质影响范围、外部可观察行为、兼容性或验收标准的歧义,先向用户确认;次要细节可做合理假设并记录在规划产物中。
  3. 确定工作流 schema:默认使用配置的默认 schema;用户显式指定名称时使用 --schema <schema-name>;用户询问有哪些工作流时,先运行 openspec context --json 解析权威根,再在返回的 root.path 下运行 openspec schemas --json 让用户选择。
  4. 创建变更目录:
    • 默认:openspec new change "<name>"
    • 指定 schema:openspec new change "<name>" --schema "<schema-name>"
  5. 获取产物构建顺序:openspec status --change "<name>" --json,解析 applyRequires、artifacts、planningHome、changeRoot、artifactPaths、actionContext。
  6. 按依赖顺序创建所需集合中的每个产物:
    • 对就绪产物运行 openspec instructions <artifact-id> --change "<name>" --json。
    • 从磁盘重新读取已完成的依赖产物(即使用户之前看过,也可能已被编辑)。
    • 若 instruction 字段委托给特定技能或命令,调用它生成产物,然后验证文件存在于 resolvedOutputPath。
    • 否则使用 template 作为结构,写入 resolvedOutputPath;若为 glob,按 instruction 选择具体路径。
    • context 与 rules 是约束,不得复制进文件。
    • 显示简要进度:"Created "。
    • 每创建一个产物后重新运行 openspec status --change "<name>" --json。
  7. 所需集合为 applyRequires 加上从这些产物沿 requires 边可达的全部产物(传递闭包)。status 仅反映文件是否存在,因此需依据 requires 边而非 status 构建集合。
  8. 仅当 status 报告 skipped,或其 instruction 标记为可选时才跳过产物。spec-driven 的 design.md 符合条件;specs 仅通过 skipped 状态符合,不得自行判断。
  9. 若产物需要用户输入(上下文不清),询问用户后继续。
  10. 显示最终状态: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 标志。
  • 关于收费、价格、平台、效果等具体信息暂未提供。