@captain_z/zsk-skills 0.1.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 (55) hide show
  1. package/README.md +263 -0
  2. package/bundles.yaml +104 -0
  3. package/design-handoff/.gitkeep +0 -0
  4. package/design-handoff/figma-to-code/SKILL.md +265 -0
  5. package/design-handoff/ue-mcp/SKILL.md +184 -0
  6. package/frontend/.gitkeep +0 -0
  7. package/frontend/a11y-web/SKILL.md +169 -0
  8. package/frontend/api-contract-ts/SKILL.md +275 -0
  9. package/frontend/css-bem/SKILL.md +268 -0
  10. package/frontend/design-frontend/SKILL.md +163 -0
  11. package/frontend/dor-dod-frontend/SKILL.md +114 -0
  12. package/frontend/feature-tasks-frontend/SKILL.md +246 -0
  13. package/frontend/i18n/SKILL.md +296 -0
  14. package/frontend/nfr-web/SKILL.md +258 -0
  15. package/frontend/performance-web/SKILL.md +299 -0
  16. package/frontend/react-components/SKILL.md +211 -0
  17. package/frontend/react-naming/SKILL.md +224 -0
  18. package/frontend/review-frontend/SKILL.md +126 -0
  19. package/frontend/security-web/SKILL.md +286 -0
  20. package/frontend/spec-frontend/SKILL.md +141 -0
  21. package/frontend/testing-web/SKILL.md +252 -0
  22. package/frontend/typescript/SKILL.md +219 -0
  23. package/meta/.gitkeep +0 -0
  24. package/meta/philosophy/SKILL.md +221 -0
  25. package/package.json +24 -0
  26. package/quality/.gitkeep +0 -0
  27. package/quality/a11y-principles/SKILL.md +155 -0
  28. package/quality/code-hygiene/SKILL.md +126 -0
  29. package/quality/release/SKILL.md +209 -0
  30. package/quality/security-owasp/SKILL.md +157 -0
  31. package/quality/testing-pyramid/SKILL.md +173 -0
  32. package/sdlc/.gitkeep +0 -0
  33. package/sdlc/archive/SKILL.md +267 -0
  34. package/sdlc/bugfix/SKILL.md +181 -0
  35. package/sdlc/bugfix-tasks/SKILL.md +232 -0
  36. package/sdlc/coding/SKILL.md +177 -0
  37. package/sdlc/design/SKILL.md +299 -0
  38. package/sdlc/dor-dod/SKILL.md +120 -0
  39. package/sdlc/feature/SKILL.md +162 -0
  40. package/sdlc/proposal/SKILL.md +271 -0
  41. package/sdlc/refactor/SKILL.md +220 -0
  42. package/sdlc/refactor-tasks/SKILL.md +265 -0
  43. package/sdlc/reviewing/SKILL.md +197 -0
  44. package/sdlc/spec/SKILL.md +235 -0
  45. package/sdlc/task/SKILL.md +116 -0
  46. package/sdlc/task-evidence/SKILL.md +178 -0
  47. package/sdlc/task-structure/SKILL.md +153 -0
  48. package/sdlc/task-tracking/SKILL.md +192 -0
  49. package/sdlc/verify/SKILL.md +181 -0
  50. package/system/.gitkeep +0 -0
  51. package/system/adr/SKILL.md +169 -0
  52. package/system/architecture/SKILL.md +182 -0
  53. package/system/glossary/SKILL.md +141 -0
  54. package/system/nfr-baseline/SKILL.md +156 -0
  55. package/system/project-constraints-template/SKILL.md +241 -0
