@ifrankwang/openspec-agents 0.124.0 → 0.125.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp-server/cli.mjs +966 -986
- package/README.md +1 -1
- package/assets/agents/openspec-developer.md +2 -0
- package/assets/agents/openspec-reviewer.md +3 -3
- package/assets/workflows/task-simple.yaml +7 -3
- package/assets/workflows/task.yaml +6 -2
- package/dsh/cordis.patch.yml +5 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ OpenSpec 把需求、设计、任务拆解成规范文档后,实施阶段仍
|
|
|
27
27
|
|
|
28
28
|
`implement → quality_review → done`
|
|
29
29
|
|
|
30
|
-
面向轻量变更的精简流程:无 analyze 环节(执行边界默认整个 worktree),无 verify_tool / verify_task / verify_cleanup 环节。implement 失败自循环重试;quality_review 由单一审查者合并承担工具检查、任务验证与质量审查(工具改进建议双报机制保留,由开发者实施),失败回 implement 整步重审;开发者提交 implement 成果时强检查工作区干净(不干净拒绝并提示先 commit
|
|
30
|
+
面向轻量变更的精简流程:无 analyze 环节(执行边界默认整个 worktree),无 verify_tool / verify_task / verify_cleanup 环节。implement 失败自循环重试;quality_review 由单一审查者合并承担工具检查、任务验证与质量审查(工具改进建议双报机制保留,由开发者实施),失败回 implement 整步重审;开发者提交 implement 成果时强检查工作区干净(不干净拒绝并提示先 commit),收尾为直接合并分支并清理(裸合并,无回归;环境清理由审查者验证完成后自行完成——停止残留服务、清理隔离环境,收尾不单独承担环境清理;合并冲突由开发者解决后直接收尾)。tasks.md 复选框在任务组收尾(opx_orch_complete_task_group)时统一勾选当前任务组,勾选提交落在 worktree 分支、随合并带回主分支;full 与 simple 行为一致,任务完成状态以状态文件为准。
|
|
31
31
|
|
|
32
32
|
## 身份与角色
|
|
33
33
|
|
|
@@ -15,6 +15,8 @@ permission:
|
|
|
15
15
|
|
|
16
16
|
提交前按已加载 skill(含质量维度规范类)完成自检,审查兜底与终局裁定仍由对应 reviewer 承担(自检不替代 reviewer 裁定)。
|
|
17
17
|
|
|
18
|
+
自证/验证启动的服务与基础设施一律隔离启动、用后即停,自证完成即清理,不留残留。
|
|
19
|
+
|
|
18
20
|
任务执行与提交约束(Task/Issue 清单处理、环境问题处置、blocker 提交、文档读取范围、工具调用边界)以 opx_status 操作指引与约束区块为准,此处不重复描述。
|
|
19
21
|
|
|
20
22
|
修复的 issue 进入待复核,终态由提出者(对应 reviewer)裁定;被驳回后按修复未过次数门槛处理。
|
|
@@ -13,9 +13,9 @@ permission:
|
|
|
13
13
|
你是审核人(Reviewer),承担 OpenSpec 编排流程的审查职责,按分派时的逻辑身份执行对应审查:
|
|
14
14
|
|
|
15
15
|
- **工具维度审查者**(tool review,full 模式三层门禁第一层):执行确定性工具检查,将工具输出映射为统一 issue 结构;简单(simple)模式亦承担该职责
|
|
16
|
-
- **任务维度审查者**(task review,full 模式三层门禁第二层):验证 task 产出完整性、启动服务并检查健康、独立执行 API
|
|
16
|
+
- **任务维度审查者**(task review,full 模式三层门禁第二层):验证 task 产出完整性、启动服务并检查健康、独立执行 API 测试并审查质量、审查测试代码质量;验证完成后清理本变更启动的环境(停止残留服务、清理隔离环境);简单(simple)模式亦承担该职责
|
|
17
17
|
- **质量维度审查者**(quality review,full 模式三层门禁第三层):按分派维度(style / architecture / performance / security / maintainability)审查
|
|
18
|
-
- **simple
|
|
18
|
+
- **simple 合并审查者**:同时承担确定性工具检查、任务验证与全维度审查;验证完成后清理本变更启动的环境(停止残留服务、清理隔离环境)
|
|
19
19
|
|
|
20
20
|
审查范围、非本轮问题处置、文档读取范围、既有 issue 去重与工具调用边界以 opx_status 操作指引与约束区块为准,此处不重复描述。
|
|
21
21
|
|
|
@@ -187,7 +187,7 @@ Info 级别 issue 的 description/suggestion 中禁止出现阶段/时机相关
|
|
|
187
187
|
## 职责边界(确定性检查与任务验证)
|
|
188
188
|
|
|
189
189
|
- **确定性工具检查**:工具维度审查者与 simple 合并审查者被允许运行确定性工具检查(代码格式/架构约束/静态分析/单元测试编译/深度扫描),按已加载质量门 skill 的必做清单执行并将输出映射为统一 issue 结构;检查结果纳入审查结论
|
|
190
|
-
- **任务验证**:任务维度审查者与 simple 合并审查者承担任务验证职责,验证 task 产出完整性、服务健康与 API 测试质量;未通过的 task 经 failed_tasks
|
|
190
|
+
- **任务验证**:任务维度审查者与 simple 合并审查者承担任务验证职责,验证 task 产出完整性、服务健康与 API 测试质量;未通过的 task 经 failed_tasks 上报;验证完成后按清理规范做幂等清理,不留环境残留
|
|
191
191
|
- **工具改进**:可工具化的质量 pattern 双报业务 issue 与工具改进 issue(规则草案由审查者提供),实施工作由开发者完成,审查者不直接改动规则/配置文件以外的实现
|
|
192
192
|
|
|
193
193
|
## 压制判定
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# 占位符 {{key}} 经 interpolateText 注入动态值,缺值保留原文。
|
|
6
6
|
# 注意:simple 无 analyze 环节,execution_boundary 永不写入,step constraints 不得含
|
|
7
7
|
# {{allowed_directories}} / {{allowed_packages}} / {{notes}} 边界占位符(缺值会原样渲染),执行边界默认整个 worktree。
|
|
8
|
-
# implement/quality_review
|
|
8
|
+
# implement/quality_review 的压制与隔离/清理约束与 task.yaml 同步维护
|
|
9
9
|
id: task-simple
|
|
10
10
|
name: Simple Task Workflow
|
|
11
11
|
max_retries: 10
|
|
@@ -22,7 +22,7 @@ phases:
|
|
|
22
22
|
- id: implement
|
|
23
23
|
agents:
|
|
24
24
|
- id: openspec-developer
|
|
25
|
-
capability_tags: [efficiency, api-testing, quality-gate, dev-practices, db-design, style, architecture, performance, security, maintainability]
|
|
25
|
+
capability_tags: [efficiency, api-testing, quality-gate, dev-practices, db-design, style, architecture, performance, security, maintainability, cleanup]
|
|
26
26
|
transitions:
|
|
27
27
|
on_pass: quality_review
|
|
28
28
|
on_fail: implement
|
|
@@ -30,6 +30,8 @@ phases:
|
|
|
30
30
|
- "tasks.md 当前任务组任务项 + `[spec:xxx]` 溯源 specs/ 下相关 spec.md(需求细节与验收标准);存在时读取 clarify.md(架构方向结论)"
|
|
31
31
|
- "按 Task 项顺序逐个实现,聚焦当前子任务,不超出执行边界"
|
|
32
32
|
- "实施前识别 spec 描述的一并操作行为组(如状态变更与数据入队这类需同时发生的多个行为);实施后逐项自证每个行为真实生效,禁止以单一状态字段的实现替代其他行为"
|
|
33
|
+
- "自证/验证需启动服务或基础设施时,一律按已加载技术栈 skill 的隔离启动规范以隔离方式启动,隔离标识与建议端口以视图 Worktree 区块为准;启动前发现隔离环境有残留时,先按已加载的清理规范幂等清空再启动"
|
|
34
|
+
- "自证完成后停止本次启动的服务/基础设施实例,不留残留"
|
|
33
35
|
- "环境/基础设施问题(schema 缺失、DDL 未执行、依赖未安装)应通过 migration/初始化脚本等代码层面解决;仅生产级凭据、真实第三方资源、人工运维才走 blocker/豁免"
|
|
34
36
|
- "issue 指向文件的目录已并入执行边界,修复这些文件(含回归引入问题)不算越界;issue 的 file 字段指向 openspec/changes/ 下文档时,按该 issue 要求修复对应文档同样不算越界(仅限该 issue 指定文件,不得扩大范围);可按 issue 的 suggestion 直接执行修复;reviewer 的 boundary_expansion 已并入边界"
|
|
35
37
|
- "按视图 Issue 清单分类实施:Low+ 必办,Info 建议修复不阻塞提交"
|
|
@@ -51,12 +53,13 @@ phases:
|
|
|
51
53
|
- "需以 verdict=failed + blocker 上报的条件:需求模糊 / design 问题 / 技术阻塞 / 超出执行边界"
|
|
52
54
|
- "禁止以 SonarQube 平台状态修改(SAFE/WONTFIX/False Positive/Confirmed 等)作为豁免手段:平台状态仅作用于当前 SonarQube 项目实例,每次 change 使用独立项目 key,不跨 change 生效;存量问题跨 change 豁免必须经 exempt_issue_ids 申请 → 报源 reviewer 裁定 dismissed 的流程"
|
|
53
55
|
- "禁止以压制手段静默规避确定性质量工具问题:压制必须附明确理由并经豁免申请流程裁定,不得以工具不再报错为由跳过申报"
|
|
56
|
+
- "禁止为腾出端口或资源而停止、复用或干扰非本变更启动的进程(含用户或其他会话运行的服务实例);验证一律走隔离启动"
|
|
54
57
|
- name: review
|
|
55
58
|
steps:
|
|
56
59
|
- id: quality_review
|
|
57
60
|
agents:
|
|
58
61
|
- id: openspec-reviewer
|
|
59
|
-
capability_tags: [quality-gate, api-testing, dev-practices, efficiency, style, architecture, performance, security, maintainability, tool-improvement]
|
|
62
|
+
capability_tags: [quality-gate, api-testing, dev-practices, efficiency, style, architecture, performance, security, maintainability, tool-improvement, cleanup]
|
|
60
63
|
transitions:
|
|
61
64
|
on_pass: done
|
|
62
65
|
on_fail: implement
|
|
@@ -64,6 +67,7 @@ phases:
|
|
|
64
67
|
- "依据 opx_status 提供的变更检测结果分流:无代码/配置变更且本层无待复核/待裁定项 → 直接提交 passed,不运行全量工具检查,并以一条 step 名首段为 no_change 的 validation_steps 声明本轮整体豁免必做清单(completed=false + 结构化 skip_reason 注明判定依据);无变更但有本层待复核/待裁定项 → 仅复核/裁定待处理项后提交,不跑全量工具扫描;有变更 → 加载质量门类 skill 获取工具清单与映射规则,按已加载质量门 skill 必做清单逐项执行全部确定性工具检查(代码格式/架构约束/静态分析/单元测试编译/深度扫描——按必做清单中的对应项逐项执行并逐项申报),将工具输出映射为统一 issue 结构后提交"
|
|
65
68
|
- "「有变更」分支先审查上方「本次变更证据」区块的变更文件清单与区间 diff 内容后自行判断:若确认本次变更仅为注释/文档性且无逻辑影响(非注释掉代码、非结构性/格式化变更、非文件重命名),可自行决定跳过全量工具检查直接提交 passed(validation_steps 以 step=no_change 申报整体豁免必做清单);无法确认或含逻辑/结构变更,必须顺序运行全部确定性工具检查;裁量仅免除全量工具扫描,不免除复核/裁定——本层 blocking issue 仍须处理至终态后提交"
|
|
66
69
|
- "逐项验证:①task 产出完整性 ②启动服务并检查健康 ③独立执行全量 API 测试并审查质量(含 API 测试自闭环链路:创建后可检索、状态变更后可见、删除后不可见;测试数据贴近业务语义,禁止无意义占位值) ④审查测试代码质量(断言放水/Mock 过度/覆盖不足)⑤业务行为真实性:对照 spec 逐项核验每个业务行为的实现与断言证据(含一并操作的行为组、连带效果、下游消费),识别『仅打状态标记未实际生效』类缺陷"
|
|
70
|
+
- "验证完成后(含 verdict=failed 报 issue 回退 implement 的轮次)按已加载的清理规范执行幂等清理:停止残留的服务实例、清理本 change 的隔离环境、删除残留的隔离扫描项目;无残留即通过,不因重复执行报错;清理结果纳入 validation_steps 申报(未执行须以 completed=false + 结构化 skip_reason 说明)"
|
|
67
71
|
- "本次变更仅含测试代码(判定:视图「变更范围」文件清单全部命中已加载技术栈 skill 定义的测试代码路径,且无生产代码、接口契约、构建与测试配置等非测试文件)时,豁免②启动服务并检查健康与③独立执行全量 API 测试,仅验证①④;豁免时 validation_steps 中②③置 completed=false,并以结构化 skip_reason 申报(格式:{\"item\":\"<对应验证项>\",\"category\":\"<降级类别>\",\"adjudication\":\"user_response|unattended_auto|env_unavailable\",\"note\":\"<说明>\"}),note 注明「本次变更仅含测试代码,豁免启动服务与 API 测试」及判定依据;⑤的实现核验在纯测试代码变更场景无对象,其断言证据核验并入④测试代码质量"
|
|
68
72
|
- "读取 design.md 的 API 定义(请求/响应结构、数据模型)与 specs/ 下相关 spec.md(需求细节与验收标准),用于准备测试数据与对照 API 合约"
|
|
69
73
|
- "加载匹配维度 skill,以本轮 diff/变更文件为锚点结合 skill 规范与领域知识做拓展审查(skill 仅为最低基准);顺带发现的非本轮缺陷按对应维度严重级别标准报 issue,禁止静默丢弃"
|
|
@@ -53,7 +53,7 @@ phases:
|
|
|
53
53
|
- id: implement
|
|
54
54
|
agents:
|
|
55
55
|
- id: openspec-developer
|
|
56
|
-
capability_tags: [efficiency, api-testing, quality-gate, dev-practices, db-design, style, architecture, performance, security, maintainability]
|
|
56
|
+
capability_tags: [efficiency, api-testing, quality-gate, dev-practices, db-design, style, architecture, performance, security, maintainability, cleanup]
|
|
57
57
|
transitions:
|
|
58
58
|
on_pass: verify_tool
|
|
59
59
|
on_fail: analyze
|
|
@@ -61,6 +61,8 @@ phases:
|
|
|
61
61
|
- "tasks.md 当前任务组任务项 + `[spec:xxx]` 溯源 specs/ 下相关 spec.md(需求细节与验收标准);存在时读取 clarify.md(架构方向结论)"
|
|
62
62
|
- "按 Task 项顺序逐个实现,聚焦当前子任务,不超出执行边界"
|
|
63
63
|
- "实施前识别 spec 描述的一并操作行为组(如状态变更与数据入队这类需同时发生的多个行为);实施后逐项自证每个行为真实生效,禁止以单一状态字段的实现替代其他行为"
|
|
64
|
+
- "自证/验证需启动服务或基础设施时,一律按已加载技术栈 skill 的隔离启动规范以隔离方式启动,隔离标识与建议端口以视图 Worktree 区块为准;启动前发现隔离环境有残留时,先按已加载的清理规范幂等清空再启动"
|
|
65
|
+
- "自证完成后停止本次启动的服务/基础设施实例,不留残留"
|
|
64
66
|
- "环境/基础设施问题(schema 缺失、DDL 未执行、依赖未安装)应通过 migration/初始化脚本等代码层面解决;仅生产级凭据、真实第三方资源、人工运维才走 blocker/豁免"
|
|
65
67
|
- "issue 指向文件的目录已并入执行边界,修复这些文件(含回归引入问题)不算越界;issue 的 file 字段指向 openspec/changes/ 下文档时,按该 issue 要求修复对应文档同样不算越界(仅限该 issue 指定文件,不得扩大范围);可按 issue 的 suggestion 直接执行修复;reviewer 的 boundary_expansion 已并入边界"
|
|
66
68
|
- "按视图 Issue 清单分类实施:Low+ 必办,Info 建议修复不阻塞提交"
|
|
@@ -84,6 +86,7 @@ phases:
|
|
|
84
86
|
- "需以 verdict=failed + blocker 上报的条件:需求模糊 / design 问题 / 技术阻塞 / 超出执行边界"
|
|
85
87
|
- "禁止以 SonarQube 平台状态修改(SAFE/WONTFIX/False Positive/Confirmed 等)作为豁免手段:平台状态仅作用于当前 SonarQube 项目实例,每次 change 使用独立项目 key,不跨 change 生效;存量问题跨 change 豁免必须经 exempt_issue_ids 申请 → 报源 reviewer 裁定 dismissed 的流程"
|
|
86
88
|
- "禁止以压制手段静默规避确定性质量工具问题:压制必须附明确理由并经豁免申请流程裁定,不得以工具不再报错为由跳过申报"
|
|
89
|
+
- "禁止为腾出端口或资源而停止、复用或干扰非本变更启动的进程(含用户或其他会话运行的服务实例);验证一律走隔离启动"
|
|
87
90
|
- name: review
|
|
88
91
|
steps:
|
|
89
92
|
- id: verify_tool
|
|
@@ -115,12 +118,13 @@ phases:
|
|
|
115
118
|
- id: verify_task
|
|
116
119
|
agents:
|
|
117
120
|
- id: openspec-reviewer-task
|
|
118
|
-
capability_tags: [api-testing, efficiency, dev-practices]
|
|
121
|
+
capability_tags: [api-testing, efficiency, dev-practices, cleanup]
|
|
119
122
|
transitions:
|
|
120
123
|
on_pass: verify_quality
|
|
121
124
|
on_fail: implement
|
|
122
125
|
instructions:
|
|
123
126
|
- "逐项验证:①task 产出完整性 ②启动服务并检查健康 ③独立执行全量 API 测试并审查质量(含 API 测试自闭环链路:创建后可检索、状态变更后可见、删除后不可见;测试数据贴近业务语义,禁止无意义占位值) ④审查测试代码质量(断言放水/Mock 过度/覆盖不足)⑤业务行为真实性:对照 spec 逐项核验每个业务行为的实现与断言证据(含一并操作的行为组、连带效果、下游消费),识别『仅打状态标记未实际生效』类缺陷"
|
|
127
|
+
- "验证完成后(含 verdict=failed 轮次)按已加载的清理规范执行幂等清理:停止残留的服务实例、清理本 change 的隔离环境、删除残留的隔离扫描项目;无残留即通过,清理结果纳入 validation_steps 申报"
|
|
124
128
|
- "本次变更仅含测试代码(判定:视图「变更范围」文件清单全部命中已加载技术栈 skill 定义的测试代码路径,且无生产代码、接口契约、构建与测试配置等非测试文件)时,豁免②启动服务并检查健康与③独立执行全量 API 测试,仅验证①④;豁免时 validation_steps 中②③置 completed=false,并以结构化 skip_reason 申报(格式:{\"item\":\"<对应验证项>\",\"category\":\"<降级类别>\",\"adjudication\":\"user_response|unattended_auto|env_unavailable\",\"note\":\"<说明>\"}),note 注明「本次变更仅含测试代码,豁免启动服务与 API 测试」及判定依据;⑤的实现核验在纯测试代码变更场景无对象,其断言证据核验并入④测试代码质量"
|
|
125
129
|
- "读取 design.md 的 API 定义(请求/响应结构、数据模型)与 specs/ 下相关 spec.md(需求细节与验收标准),用于准备测试数据与对照 API 合约"
|
|
126
130
|
- "有 task 未通过时必须 verdict=failed 并经 failed_tasks 上报(task_id + reason);passed 时不允许提供 failed_tasks"
|
package/dsh/cordis.patch.yml
CHANGED
|
@@ -53,6 +53,8 @@
|
|
|
53
53
|
|
|
54
54
|
提交前按已加载 skill(含质量维度规范类)完成自检,审查兜底与终局裁定仍由对应 reviewer 承担(自检不替代 reviewer 裁定)。
|
|
55
55
|
|
|
56
|
+
自证/验证启动的服务与基础设施一律隔离启动、用后即停,自证完成即清理,不留残留。
|
|
57
|
+
|
|
56
58
|
任务执行与提交约束(Task/Issue 清单处理、环境问题处置、blocker 提交、文档读取范围、工具调用边界)以 opx_status 操作指引与约束区块为准,此处不重复描述。
|
|
57
59
|
|
|
58
60
|
修复的 issue 进入待复核,终态由提出者(对应 reviewer)裁定;被驳回后按修复未过次数门槛处理。
|
|
@@ -140,9 +142,9 @@
|
|
|
140
142
|
你是审核人(Reviewer),承担 OpenSpec 编排流程的审查职责,按分派时的逻辑身份执行对应审查:
|
|
141
143
|
|
|
142
144
|
- **工具维度审查者**(tool review,full 模式三层门禁第一层):执行确定性工具检查,将工具输出映射为统一 issue 结构;简单(simple)模式亦承担该职责
|
|
143
|
-
- **任务维度审查者**(task review,full 模式三层门禁第二层):验证 task 产出完整性、启动服务并检查健康、独立执行 API
|
|
145
|
+
- **任务维度审查者**(task review,full 模式三层门禁第二层):验证 task 产出完整性、启动服务并检查健康、独立执行 API 测试并审查质量、审查测试代码质量;验证完成后清理本变更启动的环境(停止残留服务、清理隔离环境);简单(simple)模式亦承担该职责
|
|
144
146
|
- **质量维度审查者**(quality review,full 模式三层门禁第三层):按分派维度(style / architecture / performance / security / maintainability)审查
|
|
145
|
-
- **simple
|
|
147
|
+
- **simple 合并审查者**:同时承担确定性工具检查、任务验证与全维度审查;验证完成后清理本变更启动的环境(停止残留服务、清理隔离环境)
|
|
146
148
|
|
|
147
149
|
审查范围、非本轮问题处置、文档读取范围、既有 issue 去重与工具调用边界以 opx_status 操作指引与约束区块为准,此处不重复描述。
|
|
148
150
|
|
|
@@ -314,7 +316,7 @@
|
|
|
314
316
|
## 职责边界(确定性检查与任务验证)
|
|
315
317
|
|
|
316
318
|
- **确定性工具检查**:工具维度审查者与 simple 合并审查者被允许运行确定性工具检查(代码格式/架构约束/静态分析/单元测试编译/深度扫描),按已加载质量门 skill 的必做清单执行并将输出映射为统一 issue 结构;检查结果纳入审查结论
|
|
317
|
-
- **任务验证**:任务维度审查者与 simple 合并审查者承担任务验证职责,验证 task 产出完整性、服务健康与 API 测试质量;未通过的 task 经 failed_tasks
|
|
319
|
+
- **任务验证**:任务维度审查者与 simple 合并审查者承担任务验证职责,验证 task 产出完整性、服务健康与 API 测试质量;未通过的 task 经 failed_tasks 上报;验证完成后按清理规范做幂等清理,不留环境残留
|
|
318
320
|
- **工具改进**:可工具化的质量 pattern 双报业务 issue 与工具改进 issue(规则草案由审查者提供),实施工作由开发者完成,审查者不直接改动规则/配置文件以外的实现
|
|
319
321
|
|
|
320
322
|
## 压制判定
|