propose
分类:.claude/commands/opsx
发布于:
阅读时间:13 分钟
提议一个新的变更 - 在一步中创建变更并生成所有 artifacts。
我将创建一个带有 artifacts 的变更:
- proposal.md(是什么和为什么)
- design.md(如何做)
- tasks.md(实施步骤)
当准备好实施时,运行 /opsx:apply
输入:
/opsx:propose步骤
-
如果没有提供输入,询问他们想要构建什么
使用 AskUserQuestion 工具(开放式,无预设选项)询问:
"您想要处理什么变更?描述您想要构建或修复的内容。"
从他们的描述中,派生一个 kebab-case 名称(例如,"add user authentication" →
)。add-user-auth重要:如果不知道用户想要构建什么,不要继续。
-
创建变更目录
openspec new change "<name>"这将在
处创建一个带有openspec/changes/<name>/的脚手架变更。.openspec.yaml -
获取 artifact 构建顺序
openspec status --change "<name>" --json解析 JSON 以获取:
- :实施前需要的 artifact ID 数组(例如
applyRequires)["tasks"] - :所有 artifacts 的列表及其状态和依赖关系
artifacts
-
按顺序创建 artifacts 直到准备 apply
使用 TodoWrite 工具跟踪 artifacts 的进度。
按依赖顺序循环遍历 artifacts(首先是没有待处理依赖的 artifacts):
a. 对于每个
(依赖满足)的 artifact:ready- 获取指令:
openspec instructions <artifact-id> --change "<name>" --json - 指令 JSON 包括:
- :项目背景(对您的约束 - 不要包含在输出中)
context - :artifact 特定规则(对您的约束 - 不要包含在输出中)
rules - :用于输出文件的结构
template - :针对此 artifact 类型的 schema 特定指导
instruction - :写入 artifact 的位置
outputPath - :为上下文读取的已完成 artifacts
dependencies
- 读取任何已完成的依赖文件以获取上下文
- 使用 作为结构创建 artifact 文件
template - 应用 和
context作为约束 - 但不要将它们复制到文件中rules - 显示简要进度:"已创建 <artifact-id>"
b. 继续直到所有
artifacts 完成applyRequires- 创建每个 artifact 后,重新运行
openspec status --change "<name>" --json - 检查 中的每个 artifact ID 是否在 artifacts 数组中具有
applyRequiresstatus: "done" - 当所有 artifacts 完成时停止
applyRequires
c. 如果 artifact 需要用户输入(上下文不清楚):
- 使用 AskUserQuestion 工具 澄清
- 然后继续创建
- 获取指令:
-
显示最终状态
openspec status --change "<name>"
输出
完成所有 artifacts 后,总结:
- 变更名称和位置
- 创建的 artifacts 列表及简要描述
- 准备就绪:"所有 artifacts 已创建!准备好实施。"
- 提示:"运行 开始实施。"
/opsx:apply
Artifact 创建指南
- 遵循每个 artifact 类型的 中的
openspec instructions字段instruction - schema 定义了每个 artifact 应该包含什么 - 遵循它
- 在创建新的 artifacts 之前读取依赖 artifacts
- 使用 作为输出文件的结构 - 填充其部分
template - 重要:和
context是对您的约束,不是文件的内容rules- 不要将 、
<context>、<rules>块复制到 artifact 中<project_context> - 这些指导您编写的内容,但绝不应出现在输出中
- 不要将
护栏
- 创建实施所需的所有 artifacts(由 schema 的 定义)
apply.requires - 在创建新 artifact 之前始终读取依赖 artifacts
- 如果上下文严重不清楚,询问用户 - 但宁愿做出合理的决定以保持势头
- 如果存在该名称的变更,询问用户是否想要继续它或创建一个新的
- 在继续下一个之前验证每个 artifact 文件写入后是否存在
#workflow#artifacts#experimental