@wenaixi/dsh-superpower 6.3.1 → 7.0.1

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 (93) hide show
  1. package/README.md +30 -24
  2. package/lib/catalog.d.ts +83 -0
  3. package/lib/catalog.d.ts.map +1 -0
  4. package/lib/catalog.js +231 -0
  5. package/lib/catalog.js.map +1 -0
  6. package/lib/document.d.ts +52 -0
  7. package/lib/document.d.ts.map +1 -0
  8. package/lib/document.js +196 -0
  9. package/lib/document.js.map +1 -0
  10. package/lib/superpowers.d.ts +9 -2
  11. package/lib/superpowers.d.ts.map +1 -1
  12. package/lib/superpowers.js +33 -253
  13. package/lib/superpowers.js.map +1 -1
  14. package/package.json +4 -4
  15. package/skills/{superpower-brainstorming → brainstorming}/SKILL.md +51 -35
  16. package/skills/{superpower-brainstorming → brainstorming}/scripts/server.cjs +6 -14
  17. package/skills/{superpower-brainstorming → brainstorming}/scripts/start-server.sh +1 -6
  18. package/skills/{superpower-brainstorming → brainstorming}/spec-document-reviewer-prompt.md +4 -4
  19. package/skills/{superpower-brainstorming → brainstorming}/visual-companion.md +8 -34
  20. package/skills/diagnosing-superpowers/SKILL.md +58 -0
  21. package/skills/diagnosing-superpowers/prompts/analyst-common.md +24 -0
  22. package/skills/diagnosing-superpowers/prompts/cost-and-time.md +12 -0
  23. package/skills/diagnosing-superpowers/prompts/plan-adherence.md +15 -0
  24. package/skills/diagnosing-superpowers/prompts/quality-evidence.md +11 -0
  25. package/skills/diagnosing-superpowers/prompts/repeated-work.md +19 -0
  26. package/skills/diagnosing-superpowers/prompts/request-conflicts.md +11 -0
  27. package/skills/diagnosing-superpowers/prompts/scrub-audit.md +20 -0
  28. package/skills/diagnosing-superpowers/prompts/scrub.md +16 -0
  29. package/skills/diagnosing-superpowers/prompts/similar-session.md +30 -0
  30. package/skills/diagnosing-superpowers/prompts/skill-timeline.md +16 -0
  31. package/skills/diagnosing-superpowers/prompts/stumbles.md +16 -0
  32. package/skills/diagnosing-superpowers/references/context-safety.md +14 -0
  33. package/skills/diagnosing-superpowers/references/github-issues.md +39 -0
  34. package/skills/diagnosing-superpowers/references/redaction-policy.md +22 -0
  35. package/skills/diagnosing-superpowers/references/session-discovery.md +20 -0
  36. package/skills/diagnosing-superpowers/templates/bundle-README.md +51 -0
  37. package/skills/diagnosing-superpowers/templates/case.md +57 -0
  38. package/skills/diagnosing-superpowers/templates/issue.md +45 -0
  39. package/skills/diagnosing-superpowers/templates/report.md +76 -0
  40. package/skills/{superpower-dispatching-parallel-agents → dispatching-parallel-agents}/SKILL.md +31 -31
  41. package/skills/executing-plans/SKILL.md +227 -0
  42. package/skills/executing-plans/scripts/task-done +52 -0
  43. package/skills/executing-plans/scripts/task-start +28 -0
  44. package/skills/{superpower-finishing-a-development-branch → finishing-a-development-branch}/SKILL.md +18 -18
  45. package/skills/{superpower-receiving-code-review → receiving-code-review}/SKILL.md +39 -39
  46. package/skills/{superpower-requesting-code-review → requesting-code-review}/SKILL.md +11 -11
  47. package/skills/{superpower-requesting-code-review → requesting-code-review}/code-reviewer.md +15 -7
  48. package/skills/subagent-driven-development/SKILL.md +355 -0
  49. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/implementer-prompt.md +10 -10
  50. package/skills/subagent-driven-development/re-review-prompt.md +83 -0
  51. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/scripts/review-package +8 -1
  52. package/skills/subagent-driven-development/scripts/sdd-workspace +82 -0
  53. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/scripts/task-brief +3 -1
  54. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/task-reviewer-prompt.md +27 -27
  55. package/skills/{superpower-systematic-debugging → systematic-debugging}/CREATION-LOG.md +9 -9
  56. package/skills/{superpower-systematic-debugging → systematic-debugging}/SKILL.md +8 -8
  57. package/skills/{superpower-systematic-debugging → systematic-debugging}/condition-based-waiting.md +9 -9
  58. package/skills/{superpower-systematic-debugging → systematic-debugging}/defense-in-depth.md +1 -1
  59. package/skills/{superpower-systematic-debugging → systematic-debugging}/find-polluter.sh +4 -4
  60. package/skills/{superpower-systematic-debugging → systematic-debugging}/root-cause-tracing.md +2 -2
  61. package/skills/{superpower-systematic-debugging → systematic-debugging}/test-pressure-1.md +1 -1
  62. package/skills/{superpower-systematic-debugging → systematic-debugging}/test-pressure-3.md +1 -1
  63. package/skills/{superpower-test-driven-development → test-driven-development}/SKILL.md +16 -14
  64. package/skills/{superpower-test-driven-development → test-driven-development}/writing-good-tests.md +29 -29
  65. package/skills/{superpower-using-git-worktrees → using-git-worktrees}/SKILL.md +12 -12
  66. package/skills/{superpower-using-superpowers → using-superpowers}/SKILL.md +8 -12
  67. package/skills/{superpower-using-superpowers → using-superpowers}/references/dsh-tools.md +8 -8
  68. package/skills/{superpower-verification-before-completion → verification-before-completion}/SKILL.md +17 -17
  69. package/skills/writing-plans/SKILL.md +167 -0
  70. package/skills/{superpower-writing-skills → writing-skills}/SKILL.md +75 -73
  71. package/skills/{superpower-writing-skills → writing-skills}/persuasion-principles.md +10 -10
  72. package/skills/{superpower-writing-skills → writing-skills}/testing-skills-with-subagents.md +53 -53
  73. package/skills/superpower-executing-plans/SKILL.md +0 -64
  74. package/skills/superpower-subagent-driven-development/SKILL.md +0 -347
  75. package/skills/superpower-subagent-driven-development/re-review-prompt.md +0 -83
  76. package/skills/superpower-subagent-driven-development/scripts/sdd-workspace +0 -40
  77. package/skills/superpower-using-superpowers/references/antigravity-tools.md +0 -23
  78. package/skills/superpower-using-superpowers/references/codex-tools.md +0 -108
  79. package/skills/superpower-using-superpowers/references/gemini-tools.md +0 -63
  80. package/skills/superpower-using-superpowers/references/hermes-tools.md +0 -56
  81. package/skills/superpower-using-superpowers/references/pi-tools.md +0 -16
  82. package/skills/superpower-writing-plans/SKILL.md +0 -160
  83. package/skills/superpower-writing-plans/plan-document-reviewer-prompt.md +0 -49
  84. package/skills/superpower-writing-skills/anthropic-best-practices.md +0 -1146
  85. package/skills/superpower-writing-skills/examples/CLAUDE_MD_TESTING.md +0 -188
  86. /package/skills/{superpower-brainstorming → brainstorming}/scripts/frame-template.html +0 -0
  87. /package/skills/{superpower-brainstorming → brainstorming}/scripts/helper.js +0 -0
  88. /package/skills/{superpower-brainstorming → brainstorming}/scripts/stop-server.sh +0 -0
  89. /package/skills/{superpower-systematic-debugging → systematic-debugging}/condition-based-waiting-example.ts +0 -0
  90. /package/skills/{superpower-systematic-debugging → systematic-debugging}/test-academic.md +0 -0
  91. /package/skills/{superpower-systematic-debugging → systematic-debugging}/test-pressure-2.md +0 -0
  92. /package/skills/{superpower-writing-skills → writing-skills}/graphviz-conventions.dot +0 -0
  93. /package/skills/{superpower-writing-skills → writing-skills}/render-graphs.js +0 -0
