@peterxiaoyang/superspec 0.1.4 → 0.1.5
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/adapters/codex/agents/architect.toml +4 -148
- package/adapters/codex/agents/code-reviewer.toml +4 -166
- package/adapters/codex/agents/critic.toml +5 -106
- package/adapters/codex/agents/test-engineer.toml +4 -154
- package/adapters/codex/agents/verifier.toml +4 -110
- package/dist/src/cli.js +13 -0
- package/dist/src/cli_args.d.ts +5 -1
- package/dist/src/cli_args.js +121 -12
- package/dist/src/gates.d.ts +1 -1
- package/dist/src/gates.js +3 -19
- package/dist/src/i18n.js +4 -3
- package/dist/src/packet_measure.d.ts +43 -0
- package/dist/src/packet_measure.js +395 -0
- package/dist/src/packet_render.d.ts +4 -0
- package/dist/src/packet_render.js +652 -0
- package/dist/src/packet_schema.d.ts +55 -0
- package/dist/src/packet_schema.js +1 -0
- package/dist/src/project_init.js +7 -49
- package/dist/src/util.d.ts +10 -2
- package/dist/src/util.js +24 -6
- package/package.json +2 -2
- package/templates/workflow/prompts/architect.md +16 -109
- package/templates/workflow/prompts/code-reviewer.md +17 -137
- package/templates/workflow/prompts/critic.md +18 -75
- package/templates/workflow/prompts/test-engineer.md +16 -126
- package/templates/workflow/prompts/verifier.md +17 -80
- package/templates/workflow/skills/superspec-apply/SKILL.md +64 -78
- package/templates/workflow/skills/superspec-archive/SKILL.md +41 -37
- package/templates/workflow/skills/superspec-explore/SKILL.md +63 -77
- package/templates/workflow/skills/superspec-propose/SKILL.md +64 -85
- package/templates/workflow/skills/superspec-review/SKILL.md +76 -233
|
@@ -10,84 +10,70 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
## 语言规则 / Language
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
- 保留命令、路径、JSON 字段、gate 名、task/test id、代码标识符和外部 API 名称的原文。
|
|
15
|
-
- 当 OpenSpec 模板要求固定标题或字段时,保留模板结构,只将正文内容写成中文。
|
|
16
|
-
- 对话窗口里的解释、问题说明、总结、提问和下一步说明必须使用中文;除命令、路径、字段名、代码标识符外,不要夹带英文说明词。
|
|
17
|
-
- 对话窗口、AskUserQuestion 文案、进度更新和最终总结不得裸露内部证据种类、字段名或 reason code;用户确认记录、审查问题记录、审查轮次编号、问题唯一标识等都只用中文业务说法。原始协议名只允许写在证据 JSON、代码、测试、精确命令输出或用户明确要求的诊断片段中。
|
|
18
|
-
- 本 skill 文档中的内部协议名只用于落盘证据或运行 guard;写给用户时必须先翻译成中文业务动作,例如“记录用户确认”“记录审查问题”“完成最终审查判断”。
|
|
13
|
+
- 默认使用简体中文写人类可读内容;命令、路径、字段名、gate 名、task/test id、代码标识符保留原文。
|
|
19
14
|
- 用户可见文案不得使用“裁决”描述用户动作;统一说“确认”“范围取舍”“处理方式选择”或“用户确认记录”。
|
|
20
|
-
-
|
|
21
|
-
-
|
|
15
|
+
- 不把内部证据种类、reason code、JSON 字段大全直接转述给用户;需要诊断时才引用原文。
|
|
16
|
+
- 普通 workflow 命令使用 `--format agent`;`--format json` 只用于诊断,不作为默认上下文。
|
|
22
17
|
|
|
23
18
|
## 命令执行 / Shell
|
|
24
19
|
|
|
25
|
-
- Windows PowerShell
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
7. 在 `.superspec/evidence/discovery/` 记录 critic evidence,包含 `execution_mode:"native_subagent"`、`agent_role`、`agent_id`、`output_ref`、`source_anchors` 和 `target_refs`。
|
|
86
|
-
8. 按确认循环处理 findings:写本轮审查问题记录;存在关键问题时**停下来向用户说明并等待用户确认**,再按用户确认更新探索记录 / 重跑 critic / 写新一轮记录,直到最新轮 clean 且问题清单里没有未处理完的问题。
|
|
87
|
-
9. 对探索结论、范围边界和进入 propose 的授权使用 AskUserQuestion,并等待明确选择;记录探索阶段人工确认 evidence(JSON 中为 `gate:"explore_complete"`、`kind:"human_confirmation"`、`created_by:"user"`),`confirmed_refs` 固定记录用户确认过的探索记录。
|
|
88
|
-
10. 运行进入阶段前检查(`check-enter`),验证 explore completion:
|
|
89
|
-
```text
|
|
90
|
-
superspec guard check-enter --change "<change>" --gate explore_complete --format agent
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
遇到任何 guard `block` 就停止。用户确认相关阻塞原因包括:缺少审查问题记录(`missing_review_digest`)、等待用户确认(`needs_user_decision_pending`)、历史 finding 未处理完(`finding_unresolved`)、用户确认未绑定(`user_decision_unbound`)、缺少 finding 问题清单(`ledger_injection_missing`)、审查轮次已达上限(`round_budget_exhausted`)等。它们的唯一合法出路是回到确认循环或升级给用户,不允许绕过。
|
|
20
|
+
- Windows PowerShell 中使用 `.cmd` shim:`superspec.cmd ...`、`openspec.cmd ...`;不要运行 `superspec.ps1` 或 `openspec.ps1`。
|
|
21
|
+
- 其他 shell 使用文档中的 `superspec ...`、`openspec ...` 命令。
|
|
22
|
+
|
|
23
|
+
## 阶段职责
|
|
24
|
+
|
|
25
|
+
Explore 只做需求澄清、代码事实调查、范围边界和风险记录。产物是 `openspec/changes/<change>/.superspec/artifacts/discovery.md`;不写 `proposal.md`、`specs/**`、`design.md`、`tasks.md`,也不改实现代码。
|
|
26
|
+
|
|
27
|
+
## 第一条必跑命令
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
superspec init --scope project --format agent
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
随后创建或打开 OpenSpec change,并读取当前上下文:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
openspec list --json
|
|
37
|
+
openspec status --change "<change>" --json
|
|
38
|
+
superspec guard check-init --change "<change>" --format agent
|
|
39
|
+
superspec guard workflow-packet --change "<change>" --gate explore_complete --format agent
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
遇到任何 guard `block` 就停止,按 packet 的 `next_action` 处理;不要绕过 guard。
|
|
43
|
+
|
|
44
|
+
## OpenSpec 边界
|
|
45
|
+
|
|
46
|
+
- 直接使用 OpenSpec CLI surface,不读取 repo-local `openspec-*` skill 文本。
|
|
47
|
+
- 用 `openspec list --json` 和 `openspec status --change "<change>" --json` 确认 change 结构、artifactPaths 和当前状态。
|
|
48
|
+
- OpenSpec 负责 change 结构和后续 artifact 语义;本阶段只补 SuperSpec discovery 证据。
|
|
49
|
+
- 如果发现需要正式方案、规格、设计或任务,先写入 discovery,再交给 `superspec-propose`。
|
|
50
|
+
|
|
51
|
+
## Native Subagent 边界
|
|
52
|
+
|
|
53
|
+
需求 critique 必须来自 repo-local `critic` native subagent。生成 prompt 时使用 packet,而不是把 disclosure 协议常驻在 skill 正文:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
superspec guard review-packet --change "<change>" --gate explore_complete --role critic --round 1 --format prompt
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
主流程整理审查问题时读取 main-thread packet:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
superspec guard review-packet --change "<change>" --gate explore_complete --role main-thread --round 1 --format agent
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
round > 1 的 reviewer prompt 必须使用 packet/ledger 注入;不要手写历史问题清单。
|
|
66
|
+
|
|
67
|
+
## 用户确认边界
|
|
68
|
+
|
|
69
|
+
- 关键范围、非目标、验收标准、业务语义或设计边界问题必须面向用户说明并等待明确确认。
|
|
70
|
+
- 探索结论、范围边界和进入 propose 的授权必须等待用户确认后再记录 evidence。
|
|
71
|
+
- 用户看到的文字要用中文业务语言;内部 JSON 名只写进证据、命令输出或诊断片段。
|
|
72
|
+
|
|
73
|
+
## 完成检查
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
superspec guard workflow-packet --change "<change>" --gate explore_complete --format agent
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
只有 packet 显示 allowed 后,才进入 `superspec-propose`。
|
|
@@ -10,92 +10,71 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
## 语言规则 / Language
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
- 保留命令、路径、JSON 字段、gate 名、task/test id、代码标识符和外部 API 名称的原文。
|
|
15
|
-
- 当 OpenSpec 模板要求固定标题或字段时,保留模板结构,只将正文内容写成中文。
|
|
16
|
-
- 对话窗口里的解释、问题说明、总结、提问和下一步说明必须使用中文;除命令、路径、字段名、代码标识符外,不要夹带英文说明词。
|
|
17
|
-
- 对话窗口、AskUserQuestion 文案、进度更新和最终总结不得裸露内部证据种类、字段名或 reason code;用户确认记录、审查问题记录、审查轮次编号、问题唯一标识等都只用中文业务说法。原始协议名只允许写在证据 JSON、代码、测试、精确命令输出或用户明确要求的诊断片段中。
|
|
18
|
-
- 本 skill 文档中的内部协议名只用于落盘证据或运行 guard;写给用户时必须先翻译成中文业务动作,例如“记录用户确认”“记录审查问题”“完成最终审查判断”。
|
|
13
|
+
- 默认使用简体中文写人类可读内容;命令、路径、字段名、gate 名、task/test id、代码标识符保留原文。
|
|
19
14
|
- 用户可见文案不得使用“裁决”描述用户动作;统一说“确认”“范围取舍”“处理方式选择”或“用户确认记录”。
|
|
20
|
-
-
|
|
21
|
-
-
|
|
15
|
+
- 不把内部证据种类、reason code、JSON 字段大全直接转述给用户;需要诊断时才引用原文。
|
|
16
|
+
- 普通 workflow 命令使用 `--format agent`;`--format json` 只用于诊断,不作为默认上下文。
|
|
22
17
|
|
|
23
18
|
## 命令执行 / Shell
|
|
24
19
|
|
|
25
|
-
- Windows PowerShell
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- OpenSpec
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
superspec guard check-enter --change "<change>" --gate propose.invariants_reviewed --format agent
|
|
87
|
-
```
|
|
88
|
-
7. 业务约束 `business-invariants.md` 完成后、任务清单 `tasks.md` 编写前:起草测试契约 `.superspec/artifacts/test-contract.md`,覆盖 specs 中每个 `#### Scenario` 和命中本 change scope 的 hard `INV-*`,包含 TEST ids、关联 INV ids、预期 RED reasons、预期 GREEN criteria 和 commands。获取 `test-engineer` + `critic` review evidence(带 `review_round_id` `test_contract_drafted-r<N>` + `findings[]` + pinned target:test-contract + invariants + design + specs glob)。主流程记录审查问题记录;验收标准变更等关键问题必须用户确认。然后验证:
|
|
89
|
-
```text
|
|
90
|
-
superspec guard check-enter --change "<change>" --gate propose.test_plan_drafted --format agent
|
|
91
|
-
```
|
|
92
|
-
8. 通过 `openspec instructions tasks` 编写任务清单 `tasks.md` 时:为每个 task 补充 `requirement_refs`、`invariant_refs`(必须是 business-invariants `INV-*` ids 的子集)、`test_refs`(必须是 test-contract TEST ids 的子集)、`read_scope`、`write_scope`、dependencies、TDD metadata,以及需要时的 parallel group。若 reviewer 对 task 映射提出 round-tagged findings,走 `tasks_complete-r<N>` 确认循环(pinned target:tasks + test-contract + invariants + design + specs glob);验收标准问题 route 用 `return_test_contract_drafted`,映射问题用 `stay_same_gate_fix`。对于任务审查确认,使用 AskUserQuestion 并等待明确选择;按披露循环记录用户确认和审查问题处理结果,然后验证:
|
|
93
|
-
```text
|
|
94
|
-
superspec guard check-enter --change "<change>" --gate propose.tasks_mapped --format agent
|
|
95
|
-
```
|
|
96
|
-
9. 验证 apply readiness:
|
|
97
|
-
```text
|
|
98
|
-
superspec guard check-apply-ready --change "<change>" --format agent
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
遇到任何 guard `block` 就停止。
|
|
20
|
+
- Windows PowerShell 中使用 `.cmd` shim:`superspec.cmd ...`、`openspec.cmd ...`;不要运行 `superspec.ps1` 或 `openspec.ps1`。
|
|
21
|
+
- 其他 shell 使用文档中的 `superspec ...`、`openspec ...` 命令。
|
|
22
|
+
|
|
23
|
+
## 阶段职责
|
|
24
|
+
|
|
25
|
+
Propose 把 discovery 转成 OpenSpec proposal package,并补 SuperSpec 业务约束和测试契约。负责的文件是 `proposal.md`、`specs/**/*.md`、`design.md`、`tasks.md`、`.superspec/artifacts/business-invariants.md`、`.superspec/artifacts/test-contract.md`。本阶段不改实现代码。
|
|
26
|
+
|
|
27
|
+
## 第一条必跑命令
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
superspec guard workflow-packet --change "<change>" --gate explore_complete --format agent
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
遇到任何 guard `block` 就停止,回 explore 补事实或确认。
|
|
34
|
+
|
|
35
|
+
## OpenSpec 边界
|
|
36
|
+
|
|
37
|
+
- 直接使用 OpenSpec CLI surface,不读取 repo-local `openspec-*` skill 文本。
|
|
38
|
+
- 用 `openspec status --change "<change>" --json` 获取 artifact 顺序、状态和路径。
|
|
39
|
+
- OpenSpec 标准文件必须通过 `openspec instructions` 生成,不要手写绕过:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
openspec instructions <artifact-id> --change "<change>" --json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Packet 驱动的阶段门
|
|
46
|
+
|
|
47
|
+
按 artifact 依赖顺序工作,每个门都先读 packet,allowed 后才进入下一段:
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
superspec guard workflow-packet --change "<change>" --gate proposal_reviewed --format agent
|
|
51
|
+
superspec guard workflow-packet --change "<change>" --gate design_complete --format agent
|
|
52
|
+
superspec guard workflow-packet --change "<change>" --gate invariants_reviewed --format agent
|
|
53
|
+
superspec guard workflow-packet --change "<change>" --gate test_contract_drafted --format agent
|
|
54
|
+
superspec guard workflow-packet --change "<change>" --gate tasks_complete --format agent
|
|
55
|
+
superspec guard workflow-packet --change "<change>" --gate apply_ready --format agent
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`proposal_reviewed` 不是 advisory note;它是硬门。`propose.proposal_reviewed`、`propose.design_reviewed`、`propose.invariants_reviewed`、`propose.test_plan_drafted`、`propose.tasks_mapped` 是兼容别名,packet 输出中的规范 gate 名为准。
|
|
59
|
+
|
|
60
|
+
## Native Subagent 边界
|
|
61
|
+
|
|
62
|
+
- proposal review 使用 repo-local `critic`。
|
|
63
|
+
- design review 使用 repo-local `architect`、`critic`、`test-engineer`。
|
|
64
|
+
- business-invariants 和 test-contract review 使用 repo-local `critic` / `test-engineer`。
|
|
65
|
+
- reviewer prompt 一律由 `review-packet --format prompt` 生成;主线程 digest 输入一律由 `review-packet --role main-thread --format agent` 读取。
|
|
66
|
+
- round > 1 必须使用 packet/ledger 注入,不手写历史 finding 清单。
|
|
67
|
+
|
|
68
|
+
## 用户确认边界
|
|
69
|
+
|
|
70
|
+
关键范围、非目标、验收标准、业务语义和设计边界问题必须停止并交给用户确认。主线程不能静默关闭这类 finding;需要回 explore 或回上游 artifact 时,按 packet 和 guard 给出的 route 处理。
|
|
71
|
+
|
|
72
|
+
设计选项选择、任务审查确认,以及任何会改变范围或验收标准的处理,都必须等待明确用户确认。
|
|
73
|
+
|
|
74
|
+
## 完成检查
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
superspec guard workflow-packet --change "<change>" --gate apply_ready --format agent
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
只有 apply-ready allowed 后,才进入 `superspec-apply`。
|