@culeo/specx 0.1.1 → 0.1.2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@culeo/specx",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Install specx skills to AI coding agents (Claude Code, Codex, etc.)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,313 @@
1
+ ---
2
+ name: specx-fix
3
+ description: specx 流程的 bug 修复 skill — 自动判断验收 bug(场景 A)和独立 bug(场景 B),提供根因分析、修复方案、归档沉淀
4
+ category: software-development
5
+ tags: [specx, bugfix, debugging]
6
+ ---
7
+
8
+ # specx-fix:Bug 修复
9
+
10
+ ## 触发条件
11
+
12
+ 当用户反馈 bug 相关问题时触发本 skill。不需要用户说特定的关键词,通过上下文自动判断走哪条路径。
13
+
14
+ ## 场景判断(自动)
15
+
16
+ | 信号 | 场景 A(验收 bug) | 场景 B(独立 bug) |
17
+ |------|-------------------|-------------------|
18
+ | 当前有活跃子需求 `t-xxx/` | ✅ | — |
19
+ | 当前 git 分支是 feature / 需求分支(如 `t-xxx-*`) | ✅ | — |
20
+ | 问题在最近修改的代码范围内 | ✅ | — |
21
+ | 问题在当前子需求的新功能范围内 | ✅ | — |
22
+ | 当前 git 分支是 `fix/*` 或 `hotfix/*` | — | ✅ |
23
+ | 当前 git 分支是 `main` / `master` / `maintenance` | — | ✅ |
24
+ | 没有进行中的子需求 | — | ✅ |
25
+ | 问题在完全不同的模块 | — | ✅ |
26
+
27
+ **判断逻辑:**
28
+
29
+ ```
30
+ IF 有活跃子需求 t-xxx/ AND
31
+ (问题在最近改动范围内 OR git 分支是需求分支 OR 问题在新功能范围内):
32
+ → 场景 A(验收 bug)
33
+ ELSE:
34
+ → 场景 B(独立 bug)
35
+ ```
36
+
37
+ ---
38
+
39
+ ## 场景 A:验收 Bug(开发过程)
40
+
41
+ ### 适用条件
42
+
43
+ 当前正在执行 specx 流程,子需求已实现但验收时发现问题。根因可能在 spec、design 或代码实现中。
44
+
45
+ ### 流程
46
+
47
+ #### Step A1️⃣ 定位根因环节
48
+
49
+ 判断问题出在哪个环节:
50
+
51
+ | 根因位置 | 判断依据 | 修复动作 |
52
+ |----------|---------|---------|
53
+ | **spec 遗漏** | 需求定义本身就没覆盖这个场景 / 边界条件 | 更新 `02-spec.md`,然后补 design,重新执行 |
54
+ | **design 遗漏** | spec 定义了但设计方案没覆盖 | 更新 `03-design.md`(或模板定义的文件),重新执行 |
55
+ | **代码实现错** | spec 和 design 都对,代码写错了 | 直接修代码 |
56
+
57
+ #### Step A2️⃣ 修复
58
+
59
+ 1. 根据根因回退到对应环节修复
60
+ 2. 更新下游文档(如果上游改了,下游必须同步)
61
+ 3. 在 `04-tasks.md` 末尾追加验收 bug 记录:
62
+
63
+ ```markdown
64
+ ### 验收 bug 记录
65
+
66
+ | 时间 | 描述 | 根因环节 | 修复内容 | 状态 |
67
+ |------|------|---------|---------|------|
68
+ | {YYYY-MM-DD} | {bug描述} | spec / design / 代码 | {修复了什么} | ✅ |
69
+ ```
70
+
71
+ > 如果 `04-tasks.md` 不存在,创建 `t-xxx/99-fix.md`
72
+
73
+ #### Step A3️⃣ 更新文档状态
74
+
75
+ 涉及修改的文档,状态回退为 `draft`:
76
+
77
+ ```yaml
78
+ ---
79
+ status: draft
80
+ updated: {YYYY-MM-DD}
81
+ history:
82
+ - "v{n}: 验收修复: {摘要}"
83
+ ---
84
+ ```
85
+
86
+ #### Step A4️⃣ 回到执行
87
+
88
+ 修复完成后,回到 `specx-executing-plans` 继续执行修改后的任务。
89
+
90
+ ### 场景 A 不做什么
91
+
92
+ - 不创建新目录
93
+ - 不走独立 bug 的完整文档流程
94
+ - 不归档到 wiki(如果值得归档,等子需求完成时走 archive 流程统一沉淀)
95
+
96
+ ---
97
+
98
+ ## 场景 B:独立 Bug(线上/历史/日常)
99
+
100
+ ### 适用条件
101
+
102
+ - 无当前需求上下文
103
+ - 线上报障、历史代码问题、日常发现
104
+ - 与当前进行中的需求无关
105
+
106
+ ### 流程
107
+
108
+ #### Step B1️⃣ 创建 bug 工作空间
109
+
110
+ ```
111
+ docs/specx/fixes/
112
+ └── {yyyyMMdd}-{简短描述}/
113
+ ├── 00-bug-report.md # bug 描述 & 复现步骤
114
+ ├── 01-root-cause.md # 根因分析
115
+ ├── 02-fix-plan.md # 修复方案
116
+ └── 03-fix-done.md # 修复验证 & 归档
117
+ ```
118
+
119
+ **命名规则:** `{yyyyMMdd}-{3-5单词描述}`,全小写连字符
120
+
121
+ #### Step B2️⃣ 00-bug-report.md:Bug 描述
122
+
123
+ ```markdown
124
+ ---
125
+ status: draft
126
+ updated: {YYYY-MM-DD}
127
+ history:
128
+ - "v1: 初始创建"
129
+ ---
130
+
131
+ # {Bug 描述}
132
+
133
+ ## 发现时间
134
+ {YYYY-MM-DD}
135
+
136
+ ## 发现场景
137
+ {在哪发现的,如:线上报障、QA 提测、日常使用}
138
+
139
+ ## 复现步骤
140
+ 1. {步骤1}
141
+ 2. {步骤2}
142
+ 3. {步骤3}
143
+
144
+ ## 预期行为
145
+ {应该是什么}
146
+
147
+ ## 实际行为
148
+ {实际是什么}
149
+
150
+ ## 影响范围
151
+ - [ ] 阻塞(无临时方案,必须修复)
152
+ - [ ] 重要(有临时方案但影响体验)
153
+ - [ ] 轻微(不影响主要流程)
154
+
155
+ ## 截图/日志(如有)
156
+ ```
157
+
158
+ #### Step B3️⃣ 01-root-cause.md:根因分析
159
+
160
+ ```markdown
161
+ ---
162
+ status: draft
163
+ updated: {YYYY-MM-DD}
164
+ history:
165
+ - "v1: 初始创建"
166
+ ---
167
+
168
+ # 根因分析
169
+
170
+ ## 复现验证
171
+ - [ ] 已确认复现
172
+
173
+ ## 定位过程
174
+ {排查步骤记录}
175
+
176
+ ## 根因
177
+
178
+ ### 直接原因
179
+ {最接近表象的原因,如:空指针、类型不匹配、边界条件缺失}
180
+
181
+ ### 根本原因
182
+ {为什么会引入这个 bug,如:spec 未定义边界情况、对 API 行为假设错误、重构遗漏}
183
+
184
+ ## 涉及的代码位置
185
+ - {文件路径}:{行号} — {说明}
186
+ ```
187
+
188
+ #### Step B4️⃣ 02-fix-plan.md:修复方案
189
+
190
+ ```markdown
191
+ ---
192
+ status: draft
193
+ updated: {YYYY-MM-DD}
194
+ history:
195
+ - "v1: 初始创建"
196
+ ---
197
+
198
+ # 修复方案
199
+
200
+ ## 修复策略
201
+ {描述修复方式}
202
+
203
+ ## 文件变更
204
+ | 文件 | 操作 | 说明 |
205
+ |------|------|------|
206
+ | {路径} | 修改/新增 | {说明} |
207
+
208
+ ## 影响分析
209
+ - [ ] 修复会影响其他模块?哪些?
210
+ - [ ] 需要补充单元测试?
211
+ - [ ] 需要补充集成测试?
212
+
213
+ ## 回滚方案
214
+ {如果修复有问题,如何回滚}
215
+ ```
216
+
217
+ #### Step B5️⃣ 修复执行
218
+
219
+ 1. 按修复方案修改代码
220
+ 2. 验证修复
221
+ 3. 提交代码(建议使用 `fix/` 分支)
222
+
223
+ #### Step B6️⃣ 03-fix-done.md:修复验证 & 归档
224
+
225
+ ```markdown
226
+ ---
227
+ status: archived
228
+ updated: {YYYY-MM-DD}
229
+ history:
230
+ - "v1: 初始创建"
231
+ - "v2: 修复完成"
232
+ ---
233
+
234
+ # 修复验证
235
+
236
+ ## 修复内容
237
+ {描述实际改了哪些代码}
238
+
239
+ ## 验证结果
240
+ - [ ] 复现步骤不再触发
241
+ - [ ] 相关测试通过
242
+
243
+ ## 归档到 wiki
244
+
245
+ ### wiki 条目
246
+ docs/specx/wiki/fixes/{slug}.md
247
+
248
+ ```markdown
249
+ # {Bug 描述}
250
+
251
+ **发现时间:** {YYYY-MM-DD}
252
+ **根因类型:** {逻辑错误 / 边界遗漏 / 类型不匹配 / 并发问题 / 性能 / 其他}
253
+
254
+ ## 根因
255
+ {一句话描述根因}
256
+
257
+ ## 修复方式
258
+ {一句话描述修复方式}
259
+
260
+ ## 涉及文件
261
+ - {文件}:{行号}
262
+ ```
263
+
264
+ ### 自检清单
265
+ - [ ] bug-report 和 root-cause 已提炼为 wiki 知识
266
+ - [ ] fix-done 状态为 `archived`
267
+ - [ ] 相关文档状态已更新
268
+ - [ ] 代码已提交
269
+ ```
270
+
271
+ #### Step B7️⃣ 更新 fixes 目录索引
272
+
273
+ 首次使用 `fixes/` 时,在 `docs/specx/fixes/README.md` 创建索引:
274
+
275
+ ```markdown
276
+ # Bug 修复记录
277
+
278
+ | 日期 | 描述 | 根因类型 | 影响范围 | 状态 |
279
+ |------|------|---------|---------|------|
280
+ | {YYYY-MM-DD} | {描述} | {类型} | {阻塞/重要/轻微} | ✅ |
281
+ ```
282
+
283
+ 后续每次修复完成,在表格顶部插入新行。
284
+
285
+ ---
286
+
287
+ ## 公共检查清单
288
+
289
+ 修复完成后确认:
290
+
291
+ - [ ] bug 已修复并验证
292
+ - [ ] 根因已明确记录(区分直接原因和根本原因)
293
+ - [ ] 修复不会引入新的问题
294
+ - [ ] 相关测试已补充(如有必要)
295
+ - [ ] 场景 B 已归档到 wiki
296
+
297
+ ## 与现有 specx skill 的关系
298
+
299
+ | 当前流程 | 对应动作 |
300
+ |----------|---------|
301
+ | executing-plans 发现代码实现错 → 场景 A 走代码修复 | 直接在当前子需求修复 |
302
+ | 验收发现 spec 遗漏 → 场景 A 走 spec 回退 | 更新 clarify/spec/design |
303
+ | 验收发现 design 遗漏 → 场景 A 走 design 回退 | 更新 design 文档,重新执行 |
304
+ | 用户报线上 bug → 场景 B | 完整流程 |
305
+ | 日常发现历史代码 bug → 场景 B | 完整流程 |
306
+
307
+ ## 重要提示
308
+
309
+ - **场景 A 不要过度流程化** — 验收中发现的代码小 bug,定位到根因后快速修掉,不需要走完整 fixes/ 目录。记录到当前子需求即可
310
+ - **场景 B 必须归档到 wiki** — 独立 bug 是项目知识的重要组成部分
311
+ - **区分直接原因和根本原因** — 直接原因是"表象"(空指针),根本原因是"为什么会引入"(spec 未定义边界)
312
+ - **频繁出现同类 bug** → 考虑用 specx-create-rule 建立编码规范
313
+ - **场景判断有歧义时** → 走场景 B(独立 bug 流程更完整,多走流程比漏走好)