@@ -1,6 +1,6 @@
1
1
  # 编写高质量测试
2
2
 
3
- **何时加载本文档:** 编写或修改测试、添加 Mock,或为测试添加清理/辅助方法时。
3
+ **何时加载本文档:** 编写或修改测试、添加 mock,或为测试添加清理/辅助方法时。
4
4
 
5
5
  ## 概述
6
6
 
@@ -11,7 +11,7 @@
11
11
  2. 每个测试都要验证真实对象
12
12
  ```
13
13
 
14
- 严格的 TDD 能自然地满足这两点:先写测试并观察其在真实代码上失败,就已经证明了它具备失败能力;只有当真实依赖被证明缓慢或涉及外部系统时,才引入 Mock。
14
+ 严格的 TDD 能自然地满足这两点:先写测试并观察其在真实代码上失败,就已经证明了它具备失败能力;只有当真实依赖被证明缓慢或涉及外部系统时,才引入 mock。
15
15
 
16
16
  ## 原则一:明确测试要捕获的缺陷
17
17
 
@@ -20,19 +20,19 @@
20
20
  **独立推导期望值。** 使用字面量和人工校验的固件;表格驱动测试中 `want` 使用字面量是首选形式。由被测代码(或其辅助函数)计算出的期望值,无论代码做什么都能通过:
21
21
 
22
22
  ```typescript
23
- // ❌ Mirror assertion: the same builder computes both sides — always true
23
+ // [FAIL] 镜像断言:同一个构造器算出两侧——永远为真
24
24
  const expected = buildSearchQuery({ tag: 'urgent' });
25
25
  expect(buildSearchQuery({ tag: 'urgent' })).toBe(expected);
26
26
 
27
- // ✅ Hand-derived literal
27
+ // [OK] 手工推导的字面量
28
28
  expect(buildSearchQuery({ tag: 'urgent' })).toBe('tag:"urgent"');
29
29
  ```
30
30
 
31
- **不要写变更探测器。** 如果只有有意决策才能让测试失败——如常量的取值、文案措辞、内部结构——那么它只会在重构时触发,却在真正的缺陷面前保持沉默。应该测试依赖于该决策的行为:不要写 `expect(MAX_RETRIES).toBe(5)`,而要验证“失败调用会被重试 5 次,第 6 次绝不会发起”。
31
+ **不要写变更探测器。** 如果只有有意决策才能让测试失败——如常量的取值、精确的措辞、内部结构——那么它只会在重新设计时触发,却在真正的缺陷面前保持沉默。应测试依赖于该决策的行为:不要写 `expect(MAX_RETRIES).toBe(5)`,而要验证“失败调用会被重试 5 次,且第 6 次绝不会发生”。
32
32
 
33
- **测行为,而非文本。** 断言脚本、技能或配置包含某一行,只能证明源码就是源码本身。应在受控输入下运行脚本,并断言其输出、副作用或退出码。面向 Agent 的指令性文档,应通过消费方 Agent 的行为来测试(superpower-writing-skills);面向人的 prose 则完全不需要测试。
33
+ **测行为,而非文本。** 断言脚本、技能或配置包含某一行,只能证明源码就是源码本身。应在受控输入下运行脚本,并断言其输出、副作用或退出码。面向 agent 的指令性文档,应通过消费方 agent 的行为来测试(writing-skills);面向人的 prose 则完全不需要测试。
34
34
 
35
- **测你的代码,而非框架。** 测试你的代码在其边界上做出的契约——你注册的路由、你发出的查询、你生成的负载。上游的实现机制应由其维护者来测试(典型反例:断言你的路由会调用已注册的处理器——那是框架的测试,不是你的)。当上游行为确实出乎意料时,针对该假设写一个窄范围的特征测试(characterization test)并明确命名假设。同样边界也适用于你的内部代码:构造函数、getter、常量和简单透传,只有在它们承担校验、归一化、默认值、推导、约束或副作用时才值得测试——否则应断言首个依赖于它们的、消费者可见的结果。
35
+ **测你的代码,而非框架。** 测试你的代码在其边界上做出的契约——你注册的路由、你发出的查询、你生成的负载。上游的实现机制应由其维护者来测试(典型反例:断言你的路由会调用已注册的处理器——那是框架的测试,不是你的)。当上游行为确实出乎意料时,针对该假设写一个窄范围的特征测试(characterization test),并命名该假设。同样的边界也适用于你的内部代码:构造函数、getter、常量和简单透传,只有在它们承担校验、归一化、默认值、推导、约束或副作用时才值得测试——否则应断言首个依赖于它们的、消费者可见的结果。
36
36
 
37
37
  ### 门禁检查
38
38
 
@@ -52,51 +52,51 @@ expect(buildSearchQuery({ tag: 'urgent' })).toBe('tag:"urgent"');
52
52
 
53
53
  ## 原则二:使用真实对象
54
54
 
55
- **Mock 本身不值得断言。** 对 Mock 的断言,只在 Mock 存在时通过、不存在时失败——它对组件本身一无所言。应断言真实组件的行为;如果你发现自己在检查 Mock,那就去掉 Mock 或删掉该断言。
55
+ **mock 本身不值得断言。** 对 mock 的断言,只在 mock 存在时通过、不存在时失败——它对组件本身一无所言。应断言真实组件的行为;如果你发现自己在检查 mock,那就去掉 mock 或删掉该断言。
56
56
 
57
57
  ```typescript
