superpowers-zh 1.3.0 → 1.6.0

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 (49) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.cursor-plugin/plugin.json +2 -2
  5. package/.pi/extensions/superpowers.ts +121 -0
  6. package/CLAUDE.md +1 -1
  7. package/README.md +77 -34
  8. package/RELEASE-NOTES.zh.md +150 -0
  9. package/assets/qr-wechat.jpg +0 -0
  10. package/assets/sponsors/5cookie-code.png +0 -0
  11. package/bin/superpowers-zh.js +69 -18
  12. package/docs/README.antigravity.md +7 -7
  13. package/docs/README.kimi.md +86 -0
  14. package/docs/README.openclaw.md +7 -4
  15. package/docs/README.pi.md +54 -0
  16. package/docs/README.qoder.md +95 -0
  17. package/docs/README.trae.md +6 -4
  18. package/gemini-extension.json +1 -1
  19. package/hooks/hooks-cursor.json +1 -1
  20. package/hooks/session-start +4 -12
  21. package/package.json +18 -5
  22. package/skills/brainstorming/SKILL.md +5 -0
  23. package/skills/brainstorming/scripts/frame-template.html +25 -26
  24. package/skills/brainstorming/scripts/helper.js +101 -22
  25. package/skills/brainstorming/scripts/server.cjs +428 -43
  26. package/skills/brainstorming/scripts/start-server.sh +76 -20
  27. package/skills/brainstorming/scripts/stop-server.sh +74 -9
  28. package/skills/chinese-code-review/SKILL.md +5 -0
  29. package/skills/chinese-commit-conventions/SKILL.md +5 -0
  30. package/skills/chinese-documentation/SKILL.md +5 -0
  31. package/skills/chinese-git-workflow/SKILL.md +5 -0
  32. package/skills/dispatching-parallel-agents/SKILL.md +5 -0
  33. package/skills/executing-plans/SKILL.md +7 -2
  34. package/skills/finishing-a-development-branch/SKILL.md +112 -32
  35. package/skills/mcp-builder/SKILL.md +5 -0
  36. package/skills/receiving-code-review/SKILL.md +5 -0
  37. package/skills/requesting-code-review/SKILL.md +13 -10
  38. package/skills/requesting-code-review/code-reviewer.md +124 -104
  39. package/skills/subagent-driven-development/SKILL.md +5 -0
  40. package/skills/systematic-debugging/SKILL.md +5 -0
  41. package/skills/test-driven-development/SKILL.md +5 -0
  42. package/skills/using-git-worktrees/SKILL.md +104 -97
  43. package/skills/using-superpowers/SKILL.md +6 -1
  44. package/skills/using-superpowers/references/pi-tools.md +28 -0
  45. package/skills/using-superpowers/references/qoder-tools.md +43 -0
  46. package/skills/verification-before-completion/SKILL.md +5 -0
  47. package/skills/workflow-runner/SKILL.md +5 -0
  48. package/skills/writing-plans/SKILL.md +5 -0
  49. package/skills/writing-skills/SKILL.md +5 -0
@@ -1,11 +1,16 @@
1
1
  ---
2
2
  name: requesting-code-review
3
3
  description: 完成任务、实现重要功能或合并前使用,用于验证工作成果是否符合要求
4
+ version: "1.0.0"
5
+ license: MIT
6
+ metadata:
7
+ hermes:
8
+ tags: [code-review]
4
9
  ---
5
10
 
6
11
  # 请求代码审查
7
12
 
8
- 派遣 superpowers:code-reviewer 子代理来在问题扩散之前发现它们。审查者获得的是精心组织的评估上下文——绝不是你的会话历史。这样可以让审查者专注于工作成果而非你的思考过程,同时保留你自己的上下文以便继续工作。
13
+ 派遣代码审查子代理,在问题扩散之前发现它们。审查者获得的是精心组织的评估上下文——绝不是你的会话历史。这样可以让审查者专注于工作成果而非你的思考过程,同时保留你自己的上下文以便继续工作。
9
14
 
10
15
  **核心原则:** 早审查,勤审查。
11
16
 
@@ -29,16 +34,15 @@ BASE_SHA=$(git rev-parse HEAD~1) # 或 origin/main
29
34
  HEAD_SHA=$(git rev-parse HEAD)
