superpowers-zh 1.6.0 → 1.7.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.
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env bash
2
+ # Resolve and ensure the working-tree directory SDD uses for its short-lived
3
+ # artifacts: task briefs, implementer reports, review packages, and the
4
+ # progress ledger. Print the directory's absolute path.
5
+ #
6
+ # The workspace lives in the working tree (not under .git/) because Claude Code
7
+ # treats .git/ as a protected path and denies agent writes there — which blocks
8
+ # an implementer subagent from writing its report file. A self-ignoring
9
+ # .gitignore keeps the workspace out of `git status` and out of accidental
10
+ # commits without modifying any tracked file.
11
+ #
12
+ # Single source of truth for the workspace location, so task-brief and
13
+ # review-package cannot drift to different directories.
14
+ #
15
+ # Usage: sdd-workspace
16
+ set -euo pipefail
17
+
18
+ root=$(git rev-parse --show-toplevel)
19
+ dir="$root/.superpowers/sdd"
20
+ mkdir -p "$dir"
21
+ printf '*\n' > "$dir/.gitignore"
22
+ cd "$dir" && pwd
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env bash
2
+ # Extract one task's full text from an implementation plan into a file the
3
+ # implementer reads in one call, so the task text never has to be pasted
4
+ # through the controller's context.
5
+ #
6
+ # Usage: task-brief PLAN_FILE TASK_NUMBER [OUTFILE]
7
+ # Default OUTFILE: <repo-root>/.superpowers/sdd/task-<N>-brief.md
8
+ # (per worktree; concurrent runs in the same working tree share it).
9
+ #
10
+ # 中文 fork 适配:上游只识别英文任务标题 "## Task N",而 superpowers-zh
11
+ # 的 writing-plans 产出的是 "### 任务 N:..."。下方 awk 同时匹配
12
+ # "Task" 与 "任务",两种计划都能抽取。
13
+ set -euo pipefail
14
+
15
+ if [ $# -lt 2 ] || [ $# -gt 3 ]; then
16
+ echo "usage: task-brief PLAN_FILE TASK_NUMBER [OUTFILE]" >&2
17
+ exit 2
18
+ fi
19
+
20
+ plan=$1
21
+ n=$2
22
+ [ -f "$plan" ] || { echo "no such plan file: $plan" >&2; exit 2; }
23
+
24
+ if [ $# -eq 3 ]; then
25
+ out=$3
26
+ else
27
+ dir=$("$(cd "$(dirname "$0")" && pwd)/sdd-workspace")
28
+ out="$dir/task-${n}-brief.md"
29
+ fi
30
+
31
+ awk -v n="$n" '
32
+ /^```/ { infence = !infence }
33
+ !infence && /^#+[ \t]+(Task|任务)[ \t]*[0-9]+/ {
34
+ intask = ($0 ~ ("^#+[ \t]+(Task|任务)[ \t]*" n "([^0-9]|$)"))
35
+ }
36
+ intask { print }
37
+ ' "$plan" > "$out"
38
+
39
+ if [ ! -s "$out" ]; then
40
+ echo "task ${n} not found in ${plan} (no heading matching 'Task ${n}' / '任务 ${n}')" >&2
41
+ exit 3
42
+ fi
43
+
44
+ echo "wrote ${out}: $(wc -l < "$out" | tr -d ' ') lines"
@@ -0,0 +1,169 @@
1
+ # 任务审查者提示词模板
2
+
3
+ 分派任务审查子智能体时使用此模板。审查者一次性读取该任务的 diff,
4
+ 返回两个结论:规格合规性和代码质量。
5
+
6
+ **目的:** 核实一个任务的实现与其需求匹配(不多不少)且构建良好(整洁、有测试、可维护)
7
+
8
+ ```
9
+ Subagent (general-purpose):
10
+ description: "审查任务 N(规格 + 质量)"
11
+ model: [模型 —— 必填:按 SKILL.md 的"模型选择"来选;省略模型会默默
12
+ 继承会话里最贵的那个]
13
+ prompt: |
14
+ 你正在审查一个任务的实现:先看它是否与需求匹配,再看它是否
15
+ 构建良好。这是一个任务范围内的关卡,不是合并审查——覆盖整个
16
+ 分支的宽范围审查会在所有任务完成后另行进行。
17
+
18
+ ## 要求的内容
19
+
20
+ 读取任务简报:[BRIEF_FILE]
21
+
22
+ 来自规格/设计、约束本任务的全局约束:
23
+ [GLOBAL_CONSTRAINTS]
24
+
25
+ ## 实现者声称构建了什么
26
+
27
+ 读取实现者的报告:[REPORT_FILE]
28
+
29
+ ## 待审查的 Diff
30
+
31
+ **Base:** [BASE_SHA]
32
+ **Head:** [HEAD_SHA]
33
+ **Diff 文件:** [DIFF_FILE]
34
+
35
+ 一次性读取这个 diff 文件——它包含提交列表、stat 摘要,以及
36
+ 带上下文的完整 diff,它就是你对本次改动的视图。diff 的上下文行
37
+ **就是**那些被改动的文件:不要单独去 Read 某个被改动的文件,除非
38
+ 你必须判断的某个 hunk 在函数中途被截断——并在报告中说明这一点。
39
+ 不要重跑 git 命令。如果 diff 文件缺失,就自己取 diff:
40
+ `git diff --stat [BASE_SHA]..[HEAD_SHA]` 和 `git diff [BASE_SHA]..[HEAD_SHA]`。
41
+ 不要爬取更广的代码库。只有为了评估一个你能点名的具体风险,才去
42
+ 查看 diff 之外的代码——每个点名的风险做一次聚焦检查,并在报告中
43
+ 同时点名这个风险和你检查了什么。横切改动是正当的、可点名的风险:
44
+ 如果 diff 改动了锁顺序、某个函数或 API 契约、或共享的可变状态,
45
+ 检查其调用点就是正确的方法。
46
+
47
+ 你的审查在这个 checkout 上是只读的。不要以任何方式改动工作树、
48
+ 索引、HEAD 或分支状态。
49
+
50
+ ## 不要信任报告
51
+
52
+ 把实现者的报告当作关于代码的、未经核实的说法。它可能不完整、
53
+ 不准确或过于乐观。对照 diff 去核实这些说法。报告里的设计理由
54
+ 同样是说法:"出于 YAGNI 留着没做""特意保持简单"或任何其他辩解,
55
+ 都是实现者在给自己的工作打分。就代码本身评判它的优劣——一句
56
+ 陈述出来的理由永远不会降低一个发现的严重度。
57
+
58
+ ## 测试
59
+
60
+ 实现者已经跑过测试,并为正是这份代码报告了带 TDD 证据的结果。
61
+ 不要为了确认他们的报告而重跑测试套件。只有当阅读代码引出一个
62
+ 现有任何运行都无法回答的具体疑问时,才去跑测试——而且是聚焦
63
+ 测试,绝不是包级套件、竞态检测运行、或反复的/高次数的循环。
64
+ 如果看起来确实需要重度验证,就在报告里建议它,而不是自己去跑。
65
+ 如果你在这个环境里无法运行命令,就点名你会跑的那个测试。
66
+
67
+ 实现者报告的测试输出里的告警或其他噪声都是发现——测试输出
68
+ 应当是干净的。
69
+
70
+ ## 第一部分:规格合规性
71
+
72
+ 把 diff 对照"要求的内容"来看:
73
+
74
+ - **缺失:** 他们跳过、遗漏、或声称却未实现的需求
75
+ - **多余:** 未被要求的功能、过度工程、不需要的"锦上添花"
76
+ - **理解偏差:** 正确的功能却用错了方式来构建,解决了错误的问题
77
+
78
+ 如果某个需求无法仅从这份 diff 中核实(它藏在未改动的代码里、
79
+ 或横跨多个任务),就把它作为一个 ⚠️ 事项报告出来,而不是
80
+ 扩大你的搜索范围。
81
+
82
+ ## 第二部分:代码质量
83
+
84
+ **代码质量:**
85
+ - 关注点分离是否干净?
86
+ - 错误处理是否恰当?
87
+ - 是否做到 DRY 而没有过早抽象?
88
+ - 边界情况是否处理了?
89
+
90
+ **测试:**
91
+ - 新增和改动的测试是否验证了真实行为,而非 mock?
92
+ - 本任务的边界情况是否被覆盖?
93
+
94
+ **结构:**
95
+ - 每个文件是否有单一明确的职责和定义清晰的接口?
96
+ - 各单元是否拆分得足以独立理解和测试?
97
+ - 实现是否遵循了计划中的文件结构?
98
+ - 本次改动是否创建了已经很大的新文件,或显著增大了现有文件?
99
+ (不要标记已有的文件大小问题——聚焦于本次改动带来的贡献。)
100
+
101
+ 你的报告应指向证据:每一个发现、以及任何你本来会用一句干巴巴的
102
+ "是"来回答的检查,都要给出 file:line 引用。一份引用了行号的
103
+ 紧凑报告,就把控制者需要的一切都给它了。
104
+
105
+ 你的最终消息就是报告本身:直接从规格合规性结论开始。每一行
106
+ 要么是一个结论、要么是一个带 file:line 的发现、要么是你跑过的
107
+ 一个检查——没有开场白、没有流程叙述、没有结尾小结。
108
+
109
+ ## 校准
110
+
111
+ 按实际严重度给问题分类。不是所有东西都是 关键。
112
+ 重要 意味着这个任务在修好之前不可信:不正确或脆弱的行为、
113
+ 一个漏掉的需求、或你会为之拦下合并的可维护性损害——逻辑块的
114
+ 逐字重复、被吞掉的错误、什么都不断言的测试。"覆盖面可以更广"
115
+ 和打磨类建议是 次要。
116
+ 如果计划或简报明确强制了某个本评分标准称之为缺陷的东西(一个
117
+ 什么都不断言的测试、逻辑块的逐字重复),那**就是**一个发现——
118
+ 把它报告为 重要,并标注为"计划强制"。计划的作者身份不能给它
119
+ 自己的工作打分;由人类来决定。
120
+ 在列出问题之前,先承认做得好的地方——准确的赞扬能帮实现者
121
+ 信任其余的反馈。
122
+
123
+ ## 输出格式
124
+
125
+ ### 规格合规性
126
+
127
+ - ✅ 符合规格 | ❌ 发现问题:[缺失/多余/理解偏差的内容,
128
+ 附带 file:line 引用]
129
+ - ⚠️ 无法从 diff 中核实:[你无法仅凭 diff 核实的需求,以及
130
+ 控制者应当检查什么——与你能核实的一切的 ✅/❌ 结论一起报告]
131
+
132
+ ### 优点
133
+ [哪些做得好?要具体。]
134
+
135
+ ### 问题
136
+
137
+ #### 关键(必须修复)
138
+ #### 重要(应当修复)
139
+ #### 次要(锦上添花)
140
+
141
+ 每个问题:file:line、哪里错了、为什么重要、如何修复(如果不明显)。
142
+
143
+ ### 评估
144
+
145
+ **任务质量:** [通过 | 需要修复]
146
+
147
+ **理由:** [1-2 句技术性评估]
148
+ ```
149
+
150
+ **占位符:**
151
+ - `[模型]` —— 必填:按 SKILL.md 的"模型选择"选审查者模型
152
+ - `[BRIEF_FILE]` —— 必填:任务简报文件(`scripts/task-brief PLAN N`
153
+ 会打印路径;与实现者所用的是同一个文件)
154
+ - `[GLOBAL_CONSTRAINTS]` —— 从计划的"全局约束"一节或规格里逐字抄下的、
155
+ 有约束力的需求:精确的取值、格式、以及组件之间被明确规定的关系
156
+ (不是流程规则——那些已经在本模板里了)
157
+ - `[REPORT_FILE]` —— 必填:实现者写入其详细报告的那个文件
158
+ - `[BASE_SHA]` —— 本任务之前的提交
159
+ - `[HEAD_SHA]` —— 当前提交
160
+ - `[DIFF_FILE]` —— 必填:控制者写入审查包的那个路径
161
+ (`scripts/review-package BASE HEAD` 会打印它写入的唯一路径;
162
+ 审查包永远不会进入控制者的上下文)
163
+
164
+ **审查者返回:** 规格合规性结论(✅/❌/⚠️)、优点、问题
165
+ (关键/重要/次要)、任务质量结论
166
+
167
+ 一次修复分派可以同时处理规格差距和质量发现;修复后的重新审查
168
+ 覆盖两个结论。
169
+ </content>
@@ -9,7 +9,7 @@ metadata:
9
9
  ---
10
10
 
11
11
  <SUBAGENT-STOP>
12
- 如果你是作为子智能体被分派来执行特定任务的,跳过此技能。
12
+ 如果你是作为子智能体被分派来执行特定任务的,忽略此技能。
13
13
  </SUBAGENT-STOP>
14
14
 
15
15
  <EXTREMELY-IMPORTANT>
@@ -17,70 +17,23 @@ metadata:
17
17
 
18
18
  如果一个技能适用于你的任务,你没有选择。你必须使用它。
19
19
 
20
- 这不可协商。这不是可选的。你不能通过合理化来逃避。
20
+ 这不可协商。你不能通过合理化来逃避。
21
21
  </EXTREMELY-IMPORTANT>
22
22
 
23
- ## 指令优先级
24
-
25
- Superpowers 技能覆盖默认系统提示行为,但**用户指令始终具有最高优先级**:
26
-
27
- 1. **用户的明确指令**(CLAUDE.md、GEMINI.md、AGENTS.md、直接请求)——最高优先级
28
- 2. **Superpowers 技能** ——在冲突处覆盖默认系统行为
29
- 3. **默认系统提示** ——最低优先级
30
-
31
- 如果 CLAUDE.md、GEMINI.md 或 AGENTS.md 说"不要使用 TDD",而某个技能说"始终使用 TDD",遵循用户的指令。用户拥有控制权。
32
-
33
- ## 如何访问技能
34
-
35
- **在 Claude Code 中:** 使用 `Skill` 工具。当你调用一个技能时,其内容会被加载并呈现给你——直接遵循即可。绝不要用 Read 工具读取技能文件。
36
-
37
- **在 Copilot CLI 中:** 使用 `skill` 工具。技能从已安装的插件中自动发现。`skill` 工具的工作方式与 Claude Code 的 `Skill` 工具相同。
38
-
39
- **在 Hermes Agent 中:** 使用 `skill_view` 工具加载技能。Hermes 支持三级渐进式加载:`skills_list` 浏览 → `skill_view(name)` 加载完整内容 → `skill_view(name, path)` 查看引用文件。
40
-
41
- **在 Gemini CLI 中:** 技能通过 `activate_skill` 工具激活。Gemini 在会话开始时加载技能元数据,并按需激活完整内容。
23
+ ## 规则
42
24
 
43
- **在其他环境中:** 查看你的平台文档了解技能的加载方式。
25
+ **在任何响应或操作之前调用相关或被请求的技能**——包括澄清性问题、探索代码库、或查看文件之前。如果调用后发现技能不适合当前情况,你不需要使用它。
44
26
 
45
- ## 平台适配
27
+ **在进入 EnterPlanMode 之前:** 如果你还没有头脑风暴过,先调用头脑风暴技能。
46
28
 
47
- 技能使用 Claude Code 的工具名称。非 CC 平台:查看 `references/copilot-tools.md`(Copilot CLI)、`references/hermes-tools.md`(Hermes Agent)、`references/codex-tools.md`(Codex)、`references/qoder-tools.md`(Qoder)了解工具对应关系。Gemini CLI 用户通过 GEMINI.md 自动获得工具映射。
29
+ 然后宣布"使用 [技能] 来 [目的]",并严格遵循该技能。如果它有检查清单,为每个条目创建一个待办。
48
30
 
49
- # 使用技能
31
+ ## 技能优先级
50
32
 
51
- ## 规则
33
+ 当多个技能都适用时,流程技能优先——它们决定处理方式,然后由实现技能(前端设计等)负责执行。头脑风暴和系统化调试是 Superpowers 中最常见的流程技能,但这条规则适用于任何流程技能。
52
34
 
53
- **在任何响应或操作之前调用相关或被请求的技能。** 哪怕只有 1% 的可能性某个技能适用,你都应该调用该技能来检查。如果调用后发现技能不适合当前情况,你不需要使用它。
54
-
55
- ```dot
56
- digraph skill_flow {
57
- "收到用户消息" [shape=doublecircle];
58
- "即将进入 EnterPlanMode?" [shape=doublecircle];
59
- "已经头脑风暴过?" [shape=diamond];
60
- "调用头脑风暴技能" [shape=box];
61
- "可能有技能适用?" [shape=diamond];
62
- "调用 Skill 工具" [shape=box];
63
- "宣布:'使用 [技能] 来 [目的]'" [shape=box];
64
- "有检查清单?" [shape=diamond];
65
- "为每个条目创建 TodoWrite 待办" [shape=box];
66
- "严格遵循技能" [shape=box];
67
- "响应(包括澄清)" [shape=doublecircle];
68
-
69
- "即将进入 EnterPlanMode?" -> "已经头脑风暴过?";
70
- "已经头脑风暴过?" -> "调用头脑风暴技能" [label="否"];
71
- "已经头脑风暴过?" -> "可能有技能适用?" [label="是"];
72
- "调用头脑风暴技能" -> "可能有技能适用?";
73
-
74
- "收到用户消息" -> "可能有技能适用?";
75
- "可能有技能适用?" -> "调用 Skill 工具" [label="是,哪怕只有 1%"];
76
- "可能有技能适用?" -> "响应(包括澄清)" [label="确定不适用"];
77
- "调用 Skill 工具" -> "宣布:'使用 [技能] 来 [目的]'";
78
- "宣布:'使用 [技能] 来 [目的]'" -> "有检查清单?";
79
- "有检查清单?" -> "为每个条目创建 TodoWrite 待办" [label="是"];
80
- "有检查清单?" -> "严格遵循技能" [label="否"];
81
- "为每个条目创建 TodoWrite 待办" -> "严格遵循技能";
82
- }
83
- ```
35
+ - "让我们构建 X" → 先用 superpowers:brainstorming,再用实现技能。
36
+ - "修复这个 bug" → 先用 superpowers:systematic-debugging,再用领域技能。
84
37
 
85
38
  ## 红线
86
39
 
@@ -101,15 +54,17 @@ digraph skill_flow {
101
54
  | "这样做感觉很高效" | 无纪律的行动浪费时间。技能防止这一点。 |
102
55
  | "我知道那是什么意思" | 知道概念 ≠ 使用技能。调用它。 |
103
56
 
104
- ## 技能优先级
57
+ ## 平台适配
105
58
 
106
- 当多个技能可能适用时,使用此顺序:
59
+ 如果你的运行环境在下面列出,请阅读对应的参考文件获取特殊说明:
107
60
 
108
- 1. **流程技能优先**(头脑风暴、调试)- 这些决定如何处理任务
109
- 2. **实现技能其次**(前端设计、mcp-builder)- 这些指导执行
61
+ - Codex:`references/codex-tools.md`
62
+ - Pi:`references/pi-tools.md`
63
+ - Copilot CLI:`references/copilot-tools.md`
64
+ - Hermes Agent:`references/hermes-tools.md`
65
+ - Qoder:`references/qoder-tools.md`
110
66
 
111
- "让我们构建 X" → 先头脑风暴,再使用实现技能。
112
- "修复这个 bug" → 先调试,再使用领域特定技能。
67
+ Gemini CLI 用户通过 GEMINI.md 自动获得 `references/gemini-tools.md` 的工具映射。
113
68
 
114
69
  ## 中国特色技能路由
115
70
 
@@ -130,14 +85,6 @@ digraph skill_flow {
130
85
 
131
86
  中国特色技能与翻译技能**叠加使用**,不互斥。例如:做代码审查时,同时使用 requesting-code-review(流程)+ chinese-code-review(风格)。
132
87
 
133
- ## 技能类型
134
-
135
- **刚性的**(TDD、调试):严格遵循。不要偏离纪律。
136
-
137
- **灵活的**(模式):根据上下文调整原则。
138
-
139
- 技能本身会告诉你它属于哪种。
140
-
141
88
  ## 用户指令
142
89
 
143
- 指令说明做什么,而非怎么做。"添加 X"或"修复 Y"不意味着跳过工作流。
90
+ 用户指令(CLAUDE.md、AGENTS.md、GEMINI.md 等、直接请求)优先于技能,技能又优先于默认行为。只有当你的人类伙伴明确告诉你跳过时,才能跳过技能工作流或指令。
@@ -6,7 +6,7 @@ Skills 使用 Claude Code 的工具名称。在 Codex 中遇到这些名称时
6
6
  |---------------|---------------|
7
7
  | `Task` 工具(派遣子 agent) | `spawn_agent` |
8
8
  | 多个 `Task` 调用(并行) | 多个 `spawn_agent` 调用 |
9
- | Task 返回结果 | `wait` |
9
+ | Task 返回结果 | `wait_agent` |
10
10
  | Task 自动完成 | `close_agent` 释放槽位 |
11
11
  | `TodoWrite`(任务跟踪) | `update_plan` |
12
12
  | `Skill` 工具(调用 skill) | Skills 原生加载——直接按说明操作 |
@@ -22,4 +22,4 @@ Skills 使用 Claude Code 的工具名称。在 Codex 中遇到这些名称时
22
22
  multi_agent = true
23
23
  ```
24
24
 
25
- 启用后可使用 `spawn_agent`、`wait` 和 `close_agent`,支持 `dispatching-parallel-agents` 和 `subagent-driven-development` 等 skills。
25
+ 启用后可使用 `spawn_agent`、`wait_agent` 和 `close_agent`,支持 `dispatching-parallel-agents` 和 `subagent-driven-development` 等 skills。使用 subagent-driven-development 时,implementer 和 reviewer 子 agent 完成全部工作后应始终 `close_agent` 释放。
Binary file
@@ -1,26 +0,0 @@
1
- # 代码质量审查者提示词模板
2
-
3
- 分派代码质量审查子智能体时使用此模板。
4
-
5
- **目的:** 验证实现是否构建良好(整洁、有测试、可维护)
6
-
7
- **仅在规格合规性审查通过后才分派。**
8
-
9
- ```
10
- Task tool (superpowers:code-reviewer):
11
- 使用模板 requesting-code-review/code-reviewer.md
12
-
13
- WHAT_WAS_IMPLEMENTED: [来自实现者的报告]
14
- PLAN_OR_REQUIREMENTS: [plan-file] 中的任务 N
15
- BASE_SHA: [任务开始前的提交]
16
- HEAD_SHA: [当前提交]
17
- DESCRIPTION: [任务摘要]
18
- ```
19
-
20
- **除标准代码质量关注点外,审查者还应检查:**
21
- - 每个文件是否有单一明确的职责和定义清晰的接口?
22
- - 各单元是否拆分得足以独立理解和测试?
23
- - 实现是否遵循了计划中的文件结构?
24
- - 本次实现是否创建了已经很大的新文件,或显著增大了现有文件?(不要标记已有的文件大小问题——聚焦于本次变更带来的影响。)
25
-
26
- **代码审查者返回:** 优点、问题(关键/重要/次要)、评估结论
@@ -1,61 +0,0 @@
1
- # 规格合规审查者提示词模板
2
-
3
- 分派规格合规审查子智能体时使用此模板。
4
-
5
- **目的:** 验证实现者是否构建了所要求的内容(不多不少)
6
-
7
- ```
8
- Task tool (general-purpose):
9
- description: "审查任务 N 的规格合规性"
10
- prompt: |
11
- 你正在审查一个实现是否与其规格匹配。
12
-
13
- ## 要求的内容
14
-
15
- [任务需求的完整文本]
16
-
17
- ## 实现者声称构建了什么
18
-
19
- [来自实现者的报告]
20
-
21
- ## 关键:不要信任报告
22
-
23
- 实现者完成得疑似过快。他们的报告可能不完整、
24
- 不准确或过于乐观。你必须独立验证所有内容。
25
-
26
- **不要:**
27
- - 相信他们关于实现内容的说法
28
- - 信任他们关于完整性的声明
29
- - 接受他们对需求的解读
30
-
31
- **要做的:**
32
- - 阅读他们写的实际代码
33
- - 逐行对比实际实现和需求
34
- - 检查他们声称已实现但实际遗漏的部分
35
- - 寻找他们未提及的多余功能
36
-
37
- ## 你的工作
38
-
39
- 阅读实现代码并验证:
40
-
41
- **缺失的需求:**
42
- - 他们是否实现了所有被要求的内容?
43
- - 是否有他们跳过或遗漏的需求?
44
- - 是否有他们声称可用但实际未实现的功能?
45
-
46
- **多余/不需要的工作:**
47
- - 他们是否构建了未被要求的内容?
48
- - 他们是否过度工程化或添加了不必要的功能?
49
- - 他们是否添加了规格中没有的"锦上添花"功能?
50
-
51
- **理解偏差:**
52
- - 他们是否以不同于预期的方式解读了需求?
53
- - 他们是否解决了错误的问题?
54
- - 他们是否实现了正确的功能但方式不对?
55
-
56
- **通过阅读代码来验证,而非信任报告。**
57
-
58
- 报告:
59
- - ✅ 符合规格(如果经过代码检查后一切匹配)
60
- - ❌ 发现问题:[具体列出缺失或多余的内容,附带 file:line 引用]
61
- ```