@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
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env bash
2
+ # Resolve and ensure the working-tree directory SDD uses for one plan's
3
+ # short-lived artifacts: task briefs, implementer reports, review packages,
4
+ # and the progress ledger. Print the plan directory's absolute path.
5
+ #
6
+ # One directory per plan (.superpowers/sdd/<plan-basename>/) so a follow-up
7
+ # plan in the same working tree can never read or overwrite another plan's
8
+ # artifacts. A stale ledger misread as current progress makes controllers
9
+ # skip whole task sequences — plan-scoping removes that failure structurally.
10
+ #
11
+ # Basename slugs collide when two plans share a filename (docs/alpha/plan.md
12
+ # vs docs/beta/plan.md), so each workspace records its owning plan's path in
13
+ # a plan-path marker (repo-relative in-repo, absolute outside). A workspace
14
+ # owned by a different plan is skipped and the slug disambiguated with the
15
+ # plan's parent-directory name, then a counter. A workspace with no marker
16
+ # predates the marker scheme and is adopted for the current plan so in-flight
17
+ # workspaces keep resolving — which means the first collision on such a
18
+ # legacy workspace adopts instead of detecting; acceptable, marker-less
19
+ # workspaces age out as plans finish.
20
+ #
21
+ # The workspace lives in the working tree (not under .git/) because subagent
22
+ # sandbox policies treat .git/ as a protected path and deny writes there — which blocks
23
+ # an implementer subagent from writing its report file. A self-ignoring
24
+ # .gitignore at .superpowers/sdd/ keeps every plan's workspace out of
25
+ # `git status` and out of accidental commits without modifying any tracked file.
26
+ #
27
+ # Single source of truth for the workspace location, so task-brief and
28
+ # review-package cannot drift to different directories.
29
+ #
30
+ # Usage: sdd-workspace PLAN_FILE
31
+ set -euo pipefail
32
+
33
+ if [ $# -ne 1 ]; then
34
+ echo "usage: sdd-workspace PLAN_FILE" >&2
35
+ exit 2
36
+ fi
37
+
38
+ plan=$1
39
+ [ -f "$plan" ] || { echo "no such plan file: $plan" >&2; exit 2; }
40
+
41
+ slug=$(basename "$plan" .md)
42
+ [ -n "$slug" ] && [ "$slug" != "." ] && [ "$slug" != ".." ] \
43
+ || { echo "cannot derive a workspace name from: $plan" >&2; exit 2; }
44
+
45
+ root=$(git rev-parse --show-toplevel)
46
+ base="$root/.superpowers/sdd"
47
+
48
+ # Normalize the plan path (physical directory, so relative/absolute/../
49
+ # spellings of one plan compare equal) and express it as the marker value:
50
+ # repo-relative when the plan lives under the repo root, absolute otherwise.
51
+ plan_dir=$(CDPATH= cd -- "$(dirname "$plan")" && pwd -P)
52
+ plan_abs="$plan_dir/$(basename "$plan")"
53
+ case "$plan_abs" in
54
+ "$root"/*) plan_id=${plan_abs#"$root"/} ;;
55
+ *) plan_id=$plan_abs ;;
56
+ esac
57
+
58
+ # True when the workspace at $1 is (or becomes) this plan's: an existing
59
+ # marker must name this plan; a missing marker means a new workspace or a
60
+ # pre-marker legacy one, and either way the plan claims it by writing one.
61
+ owns() {
62
+ if [ -e "$1/plan-path" ]; then
63
+ [ "$(cat "$1/plan-path")" = "$plan_id" ]
64
+ else
65
+ mkdir -p "$1"
66
+ printf '%s\n' "$plan_id" > "$1/plan-path"
67
+ fi
68
+ }
69
+
70
+ dir="$base/$slug"
71
+ if ! owns "$dir"; then
72
+ parent=$(basename "$plan_dir")
73
+ dir="$base/$slug-$parent"
74
+ if ! owns "$dir"; then
75
+ n=2
76
+ while ! owns "$base/$slug-$parent-$n"; do n=$((n + 1)); done
77
+ dir="$base/$slug-$parent-$n"
78
+ fi
79
+ fi
80
+
81
+ printf '*\n' > "$base/.gitignore"
82
+ CDPATH= cd -- "$dir" && pwd
@@ -21,7 +21,9 @@ n=$2
21
21
  if [ $# -eq 3 ]; then
22
22
  out=$3
23
23
  else
24
- dir=$("$(cd "$(dirname "$0")" && pwd)/sdd-workspace" "$plan")
24
+ # Invoke via bash rather than direct exec: some extractors (Python zipfile)
25
+ # strip Unix exec bits when unpacking marketplace packages (#2040).
26
+ dir=$("${BASH:-bash}" "$(cd "$(dirname "$0")" && pwd)/sdd-workspace" "$plan")
25
27
  out="$dir/task-${n}-brief.md"
26
28
  fi
27
29
 
@@ -1,19 +1,19 @@
1
- # 任务评审员提示词模板
1
+ # task reviewer prompt 模板
2
2
 
3
- 在派发任务评审子代理时使用本模板。评审员只读取一次任务的 diff,并返回两项裁决:规格符合度与代码质量。
3
+ 在派发任务评审 subagent 时使用本模板。reviewer 只读取一次任务的 diff,并返回两项裁决:规格符合度与代码质量。
4
4
 
5
5
  **目的:** 校验单个任务的实现是否完全贴合需求(不多不少),且构建良好(清晰、已测试、易维护)
6
6
 
7
7
  ```
8
8
  Subagent (general-purpose):
9
- description: "Review Task N (spec + quality)"
9
+ description: "评审任务 N(规格 + 质量)"
10
10
  model: [MODEL — 必填:按 SKILL.md 的模型选择规则选择;若省略则静默继承会话中最昂贵的模型]
11
11
  prompt: |
12
12
  你正在评审单个任务的实现:先判断是否符合需求,再判断是否构建良好。这是一个任务级别的门禁,而非合并评审——所有任务完成后的全分支广度评审会另行进行。
13
13
 
14
14
  ## 需求内容
15
15
 
16
- 阅读任务简报:[BRIEF_FILE]
16
+ 阅读 task brief:[BRIEF_FILE]
17
17
 
18
18
  来自规格/设计且约束本任务的全局约束:
19
19
  [GLOBAL_CONSTRAINTS]
@@ -22,7 +22,7 @@ Subagent (general-purpose):
22
22
 
23
23
  阅读实现者的报告:[REPORT_FILE]
24
24
 
25
- ## 待评审的 Diff
25
+ ## 待评审的 diff
26
26
 
27
27
  **Base:** [BASE_SHA]
28
28
  **Head:** [HEAD_SHA]
@@ -32,21 +32,21 @@ Subagent (general-purpose):
32
32
  `git diff --stat [BASE_SHA]..[HEAD_SHA]` 和 `git diff [BASE_SHA]..[HEAD_SHA]`。
33
33
  不要遍历更广的代码库。仅在你能明确指出具体风险时,才去检查 diff 之外的代码——每个已命名的风险只做一次聚焦检查,并在报告中同时写明风险是什么以及你检查了什么。跨切面变更属于合理的已命名风险:如果 diff 改动了锁顺序、函数或 API 契约、或共享可变状态,检查调用点就是正确的做法。
34
34
 
35
- 本次评审在当前检出上为只读。不要以任何方式修改工作区、暂存区、HEAD 或分支状态。
35
+ 本次评审在当前检出上为只读。不要以任何方式修改 working tree、暂存区、HEAD 或分支状态。
36
36
 
37
- ## 禁止派发子代理
37
+ ## 禁止分发 subagent
38
38
 
39
- 由你独立完成全部评审。不要派生子代理来分担 diff 的部分评审,也不要为二次意见再派一个评审员。本流程已提供了该工作所需的所有评审席位;你派生的评审员会以全量成本重复其中一个席位,且其裁决不计入结果。如果 diff 过大、单次难以看完,请自行分多轮评审,并在报告中说明。
39
+ 由你独立完成全部评审。不要衍生 subagent 来分担 diff 的部分评审,也不要为二次意见再派一个 reviewer。本流程已提供了该工作所需的所有评审席位;你衍生的 reviewer 会以全量成本重复其中一个席位,且其裁决不计入结果。如果 diff 过大、单次难以看完,请自行分多遍评审,并在报告中说明。
40
40
 
41
41
  ## 不要信任报告
42
42
 
43
- 将实现者的报告视为未经核实的陈述。它可能不完整、不准确或过于乐观。请以 diff 为准核实其声明。报告中的设计理由同样是陈述:“按 YAGNI 保留”、“有意保持简单”或任何其他解释,都是实现者在给自己的工作打分。请按代码本身的优劣来评判——陈述的理由永远不会降低问题的严重级别。
43
+ 将实现者的报告视为未经核实的陈述。它可能不完整、不准确或过于乐观。请以 diff 为准核实其声明。报告中的设计理由同样是陈述:“按 YAGNI 保留”、“有意保持简单”或任何其他解释,都是实现者在给自己的工作打分。请按代码本身的优劣来评判——陈述的理由永远不会降低 finding 的严重级别。
44
44
 
45
45
  ## 测试
46
46
 
47
47
  实现者已运行测试,并针对当前代码按 TDD 要求报告了结果与证据。不要为核实其报告而重新运行整个测试套件。仅在阅读代码后产生具体疑点、且现有运行结果无法解答时,才运行测试——此时也只运行聚焦的单项测试,绝不要运行包级别全量套件、竞态检测或重复/高频循环。如果认为有必要做重量级验证,请在报告中建议,而不是直接执行。如果当前环境无法执行命令,请写明你会运行哪条测试。
48
48
 
49
- 实现者报告的测试输出中的警告或其他噪音即为问题——测试输出应当是干净的。
49
+ 实现者报告的测试输出中的警告或其他噪音即为 finding——测试输出应当是干净的。
50
50
 
51
51
  你看不到的证据不代表不存在。如果报告或其中的测试证据看起来被截断,或你找不到其声称的结果,请按其标注的路径重新读取该文件——如果确实缺失或格式错乱,请作为面向控制器的缺口上报。重新运行套件来补全你没读到的内容不叫验证;证据不可读不等于证据无效。
52
52
 
@@ -58,9 +58,9 @@ Subagent (general-purpose):
58
58
  - **多余:** 未被要求的功能、过度设计、不必要的“锦上添花”
59
59
  - **误解:** 功能方向正确但实现方式错误,或解决了错误的问题
60
60
 
61
- 如果简报中列出了多个文件且每个文件各有改动(批量派发),请逐文件对照 diff 检查:每个列出的文件都必须有对应的 hunk。简报中列出但 diff 始终未触及的文件,即为“缺失”问题,无论批次中其余部分看起来多么干净。
61
+ 如果 brief 中列出了多个文件且每个文件各有改动(批量派发),请逐文件对照 diff 检查:每个列出的文件都必须有对应的 hunk。brief 中列出但 diff 始终未触及的文件,即为“缺失”finding,无论批次中其余部分看起来多么干净。
62
62
 
63
- 如果某项需求仅凭本 diff 无法验证(它位于未变更的代码中或跨多个任务),请将其记为 ⚠️ 项,而不是扩大检索范围。
63
+ 如果某项需求仅凭本 diff 无法验证(它位于未变更的代码中或跨多个任务),请将其记为 [WARN] 项,而不是扩大检索范围。
64
64
 
65
65
  ## 第二部分:代码质量
66
66
 
@@ -80,49 +80,49 @@ Subagent (general-purpose):
80
80
  - 实现是否遵循了计划中的文件结构?
81
81
  - 本次变更是否产生了已经很大的新文件,或显著增大了现有文件?(不要对变更前已有的文件体积做评价——只关注本次变更带来的增量。)
82
82
 
83
- 报告应当指向证据:每个问题以及所有本可用一句“是”带过的检查,都需给出 file:line 引用。一份精炼且带行号引用的报告,能让控制器获得所需的一切信息。
83
+ 报告应当指向证据:每条 finding 以及所有本可用一句“是”带过的检查,都需给出 file:line 引用。一份精炼且带行号引用的报告,能让控制器获得所需的一切信息。
84
84
 
85
- 你的最终消息即为报告本身:直接以规格符合度裁决开头。每一行都应是裁决、带 file:line 的问题、或你已执行的检查——不要写前言、过程叙述或收尾总结。
85
+ 你的最终消息即为报告本身:直接以规格符合度裁决开头。每一行都应是裁决、带 file:line 的 finding、或你已执行的检查——不要写前言、过程叙述或收尾总结。
86
86
 
87
87
  ## 评级校准
88
88
 
89
- 按实际严重程度对问题分级。并非所有问题都是严重。
90
- 重要表示该任务在修复前不可信:错误或脆弱的行为、遗漏的需求、或足以阻断合并的可维护性损伤——例如逻辑块的逐字重复、被吞掉的错误、断言空洞的测试。“覆盖可以更广”和打磨类建议属于轻微。
91
- 如果计划或简报明确要求了按本标准应判为缺陷的内容(例如断言空洞的测试、逻辑块的逐字重复),这依然算问题——请按重要级别上报,并标注为计划强制要求。计划的作者身份不为其自身打分;最终由人来定夺。
89
+ 按实际严重程度对 finding 分级。并非所有问题都是 Critical。
90
+ Important 表示该任务在修复前不可信:错误或脆弱的行为、遗漏的需求、或足以阻断合并的可维护性损伤——例如逻辑块的逐字重复、被吞掉的错误、断言空洞的测试。“覆盖可以更广”和打磨类建议属于 Minor。
91
+ 如果计划或 brief 明确要求了按本标准应判为缺陷的内容(例如断言空洞的测试、逻辑块的逐字重复),这依然算 finding——请按 Important 级别上报,并标注为 plan-mandated。计划的作者身份不为其自身打分;最终由人来定夺。
92
92
  在列出问题前,先肯定做得好的地方——准确的表扬有助于实现者信任后续的反馈。
93
93
 
94
94
  ## 输出格式
95
95
 
96
96
  ### 规格符合度
97
97
 
98
- - ✅ 符合规格 | ❌ 发现问题:[缺失/多余/误解的内容,并附 file:line 引用]
99
- - ⚠️ 无法仅凭 diff 验证:[仅凭 diff 无法验证的需求,以及控制器应如何检查——需与上述 ✅/❌ 裁决一并报告,针对已可验证的部分给出结论]
98
+ - [OK] 符合规格 | [FAIL] 发现问题:[缺失/多余/误解的内容,并附 file:line 引用]
99
+ - [WARN] 无法仅凭 diff 验证:[仅凭 diff 无法验证的需求,以及控制器应如何检查——需与上述 [OK]/[FAIL] 裁决一并报告,针对已可验证的部分给出结论]
100
100
 
101
101
  ### 优点
102
102
  [做得好的地方?请具体说明。]
103
103
 
104
104
  ### 问题
105
105
 
106
- #### 严重(必须修复)
107
- #### 重要(建议修复)
108
- #### 轻微(可选优化)
106
+ #### Critical(必须修复)
107
+ #### Important(建议修复)
108
+ #### Minor(可选优化)
109
109
 
110
110
  每个问题需包含:file:line、问题是什么、为什么重要、如何修复(若不明显)。
111
111
 
112
112
  ### 评估
113
113
 
114
- **任务质量:** [通过 | 需修复]
114
+ **任务质量:** [Approved | Needs fixes]
115
115
 
116
116
  **理由:** [1-2 句技术性评估]
117
117
  ```
118
118
 
119
119
  **占位符说明:**
120
- - `[MODEL]` — 必填:评审员模型,按 SKILL.md 的 Model Selection 选择
121
- - `[BRIEF_FILE]` — 必填:任务简报文件(执行 `scripts/task-brief PLAN N` 可打印路径;与实现者所依据的文件为同一份)
120
+ - `[MODEL]` — 必填:reviewer 模型,按 SKILL.md 的模型选择规则选择
121
+ - `[BRIEF_FILE]` — 必填:task brief 文件(执行 `bash scripts/task-brief PLAN N` 可打印路径;与实现者所依据的文件为同一份)
122
122
  - `[GLOBAL_CONSTRAINTS]` — 原样抄录计划中 Global Constraints 小节或规格中的约束性需求:精确的取值、格式以及组件之间的既定关系(不含流程类规则——那些已包含在本模板中)
123
123
  - `[REPORT_FILE]` — 必填:实现者写入详细报告的文件
124
124
  - `[BASE_SHA]` — 任务开始前的提交
125
125
  - `[HEAD_SHA]` — 当前提交
126
- - `[DIFF_FILE]` — 必填:控制器写入评审包的路径(执行 `scripts/review-package PLAN_FILE BASE HEAD` 会打印其写入的唯一路径;该包不会进入控制器的上下文)
126
+ - `[DIFF_FILE]` — 必填:控制器写入review package的路径(执行 `bash scripts/review-package PLAN_FILE BASE HEAD` 会打印其写入的唯一路径;该包不会进入控制器的上下文)
127
127
 
128
- **评审员返回:** 规格符合度裁决(✅/❌/⚠️)、优点、问题(严重/重要/轻微)、任务质量裁决
128
+ **reviewer 返回:** 规格符合度裁决([OK]/[FAIL]/[WARN])、优点、问题(Critical/Important/Minor)、任务质量裁决
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 来源材料
6
6
 
7
- 从 `~/.claude/CLAUDE.md` 提取的调试框架:
7
+ 从早期版本的 `CLAUDE.md` 用户指令中提取的调试框架:
8
8
  - 四阶段系统化流程(调查 → 模式分析 → 假设 → 实现)
9
9
  - 核心原则:始终定位根因,绝不只修复表象
10
10
  - 规则设计用于抵御时间压力与自我合理化
@@ -89,17 +89,17 @@
89
89
  ## 最终成果
90
90
 
91
91
  具备以下能力的加固技能:
92
- - ✅ 明确要求开展根因调查
93
- - ✅ 抵御时间压力下的合理化
94
- - ✅ 为每个阶段提供具体步骤
95
- - ✅ 显式展示反模式
96
- - ✅ 在多种压力场景下完成测试
97
- - ✅ 澄清与 TDD 的关系
98
- - ✅ 可直接投入使用
92
+ - [OK] 明确要求开展根因调查
93
+ - [OK] 抵御时间压力下的合理化
94
+ - [OK] 为每个阶段提供具体步骤
95
+ - [OK] 显式展示反模式
96
+ - [OK] 在多种压力场景下完成测试
97
+ - [OK] 澄清与 TDD 的关系
98
+ - [OK] 可直接投入使用
99
99
 
100
100
  ## 关键洞察
101
101
 
102
- **最重要的加固点:** 反模式章节展示了在当下看似合理的捷径。当 Claude 产生“我就加这一个快速修复”的念头时,看到该模式被明确列为错误,会产生认知阻力。
102
+ **最重要的加固点:** 反模式章节展示了在当下看似合理的捷径。当 agent 产生“我就加这一个快速修复”的念头时,看到该模式被明确列为错误,会产生认知阻力。
103
103
 
104
104
  ## 使用示例
105
105
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: superpower-systematic-debugging
3
- description: "遇到缺陷、测试失败或异常行为时使用,要求先完成根因分析再提出修复,确保系统化调试"
2
+ name: systematic-debugging
3
+ description: "Superpower Skill:遇到缺陷、测试失败或异常行为时使用,要求先完成根因分析再提出修复,确保系统化调试。"
4
4
  ---
5
5
 
6
6
  # 系统化调试
@@ -103,7 +103,7 @@ description: "遇到缺陷、测试失败或异常行为时使用,要求先完
103
103
  codesign --sign "$IDENTITY" --verbose=4 "$APP"
104
104
  ```
105
105
 
106
- **由此可得:** 哪一层失败(secrets → workflow ✓,workflow → build ✗)
106
+ **由此可得:** 哪一层失败(secrets → workflow [OK],workflow → build [FAIL])
107
107
 
108
108
  5. **追踪数据流**
109
109
 
@@ -174,7 +174,7 @@ description: "遇到缺陷、测试失败或异常行为时使用,要求先完
174
174
  - 如有测试框架则编写自动化测试
175
175
  - 若无框架则编写一次性复现脚本
176
176
  - 修复前必须具备该用例
177
- - 编写规范的失败测试请使用 `superpower-test-driven-development` 技能
177
+ - 编写规范的失败测试请使用 `test-driven-development` 技能
178
178
 
179
179
  2. **实施单一修复**
180
180
  - 针对已确认的根因
@@ -186,7 +186,7 @@ description: "遇到缺陷、测试失败或异常行为时使用,要求先完
186
186
  - 用例现在通过了吗?
187
187
  - 是否破坏了其他测试?
188
188
  - 问题是否真正解决?
189
- - 在宣称成功前,请使用 `superpower-verification-before-completion` 技能进行校验
189
+ - 在宣称成功前,请使用 `verification-before-completion` 技能进行校验
190
190
 
191
191
  4. **若修复未生效**
192
192
  - 停下来
@@ -207,7 +207,7 @@ description: "遇到缺陷、测试失败或异常行为时使用,要求先完
207
207
  - 是否只是“靠惯性硬撑”?
208
208
  - 应该重构架构,还是继续修补表象?
209
209
 
210
- **在尝试更多修复前,先与人类协作伙伴讨论**
210
+ **在尝试更多修复前,先与 human partner 讨论**
211
211
 
212
212
  这不是假设失败——这是架构错误。
213
213
 
@@ -230,7 +230,7 @@ description: "遇到缺陷、测试失败或异常行为时使用,要求先完
230
230
 
231
231
  **若已失败 3 次以上:** 质疑架构(见阶段四第 5 步)
232
232
 
233
- ## 人类协作伙伴提示你做错了的信号
233
+ ## human partner 提示你做错了的信号
234
234
 
235
235
  **留意这些提醒:**
236
236
  - “这不是没生效吗?”——你在未验证的情况下做了假设
@@ -280,4 +280,4 @@ description: "遇到缺陷、测试失败或异常行为时使用,要求先完
280
280
 
281
281
  - **`root-cause-tracing.md`** - 沿调用栈回溯追踪,直至找到最初触发点
282
282
  - **`defense-in-depth.md`** - 找到根因后在多层添加校验
283
- - **`condition-based-waiting.md`** - 用条件轮询替代固定时延等待
283
+ - **`condition-based-waiting.md`** - 用条件poll替代固定时延等待
@@ -34,12 +34,12 @@ digraph when_to_use {
34
34
  ## 核心模式
35
35
 
36
36
  ```typescript
37
- // ❌ 修改前:猜测时机
37
+ // [FAIL] 修改前:猜测时机
38
38
  await new Promise(r => setTimeout(r, 50));
39
39
  const result = getResult();
40
40
  expect(result).toBeDefined();
41
41
 
42
- // ✅ 修改后:等待条件满足
42
+ // [OK] 修改后:等待条件满足
43
43
  await waitFor(() => getResult() !== undefined);
44
44
  const result = getResult();
45
45
  expect(result).toBeDefined();
@@ -57,7 +57,7 @@ expect(result).toBeDefined();
57
57
 
58
58
  ## 实现
59
59
 
60
- 通用轮询函数:
60
+ 通用poll函数:
61
61
 
62
62
  ```typescript
63
63
  async function waitFor<T>(
@@ -84,14 +84,14 @@ async function waitFor<T>(
84
84
 
85
85
  ## 常见错误
86
86
 
87
- **❌ 轮询过快:** `setTimeout(check, 1)` - 浪费 CPU
88
- **✅ 修正:** 每 10ms 轮询一次
87
+ **[FAIL] poll过快:** `setTimeout(check, 1)` - 浪费 CPU
88
+ **[OK] 修正:** 每 10ms poll一次
89
89
 
90
- **❌ 无超时:** 条件始终不满足时会无限循环
91
- **✅ 修正:** 始终设置超时,并给出清晰的错误信息
90
+ **[FAIL] 无超时:** 条件始终不满足时会无限循环
91
+ **[OK] 修正:** 始终设置超时,并给出清晰的错误信息
92
92
 
93
- **❌ 数据过期:** 在循环前缓存状态
94
- **✅ 修正:** 在循环内调用 getter 获取最新数据
93
+ **[FAIL] 数据过期:** 在循环前缓存状态
94
+ **[OK] 修正:** 在循环内调用 getter 获取最新数据
95
95
 
96
96
  ## 何时应该使用任意延时
97
97
 
@@ -54,7 +54,7 @@ function initializeWorkspace(projectDir: string, sessionId: string) {
54
54
 
55
55
  ```typescript
56
56
  async function gitInit(directory: string) {
57
- // In tests, refuse git init outside temp directories
57
+ // 在测试中,拒绝在临时目录之外执行 git init
58
58
  if (process.env.NODE_ENV === 'test') {
59
59
  const normalized = normalize(resolve(directory));
60
60
  const tmpDir = normalize(resolve(tmpdir()));
@@ -14,7 +14,7 @@ fi
14
14
  POLLUTION_CHECK="$1"
15
15
  TEST_PATTERN="$2"
16
16
 
17
- echo "🔍 Searching for test that creates: $POLLUTION_CHECK"
17
+ echo "[INFO] Searching for test that creates: $POLLUTION_CHECK"
18
18
  echo "Test pattern: $TEST_PATTERN"
19
19
  echo ""
20
20
 
@@ -40,7 +40,7 @@ for TEST_FILE in $TEST_FILES; do
40
40
 
41
41
  # Skip if pollution already exists
42
42
  if [ -e "$POLLUTION_CHECK" ]; then
43
- echo "⚠️ Pollution already exists before test $COUNT/$TOTAL"
43
+ echo "[WARN] Pollution already exists before test $COUNT/$TOTAL"
44
44
  echo " Skipping: $TEST_FILE"
45
45
  continue
46
46
  fi
@@ -53,7 +53,7 @@ for TEST_FILE in $TEST_FILES; do
53
53
  # Check if pollution appeared
54
54
  if [ -e "$POLLUTION_CHECK" ]; then
55
55
  echo ""
56
- echo "🎯 FOUND POLLUTER!"
56
+ echo "[HIT] FOUND POLLUTER!"
57
57
  echo " Test: $TEST_FILE"
58
58
  echo " Created: $POLLUTION_CHECK"
59
59
  echo ""
@@ -68,5 +68,5 @@ for TEST_FILE in $TEST_FILES; do
68
68
  done
69
69
 
70
70
  echo ""
71
- echo "✅ No polluter found - all tests clean!"
71
+ echo "[OK] No polluter found - all tests clean!"
72
72
  exit 0
@@ -68,7 +68,7 @@ Project.create('name', context.tempDir); // Accessed before beforeEach!
68
68
  当无法手动追溯时,添加插桩:
69
69
 
70
70
  ```typescript
71
- // Before the problematic operation
71
+ // 在执行问题操作之前
72
72
  async function gitInit(directory: string) {
73
73
  const stack = new Error().stack;
74
74
  console.error('DEBUG git init:', {
@@ -101,7 +101,7 @@ npm test 2>&1 | grep 'DEBUG git init'
101
101
  使用本目录下的二分脚本 `find-polluter.sh`:
102
102
 
103
103
  ```bash
104
- ./find-polluter.sh '.git' 'src/**/*.test.ts'
104
+ bash ./find-polluter.sh '.git' 'src/**/*.test.ts'
105
105
  ```
106
106
 
107
107
  逐个运行测试,遇到首个污染者即停止。用法见脚本说明。
@@ -21,7 +21,7 @@ PaymentError: Connection timeout to payments.api.com
21
21
  你记得上周另一个服务也出现过超时问题,当时加了重试就解决了,只花了 2 分钟。
22
22
 
23
23
  **系统化调试方法要求你必须:**
24
- 1. 仔细阅读错误信息 ✓(已完成)
24
+ 1. 仔细阅读错误信息 [OK](已完成)
25
25
  2. 稳定复现问题(搭建测试环境约需 10 分钟)
26
26
  3. 检查近期变更(审查 PR 约需 15 分钟)
27
27
  4. 查找可正常运行的示例(约需 10 分钟)
@@ -21,7 +21,7 @@
21
21
 
22
22
  **技术负责人:**“调查要花多久?”
23
23
 
24
- **你:**“大概需要 30-45 分钟来梳理中间件并弄清令牌生命周期。”
24
+ **你:**“大概需要 30-45 分钟来梳理中间件并弄清令牌lifecycle。”
25
25
 
26
26
  **技术负责人:**“这次会议已经超时 20 分钟了。[资深工程师]对这块非常熟悉。我们直接实施修复吧。”
27
27
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: superpower-test-driven-development
3
- description: "实现新功能或修复缺陷时,编写实现代码前先写测试的测试驱动开发完整指南与流程约束规范"
2
+ name: test-driven-development
3
+ description: "Superpower Skill:实现新功能或修复缺陷时,编写实现代码前先写测试的测试驱动开发完整指南与流程约束规范。"
4
4
  ---
5
5
 
6
6
  # 测试驱动开发(TDD)
@@ -21,7 +21,7 @@ description: "实现新功能或修复缺陷时,编写实现代码前先写测
21
21
  - 重构
22
22
  - 行为变更
23
23
 
24
- **例外情况(需征得协作人同意):**
24
+ **例外情况(需征得 human partner 同意):**
25
25
  - 一次性原型
26
26
  - 生成的代码
27
27
  - 配置文件
@@ -46,16 +46,16 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
46
46
 
47
47
  完全基于测试重新实现,没有例外。
48
48
 
49
- ## 红-绿-重构
49
+ ## RED-GREEN-REFACTOR(红-绿-重构)
50
50
 
51
51
  ```dot
52
52
  digraph tdd_cycle {
53
53
  rankdir=LR;
54
- red [label="红色阶段\n编写失败的测试", shape=box, style=filled, fillcolor="#ffcccc"];
54
+ red [label="RED\n编写失败的测试", shape=box, style=filled, fillcolor="#ffcccc"];
55
55
  verify_red [label="验证是否\n按预期失败", shape=diamond];
56
- green [label="绿色阶段\n最小化实现", shape=box, style=filled, fillcolor="#ccffcc"];
56
+ green [label="GREEN\n最小化实现", shape=box, style=filled, fillcolor="#ccffcc"];
57
57
  verify_green [label="验证是否通过\n全部通过", shape=diamond];
58
- refactor [label="重构阶段\n清理优化", shape=box, style=filled, fillcolor="#ccccff"];
58
+ refactor [label="REFACTOR\n清理优化", shape=box, style=filled, fillcolor="#ccccff"];
59
59
  next [label="下一项", shape=ellipse];
60
60
 
61
61
  red -> verify_red;
@@ -70,7 +70,7 @@ digraph tdd_cycle {
70
70
  }
71
71
  ```
72
72
 
73
- ### 红色阶段 - 编写失败的测试
73
+ ### RED - 编写失败的测试
74
74
 
75
75
  写一个最小化的测试,展示应该发生什么。
76
76
 
@@ -112,7 +112,7 @@ test('retry works', async () => {
112
112
  - 命名清晰
113
113
  - 使用真实代码(除非不得不 mock)
114
114
 
115
- ### 验证红色阶段 - 观察失败
115
+ ### Verify RED - 观察失败
116
116
 
117
117
  **强制要求,切勿跳过。**
118
118
 
@@ -129,7 +129,7 @@ npm test path/to/test.test.ts
129
129
 
130
130
  **测试报错了?** 修复错误,直到它以正确的方式失败为止。
131
131
 
132
- ### 绿色阶段 - 最小化实现
132
+ ### GREEN - 最小化实现
133
133
 
134
134
  编写刚好能让测试通过的最简代码。
135
135
 
@@ -167,7 +167,7 @@ async function retryOperation<T>(
167
167
 
168
168
  不要添加测试未要求的功能,不要顺手重构其他代码,也不要做超出测试范围的“优化”。
169
169
 
170
- ### 验证绿色阶段 - 观察通过
170
+ ### Verify GREEN - 观察通过
171
171
 
172
172
  **强制要求。**
173
173
 
@@ -184,7 +184,9 @@ npm test path/to/test.test.ts
184
184
 
185
185
  **其他测试失败?** 立即修复。
186
186
 
187
- ### 重构阶段 - 清理优化
187
+ **“其他测试”指项目的整个测试套件,而不只是你的文件。** 你自己写的测试通过,不代表套件变绿。在把改动宣布完成之前,请运行项目的测试命令(裸 `pytest`、`npm test`、`cargo test`——仓库用什么就用什么),即使你的任务只点名了一个测试文件。任务中的范围说明约束的是交付物,不是你的验证。这次运行暴露的任何失败——包括并非由你造成的失败——都要按名称写进你的报告;一个你眼睁睁看着滚过去却没提的红色测试,是一份因遗漏而伪造的报告。
188
+
189
+ ### REFACTOR - 清理优化
188
190
 
189
191
  仅在变绿之后:
190
192
  - 消除重复
@@ -301,7 +303,7 @@ PASS
301
303
 
302
304
  | 问题 | 解决方案 |
303
305
  |---------|----------|
304
- | 不知道怎么测 | 写出你期望的 API,先写断言,找协作人讨论。 |
306
+ | 不知道怎么测 | 写出你期望的 API,先写断言,找 human partner 讨论。 |
305
307
  | 测试太复杂 | 设计太复杂,简化接口。 |
306
308
  | 必须 mock 所有东西 | 代码耦合过重,使用依赖注入。 |
307
309
  | 测试准备工作过于庞大 | 抽取辅助函数,依然复杂?简化设计。 |
@@ -319,4 +321,4 @@ PASS
319
321
  否则 → 就不是 TDD
320
322
  ```
321
323
 
322
- 未经协作人许可,没有例外。
324
+ 未经 human partner 许可,没有例外。