30
35
  ```
31
36
 
32
- **2. 派遣 code-reviewer 子代理:**
37
+ **2. 派遣代码审查子代理:**
33
38
 
34
- 使用 Task 工具,指定 superpowers:code-reviewer 类型,填写 `code-reviewer.md` 中的模板
39
+ 使用 Task 工具,指定 `general-purpose` 类型,填写 `code-reviewer.md` 中的模板
35
40
 
36
41
  **占位符说明:**
37
- - `{WHAT_WAS_IMPLEMENTED}` - 你刚完成的内容
42
+ - `{DESCRIPTION}` - 你刚完成的内容简要说明
38
43
  - `{PLAN_OR_REQUIREMENTS}` - 预期功能
39
44
  - `{BASE_SHA}` - 起始提交
40
45
  - `{HEAD_SHA}` - 结束提交
41
- - `{DESCRIPTION}` - 简要说明
42
46
 
43
47
  **3. 处理反馈:**
44
48
  - Critical 问题立即修复
@@ -56,12 +60,11 @@ HEAD_SHA=$(git rev-parse HEAD)
56
60
  BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | awk '{print $1}')
57
61
  HEAD_SHA=$(git rev-parse HEAD)
58
62
 
59
- [派遣 superpowers:code-reviewer 子代理]
60
- WHAT_WAS_IMPLEMENTED: 会话索引的验证和修复功能
63
+ [派遣代码审查子代理]
64
+ DESCRIPTION: 添加了 verifyIndex() 和 repairIndex(),支持 4 种问题类型
61
65
  PLAN_OR_REQUIREMENTS: docs/superpowers/plans/deployment-plan.md 中的任务 2
62
66
  BASE_SHA: a7981ec
63
67
  HEAD_SHA: 3df7661
64
- DESCRIPTION: 添加了 verifyIndex() 和 repairIndex(),支持 4 种问题类型
65
68
 
66
69
  [子代理返回]:
67
70
  优点:架构清晰,测试真实
@@ -82,8 +85,8 @@ HEAD_SHA=$(git rev-parse HEAD)
82
85
  - 修复后再进入下一个任务
83
86
 
84
87
  **执行计划:**
85
- - 每批(3 个任务)后审查
86
- - 获取反馈,修复,继续
88
+ - 每个任务完成后或在自然 checkpoint 审查
89
+ - 获取反馈,应用,继续
87
90
 
88
91
  **临时开发:**
89
92
  - 合并前审查
@@ -1,146 +1,166 @@
1
- # 代码审查代理
1
+ # 代码审查员提示模板
2
2
 
3
- 你正在审查代码变更的生产就绪程度。
3
+ 派遣代码审查员子代理时使用此模板。
4
4
 
5
- **你的任务:**
6
- 1. 审查 {WHAT_WAS_IMPLEMENTED}
7
- 2. 对照 {PLAN_OR_REQUIREMENTS} 进行比较
8
- 3. 检查代码质量、架构、测试
9
- 4. 按严重程度分类问题
10
- 5. 评估生产就绪程度
5
+ **用途:** 在工作成果扩散到更多工作之前,对照需求和代码质量标准做一次审查。
11
6
 
12
- ## 实现内容
7
+ ```
8
+ Task tool(general-purpose):
9
+ description: "审查代码改动"
10
+ prompt: |
11
+ 你是一名资深代码审查员,精通软件架构、设计模式与最佳实践。
12
+ 你的工作是对照计划或需求审查已完成的工作,在问题扩散之前发现它们。
13
13
 
14
- {DESCRIPTION}
14
+ ## 实现内容
15
15
 
16
- ## 需求/计划
16
+ {DESCRIPTION}
17
17
 
18
- {PLAN_REFERENCE}
18
+ ## 需求 / 计划
19
19
 
20
- ## 待审查的 Git 范围
20
+ {PLAN_OR_REQUIREMENTS}
21
21
 
22
- **Base:** {BASE_SHA}
23
- **Head:** {HEAD_SHA}
22
+ ## 待审查的 Git 范围
24
23
 
25
- ```bash
26
- git diff --stat {BASE_SHA}..{HEAD_SHA}
27
- git diff {BASE_SHA}..{HEAD_SHA}
28
- ```
24
+ **Base:** {BASE_SHA}
25
+ **Head:** {HEAD_SHA}
29
26
 
