@specpow/framework 0.5.9 → 0.5.11

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 (164) hide show
  1. package/CHANGELOG.md +623 -623
  2. package/LICENSE +21 -21
  3. package/bin/specpow.js +9 -9
  4. package/dist/cli/index.d.ts.map +1 -1
  5. package/dist/cli/index.js +4 -2
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/commands/apply.d.ts.map +1 -1
  8. package/dist/commands/apply.js +12 -11
  9. package/dist/commands/apply.js.map +1 -1
  10. package/dist/commands/archive.d.ts.map +1 -1
  11. package/dist/commands/archive.js +30 -3
  12. package/dist/commands/archive.js.map +1 -1
  13. package/dist/commands/config.d.ts.map +1 -1
  14. package/dist/commands/config.js +5 -1
  15. package/dist/commands/config.js.map +1 -1
  16. package/dist/commands/doctor.d.ts.map +1 -1
  17. package/dist/commands/doctor.js +29 -10
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/execute.d.ts.map +1 -1
  20. package/dist/commands/execute.js +5 -2
  21. package/dist/commands/execute.js.map +1 -1
  22. package/dist/commands/explore.d.ts.map +1 -1
  23. package/dist/commands/explore.js +8 -10
  24. package/dist/commands/explore.js.map +1 -1
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +6 -3
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/propose.d.ts.map +1 -1
  29. package/dist/commands/propose.js +4 -3
  30. package/dist/commands/propose.js.map +1 -1
  31. package/dist/commands/schema.d.ts.map +1 -1
  32. package/dist/commands/schema.js +5 -2
  33. package/dist/commands/schema.js.map +1 -1
  34. package/dist/commands/status.d.ts.map +1 -1
  35. package/dist/commands/status.js +17 -11
  36. package/dist/commands/status.js.map +1 -1
  37. package/dist/commands/store.d.ts.map +1 -1
  38. package/dist/commands/store.js +8 -6
  39. package/dist/commands/store.js.map +1 -1
  40. package/dist/commands/update.d.ts.map +1 -1
  41. package/dist/commands/update.js +3 -1
  42. package/dist/commands/update.js.map +1 -1
  43. package/dist/commands/validate-specs.d.ts.map +1 -1
  44. package/dist/commands/validate-specs.js +8 -5
  45. package/dist/commands/validate-specs.js.map +1 -1
  46. package/dist/commands/verify.d.ts.map +1 -1
  47. package/dist/commands/verify.js +17 -19
  48. package/dist/commands/verify.js.map +1 -1
  49. package/dist/commands/workflow/index.d.ts.map +1 -1
  50. package/dist/commands/workflow/index.js +18 -10
  51. package/dist/commands/workflow/index.js.map +1 -1
  52. package/dist/core/archive/engine.d.ts.map +1 -1
  53. package/dist/core/archive/engine.js +10 -6
  54. package/dist/core/archive/engine.js.map +1 -1
  55. package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
  56. package/dist/core/artifact-graph/resolver.js +5 -2
  57. package/dist/core/artifact-graph/resolver.js.map +1 -1
  58. package/dist/core/config/config-schema.d.ts +104 -0
  59. package/dist/core/config/config-schema.d.ts.map +1 -1
  60. package/dist/core/config/config-schema.js +15 -1
  61. package/dist/core/config/config-schema.js.map +1 -1
  62. package/dist/core/hooks/session-start-hook.d.ts.map +1 -1
  63. package/dist/core/hooks/session-start-hook.js +76 -45
  64. package/dist/core/hooks/session-start-hook.js.map +1 -1
  65. package/dist/core/hooks/workflow-state-hook.d.ts.map +1 -1
  66. package/dist/core/hooks/workflow-state-hook.js +3 -1
  67. package/dist/core/hooks/workflow-state-hook.js.map +1 -1
  68. package/dist/core/init/codegraph-step.d.ts +36 -0
  69. package/dist/core/init/codegraph-step.d.ts.map +1 -0
  70. package/dist/core/init/codegraph-step.js +109 -0
  71. package/dist/core/init/codegraph-step.js.map +1 -0
  72. package/dist/core/init/engine.d.ts +2 -2
  73. package/dist/core/init/engine.d.ts.map +1 -1
  74. package/dist/core/init/engine.js +28 -14
  75. package/dist/core/init/engine.js.map +1 -1
  76. package/dist/core/memory/adapters/sqlite-adapter.js +55 -55
  77. package/dist/core/migration/index.d.ts.map +1 -1
  78. package/dist/core/migration/index.js +128 -4
  79. package/dist/core/migration/index.js.map +1 -1
  80. package/dist/core/store/index.d.ts +4 -3
  81. package/dist/core/store/index.d.ts.map +1 -1
  82. package/dist/core/store/index.js +7 -7
  83. package/dist/core/store/index.js.map +1 -1
  84. package/dist/core/task-parser.d.ts +17 -0
  85. package/dist/core/task-parser.d.ts.map +1 -0
  86. package/dist/core/task-parser.js +59 -0
  87. package/dist/core/task-parser.js.map +1 -0
  88. package/dist/core/templates/index.d.ts +1 -1
  89. package/dist/core/templates/index.d.ts.map +1 -1
  90. package/dist/core/templates/index.js +11 -6
  91. package/dist/core/templates/index.js.map +1 -1
  92. package/dist/core/workflow-state.d.ts +1 -1
  93. package/dist/core/workflow-state.d.ts.map +1 -1
  94. package/dist/core/workflow-state.js +10 -5
  95. package/dist/core/workflow-state.js.map +1 -1
  96. package/dist/templates/claude-commands/specpow-apply.md +23 -23
  97. package/dist/templates/claude-commands/specpow-archive.md +22 -22
  98. package/dist/templates/claude-commands/specpow-propose.md +27 -27
  99. package/dist/templates/claude-commands/specpow-status.md +22 -22
  100. package/dist/templates/claude-commands/specpow-validate-specs.md +28 -28
  101. package/dist/templates/claude-commands/specpow-verify.md +21 -21
  102. package/dist/templates/claude-commands/specpow.md +34 -34
  103. package/package.json +121 -122
  104. package/.specpow/agents/controller/sdd-controller.md +0 -55
  105. package/.specpow/agents/execution/java-codegen-agent.md +0 -39
  106. package/.specpow/agents/execution/ui-codegen-agent.md +0 -32
  107. package/.specpow/agents/ops/deploy-agent.md +0 -181
  108. package/.specpow/agents/planning/db-designer-agent.md +0 -30
  109. package/.specpow/agents/planning/prd-agent.md +0 -31
  110. package/.specpow/agents/quality/review-agent.md +0 -36
  111. package/.specpow/agents/quality/test-agent.md +0 -33
  112. package/.specpow/hooks/hooks.json +0 -30
  113. package/.specpow/hooks/run-hook.cmd +0 -19
  114. package/.specpow/hooks/session-start +0 -62
  115. package/.specpow/hooks/workflow-state +0 -150
  116. package/.specpow/schemas/bug-fix/schema.yaml +0 -64
  117. package/.specpow/schemas/bug-fix/templates/analysis.md +0 -43
  118. package/.specpow/schemas/bug-fix/templates/fix-plan.md +0 -19
  119. package/.specpow/schemas/bug-fix/templates/proposal.md +0 -30
  120. package/.specpow/schemas/crud-module/schema.yaml +0 -65
  121. package/.specpow/schemas/crud-module/templates/design.md +0 -36
  122. package/.specpow/schemas/crud-module/templates/proposal.md +0 -30
  123. package/.specpow/schemas/crud-module/templates/spec.md +0 -38
  124. package/.specpow/schemas/crud-module/templates/tasks.md +0 -57
  125. package/.specpow/schemas/spec-driven/schema.yaml +0 -87
  126. package/.specpow/schemas/spec-driven/templates/design.md +0 -54
  127. package/.specpow/schemas/spec-driven/templates/proposal.md +0 -31
  128. package/.specpow/schemas/spec-driven/templates/spec.md +0 -42
  129. package/.specpow/schemas/spec-driven/templates/tasks.md +0 -98
  130. package/.specpow/skills/business-code-review/SKILL.md +0 -78
  131. package/.specpow/skills/business-db-design/SKILL.md +0 -74
  132. package/.specpow/skills/business-deploy-check/SKILL.md +0 -72
  133. package/.specpow/skills/business-doc-sync/SKILL.md +0 -72
  134. package/.specpow/skills/business-java-codegen/SKILL.md +0 -97
  135. package/.specpow/skills/business-menu-register/SKILL.md +0 -63
  136. package/.specpow/skills/business-prd-writer/SKILL.md +0 -80
  137. package/.specpow/skills/business-test-gen/SKILL.md +0 -82
  138. package/.specpow/skills/business-ui-codegen/SKILL.md +0 -104
  139. package/.specpow/skills/cli-router/SKILL.md +0 -108
  140. package/.specpow/skills/execution-finish-branch/SKILL.md +0 -58
  141. package/.specpow/skills/execution-git-worktrees/SKILL.md +0 -48
  142. package/.specpow/skills/execution-parallel-agents/SKILL.md +0 -46
  143. package/.specpow/skills/execution-receiving-review/SKILL.md +0 -47
  144. package/.specpow/skills/execution-requesting-review/SKILL.md +0 -51
  145. package/.specpow/skills/execution-sdd-orchestrator/SKILL.md +0 -366
  146. package/.specpow/skills/execution-subagent-dispatch/SKILL.md +0 -295
  147. package/.specpow/skills/execution-subagent-driven-dev/SKILL.md +0 -143
  148. package/.specpow/skills/execution-systematic-debugging/SKILL.md +0 -95
  149. package/.specpow/skills/execution-tdd/SKILL.md +0 -74
  150. package/.specpow/skills/execution-verification-before-completion/SKILL.md +0 -75
  151. package/.specpow/skills/meta-create-skill/SKILL.md +0 -374
  152. package/.specpow/skills/meta-using-skills/SKILL.md +0 -97
  153. package/.specpow/skills/meta-writing-skills/SKILL.md +0 -66
  154. package/.specpow/skills/planning-apply-change/SKILL.md +0 -194
  155. package/.specpow/skills/planning-archive-change/SKILL.md +0 -43
  156. package/.specpow/skills/planning-explore/SKILL.md +0 -103
  157. package/.specpow/skills/planning-onboard/SKILL.md +0 -61
  158. package/.specpow/skills/planning-propose/SKILL.md +0 -140
  159. package/.specpow/skills/planning-update-change/SKILL.md +0 -45
  160. package/.specpow/skills/planning-verify-change/SKILL.md +0 -58
  161. package/.specpow/skills/planning-write-design/SKILL.md +0 -59
  162. package/.specpow/skills/planning-write-plans/SKILL.md +0 -55
  163. package/.specpow/skills/planning-write-specs/SKILL.md +0 -91
  164. package/.specpow/skills/using-specpow/SKILL.md +0 -232