58
- // ✅ Real behavior
58
+ // [OK] 真实行为
59
59
  expect(screen.getByRole('navigation')).toBeInTheDocument();
60
60
 
61
- // ❌ Mock existence
61
+ // [FAIL] mock 的存在性
62
62
  expect(screen.getByTestId('sidebar-mock')).toBeInTheDocument();
63
63
  ```
64
64
 
65
- **你的搭档的提醒:**“我们在测试 Mock 的行为吗?”
65
+ **你的 human partner 的提醒:**“我们在测试 mock 的行为吗?”
66
66
 
67
- **在正确的层级 Mock。** 在替换真实方法前,先了解它的所有副作用;只 Mock 缓慢或外部的操作,保留测试所依赖的部分为真实实现。不确定时,先让测试跑在真实实现上,观察究竟需要发生什么。
67
+ **在正确的层级 mock。** 在替换真实方法前,先了解它的所有副作用;只 mock 缓慢或外部的操作,保留测试所依赖的部分为真实实现。不确定时,先让测试跑在真实实现上,观察究竟需要发生什么。
68
68
 
69
69
  ```typescript
70
- // ❌ The mock swallows the config write that duplicate detection reads
70
+ // [FAIL] mock 吞掉了重复检测所读取的配置写入
71
71
  vi.mock('ToolCatalog', () => ({
72
72
  discoverAndCacheTools: vi.fn().mockResolvedValue(undefined)
73
73
  }));
74
74
 
75
- // ✅ Mock only the slow server startup; the config write stays real
75
+ // [OK] 只 mock 缓慢的服务器启动;配置写入保持真实
76
76
  vi.mock('MCPServerManager');
77
77
  ```
78
78
 
79
79
  **让替身足够具体。** 当参数、调用次数或顺序属于契约的一部分时,就要断言它们——一个接受任意参数的假对象什么也验证不了。为每个分支(成功、失败、畸形输入)提供独立的固件或 spy,这样错误的分支就无法满足期望。
80
80
 
81
- **完整镜像真实数据。** 按真实存在的完整结构来 Mock——包含所有已文档化的字段——而不仅仅是你测试中读取的字段。部分 Mock 会在下游代码读取缺失字段时静默失败:测试通过,而集成已损坏。
81
+ **完整镜像真实数据。** 按真实存在的完整结构来 mock——包含所有已文档化的字段——而不仅仅是你测试中读取的字段。部分 mock 会在下游代码读取缺失字段时静默失败:测试通过,而集成已损坏。
82
82
 
83
- **生产类只承载生产方法。** 仅测试需要的清理逻辑应放在测试工具中,绝不要以 `destroy()` 的形式出现在生产类上。自问:这个方法是否只被测试调用?这个类是否拥有该资源的生命周期?答案有误 → 放到测试工具里。
83
+ **生产类只承载生产方法。** 仅测试需要的清理逻辑应放在测试工具中,绝不要以 `destroy()` 的形式出现在生产类上。自问:这个方法是否只被测试调用?这个类是否拥有该资源的lifecycle?答案有误 → 放到测试工具里。
84
84
 
85
- **复杂 Mock 不如真实组件。** 当 Mock 的搭建超过测试逻辑本身、Mock 缺少真实组件拥有的方法、或测试因 Mock 变更而崩溃时,改用基于真实组件的集成测试。**你的搭档的提问:**“这里真的需要用 Mock 吗?”
85
+ **复杂 mock 不如真实组件。** 当 mock 的搭建超过测试逻辑本身、mock 缺少真实组件拥有的方法、或测试因 mock 变更而崩溃时,改用基于真实组件的集成测试。**你的 human partner 的提问:**“这里真的需要用 mock 吗?”
86
86
 
87
87
  ### 门禁检查
88
88
 
89
89
  ```
90
- 添加 Mock 或测试辅助方法之前:
90
+ 添加 mock 或测试辅助方法之前:
91
91
  列出真实方法的所有副作用;测试所依赖的保持真实——
92
- 只在更底层的缓慢/外部层级进行 Mock。
92
+ 只在更底层的缓慢/外部层级进行 mock。
93
93
 
94
- Mock 的响应需完整镜像真实结构。
94
+ mock 的响应需完整镜像真实结构。
95
95
 
96
96
  仅被测试调用的方法归属于测试工具,而非生产代码。
97
97
 