30
- ## 审查清单
31
-
32
- **代码质量:**
33
- - 关注点分离是否清晰?
34
- - 错误处理是否恰当?
35
- - 类型安全(如适用)?
36
- - 是否遵循 DRY 原则?
37
- - 边界情况是否已处理?
38
-
39
- **架构:**
40
- - 设计决策是否合理?
41
- - 是否考虑了可扩展性?
42
- - 性能影响如何?
43
- - 安全方面有无隐患?
44
-
45
- **测试:**
46
- - 测试是否真正测试了逻辑(而不只是 mock)?
47
- - 边界情况是否覆盖?
48
- - 需要的地方是否有集成测试?
49
- - 所有测试是否通过?
50
-
51
- **需求:**
52
- - 是否满足了计划中的所有需求?
53
- - 实现是否与规格一致?
54
- - 有无范围蔓延?
55
- - 破坏性变更是否已记录?
56
-
57
- **生产就绪:**
58
- - 迁移策略(如有 schema 变更)?
59
- - 是否考虑了向后兼容性?
60
- - 文档是否完备?
61
- - 有无明显 bug?
62
-
63
- ## 输出格式
27
+ ```bash
28
+ git diff --stat {BASE_SHA}..{HEAD_SHA}
29
+ git diff {BASE_SHA}..{HEAD_SHA}
30
+ ```
64
31
 
65
- ### 优点
66
- [做得好的地方?要具体。]
32
+ ## 检查内容
67
33
 
68
- ### 问题
34
+ **计划对齐:**
35
+ - 实现是否匹配计划 / 需求?
36
+ - 偏差是有道理的改进,还是有问题的偏离?
37
+ - 计划中的所有功能都到位了吗?
69
38
 
70
- #### Critical(必须修复)
71
- [Bug、安全问题、数据丢失风险、功能异常]
39
+ **代码质量:**
40
+ - 关注点分离清晰吗?
41
+ - 错误处理到位吗?
42
+ - 该有类型安全的地方有吗?
43
+ - DRY 但没有过早抽象?
44
+ - 边界情况处理了吗?
72
45
 
73
- #### Important(应该修复)
74
- [架构问题、缺失功能、错误处理不足、测试缺口]
46
+ **架构:**
47
+ - 设计决策合理吗?
48
+ - 可扩展性和性能合理吗?
49
+ - 有没有安全隐患?
50
+ - 与周围代码集成是否干净?
75
51
 
76
- #### Minor(可以改进)
77
- [代码风格、优化机会、文档改进]
52
+ **测试:**
53
+ - 测试验证的是真实行为,不是 mock?
54
+ - 边界情况覆盖了吗?
55
+ - 该有集成测试的地方有吗?
56
+ - 所有测试都通过吗?
78
57
 
79
- **每个问题需包含:**
80
- - 文件:行号引用
81
- - 什么有问题
82
- - 为什么重要
83
- - 如何修复(如果不明显的话)
58
+ **生产就绪:**
59
+ - 如果改了 schema,有迁移策略吗?
60
+ - 考虑了向后兼容吗?
61
+ - 文档完整吗?
62
+ - 没有明显 bug?
84
63
 
85
- ### 建议
86
- [对代码质量、架构或流程的改进建议]
64
+ ## 校准标准
87
65
 
88
- ### 评估
66
+ 按实际严重程度分类。不是所有问题都是 Critical。
67
+ 在列出问题之前先认可做得好的地方——准确的肯定能让实现者
68
+ 更愿意接受后续的反馈。
69
+
70
+ 如果发现与计划有重大偏差,明确标出,让实现者确认这个偏差
71
+ 是不是有意为之。如果问题出在计划本身而不是实现,也要说清楚。
72
+
73
+ ## 输出格式
74
+
75
+ ### 优点
76
+ [哪些地方做得好?具体一点。]
77
+
78
+ ### 问题
89
79
 
90
- **可以合并吗?** [是/否/修复后可以]
80
+ #### Critical(必须修复)
81
+ [bug、安全问题、数据丢失风险、功能损坏]
91
82
 
