SuperAPI AI 工具集

openspec-propose

通用与其它

查看项目

更新于 10-15 21:48

技能介绍

用途:openspec-propose 是 OpenSpec 的规划工作流技能,用于把用户想构建或修复的内容快速转成一份完整变更提案,并在一步内生成 schema 定义的全部规划产物。它只做规划,不修改项目代码;即使用户请求中包含实现意图,该请求也只授权规划。产物完成后应停止,等待用户新的请求再启动 apply 工作流。

主要能力:按默认 spec-driven schema 生成 proposal.md(做什么与为什么)、specs/<capability-path>/spec.md(系统必须做什么,是增量而非主 spec)、design.md(怎么做)、tasks.md(实现步骤)。<capability-path> 是相对 specs/ 的目录,如 user-auth 或 identity/user-auth;已有能力保留完整路径,新能力遵循项目既有组织方式。

使用方式:输入需包含 kebab-case 变更名或构建描述,否则先询问用户。若存在影响范围、外部可观察行为、兼容性或验收标准的歧义,先向用户确认;次要细节可合理假设并记录。默认使用已配置 schema,用户明确指定时才用 --schema <schema-name>。创建变更目录:openspec new change "<name>"(指定 schema 时加 --schema)。随后用 openspec status --change "<name>" --json 获取 applyRequires、artifacts 及其 requires 依赖边、planningHome、changeRoot、artifactPaths、actionContext。按依赖顺序逐个创建产物:先运行 openspec instructions <artifact-id> --change "<name>" --json 获取 context、rules、template、instruction、resolvedOutputPath、dependencies;读取已完成的依赖文件(始终从磁盘重读),按 template 写入 resolvedOutputPath;若 instruction 委托给特定技能或命令,则调用它并确认文件存在。每创建一个产物后重跑 status。必需集合是 applyRequires 加上沿 requires 边可达的全部产物;status 只反映文件是否存在,不能据此判断依赖已满足。status 为 skipped 的产物视为已满足,不得创建。仅当 instruction 明确标注可选时才跳过,并告知用户。最后运行 openspec status --change "<name>" 并汇总变更名、位置、已创建产物、跳过的条件产物及原因,提示用户可运行 $openspec-apply-change(Codex)或 /openspec-apply-change(其他 agent)或要求应用。

Store 选择:若用户指定 store 或工作位于某个 store,先运行 openspec store list --json 获取已注册 store id,再在读取或写入 specs 与 changes 的命令(new change、status、instructions、list、show、validate、archive、doctor、context、view)上追加 --store <id>,选定后保持粘性;其他命令不接受该标志。未指定 store 时命令作用于最近的本地 openspec/ 根。

限制:本工作流不实现变更、不启动 apply、不编辑项目代码;context 与 rules 是给执行者的约束,不得写入产物文件;不得把 <context>、<rules>、<project_context> 块复制进产物;同名变更已存在时应询问是继续还是新建;写入后需确认文件存在再继续。资料未提供收费、价格、平台支持范围等信息。