98
- 正要对 Mock 本身做断言?
99
- 去掉 Mock 或删掉该断言。
98
+ 正要对 mock 本身做断言?
99
+ 去掉 mock 或删掉该断言。
100
100
  ```
101
101
 
102
102
  ## 测试与实现一同交付
@@ -123,11 +123,11 @@ TDD 循环——失败的测试、最小实现、重构——才是“完成”
123
123
  | 构造期望值 | 手工推导;绝不要用被测代码来计算 |
124
124
  | 测试脚本或文档 | 运行它 / 对其消费者做压力测试;不要 grep 文本 |
125
125
  | 想测试依赖 | 测试你的边界契约,而非对方已文档化的实现机制 |
126
- | 想对 Mock 元素做断言 | 测试真实组件,或去掉 Mock |
127
- | 准备 Mock 方法 | 了解其副作用;在缓慢/外部层级 Mock |
128
- | 构造 Mock 响应 | 完整镜像真实结构 |
126
+ | 想对 mock 元素做断言 | 测试真实组件,或去掉 mock |
127
+ | 准备 mock 方法 | 了解其副作用;在缓慢/外部层级 mock |
128
+ | 构造 mock 响应 | 完整镜像真实结构 |
129
129
  | 需要仅测试使用的清理逻辑 | 放到测试工具中 |
130
- | Mock 搭建急剧膨胀 | 改用基于真实组件的集成测试 |
130
+ | mock 搭建急剧膨胀 | 改用基于真实组件的集成测试 |
131
131
  | 完成测试文件 | 执行变异检查 |
132
132
 
133
133
  ## 警示信号
@@ -139,7 +139,7 @@ TDD 循环——失败的测试、最小实现、重构——才是“完成”
139
139
  - 测试 grep 源码文本,或断言已移除的符号保持移除
140
140
  - 即使只剩下框架,该测试依然“有意义”
141
141
  - 测试仅为覆盖率而存在,未检查任何副作用或结果
142
- - 断言检查 `*-mock` 测试 ID,或在移除 Mock 后失败
142
+ - 断言检查 `*-mock` 测试 ID,或在移除 mock 后失败
143
143
  - 某个方法只被测试文件调用
144
- - Mock 搭建超过测试的一半,或你无法解释为何需要 Mock
145
- - “为了保险”而 Mock
144
+ - mock 搭建超过测试的一半,或你无法解释为何需要 mock
145
+ - “为了保险”而 mock
@@ -1,21 +1,21 @@
1
1
  ---
2
- name: superpower-using-git-worktrees
3
- description: "适用于需与当前工作区隔离的功能开发或执行实现计划前,通过原生工具优先、git worktree 兜底的方式确保独立工作区就绪"
2
+ name: using-git-worktrees
3
+ description: "Superpower Skill:适用于需与当前 worktree 隔离的功能开发或执行实现计划前,通过原生工具优先、git worktree 兜底的方式确保独立 worktree 就绪。"
4
4
  ---
5
5
 
6
6
  # 使用 Git Worktree
7
7
 
8
8
  ## 概述
9
9
 
10
- 确保所有工作都在独立工作区中进行。优先使用平台原生的 worktree 工具,仅在无原生工具可用时再回退到手动 git worktree。
10
+ 确保所有工作都在独立 worktree 中进行。优先使用平台原生的 worktree 工具,仅在无原生工具可用时再回退到手动 git worktree。
11
11
 
12
12
  **核心原则:** 先检测是否已处于隔离环境,再使用原生工具,最后回退到 git。不要与 harness 对抗。
13
13
 
14
- **开始时声明:** “我正在使用 using-git-worktrees 技能来创建独立工作区。”
14
+ **开始时声明:** “我正在使用 using-git-worktrees 技能来创建独立 worktree。”
15
15
 
16
16
  ## 步骤 0:检测现有隔离状态
17
17
 
18
- **在创建任何内容之前,先检查是否已处于独立工作区中。**
18
+ **在创建任何内容之前,先检查是否已处于独立 worktree 中。**
19
19
 
20
20
  ```bash
21
21
  GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
@@ -33,8 +33,8 @@ git rev-parse --show-superproject-working-tree 2>/dev/null
33
33
  **若 `GIT_DIR != GIT_COMMON`(且不在子模块中):** 说明已处于关联 worktree 中。跳至步骤 2(项目初始化),不要再创建新的 worktree。
34
34
 
35
35
  按分支状态报告:
36
- - 处于分支上:“已在独立工作区 `<path>`,分支为 `<name>`。”
37
- - 游离 HEAD:“已在独立工作区 `<path>`(游离 HEAD,外部托管),结束时需创建分支。”
36
+ - 处于分支上:“已在独立 worktree `<path>`,分支为 `<name>`。”
37
+ - 游离 HEAD:“已在独立 worktree `<path>`(游离 HEAD,外部托管),结束时需创建分支。”
38
38
 
39
39
  **若 `GIT_DIR == GIT_COMMON`(或处于子模块中):** 说明处于常规仓库检出状态。
40
40
 
@@ -44,13 +44,13 @@ git rev-parse --show-superproject-working-tree 2>/dev/null
44
44
 
45
45
  若已存在明确偏好则直接遵循,无需询问。若用户拒绝,则在原地工作并跳至步骤 2。
46
46
 
47
- ## 步骤 1:创建独立工作区
47
+ ## 步骤 1:创建独立 worktree
48
48
 
49
49
  **你有两种机制,请按以下顺序尝试。**
50
50
 
51
51
  ### 1a. 原生 Worktree 工具(优先)
52
52
 
53
- 用户已请求独立工作区(步骤 0 已获同意)。你是否已有创建 worktree 的方式?可能是名为 `EnterWorktree`、`WorktreeCreate`、`/worktree` 命令或 `--worktree` 参数的工具。如果有,请直接使用并跳至步骤 2。
53
+ 用户已请求独立 worktree(步骤 0 已获同意)。你是否已有创建 worktree 的方式?可能是名为 `EnterWorktree`、`WorktreeCreate`、`/worktree` 命令或 `--worktree` 参数的工具。如果有,请直接使用并跳至步骤 2。
54
54
 
55
55
  原生工具会自动处理目录选址、分支创建和清理。使用 `git worktree add` 而绕过原生工具会产生 harness 无法感知和管理的幽灵状态。
56
56
 
@@ -120,7 +120,7 @@ if [ -f go.mod ]; then go mod download; fi
120
120
 
121
121
  ## 步骤 3:验证干净基线
122
122
 
123
- 运行测试以确保工作区初始状态干净:
123
+ 运行测试以确保 worktree 初始状态干净:
124
124
 
