SuperAPI AI 工具集

openspec-propose

编程与开发

查看项目

更新于 10-16 09:03

技能介绍

用途

openspec-propose 用于提出一个新的变更,并在一步中生成全部产物。当用户想要快速描述要构建的内容并获得一份完整提案时,适合使用该技能。

主要能力

该技能会创建一个变更,并生成以下产物:

  • proposal.md(做什么与为什么)
  • design.md(怎么做)
  • tasks.md(实现步骤)

当准备实现时,运行 /opsx:apply。

使用方式

输入

用户的请求应包含一个变更名称(kebab-case),或一段关于想要构建内容的描述。

步骤

  1. 如果未提供清晰输入,询问用户想要构建什么。使用 AskUserQuestion 工具(开放式、无预设选项)提问:“What change do you want to work on? Describe what you want to build or fix.” 根据描述推导出 kebab-case 名称(例如 “add user authentication” → add-user-auth)。重要:在未理解用户想要构建什么之前,不要继续。

  2. 创建变更目录:

openspec new change "<name>"

这会在由 CLI 通过 .openspec.yaml 解析出的规划主目录中创建一个脚手架变更。

  1. 获取产物构建顺序:
openspec status --change "<name>" --json

解析 JSON 以获取:

  • applyRequires:实现前所需的产物 ID 数组(例如 ["tasks"])
  • artifacts:所有产物及其状态和依赖的列表
  • planningHome、changeRoot、artifactPaths 和 actionContext:路径与作用域上下文。使用这些而不是假设仓库本地路径。
  1. 按顺序创建产物,直到可应用(apply-ready):

使用 TodoWrite 工具跟踪产物进度。按依赖顺序遍历产物(先处理没有待处理依赖的产物):

a. 对于每个已就绪(依赖已满足)的产物:

获取指令:

openspec instructions <artifact-id> --change "<name>" --json

指令 JSON 包含:

  • context:项目背景(对你的约束——不要包含在输出中)
  • rules:产物特定规则(对你的约束——不要包含在输出中)
  • template:用于输出文件的结构
  • instruction:针对该产物类型的 schema 特定指导
  • resolvedOutputPath:写入产物的解析路径或模式
  • dependencies:用于读取上下文的已完成产物

读取任何已完成的依赖文件以获取上下文。使用 template 作为结构创建产物文件,并写入 resolvedOutputPath。将 context 和 rules 作为约束应用——但不要将它们复制到文件中。显示简要进度:“Created ”。

b. 继续直到所有 applyRequires 产物完成。

创建每个产物后,重新运行:

openspec status --change "<name>" --json

检查 artifacts 数组中 applyRequires 的每个产物 ID 是否状态为 "done"。当所有 applyRequires 产物完成后停止。

c. 如果某个产物需要用户输入(上下文不清晰):

使用 AskUserQuestion 工具进行澄清,然后继续创建。

  1. 显示最终状态:
openspec status --change "<name>"

输出

完成所有产物后,总结:

  • 变更名称和位置
  • 已创建产物的列表及简要描述
  • 就绪状态:“All artifacts created! Ready for implementation.”
  • 提示:“Run /opsx:apply or ask me to implement to start working on the tasks.”

Store 选择

如果用户指定了一个 store(store 是注册在本机上的独立 OpenSpec 仓库),或者工作位于某个 store 中,运行 openspec store list --json 以发现已注册的 store id,然后在读取或写入 specs 和 changes 的命令上传递 --store <id>(new change、status、instructions、list、show、validate、archive、doctor、context)。其他命令不接受该标志。命令打印的提示已经带有该标志;在后续操作中保留它。没有 store 时,命令作用于最近的本地 openspec/ 根目录。

产物创建指南

  • 遵循 openspec instructions 中针对每种产物类型的 instruction 字段
  • schema 定义了每个产物应包含的内容——遵循它
  • 在创建新产物之前,读取依赖产物以获取上下文
  • 使用 template 作为输出文件的结构——填写其各个部分
  • 重要:context 和 rules 是对你的约束,不是文件内容
  • 不要将 <context>、<rules>、<project_context> 块复制到产物中
  • 这些指导你写什么,但绝不应出现在输出中

护栏

  • 创建实现所需的所有产物(由 schema 的 apply.requires 定义)
  • 在创建新产物之前,始终读取依赖产物
  • 如果上下文严重不清晰,询问用户——但优先做出合理决策以保持推进
  • 如果同名变更已存在,询问用户是想继续它还是创建新变更
  • 在继续下一个之前,验证每个产物文件在写入后确实存在

适用场景

适用于需要快速将构建想法转化为结构化变更提案的场景,尤其是希望一次性生成提案、设计与任务清单,并随后进入实现流程的情况。

限制

关于收费、价格、平台支持范围等信息,资料中暂未提供。