SuperAPI AI 工具集

geek-skills-openspec-propose

编程与开发

查看项目

更新于 10-16 04:08

技能介绍

用途

该技能用于在 OpenSpec 工作流中提出一个新的变更(change),并在一步内生成实施所需的全部工件(artifacts)。当用户希望快速描述想要构建的内容并获得一份完整提案时使用。

主要能力

  • 根据用户请求创建变更,并生成以下工件:
    • proposal.md(做什么与为什么)
    • design.md(怎么做)
    • tasks.md(实现步骤)
  • 通过 openspec new change "<name>" 创建变更目录,在 openspec/changes/<name>/ 下生成脚手架及 .openspec.yaml。
  • 通过 openspec status --change "<name>" --json 获取工件构建顺序,解析出 applyRequires(实施前所需的工件 ID 数组)以及所有工件的状态与依赖。
  • 按依赖顺序循环创建工件,直到所有 applyRequires 工件完成。
  • 使用 openspec instructions <artifact-id> --change "<name>" --json 获取每个工件的指令,其中包含 context、rules、template、instruction、outputPath、dependencies。
  • 使用 TodoWrite 工具跟踪工件创建进度。
  • 创建完成后展示最终状态:openspec status --change "<name>"。

使用方式

  1. 输入:用户请求应包含变更名称(kebab-case)或对想要构建内容的描述。
  2. 若未提供明确输入,使用 AskUserQuestion 工具(开放式、无预设选项)询问:“What change do you want to work on? Describe what you want to build or fix.”
  3. 从描述中推导 kebab-case 名称(例如 “add user authentication” → add-user-auth)。
  4. 重要:在未理解用户想要构建的内容之前,不要继续。
  5. 创建变更目录:openspec new change "<name>"。
  6. 获取工件构建顺序:openspec status --change "<name>" --json。
  7. 按依赖顺序创建工件,直到 apply-ready:
    • 对每个依赖已满足的工件,获取指令:openspec instructions <artifact-id> --change "<name>" --json。
    • 读取已完成的依赖文件作为上下文。
    • 使用 template 作为结构创建工件文件。
    • 将 context 和 rules 作为约束应用,但不要复制到文件中。
    • 显示简要进度:“Created ”。
    • 每创建一个工件后,重新运行 openspec status --change "<name>" --json,检查 applyRequires 中每个工件 ID 是否在 artifacts 数组中状态为 “done”。
    • 当所有 applyRequires 工件完成时停止。
    • 若某工件需要用户输入(上下文不清晰),使用 AskUserQuestion 工具澄清,然后继续创建。
  8. 展示最终状态:openspec status --change "<name>"。
  9. 输出:完成后总结变更名称与位置、创建的工件列表及简要描述,提示“All artifacts created! Ready for implementation.”以及“Run /opsx:apply or ask me to implement to start working on the tasks.”

工件创建准则

  • 遵循 openspec instructions 中每个工件类型的 instruction 字段。
  • schema 定义了每个工件应包含的内容,遵循它。
  • 创建新工件前读取依赖工件作为上下文。
  • 使用 template 作为输出文件的结构,填充其各个部分。
  • 重要:context 和 rules 是对你的约束,不是文件内容。不要将 <context>、<rules>、<project_context> 块复制到工件中。

护栏

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

适用场景

  • 用户希望快速描述想要构建或修复的内容,并获得一份包含提案、设计与任务步骤的完整变更提案。
  • 在 OpenSpec 工作流中准备实施前的工件生成阶段。

限制

  • 资料未提供该技能的收费、价格、平台支持范围或具体效果信息。
  • 资料未提供除上述命令与流程之外的其他功能说明。