125
125
  ```bash
126
126
  # 使用项目对应的命令
@@ -162,6 +162,6 @@ Ready to implement <feature-name>
162
162
  |--------|---------|
163
163
  | “我显然不在 worktree 里,没必要检查” | 执行步骤 0。harness 创建的隔离和子模块都会让肉眼判断失误,用检测命令才能确定。 |
164
164
  | “`git worktree add` 比到处找原生工具更快” | 原生工具(如 `EnterWorktree`)负责选址、分支和清理。绕过它是头号错误——会产生 harness 无法感知和管理的幽灵状态。 |
165
- | “worktree 目录肯定已经被忽略了” | 请执行 `git check-ignore`。未被忽略的 worktree 目录会把整个工作树提交进仓库。 |
165
+ | “worktree 目录肯定已经被忽略了” | 请执行 `git check-ignore`。未被忽略的 worktree 目录会把整个 working tree 提交进仓库。 |
166
166
  | “随便起个目录名都行” | 显式指令优先于已存在的项目本地目录,项目本地目录优先于 `.worktrees/` 默认值。 |
167
- | “工作区是全新的,基线测试可以等等再跑” | 脏基线会让后续所有失败变得无法定位。现在就跑测试;是否带病继续由你的协作人决定。 |
167
+ | “worktree 是全新的,基线测试可以等等再跑” | 脏基线会让后续所有失败变得无法定位。现在就跑测试;是否带病继续由你的 human partner 决定。 |
@@ -1,10 +1,10 @@
1
1
  ---
2
- name: superpower-using-superpowers
3
- description: "适用于任何对话开始前,建立技能查找与调用规范,要求在任何回复前优先调用相关技能,包括澄清问题"
2
+ name: using-superpowers
3
+ description: "Superpower Skill:适用于任何对话开始前,建立技能查找与调用规范,要求在任何回复前优先调用相关技能,包括澄清问题。"
4
4
  ---
5
5
 
6
6
  <SUBAGENT-STOP>
7
- 如果你是作为子代理被派来执行特定任务,请忽略本技能。
7
+ 如果你是作为 subagent 被派来执行特定任务,请忽略本技能。
8
8
  </SUBAGENT-STOP>
9
9
 
10
10
  <EXTREMELY-IMPORTANT>
@@ -27,8 +27,8 @@ description: "适用于任何对话开始前,建立技能查找与调用规范
27
27
 
28
28
  当多个技能同时适用时,流程类技能优先——它们决定方法论,然后由实现类技能(如 frontend-design 等)负责落地。头脑风暴与系统化调试是 Superpowers 中最常见的流程技能,但该规则适用于所有技能。
29
29
 
30
- - "Let's build X" → 优先使用 superpower-brainstorming,再使用实现类技能。
31
- - "Fix this bug" → 优先使用 superpower-systematic-debugging,再使用领域技能。
30
+ - "Let's build X" → 优先使用 brainstorming,再使用实现类技能。
31
+ - "Fix this bug" → 优先使用 systematic-debugging,再使用领域技能。
32
32
 
33
33
  ## 警示信号
34
34
 
@@ -51,14 +51,10 @@ description: "适用于任何对话开始前,建立技能查找与调用规范
51
51
 
52
52
  ## 平台适配
53
53
 
54
- 如果你的执行环境出现在此列表中,请先阅读对应的参考文件获取专项说明:
54
+ 本套件专为 **DSH (DeepSeek Harness)** 原生环境设计,仅支持 DSH 平台:
55
55
 
56
- - DSH (DeepSeek Harness): `references/dsh-tools.md` — **请优先阅读。** 将 Bash→pwsh/bash、Read/Write/Edit→fs、Glob/Grep→fs-search、Task/Subagent→subagent/workflow、TodoWrite→todo、AskUserQuestion→ask-user、Skill→skill 进行映射。本套件中的所有技能均假定使用 DSH 工具。
57
- - Codex: `references/codex-tools.md`
58
- - Pi: `references/pi-tools.md`
59
- - Antigravity: `references/antigravity-tools.md`
60
- - Hermes Agent: `references/hermes-tools.md`
56
+ - DSH 工具规范:`references/dsh-tools.md` — 本套件中的所有技能均假定使用 DSH 工具(Bash→pwsh/bash、Read/Write/Edit→fs、Glob/Grep→fs-search、Task/Subagent→subagent/workflow、TodoWrite→todo、AskUserQuestion→ask-user、Skill→skill)。
61
57
 
62
58
  ## 用户指令
63
59
 
64
- 用户指令(CLAUDE.md、AGENTS.md、GEMINI.md 等,以及直接请求)的优先级高于技能,技能又高于默认行为。仅当人类协作方明确指示时,才可跳过技能工作流或指令。
60
+ 用户指令(AGENTS.md、CLAUDE.md 等,以及直接请求)的优先级高于技能,技能又高于默认行为。仅当 human partner 明确指示时,才可跳过技能工作流或指令。
@@ -1,11 +1,11 @@
1
1
  # DSH Tools Reference for Superpowers
2
2
 
3
- > 面向模型的 DSH 工具速查。Superpowers 原版文案中的 Claude Code / Codex 工具名在此映射为 DSH 等价物。
4
- > 当 skill 指示使用某一工具时,按下表替换即可。
3
+ > 面向模型的 DSH 工具速查。Superpowers 技能在 DSH 平台环境下的原生工具等价物与行为规范。
4
+ > 当 skill 指示执行特定工具动作时,按本表原生 DSH 工具执行。
5
5
 
6
6
  ## 核心映射
7
7
 
8
- | 原版提及 | DSH 等价 | 备注 |
8
+ | 技能动作 | DSH 等价 | 备注 |
9
9
  |---|---|---|
10
10
  | `Bash` / `bash` | `pwsh`(首选,Windows 友好)或 `bash` | 长耗时命令用 `run_in_background: true`,通过 `job_output` / `job_list` 收敛 |
11
11
  | `Read` / `Write` / `Edit` | `fs` 工具的 `read` / `write` / `edit` | `read` 前无需 `fs/observed` 校验,`write/edit` 自动触发 `fs/observed` 失效 |
@@ -15,7 +15,7 @@
15
15
  | `TodoWrite` | `todo` | 每次提供全量列表,`in_progress` 至少一项 |
16
16
  | `Skill` | `skill` | `skill(name)` 加载 `<skill_content>`,与 `ctx.skills.get()` 同源 |
17
17
  | `WebSearch` / `WebFetch` | `web` 工具 | `web_search` + `web_fetch_exa` 已封装为统一 `web` |
18
- | `/skill superpower-<name>` | `skill` 工具或用户显式 `/skill` 命令 | 两种路径渲染一致的 `<skill_content>` |
18
+ | `/skill <name>` | `skill` 工具或用户显式 `/skill` 命令 | 两种路径渲染一致的 `<skill_content>` |
19
19
  | `git worktree` | `bash` / `pwsh` 中直接执行 `git worktree` | DSH 无 worktree 专属封装,按原命令执行 |
20
20
 
21
21
  ## DSH 专属能力(原版无直接对应)
@@ -25,7 +25,7 @@
25
25
  | `goal` / `ralph` | 长周期目标的创建、续跑、阻塞判定 |
26
26
  | `workflow` 脚本 | 需要编排数十个 subagent 的审计/迁移/批量改写 |
27
27
  | `jobs` | 托管后台任务的查询与终止 |
28
- | `plan-mode` | 只读规划锁定,与 `superpower-writing-plans` 的细粒度切片互补 |
28
+ | `plan-mode` | 只读规划锁定,与 `writing-plans` 的细粒度切片互补 |
29
29
  | `cordis` 动态插件 | 会话内临时扩展能力(非本移植包范畴) |
30
30
 
31
31
  ## 约束与习惯
@@ -39,9 +39,9 @@
39
39
 
40
40
  ```text