92
- **理由:** [1-2 句话的技术评估]
83
+ #### Important(应该修复)
84
+ [架构问题、缺失功能、错误处理不到位、测试漏洞]
93
85
 
94
- ## 关键规则
86
+ #### Minor(锦上添花)
87
+ [代码风格、优化机会、文档润色]
88
+
89
+ 每个问题包含:
90
+ - File:line 引用
91
+ - 哪里有问题
92
+ - 为什么重要
93
+ - 怎么修(如果不明显)
94
+
95
+ ### 建议
96
+ [关于代码质量、架构或流程的改进建议]
97
+
98
+ ### 评估
99
+
100
+ **可以合并吗?** [是 | 否 | 修完再合]
101
+
102
+ **理由:** [1-2 句技术评估]
103
+
104
+ ## 关键规则
105
+
106
+ **要做:**
107
+ - 按实际严重程度分类
108
+ - 具体(file:line,别含糊)
109
+ - 解释为什么这个问题重要
110
+ - 认可优点
111
+ - 给出明确判断
112
+
113
+ **不要:**
114
+ - 没检查就说"看起来 OK"
115
+ - 把小事标成 Critical
116
+ - 对没真看过的代码给反馈
117
+ - 含糊其辞("改进错误处理")
118
+ - 回避给出明确判断
119
+ ```
95
120
 
96
- **应该做的:**
97
- - 按实际严重程度分类(不是所有问题都是 Critical)
98
- - 要具体(文件:行号,不要含糊)
99
- - 解释问题为什么重要
100
- - 肯定做得好的地方
101
- - 给出明确结论
121
+ **占位符说明:**
122
+ - `{DESCRIPTION}` —— 已构建内容的简要说明
123
+ - `{PLAN_OR_REQUIREMENTS}` —— 预期功能(计划文件路径、任务文本或需求)
124
+ - `{BASE_SHA}` —— 起始 commit
125
+ - `{HEAD_SHA}` —— 结束 commit
102
126
 
103
- **不该做的:**
104
- - 没仔细看就说"看起来不错"
105
- - 把小问题标为 Critical
106
- - 对没有审查的代码给反馈
107
- - 含糊其辞("改善错误处理")
108
- - 回避给出明确结论
127
+ **审查员返回:** 优点、问题(Critical / Important / Minor)、建议、评估
109
128
 
110
129
  ## 输出示例
111
130
 
112
131
  ```
113
132
  ### 优点
114
- - 数据库 schema 清晰,迁移规范(db.ts:15-42)
115
- - 测试覆盖全面(18 个测试,覆盖所有边界情况)
116
- - 错误处理良好,有降级方案(summarizer.ts:85-92)
133
+ - 数据库 schema 干净,迁移规范(db.ts:15-42)
134
+ - 测试覆盖全面(18 个测试,所有边界情况都覆盖)
135
+ - 错误处理有 fallback,做得很好(summarizer.ts:85-92)
117
136
 
118
137
  ### 问题
119
138
 
120
139
  #### Important
121
- 1. **CLI 包装器缺少帮助文本**
122
- - 文件:index-conversations:1-31
123
- - 问题:没有 --help 选项,用户无法发现 --concurrency
124
- - 修复:添加 --help 分支,附带使用示例
140
+ 1. **CLI wrapper 缺少帮助文本**
141
+ - File: index-conversations:1-31
142
+ - 问题:没有 --help flag,用户不会发现 --concurrency
143
+ - 修复:加 --help case 含使用示例
125
144
 
126
- 2. **日期校验缺失**
127
- - 文件:search.ts:25-27
128
- - 问题:无效日期静默返回空结果
129
- - 修复:校验 ISO 格式,抛出带示例的错误
145
+ 2. **缺少日期校验**
146
+ - File: search.ts:25-27
147
+ - 问题:无效日期会静默返回空结果
148
+ - 修复:校验 ISO 格式,抛错并附示例
130
149
 
131
150
  #### Minor
132
- 1. **进度指示器**
133
- - 文件:indexer.ts:130
134
- - 问题:长时间操作没有"X / Y"计数器
135
- - 影响:用户不知道还要等多久
151
+ 1. **进度指示**
152
+ - File: indexer.ts:130
153
+ - 问题:长操作没有 "X of Y" 计数
154
+ - 影响:用户不知道要等多久
136
155
 