@@ -1,63 +0,0 @@
1
- ---
2
- name: business-menu-register
3
- description: SpecPow business-menu-register skill
4
- ---
5
-
6
- # 菜单注册
7
-
8
- > 根据新增页面/功能,生成系统菜单注册 SQL 和路由配置
9
-
10
- ## 触发条件
11
-
12
- - 新增页面需要注册到系统菜单
13
- - 用户提到"注册菜单"/"添加菜单"/"系统菜单"
14
- - 新模块的权限配置
15
-
16
- ## 铁律
17
-
18
- 1. **层级正确** — 一级菜单 → 二级菜单 → 按钮权限
19
- 2. **ID 唯一** — 菜单 ID 不与已有冲突
20
- 3. **路径一致** — 菜单路径与前端路由一致
21
- 4. **权限编码规范** — 模块:功能:操作
22
-
23
- ## 菜单结构
24
-
25
- ```sql
26
- -- 一级菜单(目录)
27
- INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, menu_type, visible, status)
28
- VALUES (2000, '模块名称', 0, 1, '/module', 'M', '0', '0');
29
-
30
- -- 二级菜单(页面)
31
- INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status)
32
- VALUES (2001, '页面名称', 2000, 1, 'page', 'module/page/index', 'C', '0', '0');
33
-
34
- -- 按钮权限
35
- INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, menu_type, perms, visible, status)
36
- VALUES (2011, '新增', 2001, 1, 'F', 'module:entity:add', '0', '0');
37
- INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, menu_type, perms, visible, status)
38
- VALUES (2012, '修改', 2001, 2, 'F', 'module:entity:edit', '0', '0');
39
- INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, menu_type, perms, visible, status)
40
- VALUES (2013, '删除', 2001, 3, 'F', 'module:entity:remove', '0', '0');
41
- INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, menu_type, perms, visible, status)
42
- VALUES (2014, '查询', 2001, 4, 'F', 'module:entity:query', '0', '0');
43
- ```
44
-
45
- ## 工作流
46
-
47
- 1. **扫描已有菜单** — 查询最大 menu_id,避免冲突
48
- 2. **确认菜单层级** — 目录(M) → 菜单(C) → 按钮(F)
49
- 3. **生成 SQL** — 按层级顺序生成 INSERT 语句
50
- 4. **生成路由** — 对应的前端路由配置
51
- 5. **验证** — 检查 ID 唯一性和路径一致性
52
-
53
- ## 输出格式
54
-
55
- 1. 菜单注册 SQL(可直接执行)
56
- 2. 前端路由配置
57
- 3. 权限编码清单
58
-
59
- ## 红旗
60
-
61
- - 菜单 ID 冲突 → 重新分配
62
- - 路径与已有路由冲突 → 报告冲突
63
- - 缺少父级菜单 → 先创建目录
@@ -1,80 +0,0 @@
1
- ---
2
- name: business-prd-writer
3
- description: SpecPow business-prd-writer skill
4
- ---
5
-
6
- # PRD 编写
7
-
8
- > 将用户口述、会议纪要、原型截图转化为结构化 PRD 文档
9
-
10
- ## 触发条件
11
-
12
- - 用户描述一个新功能/需求
13
- - 用户提到"写 PRD"/"需求文档"/"产品需求"
14
- - 项目启动阶段的需求梳理
15
-
16
- ## 铁律
17
-
18
- 1. **不替用户决定** — 不确定的地方标注 [待确认]
19
- 2. **用例驱动** — 每个功能点至少 1 个用例
20
- 3. **可验证** — 每个需求有明确的验收标准
21
- 4. **边界清晰** — 明确"做什么"和"不做什么"
22
-
23
- ## PRD 结构
24
-
25
- ```markdown
26
- # [功能名称] PRD
27
-
28
- ## 1. 背景与目标
29
- - 业务背景
30
- - 核心目标(可量化)
31
- - 成功指标
32
-
33
- ## 2. 用户角色
34
- | 角色 | 描述 | 核心诉求 |
35
- |------|------|----------|
36
-
37
- ## 3. 功能需求
38
- ### 3.1 [功能模块]
39
- - 用例 UC-001: [用例名称]
40
- - 前置条件:
41
- - 主流程:
42
- - 备选流程:
43
- - 异常流程:
44
-
45
- ## 4. 非功能需求
46
- - 性能要求
47
- - 安全要求
48
- - 兼容性要求
49
-
50
- ## 5. 数据需求
51
- - 核心实体
52
- - 字段清单
53
- - 数据流向
54
-
55
- ## 6. 界面原型
56
- - 页面列表
57
- - 关键交互说明
58
-
59
- ## 7. 排期建议
60
- - 优先级排序(P0/P1/P2)
61
- - 依赖关系
62
-
63
- ## 8. 待确认项
64
- - [ ] 问题1
65
- - [ ] 问题2
66
- ```
67
-
68
- ## 工作流
69
-
70
- 1. **收集信息** — 与用户对话,提取关键需求
71
- 2. **结构化** — 按 PRD 模板整理
72
- 3. **补充细节** — 推断合理的用例和边界
73
- 4. **标注不确定** — 用 [待确认] 标记
74
- 5. **用户确认** — 输出后请用户审核
75
-
76
- ## 红旗
77
-
78
- - 用户描述模糊 → 提出澄清问题,不猜测
79
- - 需求超出当前迭代 → 标注"后续迭代"
80
- - 涉及其他系统 → 标注集成依赖
@@ -1,82 +0,0 @@
1
- ---
2
- name: business-test-gen
3
- description: SpecPow business-test-gen skill
4
- ---
5
-
6
- # 测试代码生成
7
-
8
- > 根据业务层代码,生成单元测试
9
-
10
- ## 技术栈配置
11
-
12
- 本技能的**默认**技术栈为 JUnit5 + Mockito(Java),但会根据项目实际使用的测试框架自动适配:
13
-
14
- - **测试框架** — 优先使用项目已有的框架(JUnit5 / JUnit4 / TestNG / Jest / Vitest / pytest)
15
- - **Mock 工具** — 匹配项目已有 Mock 方案(Mockito / Sinon / unittest.mock / gomock)
16
- - **断言库** — 使用项目已有的断言风格(AssertJ / Hamcrest / Jest expect / chai)
17
- - **运行命令** — 从项目 package.json / pom.xml / build.gradle 推断测试运行命令
18
-
19
- ## 触发条件
20
-
21
- - 用户要求生成测试代码
22
- - 执行 apply-change 中任务包含验证步骤
23
- - 用户提到"写测试"/"单测"/"覆盖率"
24
-
25
- ## 铁律
26
-
27
- 1. **测行为不测实现** — 测试输入→输出,不关心内部怎么实现
28
- 2. **Mock 外部依赖** — 数据库、RPC、HTTP 全部 Mock
29
- 3. **边界必测** — null、空集合、极值、异常路径
30
- 4. **失败自修** — 测试失败自动修复,最多 3 轮
31
-
32
- ## 工作流
33
-
34
- ### 阶段 1:分析被测代码
35
- 1. 读取目标 Service/Mapper 类
36
- 2. 识别所有 public 方法
37
- 3. 分析方法依赖(需要 Mock 的对象)
38
- 4. 提取业务规则和边界条件
39
-
40
- ### 阶段 2:生成测试
41
-
42
- **测试类结构:**
43
- ```java
44
- @ExtendWith(MockitoExtension.class)
45
- class XxxServiceTest {
46
-
47
- @InjectMocks
48
- private XxxServiceImpl xxxService;
49
-
50
- @Mock
51
- private XxxMapper xxxMapper;
52
-
53
- // 每个方法至少 2 个测试:正常路径 + 异常路径
54
- @Test
55
- @DisplayName("方法名 - 场景描述")
56
- void methodName_scenario() {
57
- // Given
58
- // When
59
- // Then
60
- }
61
- }
62
- ```
63
-
64
- **覆盖场景类型:**
65
- - 正常输入 → 预期输出
66
- - null 参数 → 抛出异常或返回默认值
67
- - 空集合 → 正确处理
68
- - 数据库无记录 → 返回 null
69
- - 业务规则违反 → 抛出 BusinessException
70
-
71
- ### 阶段 3:执行与自修
72
-
73
- 1. 运行测试:`mvn test -Dtest=XxxServiceTest`
74
- 2. 如果失败,分析错误原因
75
- 3. 修复测试代码(不修改被测代码)
76
- 4. 最多 3 轮,仍失败则报告问题
77
-
78
- ## 红旗
79
-
80
- - 被测类不存在 → 先生成业务代码
81
- - 项目无测试框架 → 询问用户选择测试框架
82
- - 覆盖率低于 60% → 补充测试用例
@@ -1,104 +0,0 @@
1
- ---
2
- name: business-ui-codegen
3
- description: SpecPow business-ui-codegen skill
4
- ---
5
-
6
- # UI 代码生成
7
-
8
- > 根据设计文档和接口定义,生成前端页面/UI 代码
9
-
10
- ## 技术栈配置
11
-
12
- 本技能的**默认**技术栈为 Vue2 + View Design,但会根据项目实际使用的框架自动适配:
13
-
14
- - **前端框架** — 优先使用项目已有的框架(Vue2 / Vue3 / React / Angular)
15
- - **UI 组件库** — 匹配项目已有组件库(View Design / Element / Ant Design / MUI)
16
- - **状态管理** — 使用项目已有的状态管理(Vuex / Pinia / Redux / NgRx)
17
- - **样式方案** — 沿用项目已有的 CSS 方案(CSS Modules / Scoped CSS / Tailwind / Less / SCSS)
18
-
19
- 如果项目无已有前端代码,则在阶段 1 询问用户确认技术选型。
20
-
21
- ## 触发条件
22
-
23
- - 用户要求生成前端页面/UI 代码
24
- - 执行 apply-change 时涉及前端任务
25
- - 用户提到"生成页面"/"写组件"/"创建表单"
26
-
27
- ## 铁律
28
-
29
- 1. **接口先行** — 必须确认后端 API 已定义(路径、参数、返回值)
30
- 2. **组件复用** — 优先使用 View Design 组件,不造轮子
31
- 3. **样式规范** — 使用项目已有的 CSS 变量/mixin
32
- 4. **响应式** — 表格、表单必须适配常见分辨率
33
-
34
- ## 工作流
35
-
36
- ### 阶段 1:上下文收集
37
-
38
- 1. 读取 design.md 获取页面结构和交互设计
39
- 2. 确认 API 接口定义(路径、Method、参数、响应)
40
- 3. **扫描项目已有页面,识别技术栈**(框架、组件库、状态管理、样式方案)
41
- 4. 如果项目无已有前端代码,询问用户确认技术选型
42
- 5. 确认路由配置方式
43
-
44
- ### 阶段 2:代码生成
45
-
46
- 按以下顺序生成:
47
-
48
- **2.1 API 接口文件**
49
- ```
50
- 文件: src/api/xxx.js
51
- - 使用 axios 封装
52
- - 每个接口一个导出函数
53
- - 请求/响应拦截器统一处理
54
- ```
55
-
56
- **2.2 页面主文件**
57
- ```
58
- 文件: src/views/xxx/index.vue
59
- - <template>: View Design 组件组合
60
- - <script>: data/methods/computed/watch 标准结构
61
- - <style scoped>: 局部样式
62
- ```
63
-
64
- **2.3 列表页模板**
65
- ```
66
- - 搜索表单(Form + FormItem)
67
- - 操作按钮栏(新增/导出/批量操作)
68
- - 数据表格(Table + columns 配置)
69
- - 分页(Page 组件)
70
- - 新增/编辑弹窗(Modal + Form)
71
- ```
72
-
73
- **2.4 表单页模板**
74
- ```
75
- - 表单验证规则(rules)
76
- - 提交前校验
77
- - 返回/重置按钮
78
- ```
79
-
80
- **2.5 路由配置**
81
- ```
82
- - 路由路径与菜单对应
83
- - meta 包含 title、icon、权限
84
- ```
85
-
86
- ### 阶段 3:验证
87
-
88
- 1. 语法检查:Vue 模板无报错
89
- 2. 组件引用:所有使用的组件已注册
90
- 3. API 调用:接口路径和参数与设计一致
91
-
92
- ## 输出格式
93
-
94
- ```
95
- 文件: src/views/xxx/index.vue
96
- 类型: 页面组件
97
- 依赖: View Design, axios, 路由
98
- ```
99
-
100
- ## 红旗(立即停止)
101
-
102
- - API 接口未定义 → 先完成后端
103
- - 项目未使用 View Design → 确认 UI 框架
104
- - 发现已有同名页面 → 报告冲突
@@ -1,108 +0,0 @@
1
- ---
2
- name: cli-router
3
- version: 1.0.0
4
- trigger: on-demand
5
- description: SpecPow CLI 命令路由 — 将用户意图映射到 CLI 命令执行
6
- ---
7
-
8
- # SpecPow CLI 路由技能
9
-
10
- 当用户请求执行 SpecPow CLI 命令时,按以下规则执行。
11
-
12
- ## 铁律
13
-
14
- 1. **所有 CLI 命令通过 Bash 工具执行**,不在对话中模拟输出
15
- 2. **先检查状态**:执行任何命令前先 `specpow status`
16
- 3. **展示完整输出**:将命令输出完整展示给用户
17
- 4. **链式引导**:执行完一步后建议下一步
18
-
19
- ## 意图 → 命令映射表
20
-
21
- | 用户说 | 执行命令 |
22
- |--------|---------|
23
- | "探索需求" / "explore" / "specpow explore" | `specpow explore "主题"` |
24
- | "创建提案" / "propose" / "specpow propose" | `specpow propose <name>` |
25
- | "执行" / "apply" / "实现" / "specpow apply" | `specpow apply` |
26
- | "验证" / "verify" / "检查" / "specpow verify" | `specpow verify` |
27
- | "验证规范名称" / "validate-specs" / "specpow validate-specs" | `specpow validate-specs` |
28
- | "归档" / "archive" / "specpow archive" | `specpow archive` |
29
- | "状态" / "status" / "specpow status" | `specpow status` |
30
- | "调试" / "debug" / "specpow debug" | `specpow debug "描述"` |
31
- | "doctor" / "诊断" / "specpow doctor" | `specpow doctor` |
32
- | "review" / "审查" / "specpow review" | `specpow review` |
33
- | "schemas" / "schema 列表" | `specpow schemas` |
34
- | "更新" / "update" / "specpow update" | `specpow update` |
35
- | "配置" / "config" / "specpow config" | `specpow config` |
36
-
37
- ## 执行规则
38
-
39
- ### 交互式命令处理
40
-
41
- `specpow explore` 是交互式命令(使用 readline),在 Claude Code 的 Bash 工具中无法交互。
42
- 遇到此命令时:
43
- 1. 告诉用户需要在终端中运行:`specpow explore "主题"`
44
- 2. 或者尝试使用 `--json` 标志获取非交互式输出(如果支持)
45
- 3. 如果用户坚持在 Claude Code 中执行,使用苏格拉底式提问手动模拟探索流程
46
-
47
- ### 非交互式命令
48
-
49
- 其他所有命令(propose/apply/verify/validate-specs/archive/status)都是非交互式的,直接通过 Bash 执行:
50
-
51
- ```bash
52
- # 示例:执行状态检查
53
- specpow status
54
-
55
- # 示例:创建变更提案
56
- specpow propose add-login
57
-
58
- # 示例:使用特定 schema
59
- specpow propose fix-bug --schema bug-fix
60
-
61
- # 示例:验证变更
62
- specpow verify --change add-login
63
-
64
- # 示例:归档变更
65
- specpow archive --change add-login
66
- ```
67
-
68
- ### 错误处理
69
-
70
- 命令失败时:
71
- 1. 展示完整错误信息
72
- 2. 分析可能的原因
73
- 3. 建议解决方案
74
- 4. 如果适用,运行 `specpow doctor` 进行诊断
75
-
76
- ### 工作流引导
77
-
78
- 根据当前阶段引导用户:
79
-
80
- ```
81
- [无变更] → propose → [有提案] → apply → [已实现] → verify → [已验证] → archive
82
- ```
83
-
84
- 每次执行 `specpow status` 后,根据阶段推荐下一步操作:
85
- - 无活跃变更 → 建议 `/specpow-propose <name>`
86
- - 有提案但工件未完成 → 建议编辑工件文件
87
- - 工件已完成 → 建议 `/specpow-apply`
88
- - 已实现 → 建议 `/specpow-verify`
89
- - 已验证 → 建议 `/specpow-archive`
90
-
91
- ## 合理化防御表
92
-
93
- | 你以为的 | 实际应该做的 |
94
- |---------|------------|
95
- | "我可以直接告诉用户命令是什么" | 用 Bash 工具执行命令并展示结果 |
96
- | "这个命令太简单了,不需要执行" | 仍然执行,展示实际输出 |
97
- | "用户应该自己去终端运行" | 用户要求你执行,你就执行 |
98
- | "explore 是交互式的,我模拟一下" | 告诉用户需要在终端运行,或手动模拟苏格拉底式提问 |
99
-
100
- ## 红旗
101
-
102
- 以下想法意味着 STOP:
103
-
104
- | 想法 | 现实 |
105
- |------|------|
106
- | "我可以假装执行了命令" | 必须真正用 Bash 执行并展示输出 |
107
- | "这个命令会改变什么,让我先确认" | 直接执行,展示结果让用户确认 |
108
- | "用户可能不知道这个命令" | 执行命令后解释输出含义 |
@@ -1,58 +0,0 @@
1
- ---
2
- name: execution-finish-branch
3
- description: SpecPow execution-finish-branch skill
4
- ---
5
-
6
- # 完成分支
7
-
8
- > 分支开发完成后的合并和清理流程
9
-
10
- ## 触发条件
11
-
12
- - 变更所有任务完成 — 准备合并到主分支
13
- - 用户提到"完成分支"/"合并"/"清理"
14
-
15
- ## 铁律
16
-
17
- 1. **验证先行** — 合并前必须通过所有检查
18
- 2. **squash 合并** — 保持主分支历史整洁
19
- 3. **删除分支** — 合并后删除功能分支
20
- 4. **更新状态** — 归档变更
21
-
22
- ## 工作流
23
-
24
- ### 1. 最终验证
25
- ```bash
26
- # 确保测试通过
27
- pnpm test
28
-
29
- # 确保构建通过
30
- pnpm build
31
-
32
- # 确保无未提交变更
33
- git status
34
- ```
35
-
36
- ### 2. 合并
37
- ```bash
38
- git checkout main
39
- git merge --squash feature-branch
40
- git commit -m "feat: 变更描述"
41
- ```
42
-
43
- ### 3. 清理
44
- ```bash
45
- git branch -d feature-branch
46
- git worktree remove ../project-feature # 如果使用了 worktree
47
- ```
48
-
49
- ### 4. 归档变更
50
- ```bash
51
- specpow archive <change-id>
52
- ```
53
-
54
- ## 红旗
55
-
56
- - 测试未通过 → 不合并
57
- - 有冲突未解决 → 先解决冲突
58
- - 未归档变更 → 完成归档
@@ -1,48 +0,0 @@
1
- ---
2
- name: execution-git-worktrees
3
- description: SpecPow execution-git-worktrees skill
4
- ---
5
-
6
- # Git 工作树
7
- > 使用 git worktree 管理多个并行开发分支
8
-
9
- ## 触发条件
10
-
11
- - 需要同时处理多个变更
12
- - 用户提到"工作树"/"worktree"/"并行开发"
13
-
14
- ## 铁律
15
-
16
- 1. **一树一分支** — 每个 worktree 对应独立分支
17
- 2. **不共享 node_modules** — 每个工作树独立安装依赖
18
- 3. **完成后清理** — 合并后删除 worktree
19
-
20
- ## 工作流
21
-
22
- ### 创建 worktree
23
- ```bash
24
- git worktree add ../project-feature-a feature-a
25
- cd ../project-feature-a
26
- pnpm install
27
- ```
28
-
29
- ### 列出 worktree
30
- ```bash
31
- git worktree list
32
- ```
33
-
34
- ### 删除 worktree
35
- ```bash
36
- git worktree remove ../project-feature-a
37
- ```
38
-
39
- ## 适用场景
40
-
41
- - 同时开发多个需求
42
- - 紧急修复需要中断当前工作
43
- - 对比不同分支的实现
44
-
45
- ## 红旗
46
-
47
- - worktree 超过 5 个 → 清理不用的
48
- - 忘记切回主 worktree → 注意当前工作目录
@@ -1,46 +0,0 @@
1
- ---
2
- name: execution-parallel-agents
3
- description: 并行子代理调度。识别独立问题域,并行分发多个子代理同时处理。来自 Superpowers。
4
- ---
5
-
6
- # 并行代理调度
7
-
8
- ## 何时使用
9
-
10
- - 有多个独立的问题域
11
- - 问题之间没有依赖关系
12
- - 想要加速处理
13
-
14
- ## 流程
15
-
16
- ### 1. 识别独立性
17
- 分析问题,识别可以独立处理的子问题:
18
- - 不同的文件/模块
19
- - 不同的功能点
20
- - 不同的关注点(前端/后端/测试)
21
-
22
- ### 2. 验证独立性
23
- 确保子问题之间:
24
- - 不修改同一个文件
25
- - 不依赖彼此的输出
26
- - 接口已经定义清楚
27
-
28
- ### 3. 并行分发
29
-
30
- 为每个子问题分发一个子代理:
31
- - 每个子代理有独立的上下文
32
- - 每个子代理有明确的范围
33
- - 每个子代理有验证标准
34
-
35
- ### 4. 合并结果
36
-
37
- 所有子代理完成后:
38
- - 检查是否有冲突
39
- - 运行完整测试套件
40
- - 集成验证
41
-
42
- ## 注意事项
43
-
44
- - **绝不**并行修改同一个文件
45
- - 合并后必须运行完整测试
46
- - 如果子代理之间有依赖,改用串行
@@ -1,47 +0,0 @@
1
- ---
2
- name: execution-receiving-review
3
- description: SpecPow execution-receiving-review skill
4
- ---
5
-
6
- # 接收审查
7
-
8
- > 收到代码审查反馈后的正确处理流程
9
-
10
- ## 触发条件
11
-
12
- - 收到审查意见/评论
13
- - PR/MR 有审查反馈
14
- - 用户提到"处理审查"/"审查反馈"
15
-
16
- ## 铁律
17
-
18
- 1. **不辩解** — 审查意见是改进机会,不是攻击
19
- 2. **逐条回应** — 每个 Finding 都要回复
20
- 3. **修复优先** — Critical/Major 必须修复
21
- 4. **不扩大范围** — 只修复审查指出的问题
22
-
23
- ## 处理流程
24
-
25
- ### 1. 分类反馈
26
- - Critical → 立即修复
27
- - Major → 本轮修复
28
- - Minor → 本轮修复或标注后续处理
29
- - Suggestion → 评估后决定
30
-
31
- ### 2. 修复
32
- - 每个修复单独 commit
33
- - commit message 引用 Finding ID
34
-
35
- ### 3. 回应
36
- ```
37
- ✅ [Critical] SQL 注入 → 已修复 (commit abc123)
38
- ✅ [Major] 缺少事务 → 已修复 (commit def456)
39
- ⏳ [Minor] 命名优化 → 下个迭代处理
40
- 📝 [Suggestion] 重构 → 超出本次范围,记录到 backlog
41
- ```
42
-
43
- ## 红旗
44
-
45
- - 忽略 Critical → 必须修复
46
- - 反驳审查而不修改 → 重新评估
47
- - 修复引入新问题 → 回退并重新修复
@@ -1,51 +0,0 @@
1
- ---
2
- name: execution-requesting-review
3
- description: SpecPow execution-requesting-review skill
4
- ---
5
-
6
- # 请求审查
7
-
8
- > 在完成任务后,正确请求代码审查
9
-
10
- ## 触发条件
11
-
12
- - 任务完成后需要请求审查
13
- - 准备提交 PR/MR
14
- - 用户提到"请求审查"/"review"
15
-
16
- ## 铁律
17
-
18
- 1. **自审先行** — 先自己审查一遍再请求他人
19
- 2. **上下文充分** — 提供变更背景和影响范围
20
- 3. **范围明确** — 指明需要重点审查的部分
21
-
22
- ## 审查请求模板
23
-
24
- ```markdown
25
- ## 审查请求
26
-
27
- ### 变更概述
28
- - 变更 ID: xxx
29
- - 影响范围: [文件列表]
30
- - 变更类型: [新功能/修复/重构]
31
-
32
- ### 自审结果
33
- - [ ] 代码编译通过
34
- - [ ] 测试通过
35
- - [ ] 无 lint 警告
36
- - [ ] 文档已更新
37
-
38
- ### 重点审查
39
- 1. [文件:行号] — 请确认逻辑正确性
40
- 2. [文件:行号] — 请确认性能可接受
41
-
42
- ### 背景信息
43
- - 相关需求: [链接]
44
- - 技术决策: [说明]
45
- ```
46
-
47
- ## 红旗
48
-
49
- - 未自审就请求审查 → 先自审
50
- - 变更超过 500 行 → 拆分变更
51
- - 无测试 → 补充测试后再请求