41
41
  用户:帮我加一个重试工具
42
- 模型:Using superpower-brainstorming to clarify requirements
43
- -> 调用 skill(name="superpower-brainstorming")
42
+ 模型:Using brainstorming to clarify requirements
43
+ -> 调用 skill(name="brainstorming")
44
44
  -> 按 skill 流程提问、分类 Spike/Bounded/Architectural
45
- -> 设计获批后调用 skill(name="superpower-writing-plans") 切片
45
+ -> 设计获批后调用 skill(name="writing-plans") 切片
46
46
  -> 每切片派发 subagent(prompt="实现 task-03...") 并用 todo 跟踪
47
47
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: superpower-verification-before-completion
3
- description: "在声称完成、修复或通过前强制执行校验,用于提交或创建PR前必须运行验证命令并确认输出,始终以证据为准而非断言"
2
+ name: verification-before-completion
3
+ description: "Superpower Skill:在声称完成、修复或通过前强制执行校验,用于提交或创建 PR 前必须运行验证命令并确认输出,始终以证据为准而非断言。"
4
4
  ---
5
5
 
6
6
  # 完成前的校验
@@ -44,7 +44,7 @@ description: "在声称完成、修复或通过前强制执行校验,用于提
44
44
  | 构建成功 | 构建命令:exit 0 | Linter 通过、日志看起来正常 |
45
45
  | 缺陷已修复 | 复现原症状的测试:通过 | 已改代码、想当然认为已修 |
46
46
  | 回归测试有效 | 红绿循环已验证 | 仅通过一次 |
47
- | 代理已完成 | VCS diff 显示有变更 | 代理报告“成功” |
47
+ | agent 已完成 | VCS diff 显示有变更 | agent 报告“成功” |
48
48
  | 需求已满足 | 逐项核对清单 | 测试通过 |
49
49
 
50
50
  ## 危险信号 - 立即停止
@@ -52,7 +52,7 @@ description: "在声称完成、修复或通过前强制执行校验,用于提
52
52
  - 使用“应该”“大概”“似乎”等不确定表述
53
53
  - 校验前就表达满意(“太好了!”“完美!”“搞定了!”等)
54
54
  - 未经校验就准备 commit / push / 提 PR
55
- - 轻信代理的成功报告
55
+ - 轻信 agent 的成功报告
56
56
  - 依赖局部校验
57
57
  - 心存“就这一次”的侥幸
58
58
  - 因疲惫而想草草收工
@@ -66,7 +66,7 @@ description: "在声称完成、修复或通过前强制执行校验,用于提
66
66
  | “我很有把握” | 把握 ≠ 证据 |
67
67
  | “就这一次” | 没有例外 |
68
68
  | “Linter 过了” | Linter ≠ 编译器 |
69
- | “代理说成功了” | 需独立核验 |
69
+ | “agent 说成功了” | 需独立核验 |
70
70
  | “我太累了” | 疲惫不是理由 |
71
71
  | “局部检查就够了” | 局部证明不了任何事 |
72
72
  | “换个说法就不算违规” | 重精神而非抠字眼 |
@@ -75,32 +75,32 @@ description: "在声称完成、修复或通过前强制执行校验,用于提
75
75
 
76
76
  **测试:**
77
77
  ```
78
- ✅ [执行测试命令] [看到:34/34 通过] “所有测试通过”
79
- ❌ “现在应该能过了” / “看起来是对的”
78
+ [OK] [执行测试命令] [看到:34/34 通过] “所有测试通过”
79
+ [FAIL] “现在应该能过了” / “看起来是对的”
80
80
  ```
81
81
 
82
82
  **回归测试(TDD 红绿循环):**
83
83
  ```
84
- ✅ 编写 → 运行(通过)→ 回退修复 → 运行(必须失败)→ 恢复 → 运行(通过)
85
- ❌ “我已写好回归测试”(未经红绿验证)
84
+ [OK] 编写 → 运行(通过)→ 回退修复 → 运行(必须失败)→ 恢复 → 运行(通过)
85
+ [FAIL] “我已写好回归测试”(未经红绿验证)
86
86
  ```
87
87
 
88
88
  **构建:**
89
89
  ```
90
- ✅ [执行构建] [看到:exit 0] “构建通过”
91
- ❌ “Linter 过了”(Linter 不检查编译)
90
+ [OK] [执行构建] [看到:exit 0] “构建通过”
91
+ [FAIL] “Linter 过了”(Linter 不检查编译)
92
92
  ```
93
93
 
94
94
  **需求:**