137
156
  ### 建议
138
- - 添加进度报告以改善用户体验
139
- - 考虑用配置文件管理排除的项目(提高可移植性)
157
+ - 加进度上报改善用户体验
158
+ - 考虑用配置文件管理排除项目(提升可移植性)
140
159
 
141
160
  ### 评估
142
161
 
143
- **可以合并:修复后可以**
162
+ **可以合并吗:修完再合**
144
163
 
145
- **理由:** 核心实现扎实,架构合理,测试充分。Important 问题(帮助文本、日期校验)容易修复,不影响核心功能。
164
+ **理由:** 核心实现扎实,架构和测试都很好。Important 问题(帮助文本、
165
+ 日期校验)很容易修,且不影响核心功能。
146
166
  ```
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: subagent-driven-development
3
3
  description: 当在当前会话中执行包含独立任务的实现计划时使用
4
+ version: "1.0.0"
5
+ license: MIT
6
+ metadata:
7
+ hermes:
8
+ tags: [agents, development]
4
9
  ---
5
10
 
6
11
  # 子智能体驱动开发
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: systematic-debugging
3
3
  description: 遇到任何 bug、测试失败或异常行为时使用,在提出修复方案之前执行
4
+ version: "1.0.0"
5
+ license: MIT
6
+ metadata:
7
+ hermes:
8
+ tags: [debugging]
4
9
  ---
5
10
 
6
11
  # 系统化调试
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: test-driven-development
3
3
  description: 在实现任何功能或修复 bug 时使用,在编写实现代码之前
4
+ version: "1.0.0"
5
+ license: MIT
6
+ metadata:
7
+ hermes:
8
+ tags: [testing, development]
4
9
  ---
5
10
 
6
11
  # 测试驱动开发(TDD)
@@ -1,104 +1,113 @@
1
1
  ---
2
2
  name: using-git-worktrees
3
- description: 当需要开始与当前工作区隔离的功能开发或执行实现计划之前使用——创建具有智能目录选择和安全验证的隔离 git 工作树
3
+ description: 当需要开始与当前工作区隔离的功能开发,或在执行实现计划之前使用——通过原生工具或 git worktree 回退机制确保隔离工作区存在
4
+ version: "1.0.0"
5
+ license: MIT
6
+ metadata:
7
+ hermes:
8
+ tags: [git, workflow]
4
9
  ---
5
10
 
6
11
  # 使用 Git 工作树
7
12
 
8
13
  ## 概述
9
14
 
10
- Git 工作树创建共享同一仓库的隔离工作区,允许同时在多个分支上工作而无需切换。
15
+ 确保工作发生在隔离的工作区中。优先使用你的平台的原生 worktree 工具。仅在没有原生工具可用时,再回退到手动 git worktree。
11
16
 
12
- **核心原则:** 系统化的目录选择 + 安全验证 = 可靠的隔离。
17
+ **核心原则:** 先检测现有隔离。然后用原生工具。再回退到 git。绝不与 harness 对抗。
13
18
 
14
19
  **开始时宣布:** "我正在使用 using-git-worktrees 技能来建立一个隔离的工作区。"
15
20
 
16
- ## 目录选择流程
21
+ ## 步骤 0:检测现有隔离
17
22
 
18
- 按以下优先顺序执行:
19
-
20
- ### 1. 检查现有目录
23
+ **创建任何东西之前,先检查你是否已经在一个隔离的工作区里。**
21
24
 
22
25
  ```bash
23
- # 按优先顺序检查
24
- ls -d .worktrees 2>/dev/null # 首选(隐藏目录)
25
- ls -d worktrees 2>/dev/null # 备选
26
+ GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
27
+ GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
28
+ BRANCH=$(git branch --show-current)
26
29
  ```
27
30
 
28
- **如果找到:** 使用该目录。如果两者都存在,`.worktrees` 优先。
29
-
30
- ### 2. 检查 CLAUDE.md
31
+ **Submodule 守卫:** 在 git submodule 内 `GIT_DIR != GIT_COMMON` 也为真。在判定"已经在 worktree 内"之前,先确认你不在 submodule 里:
31
32
 
32
33
  ```bash
