@pzy560117/opensuper 0.2.6

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.
Files changed (74) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +362 -0
  3. package/assets/manifest.json +21 -0
  4. package/assets/skills/opensuper/SKILL.md +268 -0
  5. package/assets/skills/opensuper/scripts/opensuper-archive.sh +255 -0
  6. package/assets/skills/opensuper/scripts/opensuper-guard.sh +407 -0
  7. package/assets/skills/opensuper/scripts/opensuper-state.sh +680 -0
  8. package/assets/skills/opensuper/scripts/opensuper-yaml-validate.sh +157 -0
  9. package/assets/skills/opensuper-archive/SKILL.md +69 -0
  10. package/assets/skills/opensuper-build/SKILL.md +194 -0
  11. package/assets/skills/opensuper-design/SKILL.md +84 -0
  12. package/assets/skills/opensuper-hotfix/SKILL.md +146 -0
  13. package/assets/skills/opensuper-open/SKILL.md +82 -0
  14. package/assets/skills/opensuper-tweak/SKILL.md +133 -0
  15. package/assets/skills/opensuper-verify/SKILL.md +139 -0
  16. package/assets/skills-zh/opensuper/SKILL.md +271 -0
  17. package/assets/skills-zh/opensuper-archive/SKILL.md +69 -0
  18. package/assets/skills-zh/opensuper-build/SKILL.md +194 -0
  19. package/assets/skills-zh/opensuper-design/SKILL.md +84 -0
  20. package/assets/skills-zh/opensuper-hotfix/SKILL.md +152 -0
  21. package/assets/skills-zh/opensuper-open/SKILL.md +84 -0
  22. package/assets/skills-zh/opensuper-tweak/SKILL.md +139 -0
  23. package/assets/skills-zh/opensuper-verify/SKILL.md +154 -0
  24. package/bin/opensuper.js +3 -0
  25. package/dist/cli/index.d.ts +2 -0
  26. package/dist/cli/index.d.ts.map +1 -0
  27. package/dist/cli/index.js +63 -0
  28. package/dist/cli/index.js.map +1 -0
  29. package/dist/commands/doctor.d.ts +9 -0
  30. package/dist/commands/doctor.d.ts.map +1 -0
  31. package/dist/commands/doctor.js +191 -0
  32. package/dist/commands/doctor.js.map +1 -0
  33. package/dist/commands/init.d.ts +17 -0
  34. package/dist/commands/init.d.ts.map +1 -0
  35. package/dist/commands/init.js +242 -0
  36. package/dist/commands/init.js.map +1 -0
  37. package/dist/commands/status.d.ts +6 -0
  38. package/dist/commands/status.d.ts.map +1 -0
  39. package/dist/commands/status.js +108 -0
  40. package/dist/commands/status.js.map +1 -0
  41. package/dist/commands/update.d.ts +28 -0
  42. package/dist/commands/update.d.ts.map +1 -0
  43. package/dist/commands/update.js +193 -0
  44. package/dist/commands/update.js.map +1 -0
  45. package/dist/core/detect.d.ts +13 -0
  46. package/dist/core/detect.d.ts.map +1 -0
  47. package/dist/core/detect.js +101 -0
  48. package/dist/core/detect.js.map +1 -0
  49. package/dist/core/openspec.d.ts +5 -0
  50. package/dist/core/openspec.d.ts.map +1 -0
  51. package/dist/core/openspec.js +58 -0
  52. package/dist/core/openspec.js.map +1 -0
  53. package/dist/core/platforms.d.ts +15 -0
  54. package/dist/core/platforms.d.ts.map +1 -0
  55. package/dist/core/platforms.js +48 -0
  56. package/dist/core/platforms.js.map +1 -0
  57. package/dist/core/skills.d.ts +22 -0
  58. package/dist/core/skills.d.ts.map +1 -0
  59. package/dist/core/skills.js +59 -0
  60. package/dist/core/skills.js.map +1 -0
  61. package/dist/core/superpowers.d.ts +5 -0
  62. package/dist/core/superpowers.d.ts.map +1 -0
  63. package/dist/core/superpowers.js +60 -0
  64. package/dist/core/superpowers.js.map +1 -0
  65. package/dist/core/types.d.ts +2 -0
  66. package/dist/core/types.d.ts.map +1 -0
  67. package/dist/core/types.js +2 -0
  68. package/dist/core/types.js.map +1 -0
  69. package/dist/utils/file-system.d.ts +25 -0
  70. package/dist/utils/file-system.d.ts.map +1 -0
  71. package/dist/utils/file-system.js +53 -0
  72. package/dist/utils/file-system.js.map +1 -0
  73. package/package.json +60 -0
  74. package/scripts/postinstall.js +44 -0
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: opensuper-archive
3
+ description: "OpenSuper 阶段 5:归档。用 /opensuper-archive 调用。同步 delta spec 到主 spec,归档 change。"
4
+ ---
5
+
6
+ # OpenSuper 阶段 5:归档(Archive)
7
+
8
+ ## 前置条件
9
+
10
+ - 验证已通过(阶段 4 完成)
11
+ - 分支已处理
12
+ - `openspec/changes/<name>/.opensuper.yaml` 中 `verify_result: pass`
13
+
14
+ ## 步骤
15
+
16
+ ### 0. 入口状态验证(Entry Check)
17
+
18
+ 执行入口验证:
19
+
20
+ ```bash
21
+ OPENSUPER_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
22
+ OPENSUPER_STATE="${OPENSUPER_STATE:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-state.sh' -type f -print -quit 2>/dev/null)}"
23
+ bash "$OPENSUPER_STATE" check <name> archive
24
+ ```
25
+
26
+ 验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
27
+
28
+ ### 1. 执行归档
29
+
30
+ 运行归档脚本,自动完成以下全部步骤:
31
+
32
+ ```bash
33
+ bash "$OPENSUPER_ARCHIVE" "<change-name>"
34
+ ```
35
+
36
+ 脚本自动执行:
37
+ 1. 入口状态验证(phase=archive, verify_result=pass, archived=false)
38
+ 2. Delta spec 同步到主 spec
39
+ 3. Design doc 前置元数据标注(archived-with, status)
40
+ 4. Plan 前置元数据标注(archived-with)
41
+ 5. 移动 change 到归档目录
42
+ 6. 通过 `opensuper-state transition <archive-name> archived` 更新 `archived: true`
43
+
44
+ 如脚本返回非零退出码,报告错误并停止。
45
+ 如脚本返回零退出码,归档完成。
46
+ 脚本摘要中的 `X/Y steps succeeded` 以真实执行步骤计数,不会因 delta spec 同步或文档标注重复累计。
47
+
48
+ 当待同步的 delta spec 与已有主 spec 不一致时,脚本会在覆盖前打印 unified diff 预览,帮助确认归档同步内容。
49
+
50
+ 如需预览而不实际执行,使用 `--dry-run` 参数。
51
+
52
+ ### 2. 生命周期闭环
53
+
54
+ Spec 生命周期在此完成:
55
+ ```
56
+ brainstorming → delta spec → 实施 → 验证 → 主 spec 覆盖 → design doc 标注 → 归档
57
+ ```
58
+
59
+ ## 退出条件
60
+
61
+ - 归档脚本执行成功(退出码 0)
62
+ - 归档目录 `openspec/changes/archive/YYYY-MM-DD-<change-name>/` 存在
63
+ - 归档后的 `.opensuper.yaml` 中 `archived: true`
64
+
65
+ 归档脚本会把 `openspec/changes/<name>/` 移动到 `openspec/changes/archive/YYYY-MM-DD-<name>/`。归档成功后**不要再对原 change 名运行** `bash "$OPENSUPER_GUARD" <change-name> archive`,因为原活跃目录已经不存在。归档完整性以脚本退出码和归档目录状态为准。
66
+
67
+ ## 完成
68
+
69
+ OpenSuper 流程全部完成。如需开始新工作,调用 `/opensuper` 或 `/opensuper-open`。
@@ -0,0 +1,194 @@
1
+ ---
2
+ name: opensuper-build
3
+ description: "OpenSuper 阶段 3:计划与构建。用 /opensuper-build 调用。制定计划并选择执行方式(subagent 或直接执行)实施。"
4
+ ---
5
+
6
+ # OpenSuper 阶段 3:计划与构建(Build)
7
+
8
+ ## 前置条件
9
+
10
+ - Design Doc 已创建(阶段 2 完成)
11
+ - 活跃 change 存在
12
+
13
+ ## 步骤
14
+
15
+ ### 0. 入口状态验证(Entry Check)
16
+
17
+ 执行入口验证:
18
+
19
+ ```bash
20
+ OPENSUPER_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
21
+ OPENSUPER_STATE="${OPENSUPER_STATE:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-state.sh' -type f -print -quit 2>/dev/null)}"
22
+ OPENSUPER_GUARD="${OPENSUPER_GUARD:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-guard.sh' -type f -print -quit 2>/dev/null)}"
23
+ bash "$OPENSUPER_STATE" check <name> build
24
+ ```
25
+
26
+ 验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
27
+
28
+ ### 1. 制定计划
29
+
30
+ **立即执行:** 使用 Skill 工具加载 `superpowers:writing-plans` 技能。禁止跳过此步骤。
31
+
32
+ 技能加载后,按其指引制定计划。计划要求:
33
+ - 保存至 `docs/superpowers/plans/YYYY-MM-DD-<feature>.md`
34
+ - 引用设计文档,拆分为可执行任务
35
+ - **Plan 文件头必须包含关联元数据**:
36
+
37
+ ```yaml
38
+ ---
39
+ change: <openspec-change-name>
40
+ design-doc: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
41
+ base-ref: <git rev-parse HEAD before implementation>
42
+ ---
43
+ ```
44
+
45
+ `base-ref` 用于验证阶段跨提交统计改动规模。创建计划时先记录当前提交:
46
+
47
+ ```bash
48
+ git rev-parse HEAD
49
+ ```
50
+
51
+ ### 2. 更新计划状态
52
+
53
+ 先记录 plan 路径:
54
+
55
+ ```bash
56
+ bash "$OPENSUPER_STATE" set <name> plan docs/superpowers/plans/YYYY-MM-DD-feature.md
57
+ ```
58
+
59
+ 无需手动更新 phase,guard 会在退出条件满足后自动流转。
60
+
61
+ ### 3. 工作区隔离
62
+
63
+ 计划已写入当前分支。在开始执行前,选择工作区隔离方式:
64
+
65
+ | 选项 | 方式 | 说明 |
66
+ |------|------|------|
67
+ | A | 创建分支 | 在当前仓库创建新分支,简单快速 |
68
+ | B | 创建 Worktree | 隔离工作区,完全独立,适合并行开发 |
69
+
70
+ **推荐规则**:
71
+ - 变更涉及 ≤ 3 个文件 → 推荐 A
72
+ - 需要并行开发、当前分支有未提交工作 → 推荐 B
73
+
74
+ 用户选择后,更新 `isolation` 字段。`isolation` 只允许以下值之一:
75
+
76
+ ```bash
77
+ bash "$OPENSUPER_STATE" set <name> isolation <value>
78
+ ```
79
+
80
+ - `branch`
81
+ - `worktree`
82
+
83
+ <IMPORTANT>
84
+ 这是脚本级硬约束,不是建议。full workflow 初始化时 `isolation` 可以暂时为 `null`,但只允许存在到本步骤之前。
85
+ 进入实现前必须停下来询问用户并写入 `branch` 或 `worktree`。若保持 `null`,`build → verify` 的 guard 和 `opensuper-state transition build-complete` 都会失败。
86
+ </IMPORTANT>
87
+
88
+ **执行隔离**:
89
+
90
+ - **branch**:执行 `git checkout -b <change-name>`,后续工作在新分支上进行
91
+ - **worktree**:调用 `superpowers:using-git-worktrees` 技能或使用原生 `EnterWorktree` 工具创建隔离工作区
92
+
93
+ 创建隔离后,确认计划文件可访问(分支方式天然可访问;worktree 方式需确认计划已提交)。
94
+
95
+ ### 4. 选择执行方式
96
+
97
+ 向用户展示计划摘要(任务数、涉及模块),然后询问执行方式:
98
+
99
+ | 选项 | 技能 | 适用场景 |
100
+ |------|------|---------|
101
+ | A | `superpowers:subagent-driven-development` | 任务独立、复杂度高、需要双阶段审查 |
102
+ | B | `superpowers:executing-plans` | 任务简单、无子agent环境、轻量快速 |
103
+
104
+ **推荐规则**:
105
+ - 任务数 ≥ 3 → 推荐 A
106
+ - 任务数 ≤ 2 且无跨模块依赖 → 推荐 B
107
+ - 来自 hotfix 路径 → 推荐 B
108
+
109
+ 用户选择后,更新 `build_mode` 字段。`build_mode` 只允许以下值之一:
110
+
111
+ ```bash
112
+ bash "$OPENSUPER_STATE" set <name> build_mode <value>
113
+ ```
114
+
115
+ - `subagent-driven-development`
116
+ - `executing-plans`
117
+ - `direct`(默认仅 hotfix/tweak preset 使用)
118
+
119
+ full workflow 不得默认使用 `direct`。只有用户明确要求跳过计划执行技能,且你已记录显式 override 时,才允许:
120
+
121
+ ```bash
122
+ bash "$OPENSUPER_STATE" set <name> direct_override true
123
+ bash "$OPENSUPER_STATE" set <name> build_mode direct
124
+ ```
125
+
126
+ 没有 `direct_override: true` 时,full workflow 的 `build_mode=direct` 会被 guard 和状态转换同时拦截。
127
+
128
+ 然后,**立即执行:** 使用 Skill 工具加载对应技能。禁止跳过此步骤。
129
+
130
+ 如所选 Superpowers 技能不可用,停止流程并提示安装或启用对应技能,不要用普通对话替代该步骤。
131
+
132
+ 技能加载后,按其指引执行:
133
+ - 按计划执行任务
134
+ - 完成 tasks.md 勾选(`- [ ]` → `- [x]`)
135
+ - 每个任务完成后提交代码
136
+
137
+ ### 5. Spec 增量更新
138
+
139
+ 实施过程中发现初版 spec 不完整时,按变更规模分级处理:
140
+
141
+ | 规模 | 触发条件 | 做法 |
142
+ |------|---------|------|
143
+ | 小 | 遗漏验收场景、边界条件 | 直接编辑 delta spec + design.md,追加 tasks.md 任务 |
144
+ | 中 | 接口变更、新增组件、数据流变化 | 重新 `superpowers:brainstorming` 更新 Design Doc + delta spec |
145
+ | 大 | 全新 capability 需求 | `/opsx:new` 创建独立 change |
146
+
147
+ **50% 阈值判定**:以 tasks.md 初始任务总数为基准,若新增任务数超过该总数的一半,视为超出原计划范围,应考虑拆分为新 change。
148
+
149
+ **原则**:
150
+ - delta spec 是活文档,本阶段期间随时可修改
151
+ - 每次更新应提交,commit message 说明变更原因
152
+ - 不提前同步到 main spec,归档时统一同步
153
+ - 小规模增量直接改 delta spec 时,应在 commit message 中注明,便于归档时判断 design doc 漂移
154
+
155
+ ### 6. 上下文管理
156
+
157
+ Build 是最长阶段,可能跨越大量任务。为支持上下文压缩后断点恢复:
158
+
159
+ - **每完成一个 task**:立即勾选 tasks.md 并提交代码,确保 `.opensuper.yaml` 和文件状态持久化
160
+ - **上下文压缩后恢复**:读取 `.opensuper.yaml` 的 `phase` 字段确认仍在 build 阶段,读取 plan 文件头的 `base-ref`,再读取 tasks.md 找到下一个未勾选任务继续执行
161
+ - **长任务拆分**:单任务超过 200 行代码变更时,考虑拆分为多个子任务分别提交
162
+
163
+ ## 退出条件
164
+
165
+ - tasks.md 全部勾选
166
+ - 代码已提交
167
+ - 已显式运行项目对应的构建/测试命令并通过(不要只依赖 guard 自动猜测)
168
+ - `isolation` 已写为 `branch` 或 `worktree`
169
+ - `build_mode` 已写为 `subagent-driven-development`、`executing-plans` 或带显式 override 的 `direct`
170
+ - **阶段守卫**:运行 `bash "$OPENSUPER_GUARD" <change-name> build --apply`,全部 PASS 后自动流转到 `phase: verify`
171
+
172
+ Guard 会优先读取项目配置中的命令:
173
+
174
+ ```yaml
175
+ build_command: <build command>
176
+ verify_command: <verify command>
177
+ ```
178
+
179
+ 配置位置可为 change 的 `.opensuper.yaml`,也可为仓库根目录的 `.opensuper.yaml` / `opensuper.yaml` / `.opensuper.yml` / `opensuper.yml`。
180
+ 未配置时才回退到 `npm run build`、Maven 或 Cargo 的默认探测。构建失败时 guard 会打印失败命令输出,作为排查证据。
181
+
182
+ 退出前运行 guard 自动流转:
183
+
184
+ ```bash
185
+ bash "$OPENSUPER_GUARD" <change-name> build --apply
186
+ ```
187
+
188
+ 状态文件自动更新为 `phase: verify`、`verify_result: pending`。
189
+
190
+ ## 自动流转
191
+
192
+ 退出条件满足后,**无需等待用户再次输入**,直接执行下一阶段:
193
+
194
+ > **REQUIRED NEXT SKILL:** 调用 `opensuper-verify` skill 进入验证与收尾阶段。
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: opensuper-design
3
+ description: "OpenSuper 阶段 2:深度设计。用 /opensuper-design 调用。通过 brainstorming 产出 Design Doc 和 delta spec。"
4
+ ---
5
+
6
+ # OpenSuper 阶段 2:深度设计(Design)
7
+
8
+ ## 前置条件
9
+
10
+ - 活跃 change 已存在(proposal.md、design.md、tasks.md)
11
+ - 无 Design Doc(`docs/superpowers/specs/` 下无对应文件)
12
+
13
+ ## 步骤
14
+
15
+ ### 0. 入口状态验证(Entry Check)
16
+
17
+ 执行入口验证:
18
+
19
+ ```bash
20
+ OPENSUPER_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
21
+ OPENSUPER_STATE="${OPENSUPER_STATE:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-state.sh' -type f -print -quit 2>/dev/null)}"
22
+ OPENSUPER_GUARD="${OPENSUPER_GUARD:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-guard.sh' -type f -print -quit 2>/dev/null)}"
23
+ bash "$OPENSUPER_STATE" check <name> design
24
+ ```
25
+
26
+ 验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
27
+
28
+ ### 1a. 读取已有上下文
29
+
30
+ 读取活跃 change 下的 `proposal.md` 和 `design.md`,将核心内容整理为摘要:
31
+ - **proposal 摘要**:目标、动机、范围
32
+ - **design 摘要**:架构决策、高层设计
33
+
34
+ ### 1b. 执行 Brainstorming(带上下文)
35
+
36
+ **立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming` 技能,ARGUMENTS 包含:
37
+
38
+ ```
39
+ Change: <change-name>
40
+ Proposal 摘要: <proposal 核心内容>
41
+ Design 摘要: <design.md 架构决策>
42
+ 跳过上下文探索,直接进入设计提问。
43
+ ```
44
+
45
+ 禁止跳过此步骤,禁止在未加载该技能的情况下继续。
46
+
47
+ 如 `superpowers:brainstorming` 不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。
48
+
49
+ 技能加载后,按其指引产出:
50
+ - `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` — 设计文档(技术 RFC)
51
+ - `openspec/changes/<name>/specs/<capability>/spec.md` — 能力规格(delta)
52
+
53
+ ### 2. 更新 OpenSuper 状态
54
+
55
+ 先记录 design_doc 路径,再运行 guard 自动流转:
56
+
57
+ ```bash
58
+ # 记录 design_doc 路径
59
+ bash "$OPENSUPER_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
60
+
61
+ # 自动流转到下一阶段
62
+ bash "$OPENSUPER_GUARD" <change-name> design --apply
63
+ ```
64
+
65
+ 状态文件自动更新,无需手动编辑其他字段。
66
+
67
+ ## 退出条件
68
+
69
+ - Design Doc 已创建并保存
70
+ - 如有新能力则 delta spec 已创建
71
+ - `design_doc` 已写入 `.opensuper.yaml`
72
+ - **阶段守卫**:运行 `bash "$OPENSUPER_GUARD" <change-name> design --apply`,全部 PASS 后自动流转到 `phase: build`
73
+
74
+ 退出前必须使用 `--apply`:
75
+
76
+ ```bash
77
+ bash "$OPENSUPER_GUARD" <change-name> design --apply
78
+ ```
79
+
80
+ ## 自动流转
81
+
82
+ 退出条件满足后,**无需等待用户再次输入**,直接执行下一阶段:
83
+
84
+ > **REQUIRED NEXT SKILL:** 调用 `opensuper-build` skill 进入计划与构建阶段。
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: opensuper-hotfix
3
+ description: "OpenSuper 预设路径:Bug fix / 热修复。跳过 brainstorming,直接 open → build → verify → archive。适用于行为修复、不涉及新 capability 设计的场景。"
4
+ ---
5
+
6
+ # OpenSuper 预设路径:Hotfix
7
+
8
+ 快速 bug fix 工作流:open → build → verify → archive。跳过 brainstorming 和完整 plan,适用于行为修复、不涉及新 capability 设计的场景。
9
+
10
+ **适用条件**(必须全部满足):
11
+ 1. 修复已有功能的 bug,不新增 capability
12
+ 2. 不涉及接口变更或架构调整
13
+ 3. 改动范围可预估(通常 ≤ 2 个文件)
14
+
15
+ **不适用**:如修复过程发现需要架构调整,应升级为完整 `/opensuper` 流程。
16
+
17
+ ---
18
+
19
+ ## 流程(preset workflow,4 阶段)
20
+
21
+ 执行链路:open → build → verify → archive。Hotfix 为每个阶段提供默认决策:精简开启、直接构建、按规模验证、验证通过后归档。
22
+
23
+ 开始前先定位 OpenSuper 脚本:
24
+
25
+ ```bash
26
+ OPENSUPER_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
27
+ OPENSUPER_STATE="${OPENSUPER_STATE:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-state.sh' -type f -print -quit 2>/dev/null)}"
28
+ OPENSUPER_GUARD="${OPENSUPER_GUARD:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-guard.sh' -type f -print -quit 2>/dev/null)}"
29
+ OPENSUPER_ARCHIVE="${OPENSUPER_ARCHIVE:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-archive.sh' -type f -print -quit 2>/dev/null)}"
30
+ ```
31
+
32
+ ### 1. 快速开启(preset open)
33
+
34
+ 复用 OpenSuper open 能力创建 change,但使用 hotfix 默认值:不执行 `openspec-explore` 长探索,直接进入精简 change 创建。
35
+
36
+ **立即执行:** 使用 Skill 工具加载 `openspec-new-change` 技能。禁止跳过此步骤。
37
+
38
+ 技能加载后,按其指引创建精简版产物:
39
+ - `proposal.md` — 问题描述 + 根因分析 + 修复目标(无需方案对比)
40
+ - `design.md` — 修复方案(1 个即可,无需多方案对比)
41
+ - `tasks.md` — 修复任务清单
42
+ - **无需 delta spec**(除非修复改变了已有 spec 的验收场景)
43
+
44
+ 初始化 OpenSuper 状态文件:
45
+
46
+ ```bash
47
+ bash "$OPENSUPER_STATE" init <name> hotfix
48
+ ```
49
+
50
+ 初始化后验证状态:
51
+
52
+ ```bash
53
+ bash "$OPENSUPER_STATE" check <name> open
54
+ ```
55
+
56
+ 阶段守卫完成 open → build 过渡:
57
+
58
+ ```bash
59
+ bash "$OPENSUPER_GUARD" <change-name> open --apply
60
+ ```
61
+
62
+ ### 2. 直接构建(preset build)
63
+
64
+ 使用 hotfix 默认值:`build_mode: direct`。跳过 `superpowers:brainstorming` 和 `superpowers:writing-plans`(除非任务 > 3 个;若超过 3 个任务,转入 `/opensuper-build` 的计划与执行方式选择)。
65
+
66
+ **立即执行:** 按 tasks.md 逐个执行任务:
67
+
68
+ 1. 读取 `openspec/changes/<name>/tasks.md`,获取未完成任务列表
69
+ 2. 对每个未完成任务:
70
+ - 根据任务描述修改代码
71
+ - 运行项目格式化命令(如 `mvn spotless:apply`、`npm run format` 等)
72
+ - 运行相关测试确认通过
73
+ - 将 tasks.md 中对应 `- [ ]` 勾选为 `- [x]`
74
+ - 提交代码,commit message 格式:`fix: <简述修复>`
75
+ 3. 全部任务完成后,显式运行项目相关测试和构建命令
76
+ 4. 运行阶段守卫完成 build → verify 过渡:
77
+
78
+ ```bash
79
+ bash "$OPENSUPER_GUARD" <change-name> build --apply
80
+ ```
81
+
82
+ 状态文件自动更新为 `phase: verify`、`verify_result: pending`,然后进入验证。
83
+
84
+ **如修复影响已有 spec 验收场景**:
85
+ - 在 `openspec/changes/<name>/specs/<capability>/spec.md` 创建 delta spec
86
+ - 仅包含 `## MODIFIED Requirements` 部分
87
+
88
+ ### 3a. Hotfix 专属检查:根因消除
89
+
90
+ **在加载 opensuper-verify 之前执行**,确保修复确实消除了问题根因:
91
+
92
+ 1. 读取 proposal.md 中的 bug 描述和根因
93
+ 2. 搜索验证问题代码不再存在
94
+ 3. 如根因未消除,返回 Step 2 继续修复
95
+
96
+ **升级条件**:
97
+ - 根因消除检查发现深层架构问题 → 停止 hotfix,升级为 `/opensuper`
98
+ - 修复需要额外接口变更 → 停止 hotfix,升级为 `/opensuper`
99
+
100
+ ### 3b. 验证(preset verify)
101
+
102
+ 根因消除检查通过后,复用 `/opensuper-verify`,由 opensuper-verify 的规模评估决定轻量或完整验证。
103
+
104
+ **立即执行:** 使用 Skill 工具加载 `opensuper-verify` 技能。禁止跳过此步骤。
105
+
106
+ 无 delta spec 的小范围 hotfix 通常满足轻量验证条件(≤ 3 tasks、≤ 2 files),opensuper-verify 的规模评估会选择轻量验证路径(5 项快速检查)。若 hotfix 创建了 delta spec,则根据 opensuper-verify 的规模评估规则进入完整验证路径。
107
+
108
+ 验证通过后,按 `/opensuper-verify` 的规则将 `.opensuper.yaml` 的 `verify_result` 记录为 `pass`,归档前不得跳过该状态。
109
+
110
+ ### 4. 归档(preset archive)
111
+
112
+ 复用 `/opensuper-archive`。归档前必须满足 `.opensuper.yaml` 中 `verify_result: pass`。
113
+
114
+ **立即执行:** 使用 Skill 工具加载 `opensuper-archive` 技能进行归档。禁止跳过此步骤。
115
+ 如有 delta spec,按 opensuper-archive 规则同步到 main spec,并处理关联 Design Doc 与 Plan 的归档标注。
116
+
117
+ ---
118
+
119
+ ## 连续执行模式
120
+
121
+ <IMPORTANT>
122
+ Hotfix 流程为 **一次性连续执行**。调用 `/opensuper-hotfix` 后,agent 必须自动走完全部 4 个阶段,中间不停顿等待用户输入(除非遇到升级条件需要用户确认)。
123
+
124
+ 执行顺序:快速开启 → 直接构建 → 验证 → 归档 → 完成
125
+
126
+ 每个阶段完成后立即进入下一阶段,无需用户再次输入。阶段内部仍必须按上文要求调用对应 OpenSuper/OpenSpec/Superpowers skill。
127
+ </IMPORTANT>
128
+
129
+ ---
130
+
131
+ ## 升级条件
132
+
133
+ 满足以下**任一**条件时,停止 hotfix 流程,升级为完整 `/opensuper`:
134
+
135
+ | 条件 | 说明 |
136
+ |------|------|
137
+ | 改动涉及 **3+ 文件** | 超出单点修复范围 |
138
+ | 架构变更 | 新模块、新接口、新依赖 |
139
+ | 数据库 schema 变更 | 结构性调整 |
140
+ | 引入新的 public API | 修复产生了新的对外接口 |
141
+ | 修复范围超出单一函数/模块 | 需要多处协调修改 |
142
+
143
+ 升级方式:在当前 change 基础上补充 Design Doc(执行 `/opensuper-design`),后续正常走完整流程。
144
+
145
+ ---
146
+
147
+ ## 退出条件
148
+
149
+ - Bug 已修复,测试通过
150
+ - change 已归档
151
+ - 如有 spec 变更,已同步到 main spec
152
+ - **阶段守卫**:build → verify 前运行 `bash "$OPENSUPER_GUARD" <change-name> build --apply`,verify → archive 前按 `/opensuper-verify` 规则运行 `bash "$OPENSUPER_GUARD" <change-name> verify --apply`
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: opensuper-open
3
+ description: "OpenSuper 阶段 1:开启。用 /opensuper-open 调用。通过 OpenSpec 探索想法、创建 change 结构(proposal + design + tasks)。"
4
+ ---
5
+
6
+ # OpenSuper 阶段 1:开启(Open)
7
+
8
+ ## 前置条件
9
+
10
+ - 无活跃 change,或用户希望创建新 change
11
+
12
+ ## 步骤
13
+
14
+ ### 1. 探索想法
15
+
16
+ **立即执行:** 使用 Skill 工具加载 `openspec-explore` 技能。禁止跳过此步骤。
17
+
18
+ 技能加载后,按其指引自由探索问题空间。
19
+
20
+ ### 2. 创建 Change 结构 + 初始化状态
21
+
22
+ **立即执行:** 使用 Skill 工具加载 `openspec-new-change` 技能。若用户意图未明确、需要先形成建议,改为加载 `openspec-propose`。禁止跳过此步骤。
23
+
24
+ 确认以下产物已创建:
25
+
26
+ ```
27
+ openspec/changes/<name>/
28
+ ├── .openspec.yaml
29
+ ├── .opensuper.yaml
30
+ ├── proposal.md # Why + What:问题、目标、范围
31
+ ├── design.md # How(高层):架构决策、方案选型
32
+ └── tasks.md # 任务清单(勾选框)
33
+ ```
34
+
35
+ 创建 `.opensuper.yaml` 状态文件:
36
+
37
+ ```bash
38
+ OPENSUPER_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
39
+ OPENSUPER_STATE="${OPENSUPER_STATE:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-state.sh' -type f -print -quit 2>/dev/null)}"
40
+ OPENSUPER_GUARD="${OPENSUPER_GUARD:-$(find "${OPENSUPER_SEARCH_ROOTS[@]}" -path '*/opensuper/scripts/opensuper-guard.sh' -type f -print -quit 2>/dev/null)}"
41
+
42
+ if [ -z "$OPENSUPER_STATE" ] || [ -z "$OPENSUPER_GUARD" ]; then
43
+ echo "ERROR: OpenSuper scripts not found. Ensure the opensuper skill is installed." >&2
44
+ return 1
45
+ fi
46
+
47
+ bash "$OPENSUPER_STATE" init <name> full
48
+ ```
49
+
50
+ ### 3. 入口状态验证
51
+
52
+ 验证状态机已正确初始化:
53
+
54
+ ```bash
55
+ bash "$OPENSUPER_STATE" check <name> open
56
+ ```
57
+
58
+ 验证通过后继续 Step 4。验证失败时脚本会输出具体失败原因。
59
+
60
+ ### 4. 内容完整性检查
61
+
62
+ 确认三个文档内容完整:
63
+ - **proposal.md**:问题背景、目标、范围、非目标
64
+ - **design.md**:高层架构决策、方案选型、数据流
65
+ - **tasks.md**:任务列表,每个任务有明确描述
66
+
67
+ ## 退出条件
68
+
69
+ - proposal.md、design.md、tasks.md 均已创建且内容完整
70
+ - **阶段守卫**:运行 `bash "$OPENSUPER_GUARD" <change-name> open --apply`,全部 PASS 后自动流转到下一阶段
71
+
72
+ 退出前必须使用 `--apply`,否则 `.opensuper.yaml` 仍停留在 `phase: open`,下一阶段入口检查会失败。
73
+
74
+ ```bash
75
+ bash "$OPENSUPER_GUARD" <change-name> open --apply
76
+ ```
77
+
78
+ 完整流程会自动更新为 `phase: design`;hotfix/tweak preset 会自动更新为 `phase: build`。
79
+
80
+ ## 自动流转
81
+
82
+ 退出条件满足后,**无需等待用户再次输入**,直接执行下一阶段:
83
+
84
+ > **REQUIRED NEXT SKILL:** 调用 `opensuper-design` skill 进入深度设计阶段。