95
95
  ```
96
- ✅ 重读方案 → 创建核对清单 → 逐项核验 → 报告缺口或完成情况
97
- ❌ “测试通过,阶段完成”
96
+ [OK] 重读方案 → 创建核对清单 → 逐项核验 → 报告缺口或完成情况
97
+ [FAIL] “测试通过,阶段完成”
98
98
  ```
99
99
 
100
- **代理委派:**
100
+ **agent 委派:**
101
101
  ```
102
- ✅ 代理报告成功 → 检查 VCS diff → 核验变更 → 报告实际状态
103
- ❌ 轻信代理报告
102
+ [OK] agent 报告成功 → 检查 VCS diff → 核验变更 → 报告实际状态
103
+ [FAIL] 轻信 agent 报告
104
104
  ```
105
105
 
106
106
  ## 适用时机
@@ -111,7 +111,7 @@ description: "在声称完成、修复或通过前强制执行校验,用于提
111
111
  - 任何关于工作状态的肯定性陈述
112
112
  - 提交、创建 PR、任务收尾
113
113
  - 进入下一项任务
114
- - 委派给代理
114
+ - 委派给 agent
115
115
 
116
116
  **规则适用于:**
117
117
  - 准确措辞
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: writing-plans
3
+ description: "Superpower Skill:当已具备清晰的需求规格或多步骤 task description 且尚未开始编码时使用,用于把需求拆解为结构清晰、粒度可控、可直接执行、可测试与可验证的完整实施计划。"
4
+ ---
5
+
6
+ # 编写计划
7
+
8
+ ## 概述
9
+
10
+ 为一个尚未见过本代码库、也未见过本规格的工程师编写实施计划。假设对方一旦获知精确的接口与精确的测试,就能用项目所用语言写出惯用代码,并会在计划留白之处做出合理选择。他们无从知晓的是你的决定:选哪些文件、用哪些名称与签名、从规格里取哪些值、每个任务由哪些测试来证明。把这些写进文档。把整份计划按一口大小的任务交给他们。遵循 DRY。遵循 YAGNI。遵循 TDD。频繁提交。
11
+
12
+ **开始时声明:** “我正在使用 writing-plans 技能创建实施计划。”
13
+
14
+ **上下文:** 如在隔离的 worktree 中工作,该 worktree 应在执行时通过 `using-git-worktrees` 技能创建。
15
+
16
+ **计划保存路径:** `docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md`
17
+ - (如用户已指定计划存放位置,则以用户偏好为准)
18
+
19
+ ## 范围检查
20
+
21
+ 若需求规格涵盖多个独立子系统,理应在头脑风暴阶段就已拆分为子项目规格。若未拆分,建议将其拆为多份独立计划——每个子系统一份。每份计划都应能独立产出可运行、可测试的软件。
22
+
23
+ ## 文件结构
24
+
25
+ 在定义任务之前,先梳理清楚将创建或修改哪些文件,以及每个文件的职责。这是锁定拆解方案的关键环节。
26
+
27
+ - 设计边界清晰、接口明确的单元。每个文件只承担单一、明确的职责。
28
+ - 人对能一次性完整装入上下文的代码推理最准确,聚焦的文件也更利于可靠地编辑。优先选择小而聚焦的文件,而非承载过多职责的大文件。
29
+ - 会一同变更的文件应放在一起。按职责拆分,而非按技术分层。
30
+ - 在现有代码库中遵循既有模式。若项目本身采用大文件结构,不要擅自重构;但若你正修改的文件已过于臃肿,在计划中安排一次拆分是合理的。
31
+
32
+ 该结构将直接决定任务如何拆解。每个任务都应产出自洽、独立有意义的变更。
33
+
34
+ ## 任务规模控制
35
+
36
+ 任务是具备完整测试闭环、值得独立评审的最小单元。划分任务边界时:将初始化、配置、脚手架与文档等步骤归入真正需要其产物的任务中;仅在 reviewer 可能对相邻两个任务做出不同评审结论(一个通过、一个驳回)时才进行拆分。每个任务结束时都应产出可独立测试的交付物。
37
+
38
+ ## 步骤粒度
39
+
40
+ **每个步骤都是带有可校验结果的一个动作:**
41
+ - “编写失败的测试”——一个步骤
42
+ - “运行它,确认它确实失败”——一个步骤
43
+ - “编写让测试通过的最小实现”——一个步骤
44
+ - “运行测试,确认它们通过”——一个步骤
45
+ - “提交”——一个步骤
46
+
47
+ ## 计划文档头部
48
+
49
+ **每份计划必须以此头部开头:**
50
+
51
+ ```markdown
52
+ # [功能名称] 实施计划
53
+
54
+ > **面向 Agent 执行者:** 必需子技能:使用 subagent-driven-development(推荐)或 executing-plans 按任务逐项实现本计划。步骤使用复选框(`- [ ]`)语法跟踪进度。
55
+
56
+ **目标:** [一句话描述本计划构建的内容]
57
+
58
+ **架构:** [2-3 句话说明技术路线]
59
+
60
+ **技术栈:** [关键技术与依赖库]
61
+
62
+ **规格:** [本计划实现的规格/设计文档路径——计划以规格为依据进行论证,故规格须随计划一起流转;执行者两者都要读]
63
+
64
+ ## 全局约束
65
+
66
+ [规格中项目级的要求——版本下限、依赖限制、命名与文案规则、平台要求——每项一行,数值从规格原文逐字复制。每个任务的需求默认隐含包含本节。]
67
+
68
+ ## Review Focus
69
+
70
+ [规格隐含、但没有任何任务的测试覆盖、最可能坑到使用该软件之人的五种输入类别或失败模式——每项一行,写明该输入或条件,以及理性之人会期待的行为,最可能发生的排最前。规格是愿景文档:它说明软件必须做什么,而不是它会遇到的一切;规格对某输入的沉默不等于允许该输入弄坏程序。把这份清单一次写全于此处,写作时规格就在眼前。然后为每一行,把钉住它的测试加进拥有该代码的任务,套用那个任务自己的步骤风格。]
71
+
72
+ ---
73
+ ```
74
+
75
+ ## 任务结构
76
+
77
+ ````markdown
78
+ ### 任务 N:[组件名称]
79
+
80
+ **文件:**
81
+ - 新建:`exact/path/to/file.py`
82
+ - 修改:`exact/path/to/existing.py:123-145`
83
+ - 测试:`tests/exact/path/to/test.py`
84
+
85
+ **接口:**
86
+ - 消费:[本任务使用的前置任务产物——精确签名]
87
+ - 产出:[后续任务依赖的内容——精确的函数名、参数与返回类型。任务的实现者只看到自己的任务;本块是他们获知相邻任务所用名称与类型的方式。]
88
+
89
+ - [ ] **步骤 1:编写失败的测试**
90
+
91
+ ```python
92
+ def test_specific_behavior():
93
+ result = function(input)
94
+ assert result == expected
95
+ ```
96
+
97
+ - [ ] **步骤 2:运行测试,确认其失败**
98
+
99
+ 运行:`pytest tests/path/test.py::test_name -v`
100
+ 预期:FAIL,报 "function not defined"
101
+
102
+ - [ ] **步骤 3:在 `exact/path/to/file.py` 中实现 `function(input: InputType) -> ResultType`**
103
+
104
+ 当签名与测试留下选择余地时(调用哪个库、用哪个数据结构),写一行说明;只有执行者无法自行确定的算法才给代码块。
105
+
106
+ - [ ] **步骤 4:运行测试,确认其通过**
107
+
108
+ 运行:`pytest tests/path/test.py::test_name -v`
109
+ 预期:PASS
110
+
111
+ - [ ] **步骤 5:提交**
112
+
113
+ ```bash
114
+ git add tests/path/test.py src/path/file.py
115
+ git commit -m "feat: add specific feature"
116
+ ```
117
+ ````
118
+
119
+ ## 步骤包含什么
120
+
121
+ 一个步骤在“执行者能凭它写出恰好一件合理的事”时即为完成。这就是全部要求:无歧义,而非完备。每类步骤只携带使它无歧义所需的东西,不多不少:
122
+
123
+ - **测试步骤:** 测试的名称及其断言,以代码形式给出,内含规格中的精确取值。
124
+ - **代码步骤:** 精确签名(名称、参数、返回类型)、所在文件,以及规格钉死的具体取值。函数体由执行者自己写。只有签名与测试都无法确定的算法、或规格固定了要逐字照抄的内容,才给出函数体。
125
+ - **验证步骤:** 要运行的命令,以及代表通过的输出。
126
+ - **对另一个任务的引用:** 那个任务的 Interfaces 块已经说明了要使用什么;计划不重复那个任务的代码。
127
+
128
+ 一份计划是执行者独自无法做出的那组决定。计划比它所描述的代码还长,等于把代码写了出来。不决定任何内容的行(“TBD”、“处理边界情况”、“添加适当的校验”、“为上述内容编写测试”、没有任何任务定义过的类型或函数)是另一端的失败,自检会把两端都抓住。
129
+
130
+ ## 自检
131
+
132
+ 写完完整计划后,带着全新视角重读规格,用它核对计划。这是你亲自运行的清单——不是分发给 subagent 的活。
133
+
134
+ **1. 规格覆盖度:** 逐节浏览规格中的每一项要求。能否指出实现它的那个任务?列出所有遗漏。
135
+
136
+ **2. 步骤扫描:** 每个步骤都必须让执行者只写出恰好一件合理的事,且任何步骤不得携带更多内容:不决定任何内容的行是缺口,签名与测试已能确定却仍写出的函数体是转写。两者都要修复。
137
+
138
+ **3. 类型一致性:** 后续任务中使用的类型、方法签名与属性名,是否与前置任务中定义的一致?任务 3 里叫 `clearLayers()`、任务 7 里却写成 `clearFullLayers()` 的函数就是缺陷。
139
+
140
+ **4. Review Focus:** 规格隐含的每种输入类别或失败模式,是否都有某个任务的测试在覆盖它?最可能坑人的五种未覆盖项写入 Review Focus 段,且该段每一行都要把对应测试加进所属任务。段落为空意味着你去检查过、确认没有,而不是跳过了这项检查。
141
+
142
+ **5. 篇幅比例:** 把计划长度与规格长度相比。一份比它所实现规格长数倍的计划,是对程序的转写,不是计划。如果代码块占了文档大半,把函数体换成签名、测试名与断言,并核实每个步骤仍然无歧义。
143
+
144
+ 如发现问题,直接原地修复。无需再评审一轮——修完继续即可。若发现某项规格要求没有对应任务,补上该任务。
145
+
146
+ ## 执行交接
147
+
148
+ 保存并自检完计划后,把计划链接给到你的 human partner 阅读。若对方已明确提供执行方式,请其复核计划、确认它捕捉到了对方想要的;实现前等待该复核,然后使用保留的方式。否则,请在实现前请对方复核计划并选择一种执行方式。
149
+
150
+ **当尚未提供执行方式时:**
151
+
152
+ **“计划已完成并保存至 `docs/superpowers/plans/<filename>.md`。请复核计划。你倾向哪种执行方式?**
153
+
154
+ - **subagent 驱动**——每个任务由全新 subagent 实现,由全新 reviewer 在下一个任务开始前检查,最后再做一次全分支评审。最彻底;每个任务与每次评审各耗一份全新上下文。
155
+ - **原生**——我在本会话中亲手逐任务实现,按本 harness 运行工作的方式推进,最后在最强模型上用一位全新 reviewer 检查整个分支。最省钱最快;结束前没有独立评审。用中档会话模型跑得很好,因为设计由计划承载。
156
+
157
+ **就本计划我推荐 <二者之一>,因为 <从计划取一句话:任务之间对彼此接口的依赖有多深、有多少个任务、交付一个错误要付出什么代价>。计划是否符合你的期望,我们该用哪种方式?”**
158
+
159
+ **当已提供执行方式时:**
160
+
161
+ **“计划已完成并保存至 `docs/superpowers/plans/<filename>.md`。请复核计划。它是否捕捉到了你想要的?”**
162
+
163
+ **若选择 subagent 驱动:**
164
+ - **必需子技能:** 使用 subagent-driven-development
165
+
166
+ **若选择原生:**
167
+ - **必需子技能:** 使用 executing-plans