33
- grep -i "worktree.*director" CLAUDE.md 2>/dev/null
34
+ # 如果这条命令返回路径,说明你在 submodule 里,不是 worktree —— 按普通仓库处理
35
+ git rev-parse --show-superproject-working-tree 2>/dev/null
34
36
  ```
35
37
 
36
- **如果指定了偏好:** 直接使用,无需询问。
38
+ **如果 `GIT_DIR != GIT_COMMON`(且不是 submodule):** 你已经在一个 linked worktree 内。跳到步骤 2(项目设置)。**不要**再创建一个 worktree。
37
39
 
38
- ### 3. 询问用户
40
+ 按分支状态报告:
39
41
 
40
- 如果没有现有目录且 CLAUDE.md 中无偏好设置:
42
+ - 在某个分支上:"已经在隔离工作区 `<path>`,分支 `<name>`。"
43
+ - 分离 HEAD:"已经在隔离工作区 `<path>`(分离 HEAD,由外部管理)。完成时需要创建分支。"
41
44
 
42
- ```
43
- 未找到工作树目录。我应该在哪里创建工作树?
45
+ **如果 `GIT_DIR == GIT_COMMON`(或在 submodule 内):** 你在一个普通的仓库检出里。
44
46
 
45
- 1. .worktrees/(项目本地,隐藏目录)
46
- 2. ~/.config/superpowers/worktrees/<project-name>/(全局位置)
47
+ 用户是否已经在你的 instructions 里表明过 worktree 偏好?如果没有,创建 worktree 之前先征求同意:
47
48
 
48
- 你倾向哪个?
49
- ```
49
+ > "你希望我搭一个隔离的 worktree 吗?它能保护你当前分支不被改动。"
50
50
 
51
- ## 安全验证
51
+ 如果用户已声明过偏好,直接遵循,不再询问。如果用户拒绝同意,原地工作并跳到步骤 2。
52
52
 
53
- ### 项目本地目录(.worktrees 或 worktrees)
53
+ ## 步骤 1:创建隔离工作区
54
54
 
55
- **创建工作树前必须验证目录已被忽略:**
55
+ **你有两种机制。按这个顺序尝试。**
56
56
 
57
- ```bash
58
- # 检查目录是否被忽略(遵循本地、全局和系统 gitignore)
59
- git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
60
- ```
57
+ ### 1a. 原生 Worktree 工具(首选)
58
+
59
+ 用户已经请求隔离工作区(步骤 0 已获同意)。你是否已经有创建 worktree 的方法?可能是名为 `EnterWorktree`、`WorktreeCreate` 的工具、`/worktree` 命令,或 `--worktree` 标志。如果有,用它,然后跳到步骤 2。
60
+
61
+ 原生工具自动处理目录放置、分支创建和清理。在你已经有原生工具的情况下使用 `git worktree add`,会创建你的 harness 看不到也无法管理的"幻影状态"。
61
62
 
62
- **如果未被忽略:**
63
+ 只有在没有原生 worktree 工具可用时,才进入步骤 1b。
63
64
 
64
- 根据 Jesse 的规则"立即修复坏掉的东西":
65
- 1. 在 .gitignore 中添加相应条目
66
- 2. 提交更改
67
- 3. 继续创建工作树
65
+ ### 1b. Git Worktree 回退
68
66
 
69
- **为什么这很关键:** 防止意外将工作树内容提交到仓库。
67
+ **只在步骤 1a 不适用时使用** —— 你没有可用的原生 worktree 工具。手动用 git 创建 worktree。
70
68
 
71
- ### 全局目录(~/.config/superpowers/worktrees)
69
+ #### 目录选择
72
70
 
73
- 无需 .gitignore 验证——完全在项目之外。
71
+ 按以下优先级。明确的用户偏好始终优先于观察到的文件系统状态。
74
72
 
75
- ## 创建步骤
73
+ 1. **检查你的 instructions 里是否声明过 worktree 目录偏好。** 如果用户已指定,不再询问直接用。
76
74
 
77
- ### 1. 检测项目名称
75
+ 2. **检查是否存在项目本地的 worktree 目录:**
76
+
77
+ ```bash
78
+ ls -d .worktrees 2>/dev/null # 首选(隐藏目录)
79
+ ls -d worktrees 2>/dev/null # 备选
80
+ ```
81
+
82
+ 找到就用。如果两者都存在,`.worktrees` 优先。
83
+
84
+ 3. **如果没有其他可参考的信息**,默认用项目根目录下的 `.worktrees/`。
85
+
86
+ #### 安全验证(仅项目本地目录)
87
+
88
+ **创建 worktree 前必须验证目录已被忽略:**
78
89
 
79
90
  ```bash