@@ -0,0 +1,265 @@
1
+ ---
2
+ name: zsk:refactor-tasks
3
+ description: Refactor task template (characterization + small-step atomic) —
4
+ Step 1 capture behavior baseline, Step 2 apply one Fowler technique per atomic
5
+ commit (revert on red), Step 3 Parallel Change for large refactors (Expand →
6
+ Migrate → Contract), Step 4 prepare behavior-unchanged evidence.
7
+ category: resource
8
+ domain: sdlc
9
+ tier: core
10
+ change_type: refactor
11
+ related:
12
+ - ../refactor/SKILL.md
13
+ - ../dor-dod/SKILL.md
14
+ - ../task-evidence/SKILL.md
15
+ - ../task-tracking/SKILL.md
16
+ triggers:
17
+ - refactor task template
18
+ - characterization baseline
19
+ - Fowler techniques
20
+ - Parallel Change tasks
21
+ - small atomic commits
22
+ ---
23
+
24
+ # Refactor Tasks — Fowler 手法 + 小步原子 + Parallel Change
25
+
26
+ > **用途**:重构的**任务列表模板**,直接复制到 `docs/{module}/tasks.md`
27
+ > **适用**:不改变可观察行为、只改结构的重构
28
+ > **硬原则**:**行为不变** — 重构中途改了外部行为就不是重构,是 feature 或 bug
29
+
30
+ ## 核心纪律
31
+
32
+ ### 重构触发必要性(至少一条)
33
+
34
+ 1. 即将新增的功能会被当前结构阻塞(**准备性重构**)
35
+ 2. 已验证的代码坏味(有度量证据)
36
+ 3. 性能瓶颈(有 profile 证据)
37
+ 4. 历史妥协已具备清理条件(依赖升级、测试补齐)
38
+
39
+ **禁止**:
40
+ - ❌ 借 bug 修复顺手重构
41
+ - ❌ 借 feature 实现顺手重构
42
+ - ❌ 无测试保护下的重构
43
+
44
+ ### Fowler 分级
45
+
46
+ | 级别 | 场景 | 时长 | 本模板适用 |
47
+ | --- | --- | --- | --- |
48
+ | **小(Micro)** | rename / extract function / inline variable | 分钟级 | 用 `zsk:coding` 的 Skip 规则,**不走本模板** |
49
+ | **中(Medium)** | extract / 拆模块 / 替换实现 | 小时级 | ✅ 本模板 |
50
+ | **大(Large)** | 跨模块 / 架构迁移 | 迭代级 | ✅ 本模板 + Parallel Change |
51
+
52
+ ## 完整模板(复制到 `docs/{module}/tasks.md`)
53
+
54
+ ```md
55
+ # Refactor Tasks: {简要描述}
56
+
57
+ > 变更类型:Refactor
58
+ > Fowler 分级:中 / 大
59
+ > 关联文档:proposal.md(触发 + 证据)/ spec.md(行为不变契约)/ design.md(手法 + ADR)
60
+ > 责任人:@{handle}
61
+ > 日期:{YYYY-MM-DD}
62
+
63
+ ## 任务概述
64
+
65
+ {触发条件 + 选用的 Fowler 手法 + 预期结构改进}
66
+
67
+ ## 行为不变声明(强制)
68
+
69
+ - 本重构**不改变任何外部可观察行为**
70
+ - Characterization Test 基线位置:{链接}
71
+ - 验证方式:{回归测试 / 视觉快照 / 性能对照 / 包体积对照}
72
+
73
+ ## DoR(启动前门禁)
74
+
75
+ 见 `zsk:dor-dod` 的 **通用 + Refactor 专用** 清单。
76
+
77
+ ---
78
+
79
+ ## 执行流程
80
+
81
+ ### Step 1:Characterization(固化当前行为)
82
+
83
+ 状态:`TODO`
84
+ 负责人:@{handle}
85
+ 覆盖 FR:{行为不变涉及的 FR 编号}
86
+
87
+ 子任务:
88
+ - [ ] 1.1 抓取当前对外可观察行为快照:
89
+ - 测试:现有测试列表 + 覆盖率报告
90
+ - 视觉(前端):当前页面截图 / Figma 对照
91
+ - 性能:baseline 指标(按栈选工具)
92
+ - 包体积(前端):Bundle Analyzer baseline
93
+ - [ ] 1.2 补齐缺失的 Characterization Test(现有测试不足时)
94
+ - [ ] 1.3 确认所有测试全绿作为基线
95
+ - [ ] 1.4 commit:`test(scope): add characterization tests for refactor`
96
+
97
+ 交付物:
98
+ - 基线数据(测试 / 视觉 / 性能 / 包体积)
99
+ - 新增 Characterization Test(如有)
100
+
101
+ 验证:
102
+ - 所有测试全绿
103
+ - 基线快照归档到 `docs/{module}/archive/{YYYY-MM-DD}-refactor-baseline/`
104
+
105
+ ---
106
+
107
+ ### Step 2:小步重构(严格 TDD + 原子 commit)
108
+
109
+ 状态:`TODO`
110
+ 负责人:@{handle}
111
+ 覆盖 FR:无(行为不变)
112
+
113
+ **循环执行,直至目标结构达成**:
114
+
115
+ - [ ] 2.N.1 应用**一个** Fowler 手法(Extract / Inline / Move / Rename / ...)
116
+ - [ ] 2.N.2 跑测试 → 全绿
117
+ - [ ] 2.N.3 单独 commit:`refactor(scope): {手法 + 对象}`
118
+ - [ ] 2.N.4 若红 → 立即 `git revert` 这一步,回到 2.N.1 重试
119
+ - [ ] 2.N.5 若绿 → 继续下一个手法
120
+
121
+ ### 铁律
122
+
123
+ - **一次只做一个重构**(混合重构会让回滚困难)
124
+ - **测试不绿不提交**(绝不"先 stash 再修")
125
+ - **不改变外部可观察行为**(改了就不是重构)
126
+ - **commit message 必须具名手法**:`refactor({module}): extract ChildX from ParentY`
127
+
128
+ 交付物:
129
+ - 单一手法的原子 commit 序列
130
+
131
+ 验证:
132
+ - `git log --oneline` 每个 commit 都独立且测试绿
133
+ - Reviewer 可以 checkout 任一 commit,测试全绿
134
+
135
+ ---
136
+
137
+ ### Step 3(仅大重构):Parallel Change / Strangler Fig
138
+
139
+ 状态:`TODO`
140
+ 负责人:@{handle}
141
+ 覆盖 FR:无
142
+
143
+ **Parallel Change(三阶段)**:
144
+
145
+ - [ ] 3.1 **Expand** — 新实现并存
146
+ - 新增 `NewImpl`,保留 `OldImpl`
147
+ - 新测试覆盖 NewImpl
148
+ - commit:`refactor(scope): add NewImpl (parallel with OldImpl)`
149
+ - [ ] 3.2 **Migrate** — 调用方逐个迁移
150
+ - 调用方 A:Old → New(独立 PR)
151
+ - 调用方 B:Old → New(独立 PR)
152
+ - ... 每个调用方一次 PR,便于 diff 小 + 回滚容易
153
+ - [ ] 3.3 **Contract** — 移除旧实现
154
+ - 删除 OldImpl
155
+ - 删除 Old 对应测试
156
+ - commit:`refactor(scope): remove OldImpl`
157
+
158
+ **Strangler Fig**(替换大模块):
159
+ - 新模块从**边缘**开始替换旧模块
160
+ - 旧模块**逐步失去职责**直至可移除
161
+ - 整个过程**对外行为持续保持**
162
+
163
+ 交付物:
164
+ - Parallel Change / Strangler Fig 的 commit / PR 序列
165
+
166
+ 验证:
167
+ - 每个 phase 可独立部署 + 独立回滚
168
+
169
+ ---
170
+
171
+ ### Step 4:准备验收(交 verify 阶段审计)
172
+
173
+ 状态:`TODO`
174
+ 负责人:@{handle}
175
+ 覆盖 FR:兜底 —— 行为不变证据链
176
+
177
+ 子任务:
178
+ - [ ] 4.1 跑所有现有测试 + Characterization Test → 全绿
179
+ - [ ] 4.2 视觉回归对照(零差异,前端)
180
+ - [ ] 4.3 性能对照(before vs after)
181
+ - [ ] 4.4 包体积对照(前端,before vs after)
182
+ - [ ] 4.5 对外契约对照(清单零变化)
183
+
184
+ 交付物:
185
+ - 填写 `zsk:task-evidence` 的 **行为不变证据链** 表
186
+ - 视觉 / 性能 / 体积对照报告
187
+
188
+ 验证:
189
+ - 包体积变化 ≤ ±2%
190
+ - 性能评分不回退
191
+ - 对外契约清单零变化
192
+
193
+ ---
194
+
195
+ ## 任务依赖
196
+
197
+ \`\`\`mermaid
198
+ graph LR
199
+ S1[1. Characterization] --> S2[2. 小步重构]
200
+ S2 --> S3[3. Parallel Change?]
201
+ S3 --> S4[4. 验收证据]
202
+ S2 --> S4
203
+ \`\`\`
204
+
205
+ Step 3 仅大重构;中重构可 Step 2 → Step 4 直连。
206
+
207
+ ## 证据记录
208
+
209
+ 见 `zsk:task-evidence`,Refactor 重点填:
210
+ - **行为不变对照表**
211
+ - **校验记录**
212
+
213
+ ## 总工作量
214
+
215
+ - T-shirt:`M`(中)/ `L` / `XL`(大,必须拆成多轮)
216
+ - 人天:`{N}.{M}`
217
+
218
+ ---
219
+
220
+ ## DoD(关闭前门禁)
221
+
222
+ 见 `zsk:dor-dod` 的 **通用 + Refactor 专用** 清单。
223
+
224
+ - [ ] 所有现有测试 + Characterization 全绿
225
+ - [ ] 视觉回归零差异(前端)
226
+ - [ ] 性能未回退
227
+ - [ ] 包体积变化 ≤ ±2%(前端)
228
+ - [ ] 对外契约零变化
229
+ - [ ] commit 序列可逐步 replay
230
+ - [ ] Changelog 仅 `Changed` / `Removed`,**禁止** `Added` / `Fixed`
231
+ - [ ] ADR 从 Proposed → Accepted
232
+ ```
233
+
234
+ ## 大重构(L / XL)额外要求
235
+
236
+ ### 拆分为多轮
237
+
238
+ XL 必须拆成多个 M / L 的 proposal,每个独立走完 7 阶段。
239
+
240
+ ### Feature Flag 保护
241
+
242
+ - 大重构可用 feature flag 逐步灰度
243
+ - **必须**在 archive 阶段登记 flag 清理计划
244
+
245
+ ### ADR 强制
246
+
247
+ 大重构必产出 ADR:
248
+ - 触发条件 / 选定的 Fowler / Parallel Change 策略 / 替代方案 / 影响面 / 回滚方案
249
+
250
+ ## Skip 规则
251
+
252
+ | 场景 | 可简化 |
253
+ | --- | --- |
254
+ | 小重构(rename / extract function) | **不走本模板**;单独 PR + 自检兜住 |
255
+ | 中重构(单文件 extract) | 可跳 Step 3 |
256
+ | 内部实现切换(无调用方变化) | 可跳 Step 3 的 Migrate 阶段 |
257
+
258
+ ## 反模式(禁止)
259
+
260
+ - ❌ **一次 commit 多个手法**(无法回滚单点失败)
261
+ - ❌ **测试不绿也 commit**(绝对禁止)
262
+ - ❌ **重构顺带修 bug**(RCA 混入 refactor history)
263
+ - ❌ **重构顺带加 feature**(违反行为不变)
264
+ - ❌ **无 Characterization 直接重构**(失去基线)
265
+ - ❌ **Parallel Change 跳过 Contract 阶段**(flag 债务累积)
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: zsk:reviewing
3
+ description: PR code review — self-checklist, reviewer checklist, Conventional
4
+ Comments prefixes, technical-rigor-over-performative-agreement when receiving
5
+ feedback, dispute escalation path. Stage 5 of the 7-stage SDLC. This is the
6
+ code-view (does the diff look right); the contract-view is zsk:verify.
7
+ category: stage
8
+ domain: sdlc
9
+ tier: core
10
+ stage: 5
11
+ variants:
12
+ - feature
13
+ - bugfix
14
+ - refactor
15
+ related:
16
+ - ../coding/SKILL.md
17
+ - ../verify/SKILL.md
18
+ - ../../frontend/review-frontend/SKILL.md
19
+ - ../../quality/code-hygiene/SKILL.md
20
+ triggers:
21
+ - code review
22
+ - PR review
23
+ - conventional comments
24
+ - receiving feedback
25
+ - technical rigor
26
+ - self review checklist
27
+ ---
28
+
29
+ # Stage 5: Reviewing
30
+
31
+ > **阶段定位**:代码评审 - Code Review
32
+ > **回答的问题**:**代码写对了吗**?可读、可维护、安全、契约一致、性能无隐患
33
+ > **与 Verify 的边界**:Reviewing 看**代码视角**(diff 有没有问题),Verify 看**契约视角**(是否满足 Spec / AC / NFR)。两者**不能互相替代**。
34
+ > **参考规范**:Google Engineering Practices(Code Review)、Conventional Comments
35
+ > **吸收硬原则**:
36
+ > - **技术严谨 > 性能式同意**(Superpowers `receiving-code-review`)— 分歧先验证技术事实
37
+ > - **证据先于断言**(Superpowers `verification-before-completion`)— 声称"没问题"前先跑命令
38
+ > **前端专属检查项**:TS / React / 视觉 / 三语 i18n 见 [`frontend/review-frontend.md`](../../frontend/review-frontend/SKILL.md)
39
+
40
+ ## Skill 映射
41
+
42
+ | 场景 | Primary Skill |
43
+ | --- | --- |
44
+ | 提交评审 | `superpowers:requesting-code-review` |
45
+ | 接收反馈 | `superpowers:receiving-code-review`(技术严谨,避免盲目同意) |
46
+ | 自评 | `self-review` / `check` |
47
+ | PR / MR 评审 | `review` / `merge-review` |
48
+ | 第二意见 | `codex review` / `codex challenge` |
49
+ | 大型评审 | `superpowers:code-reviewer`(子代理) |
50
+
51
+ ## 变更类型差异
52
+
53
+ | 类型 | Review 侧重 |
54
+ | --- | --- |
55
+ | **Feature** | 契约一致(公开接口) + 测试金字塔 + 性能 hazard |
56
+ | **Bugfix** | RCA 合理性 + 回归测试能复现 + 无相邻破坏 + Postmortem 触发判定 |
57
+ | **Refactor** | 行为不变证据 + 原子 commit 粒度 + Parallel Change 正确 + 性能/体积对照 |
58
+
59
+ ## 标准流程
60
+
61
+ ```text
62
+ Author: 自评清单 → 提 MR/PR → 主动列"想让 Reviewer 关注什么"
63
+
64
+ Reviewer: 读 Spec/Design/tasks → 按评审清单扫 diff → 按 Conventional Comments 写评论
65
+
66
+ Author: 按技术严谨原则回应 → 有分歧先验证事实 → 必要时更新 design.md ADR
67
+
68
+ Reviewer: re-review → Approve / Request changes
69
+
70
+ 合并前检查:verify.md 的证据链已就绪 → 进入 verify 阶段
71
+ ```
72
+
73
+ ## 1. 自评清单(Author,推前必过)
74
+
75
+ > 这是进入 Reviewer 视野前的"最后一道自滤"。凡打 ✅ 必须是已跑过 / 已看过的证据,不是"应该没问题"。
76
+
77
+ ### 通用
78
+ - [ ] `docs/{module}/spec.md` / `design.md` / `tasks.md` 已更新
79
+ - [ ] `lint` / `type-check` 零 error(`{{config.scripts.lint}}` / `{{config.scripts.type_check}}`)
80
+ - [ ] `test` 通过 + 覆盖率达标(`{{config.scripts.test}}`;规范见 [`quality/testing-pyramid`](../../quality/testing-pyramid/SKILL.md))
81
+ - [ ] 无硬编码敏感信息(见 [`quality/security-owasp`](../../quality/security-owasp/SKILL.md))
82
+ - [ ] 回滚方案在 `design.md` 中可执行
83
+ - [ ] Commit 信息遵循 Conventional Commits
84
+ - [ ] PR 描述含"为什么做 + 怎么验证"
85
+
86
+ > **前端项目补**:TS 红线 / React hooks 规则 / 视觉回归 / 三语 i18n 等 → 见 [`frontend/review-frontend`](../../frontend/review-frontend/SKILL.md)
87
+
88
+ ### Bugfix 专用
89
+ - [ ] 有先红后绿的测试证据(Step 1 提交 + Step 2 提交分离可见)
90
+ - [ ] RCA 指向单一根因,非"凑巧 work"
91
+ - [ ] 相邻场景有回归用例
92
+
93
+ ### Refactor 专用
94
+ - [ ] 对外契约零变化,已在 PR 描述列对照表
95
+ - [ ] 每个 commit 原子且绿
96
+ - [ ] 包体积变化 ≤ ±2%(有证据链接)
97
+
98
+ ## 2. Reviewer 评审清单(通用)
99
+
100
+ ### 契约一致性
101
+ - [ ] 公开接口与 `spec.md` 一致
102
+ - [ ] 没有悄悄扩大公开接口
103
+ - [ ] 类型引自约定来源(见 `system/project-constraints-template`)
104
+
105
+ ### 边界与错误
106
+ - [ ] loading / empty / error 都有处理
107
+ - [ ] 异步取消 / 竞态处理
108
+ - [ ] 网络失败 / 超时 / 权限不足 的 fallback
109
+
110
+ ### 测试覆盖
111
+ - [ ] 金字塔三层按 `design.md` 的策略就位
112
+ - [ ] Bugfix:复现测试确实能复现(`git checkout HEAD^` 应该失败)
113
+ - [ ] Refactor:Characterization Test 基线未被删除
114
+
115
+ ### 安全 / 依赖
116
+ - [ ] 无新增敏感信息硬编码
117
+ - [ ] 新增依赖说明合理(用途 / 许可 / 体积)
118
+
119
+ ### 代码风格
120
+ - [ ] 命名能自解释
121
+ - [ ] 没有过度注释"WHAT",注释只写"WHY"
122
+ - [ ] 没有未被调用的新抽象(YAGNI)
123
+
124
+ ## 3. Conventional Comments(评论规约)
125
+
126
+ 评论前缀帮助 Author 快速分类优先级:
127
+
128
+ | 前缀 | 含义 | 必须改? |
129
+ | --- | --- | --- |
130
+ | `blocking:` | 阻塞合并,必须解决 | ✅ |
131
+ | `issue:` | 潜在 bug / 风险 | 🟡 讨论 |
132
+ | `question:` | 需要解释 | 🟡 回应 |
133
+ | `suggestion:` | 可选改进 | ⚪ 可选 |
134
+ | `nitpick:` | 风格挑剔 | ⚪ 可选 |
135
+ | `praise:` | 亮点表扬 | ⚪ 无需改 |
136
+
137
+ 示例:
138
+
139
+ ```text
140
+ blocking: 公开接口 onSelect 未在 spec.md 中声明,请求合并前在 spec 加入并重新评审。
141
+
142
+ suggestion: 这段依赖项过多的缓存,考虑拆成两个派生值;不影响合并。
143
+ ```
144
+
145
+ ## 4. Author 接收反馈(技术严谨 > 性能式同意)
146
+
147
+ 收到评论时**禁止**以下反模式:
148
+
149
+ - "好的我改"——未理解评论就改
150
+ - "应该没问题吧"——未验证事实就拒绝
151
+ - "这个和这个 PR 无关"——实际影响 PR 合并的问题不能这么推
152
+
153
+ 正确做法:
154
+
155
+ 1. **先分类**:blocking / issue / suggestion / nitpick
156
+ 2. **有分歧先验证**:跑命令 / 读代码 / 查文档,用事实回应
157
+ 3. **修或不修都给理由**:`✅ 已修复` 或 `❌ 不接受,因为...(事实依据)`
158
+ 4. **升级到 Design**:如果评论触及架构决策,升级到 `design.md` 的 ADR 重新评审
159
+
160
+ ## 5. 第二意见(Codex / Sub-agent Review)
161
+
162
+ **何时请**:
163
+
164
+ - 高风险改动(安全 / 数据 / 跨系统)
165
+ - Author 自己发起 PR 时想先做独立审查
166
+ - Reviewer 与 Author 持续分歧 → 引入第三方视角
167
+
168
+ **可用工具**:
169
+
170
+ - `codex review` — OpenAI Codex 独立审查,pass/fail 门禁
171
+ - `codex challenge` — 对抗式审查,尝试破坏代码
172
+ - `superpowers:code-reviewer` 子代理 — 里程碑级审查
173
+
174
+ **纪律**:第二意见是**参考**,不是**决策**。最终合并决定仍由 Author + Reviewer 达成。
175
+
176
+ ## 6. 分歧升级路径
177
+
178
+ ```text
179
+ 1. Author + Reviewer 讨论(评论区)
180
+ ↓ 仍分歧
181
+ 2. 引入 codex / 第二 Reviewer(事实澄清)
182
+ ↓ 仍分歧
183
+ 3. 升级到 design.md ADR(架构/风格的边界决策)
184
+ ↓ 仍分歧
185
+ 4. 模块负责人裁决 + 更新 SYSTEM-SPEC.md(系统级决策)
186
+ ```
187
+
188
+ ## 质量门禁(进入 `zsk:verify` 前)
189
+
190
+ - [ ] 自评清单全绿
191
+ - [ ] 所有 `blocking:` 评论已 resolved
192
+ - [ ] 所有 `issue:` / `question:` 已给出书面回应
193
+ - [ ] Reviewer Approve(至少 1 人,高风险改动 ≥ 2 人)
194
+ - [ ] 合并轮次 ≤ 3(超出需复盘沟通效率)
195
+ - [ ] 首轮 Review 在 1 个工作日内(SLA)
196
+ - [ ] 有第二意见(高风险改动)
197
+ - [ ] 前端项目:`frontend/review-frontend` 的检查项全过
@@ -0,0 +1,235 @@
1
+ ---
2
+ name: zsk:spec
3
+ description: Behavioral contract writing after proposal approval — User Stories
4
+ (INVEST), FR / NFR / AC numbering, BDD scenarios, edge cases, term glossary.
5
+ Stage 2 of the 7-stage SDLC.
6
+ category: stage
7
+ domain: sdlc
8
+ tier: core
9
+ stage: 2
10
+ variants:
11
+ - feature
12
+ - bugfix
13
+ - refactor
14
+ related:
15
+ - ../proposal/SKILL.md
16
+ - ../design/SKILL.md
17
+ - ../dor-dod/SKILL.md
18
+ - ../../frontend/spec-frontend/SKILL.md
19
+ - ../../meta/philosophy/SKILL.md
20
+ triggers:
21
+ - writing spec
22
+ - user stories
23
+ - acceptance criteria
24
+ - FR NFR numbering
25
+ - BDD given when then
26
+ - behavior contract
27
+ - characterization test baseline
28
+ ---
29
+
30
+ # Stage 2: Spec
31
+
32
+ > **阶段定位**:需求设计 - Requirements Specification
33
+ > **回答的问题**:做什么、用户会看到什么、什么算验收通过
34
+ > **参考规范**:IEEE 830 / ISO/IEC/IEEE 29148、INVEST User Stories、Gherkin BDD
35
+ > **与 Proposal 的边界**:Proposal 定"为什么",Spec 定"做什么";不进入"怎么实现"(Design 职责)
36
+ > **前端专属扩展**:Props / Event / UE 状态矩阵 / NFR 六类见 [`frontend/spec-frontend.md`](../../frontend/spec-frontend/SKILL.md)
37
+
38
+ ## Skill 映射
39
+
40
+ | 场景 | Primary Skill |
41
+ | --- | --- |
42
+ | 写规格 / 计划 | `superpowers:writing-plans` |
43
+ | GSD 心智 | Organize(整理) |
44
+ | 深度思考 | `think` / `sc:reflect` |
45
+
46
+ ## 变更类型差异
47
+
48
+ | 类型 | Spec 侧重 |
49
+ | --- | --- |
50
+ | **Feature** | User Stories + BDD 验收 + FR/NFR/AC 编号 |
51
+ | **Bugfix** | Expected vs Actual 行为矩阵 + 受影响的契约项 + 回归覆盖范围 |
52
+ | **Refactor** | **行为不变**契约(Characterization Test 基线) + 公开接口保留声明 |
53
+
54
+ ## 标准结构
55
+
56
+ 1. 模块映射与事实源
57
+ 2. 术语表(Glossary) — 消除模块特有概念的歧义
58
+ 3. Why(承接 Proposal)
59
+ 4. 用户故事(User Stories, INVEST)
60
+ 5. 功能需求(FR)
61
+ 6. 非功能需求(NFR)
62
+ 7. 行为场景(BDD: Given / When / Then)
63
+ 8. Acceptance Criteria(AC)
64
+ 9. Edge Cases & Error Handling
65
+ 10. Impact
66
+
67
+ ## 核心要求
68
+
69
+ ### 1. User Stories 用 INVEST
70
+
71
+ 格式:`As a {角色}, I want {行为}, so that {价值}`
72
+
73
+ INVEST 检查:**I**ndependent / **N**egotiable / **V**aluable / **E**stimable / **S**mall / **T**estable
74
+
75
+ ### 2. 验收用 BDD Given/When/Then
76
+
77
+ ```gherkin
78
+ Scenario: {名称}
79
+ Given {前置}
80
+ When {动作}
81
+ Then {结果}
82
+ And {附加断言}
83
+ ```
84
+
85
+ 每个 P0 功能至少 1 条 Happy Path + 1 条 Edge Case。
86
+
87
+ ### 3. 术语表
88
+
89
+ 模块特有概念在首次出现或集中定义;消除"适当的 / 一些 / 可能 / 待定"等模糊词。通用术语引用 [`system/glossary.md`](../../system/glossary/SKILL.md)。
90
+
91
+ ### 4. 编号纪律(交叉引用追溯的基础)
92
+
93
+ 所有可被下游引用的条目必须**稳定编号**:
94
+
95
+ - 用户故事:`US-1`、`US-2`……
96
+ - 功能需求:`FR-1`、`FR-2`……(按 P0 → P1 → P2 顺序,不跳号)
97
+ - 非功能需求:`NFR-1`、`NFR-2`……
98
+ - 验收标准:`AC-1`、`AC-2`……
99
+
100
+ 编号一旦发布**只增不改**:
101
+
102
+ - 删除功能 → 标 `FR-3 (废弃)` 而非移除编号
103
+ - 合并功能 → 新 `FR-N` 注明 `合并自 FR-3 + FR-5`
104
+ - 拆分功能 → 保留原编号并注明 `拆分为 FR-N, FR-N+1`
105
+
106
+ 这样 `design.md` 的实现映射表、`tasks.md` 的"覆盖 FR"列、后续 bugfix 的"受影响契约"才有稳定锚。
107
+
108
+ ### 5. NFR 基线继承
109
+
110
+ NFR 章节继承 [`system/nfr-baseline.md`](../../system/nfr-baseline/SKILL.md) 的系统基线,只声明**偏离或加严**项。
111
+
112
+ ## Feature 型模板(通用骨架)
113
+
114
+ ```md
115
+ # {模块} 规格(Specs)
116
+
117
+ > 模块唯一标识:`{module-id}`
118
+ > 变更类型:Feature
119
+ > 原始需求文档:`{{config.paths.srs}}`
120
+
121
+ ## 模块映射
122
+ ## 术语表(模块特有)
123
+
124
+ ## Why
125
+ ## 用户故事
126
+ - **US-1**:As a {角色}, I want {行为}, so that {价值}
127
+
128
+ ## 功能需求
129
+ | 编号 | 功能 | 说明 | 优先级 | 对应 US |
130
+ | --- | --- | --- | --- | --- |
131
+ | FR-1 | | | P0 | US-1 |
132
+
133
+ ## 非功能需求(NFR)
134
+ > 继承 `system/nfr-baseline.md`;此处只列偏离项。
135
+
136
+ | 编号 | 类别 | 要求 | 验证方式 |
137
+ | --- | --- | --- | --- |
138
+
139
+ ## 行为场景(BDD)
140
+ ### Scenario: {Happy Path}
141
+ - Given ...
142
+ - When ...
143
+ - Then ...
144
+
145
+ ## Acceptance Criteria
146
+ - [ ] AC-1:
147
+ - [ ] AC-2:
148
+
149
+ ## Edge Cases & Error Handling
150
+ | 场景 | 预期行为 |
151
+ | --- | --- |
152
+
153
+ ## Impact
154
+ | 受影响模块 | 影响描述 |
155
+ | --- | --- |
156
+ ```
157
+
158
+ > **前端模块**(组件 / 页面):补 Component Public Contract + UE 状态矩阵,见 [`frontend/spec-frontend.md`](../../frontend/spec-frontend/SKILL.md)。
159
+
160
+ ## Bugfix 型模板
161
+
162
+ ```md
163
+ # Bugfix Spec: {简要描述}
164
+
165
+ > 变更类型:Bugfix
166
+ > 关联 Proposal:`docs/{module}/proposal.md`
167
+ > 严重度:P0 / P1 / P2 / P3
168
+
169
+ ## 受影响契约项
170
+ - 涉及的 Spec 编号:`FR-X`、`NFR-Y`、`AC-Z`(引用原 spec.md 编号,稳定追溯)
171
+
172
+ ## Expected vs Actual(行为矩阵)
173
+ | 场景 | 预期 | 实际(当前 bug) |
174
+ | --- | --- | --- |
175
+
176
+ ## 回归测试覆盖范围
177
+ - [ ] 本 bug 的直接场景
178
+ - [ ] 相邻状态 / 边界场景
179
+ - [ ] 历史回归用例是否还全绿
180
+
181
+ ## BDD(bug 场景)
182
+ \`\`\`gherkin
183
+ Scenario: {bug 场景名}
184
+ Given {bug 触发条件}
185
+ When {用户动作}
186
+ Then {修复后的正确行为}
187
+ And {不应出现的旧错误行为}
188
+ \`\`\`
189
+
190
+ ## Acceptance
191
+ - [ ] 原复现步骤走通后无 bug
192
+ - [ ] 相邻场景未引入回归
193
+ ```
194
+
195
+ ## Refactor 型模板
196
+
197
+ ```md
198
+ # Refactor Spec: {简要描述}
199
+
200
+ > 变更类型:Refactor
201
+ > 关联 Proposal:`docs/{module}/proposal.md`
202
+ > Fowler 分级:小 / 中 / 大
203
+
204
+ ## 行为不变契约(强制)
205
+
206
+ ### 公开接口保留
207
+ | 接口项 | 重构前 | 重构后 | 变化 |
208
+ | --- | --- | --- | --- |
209
+
210
+ ### Characterization Test 基线
211
+ - 基线测试位置:
212
+ - 基线快照 / 截图:
213
+ - 验证方式:全部保留且继续通过
214
+
215
+ ## 新增 / 移除的内部结构
216
+ - 新增(内部):...
217
+ - 移除(内部):...
218
+ - 以上**不改变外部观察**
219
+
220
+ ## Acceptance
221
+ - [ ] 所有现有测试全绿
222
+ - [ ] 新增 Characterization Test 全绿
223
+ - [ ] 视觉 / 性能 / 体积对照无回退
224
+ ```
225
+
226
+ ## 质量门禁
227
+
228
+ - [ ] 变更类型声明明确
229
+ - [ ] User Stories 满足 INVEST(Feature)
230
+ - [ ] 至少 1 条 BDD Happy Path + 1 条 Edge Case(Feature)/ bug 场景(Bugfix)/ 行为不变断言(Refactor)
231
+ - [ ] **FR / NFR / US / AC 已编号,且 P0 功能编号不跳号**
232
+ - [ ] NFR 章节声明继承 `system/nfr-baseline.md`
233
+ - [ ] 术语表覆盖模块特有概念
234
+ - [ ] 无"适当 / 一些 / 可能 / 待定"模糊词
235
+ - [ ] 前端模块:已补 `frontend/spec-frontend.md` 对应字段(Props / UE 状态矩阵)