80
- project=$(basename "$(git rev-parse --show-toplevel)")
91
+ git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
81
92
  ```
82
93
 
83
- ### 2. 创建工作树
94
+ **如果未被忽略:** 添加到 .gitignore,提交该改动,然后继续。
95
+
96
+ **为什么关键:** 防止 worktree 内容被意外提交到仓库。
97
+
98
+ #### 创建工作树
84
99
 
85
100
  ```bash
86
- # 确定完整路径
87
- case $LOCATION in
88
- .worktrees|worktrees)
89
- path="$LOCATION/$BRANCH_NAME"
90
- ;;
91
- ~/.config/superpowers/worktrees/*)
92
- path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
93
- ;;
94
- esac
95
-
96
- # 创建带有新分支的工作树
101
+ # 根据选定位置确定路径
102
+ path="$LOCATION/$BRANCH_NAME"
103
+
97
104
  git worktree add "$path" -b "$BRANCH_NAME"
98
105
  cd "$path"
99
106
  ```
100
107
 
101
- ### 3. 运行项目设置
108
+ **沙盒回退:** 如果 `git worktree add` 因权限错误(沙盒拒绝)失败,告诉用户沙盒阻止了 worktree 创建,你将在当前目录原地工作。然后原地运行 setup 和基线测试。
109
+
110
+ ## 步骤 2:项目设置
102
111
 
103
112
  自动检测并运行相应的设置命令:
104
113
 
@@ -117,23 +126,20 @@ if [ -f pyproject.toml ]; then poetry install; fi
117
126
  if [ -f go.mod ]; then go mod download; fi
118
127
  ```
119
128
 
120
- ### 4. 验证基线正常
129
+ ## 步骤 3:验证基线干净
121
130
 
122
- 运行测试确保工作树初始状态干净:
131
+ 运行测试确保工作区初始状态干净:
123
132
 
124
133
  ```bash
125
- # 示例 - 使用项目对应的命令
126
- npm test
127
- cargo test
128
- pytest
129
- go test ./...
134
+ # 使用项目对应的命令
135
+ npm test / cargo test / pytest / go test ./...
130
136
  ```
131
137
 
132
- **如果测试失败:** 报告失败情况,询问是否继续或排查。
138
+ **如果测试失败:** 报告失败,询问是继续还是排查。
133
139
 
134
140
  **如果测试通过:** 报告就绪。
135
141
 
136
- ### 5. 报告位置
142
+ ### 报告
137
143
 
138
144
  ```
139
145
  工作树已就绪:<full-path>
@@ -145,74 +151,75 @@ go test ./...
145
151
 
146
152
  | 情况 | 操作 |
147
153
  |------|------|
148
- | `.worktrees/` 存在 | 使用它(验证已忽略) |
149
- | `worktrees/` 存在 | 使用它(验证已忽略) |
150
- | 两者都存在 | 使用 `.worktrees/` |
151
- | 都不存在 | 检查 CLAUDE.md → 询问用户 |
154
+ | 已在 linked worktree 内 | 跳过创建(步骤 0) |
155
+ | 在 submodule 内 | 按普通仓库处理(步骤 0 守卫) |
156
+ | 有原生 worktree 工具 | 用它(步骤 1a) |
157
+ | 没有原生工具 | git worktree 回退(步骤 1b) |
158
+ | `.worktrees/` 存在 | 用它(验证已忽略) |
159
+ | `worktrees/` 存在 | 用它(验证已忽略) |
160
+ | 两者都存在 | 用 `.worktrees/` |
161
+ | 都不存在 | 检查 instructions 文件,再默认 `.worktrees/` |
152
162
  | 目录未被忽略 | 添加到 .gitignore + 提交 |
163
+ | 创建时权限错误 | 沙盒回退,原地工作 |
153
164
  | 基线测试失败 | 报告失败 + 询问 |
154
165
  | 无 package.json/Cargo.toml | 跳过依赖安装 |
155
166
 
156
167
  ## 常见错误
157
168
 
169
+ ### 与 harness 对抗
170
+
171
+ - **问题:** 平台已经提供隔离的情况下还在用 `git worktree add`
172
+ - **修复:** 步骤 0 检测现有隔离。步骤 1a 让位给原生工具。
173
+
174
+ ### 跳过检测
175
+
176
+ - **问题:** 在已有的 worktree 内嵌套创建另一个 worktree
177
+ - **修复:** 创建任何东西之前都先跑步骤 0
178
+
158
179
  ### 跳过忽略验证
159
180
 
160
- - **问题:** 工作树内容被跟踪,污染 git status
161
- - **修复:** 创建项目本地工作树前始终使用 `git check-ignore`
181
+ - **问题:** worktree 内容被跟踪,污染 git status
182
+ - **修复:** 创建项目本地 worktree 前始终使用 `git check-ignore`
162
183
 
163
184
  ### 假设目录位置
164
185
 
165
- - **问题:** 造成不一致,违反项目约定
166
- - **修复:** 遵循优先级:现有目录 > CLAUDE.md > 询问
186
+ - **问题:** 造成不一致、违反项目约定
187
+ - **修复:** 遵循优先级:明确 instructions > 现有项目本地目录 > 默认
167
188
 
168
189
  ### 带着失败的测试继续
169
190
 
170
191
  - **问题:** 无法区分新 bug 和已有问题
171
192
  - **修复:** 报告失败,获得明确许可后再继续
172
193
 
173
- ### 硬编码设置命令
174
-
175
- - **问题:** 在使用不同工具的项目上会出错
176
- - **修复:** 从项目文件自动检测(package.json 等)
177
-
178
- ## 示例工作流
179
-
180
- ```
181
- 你:我正在使用 using-git-worktrees 技能来建立一个隔离的工作区。
182
-
183
- [检查 .worktrees/ - 存在]
184
- [验证已忽略 - git check-ignore 确认 .worktrees/ 已被忽略]
185
- [创建工作树:git worktree add .worktrees/auth -b feature/auth]
186
- [运行 npm install]
187
- [运行 npm test - 47 个通过]
188
-
189
- 工作树已就绪:/Users/jesse/myproject/.worktrees/auth
190
- 测试通过(47 个测试,0 个失败)
191
- 准备实现 auth 功能
192
- ```
193
-
194
194
  ## 红线
195
195
 
196
196
  **绝不:**
197
- - 创建项目本地工作树时不验证是否已忽略
197
+
198
+ - 步骤 0 已检测到现有隔离时还创建 worktree
199
+ - 在已有原生 worktree 工具(如 `EnterWorktree`)的情况下还用 `git worktree add`。这是 #1 错误——有就用。
200
+ - 跳过步骤 1a 直接跳到步骤 1b 的 git 命令
201
+ - 不验证已忽略就创建项目本地 worktree
198
202
  - 跳过基线测试验证
199
203
  - 不询问就带着失败的测试继续
200
- - 在有歧义时假设目录位置
201
- - 跳过 CLAUDE.md 检查
202
204
 
203
205
  **始终:**
204
- - 遵循目录优先级:现有目录 > CLAUDE.md > 询问
205
- - 对项目本地目录验证是否已忽略
206
+
207
+ - 先跑步骤 0 检测
208
+ - 优先原生工具,其次 git 回退
209
+ - 遵循目录优先级:明确 instructions > 现有项目本地目录 > 默认
210
+ - 项目本地目录验证已忽略
206
211
  - 自动检测并运行项目设置
207
212
  - 验证测试基线干净
208
213
 
209
214
  ## 集成
210
215
 
211
216
  **被以下技能调用:**
217
+
212
218
  - **brainstorming**(阶段 4)- 设计通过且需要实现时必需
213
219
  - **subagent-driven-development** - 执行任何任务前必需
214
220
  - **executing-plans** - 执行任何任务前必需
215
221
  - 任何需要隔离工作区的技能
216
222
 
217
223
  **配合使用:**
224
+
218
225
  - **finishing-a-development-branch** - 工作完成后清理时必需