spec-manager 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 (159) hide show
  1. package/AGENTS.md +27 -0
  2. package/CODEBUDDY.md +19 -0
  3. package/LICENSE +21 -0
  4. package/README.md +531 -0
  5. package/dist/cli/audit.d.ts +10 -0
  6. package/dist/cli/audit.d.ts.map +1 -0
  7. package/dist/cli/audit.js +62 -0
  8. package/dist/cli/audit.js.map +1 -0
  9. package/dist/cli/change.d.ts +10 -0
  10. package/dist/cli/change.d.ts.map +1 -0
  11. package/dist/cli/change.js +103 -0
  12. package/dist/cli/change.js.map +1 -0
  13. package/dist/cli/common.d.ts +5 -0
  14. package/dist/cli/common.d.ts.map +1 -0
  15. package/dist/cli/common.js +17 -0
  16. package/dist/cli/common.js.map +1 -0
  17. package/dist/cli/decision.d.ts +13 -0
  18. package/dist/cli/decision.d.ts.map +1 -0
  19. package/dist/cli/decision.js +185 -0
  20. package/dist/cli/decision.js.map +1 -0
  21. package/dist/cli/dict.d.ts +10 -0
  22. package/dist/cli/dict.d.ts.map +1 -0
  23. package/dist/cli/dict.js +73 -0
  24. package/dist/cli/dict.js.map +1 -0
  25. package/dist/cli/incident.d.ts +10 -0
  26. package/dist/cli/incident.d.ts.map +1 -0
  27. package/dist/cli/incident.js +119 -0
  28. package/dist/cli/incident.js.map +1 -0
  29. package/dist/cli/index.d.ts +3 -0
  30. package/dist/cli/index.d.ts.map +1 -0
  31. package/dist/cli/index.js +30 -0
  32. package/dist/cli/index.js.map +1 -0
  33. package/dist/cli/project.d.ts +3 -0
  34. package/dist/cli/project.d.ts.map +1 -0
  35. package/dist/cli/project.js +144 -0
  36. package/dist/cli/project.js.map +1 -0
  37. package/dist/cli/spec.d.ts +3 -0
  38. package/dist/cli/spec.d.ts.map +1 -0
  39. package/dist/cli/spec.js +289 -0
  40. package/dist/cli/spec.js.map +1 -0
  41. package/dist/cli/task.d.ts +14 -0
  42. package/dist/cli/task.d.ts.map +1 -0
  43. package/dist/cli/task.js +287 -0
  44. package/dist/cli/task.js.map +1 -0
  45. package/dist/cli/usability.d.ts +3 -0
  46. package/dist/cli/usability.d.ts.map +1 -0
  47. package/dist/cli/usability.js +153 -0
  48. package/dist/cli/usability.js.map +1 -0
  49. package/dist/core/agents.d.ts +43 -0
  50. package/dist/core/agents.d.ts.map +1 -0
  51. package/dist/core/agents.js +194 -0
  52. package/dist/core/agents.js.map +1 -0
  53. package/dist/core/archive.d.ts +35 -0
  54. package/dist/core/archive.d.ts.map +1 -0
  55. package/dist/core/archive.js +360 -0
  56. package/dist/core/archive.js.map +1 -0
  57. package/dist/core/audit-events.d.ts +12 -0
  58. package/dist/core/audit-events.d.ts.map +1 -0
  59. package/dist/core/audit-events.js +16 -0
  60. package/dist/core/audit-events.js.map +1 -0
  61. package/dist/core/audit.d.ts +78 -0
  62. package/dist/core/audit.d.ts.map +1 -0
  63. package/dist/core/audit.js +157 -0
  64. package/dist/core/audit.js.map +1 -0
  65. package/dist/core/constants.d.ts +28 -0
  66. package/dist/core/constants.d.ts.map +1 -0
  67. package/dist/core/constants.js +30 -0
  68. package/dist/core/constants.js.map +1 -0
  69. package/dist/core/decision.d.ts +69 -0
  70. package/dist/core/decision.d.ts.map +1 -0
  71. package/dist/core/decision.js +210 -0
  72. package/dist/core/decision.js.map +1 -0
  73. package/dist/core/delta.d.ts +85 -0
  74. package/dist/core/delta.d.ts.map +1 -0
  75. package/dist/core/delta.js +264 -0
  76. package/dist/core/delta.js.map +1 -0
  77. package/dist/core/dict.d.ts +28 -0
  78. package/dist/core/dict.d.ts.map +1 -0
  79. package/dist/core/dict.js +57 -0
  80. package/dist/core/dict.js.map +1 -0
  81. package/dist/core/frontmatter.d.ts +19 -0
  82. package/dist/core/frontmatter.d.ts.map +1 -0
  83. package/dist/core/frontmatter.js +57 -0
  84. package/dist/core/frontmatter.js.map +1 -0
  85. package/dist/core/incident.d.ts +45 -0
  86. package/dist/core/incident.d.ts.map +1 -0
  87. package/dist/core/incident.js +128 -0
  88. package/dist/core/incident.js.map +1 -0
  89. package/dist/core/paths.d.ts +68 -0
  90. package/dist/core/paths.d.ts.map +1 -0
  91. package/dist/core/paths.js +162 -0
  92. package/dist/core/paths.js.map +1 -0
  93. package/dist/core/repository.d.ts +13 -0
  94. package/dist/core/repository.d.ts.map +1 -0
  95. package/dist/core/repository.js +29 -0
  96. package/dist/core/repository.js.map +1 -0
  97. package/dist/core/spec-io.d.ts +125 -0
  98. package/dist/core/spec-io.d.ts.map +1 -0
  99. package/dist/core/spec-io.js +260 -0
  100. package/dist/core/spec-io.js.map +1 -0
  101. package/dist/core/status.d.ts +22 -0
  102. package/dist/core/status.d.ts.map +1 -0
  103. package/dist/core/status.js +54 -0
  104. package/dist/core/status.js.map +1 -0
  105. package/dist/core/task.d.ts +118 -0
  106. package/dist/core/task.d.ts.map +1 -0
  107. package/dist/core/task.js +340 -0
  108. package/dist/core/task.js.map +1 -0
  109. package/dist/core/usability.d.ts +25 -0
  110. package/dist/core/usability.d.ts.map +1 -0
  111. package/dist/core/usability.js +136 -0
  112. package/dist/core/usability.js.map +1 -0
  113. package/dist/core/validate.d.ts +34 -0
  114. package/dist/core/validate.d.ts.map +1 -0
  115. package/dist/core/validate.js +195 -0
  116. package/dist/core/validate.js.map +1 -0
  117. package/dist/index.d.ts +11 -0
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +12 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/schemas/change.d.ts +138 -0
  122. package/dist/schemas/change.d.ts.map +1 -0
  123. package/dist/schemas/change.js +38 -0
  124. package/dist/schemas/change.js.map +1 -0
  125. package/dist/schemas/spec.d.ts +233 -0
  126. package/dist/schemas/spec.d.ts.map +1 -0
  127. package/dist/schemas/spec.js +56 -0
  128. package/dist/schemas/spec.js.map +1 -0
  129. package/package.json +66 -0
  130. package/rules/_TEMPLATE.md +20 -0
  131. package/rules/code-discipline.md +47 -0
  132. package/rules/codebase-survey.md +37 -0
  133. package/rules/delta.md +42 -0
  134. package/rules/doc-governance.md +195 -0
  135. package/rules/flow-control.md +65 -0
  136. package/rules/quality-gate.md +73 -0
  137. package/skill/SKILL.md +90 -0
  138. package/skill/subskills/adr.md +73 -0
  139. package/skill/subskills/change.md +118 -0
  140. package/skill/subskills/design.md +53 -0
  141. package/skill/subskills/impl.md +100 -0
  142. package/skill/subskills/plan.md +46 -0
  143. package/skill/subskills/postmortem.md +77 -0
  144. package/skill/subskills/prd.md +72 -0
  145. package/skill/subskills/quick.md +25 -0
  146. package/skill/subskills/release.md +50 -0
  147. package/skill/subskills/research.md +35 -0
  148. package/skill/subskills/runbook.md +44 -0
  149. package/skill/subskills/testplan.md +48 -0
  150. package/templates/L0-prd.md +43 -0
  151. package/templates/L1-prd.md +130 -0
  152. package/templates/L2-design.md +135 -0
  153. package/templates/L3-impl.md +125 -0
  154. package/templates/agent-plan.json +17 -0
  155. package/templates/agents/AGENTS.md +27 -0
  156. package/templates/agents/CLAUDE.md +11 -0
  157. package/templates/agents/CODEBUDDY.md +23 -0
  158. package/templates/agents/codebuddy-skill/SKILL.md +46 -0
  159. package/templates/decision.md +42 -0
package/skill/SKILL.md ADDED
@@ -0,0 +1,90 @@
1
+ ---
2
+ description: "Spec-driven project iteration workflow — L1 PRD → L2 Design → L3 Impl → Agent Task → Deploy, with human review gates at each layer. Pure local markdown storage, no MCP, no network. Use when the user invokes /spec-manager or asks for: new feature/PRD, technical design, implementation spec, agent task, iteration plan, test plan, release notes, runbook, postmortem, or ADR."
3
+ argument-hint: "<需求描述> | run <taskId>"
4
+ ---
5
+
6
+ # spec-manager — 本地项目迭代全链路
7
+
8
+ PRD → Design → Spec → Agent Task → 部署。**纯本地**,所有数据落 markdown + git。
9
+
10
+ ## 用法
11
+
12
+ - `/spec-manager <需求>` — 从需求开始走完整链路
13
+ - `/spec-manager run <taskId>` — 执行已有 Agent Task
14
+
15
+ ## 入口路由
16
+
17
+ 收到 `/spec-manager <用户输入>` 时,按下表匹配子 skill;不确定时用当前工具的用户提问能力澄清。关键词重叠按 # 小者优先。
18
+
19
+ | # | 关键词 | 子 skill | 产出 |
20
+ |---|---|---|---|
21
+ | 1 | 修 typo / 改一行 / 改 log level | [subskills/quick.md](subskills/quick.md) | quick |
22
+ | 2 | 查 / 看 / 列 / 统计 / 搜索 | [subskills/research.md](subskills/research.md) | (只读) |
23
+ | 3 | 需求 / 新功能 / 痛点 / 用户故事 | [subskills/prd.md](subskills/prd.md) | L1 |
24
+ | 4 | 技术方案 / 架构 / 接口设计 | [subskills/design.md](subskills/design.md) | L2 |
25
+ | 5 | 实施 / 编码 / planJson | [subskills/impl.md](subskills/impl.md) | L3 |
26
+ | 6 | 计划 / 里程碑 / 排期 | [subskills/plan.md](subskills/plan.md) | plan |
27
+ | 7 | 测试方案 / QA / 测试用例 | [subskills/testplan.md](subskills/testplan.md) | testplan |
28
+ | 8 | 发布 / changelog / release | [subskills/release.md](subskills/release.md) | release |
29
+ | 9 | 运维手册 / oncall | [subskills/runbook.md](subskills/runbook.md) | runbook |
30
+ | 10 | 复盘 / postmortem / RCA | [subskills/postmortem.md](subskills/postmortem.md) | postmortem |
31
+ | 11 | ADR / 为什么选 X | [subskills/adr.md](subskills/adr.md) | decision |
32
+ | 12 | delta / change / 增量 | [subskills/change.md](subskills/change.md) | change |
33
+
34
+ **消歧规则**: 关键词重叠时小 # 优先;看不懂意图不要猜,先问用户;2 次仍无法定位则停止走 /spec-manager。
35
+
36
+ ## 方法论
37
+
38
+ | 层 | 产物 | 核心约束 |
39
+ |---|---|---|
40
+ | L1 PRD | 需求文档 | 新功能必须先写 |
41
+ | L2 Design | 技术设计 | confirmed 才能进实施 |
42
+ | L3 Impl | 实施规格 | ≤20 步,frozen 后建 Task |
43
+
44
+ ## 规则(24 条,按 applies_to 过滤)
45
+
46
+ | 主题 | 规则 | 文件 |
47
+ |---|---|---|
48
+ | 流程控制 | R1-R4 停下审核/状态归用户/frozen 才建 Task | [rules/flow-control.md](rules/flow-control.md) |
49
+ | 质量门禁 | R5/R6/R10/R15/R18 不跳步/planJson 校验 | [rules/quality-gate.md](rules/quality-gate.md) |
50
+ | 文档治理 | R7/R11/R13/R14/R16-R22 层级绑定/aiSummary | [rules/doc-governance.md](rules/doc-governance.md) |
51
+ | 代码纪律 | R8/R9/R12 改代码前自检 | [rules/code-discipline.md](rules/code-discipline.md) |
52
+ | 代码调查 | R23 Spec 前必须基于实际代码 | [rules/codebase-survey.md](rules/codebase-survey.md) |
53
+ | Delta | R24 delta 必须含 proposal | [rules/delta.md](rules/delta.md) |
54
+
55
+ ## Spec 状态流
56
+
57
+ ```
58
+ draft → confirmed → frozen → implemented
59
+ AI agent 用户 用户 task_complete
60
+ ```
61
+
62
+ ## CLI 概要
63
+
64
+ `spec-manager <command> --help` 查看完整用法。主要命令组:
65
+
66
+ - `project init|status` — 初始化/总览
67
+ - `spec new|list|show|update|confirm|freeze|implement|validate|add-relation` — Spec CRUD
68
+ - `task create|start|step|complete|fail|wait|show|list` — Agent Task
69
+ - `decision create|list|show|update|set-partial|supersede` — 决策卡片
70
+ - `change new|archive|list|show` — Delta spec
71
+ - `incident new|list` — 事故记录
72
+ - `audit hit|report|show` — 规则审计
73
+
74
+ ## 数据布局
75
+
76
+ ```
77
+ <project>/
78
+ ├── .spec-manager/ # config + audit + incidents
79
+ ├── specs/<topic>/ # spec 平铺(点分编号自文档化层级)
80
+ │ ├── <L1-code>-<date>.md
81
+ │ ├── <L2-code>-<date>.md
82
+ │ ├── <L3-code>[-desc]-<date>.md
83
+ │ ├── decisions/ # 决策卡片(topic 级别)
84
+ │ └── tasks/ # Agent Task(topic 级别)
85
+ │ └── <specCode>-<taskId>.json
86
+ ├── changes/<name>/ # delta 提案
87
+ └── archive/<name>/ # 已合并 change
88
+ ```
89
+
90
+ 违反任一规则视为流程事故,参照 `.spec-manager/incidents/_TEMPLATE.md` 记录。
@@ -0,0 +1,73 @@
1
+ # ADR 子 skill — 架构决策记录
2
+
3
+ ## 用途
4
+
5
+ **优先用 `decision create` 命令**(结构化 what/why/affectedCriteria + topic 查询),非必要不新增 adr 文档。
6
+
7
+ ## Decision vs ADR 的选择
8
+
9
+ | 维度 | Decision Card(推荐) | ADR 文档 |
10
+ |------|----------------------|----------|
11
+ | 存储 | `specs/<topic>/decisions/DC-NNN.md`(topic 级别) | `adrs/NNNN-title.md` |
12
+ | 字段 | what/why/affectedCriteria | 全文 Markdown |
13
+ | 状态机 | active/superseded/partial | N/A(顺序追加) |
14
+ | 查询 | `decision list --topic X` | 扫文件 |
15
+ | 强制 | R18 强制 L1 implemented 后建 | 不强制 |
16
+
17
+ ## Decision 创建流程
18
+
19
+ 1. 触发条件:L1 spec 走到 `implemented`
20
+ 2. 必走:
21
+
22
+ ```bash
23
+ spec-manager decision create 2026-06-04-a1b2c3 \
24
+ --topic auth \
25
+ --what "采用 JWT 而非 session" \
26
+ --why "无状态扩展,便于多服务共享身份" \
27
+ --criteria "AC-1,AC-2"
28
+ ```
29
+
30
+ 3. supersede:
31
+
32
+ ```bash
33
+ # 旧决策被新决策取代
34
+ spec-manager decision supersede DC-001 --by DC-002
35
+ ```
36
+
37
+ ## ADR 创建流程(少数情况)
38
+
39
+ 如果决策需要:
40
+ - 大段背景 / 备选方案对比 / 详细 trade-off
41
+ - 多人评审记录
42
+
43
+ 则走 ADR:
44
+
45
+ ```bash
46
+ mkdir -p adrs
47
+ cat > adrs/0007-use-paseto.md <<'EOF'
48
+ # 7. 用 PASETO 替代 JWT
49
+
50
+ ## 背景
51
+ JWT 有 alg=none 等已知攻击面...
52
+
53
+ ## 候选方案
54
+ 1. 继续 JWT + 严格校验 alg
55
+ 2. PASETO(平台无关安全 token)
56
+ 3. 自研 session
57
+
58
+ ## 决定
59
+ 方案 2
60
+
61
+ ## 影响
62
+ - 库替换:jose → paseto
63
+ - 决策卡片:DC-002
64
+
65
+ ## 关联
66
+ - spec: 2026-06-04-a1b2c3
67
+ - decision: DC-002
68
+ EOF
69
+ ```
70
+
71
+ ## 关联规则
72
+
73
+ - R18 L1 implemented 后必须建决策卡片(ADR 不替代)
@@ -0,0 +1,118 @@
1
+ # Change 子 skill — Delta Spec 提案(OpenSpec 风格)
2
+
3
+ ## 用途
4
+
5
+ 当需要**修改已存在的 spec** 时(不是新建一个 L1/L2/L3),用 change 提案:
6
+ - 比"改 spec 文件 + git diff"更结构化
7
+ - archive 时机 = 知识合并点(带 proposal + delta spec 的完整审计轨迹)
8
+ - 比"另起一个 v2 spec"更轻量
9
+
10
+ ## 流程
11
+
12
+ 1. 创建 change 目录:
13
+
14
+ ```bash
15
+ spec-manager change new add-2fa --description "新增 2FA 双因素认证"
16
+ ```
17
+
18
+ 输出:
19
+ ```
20
+ changes/add-2fa/
21
+ ├── README.md
22
+ ├── proposal.md ← 填写 why/scope/risk
23
+ ├── deltas/ ← 在这里创建 <spec-code>.md
24
+ └── specs/auth/ ← ADDED 时放新 spec 占位
25
+ ```
26
+
27
+ 2. 写 `proposal.md` frontmatter(why + scope 必填):
28
+
29
+ ```yaml
30
+ ---
31
+ name: add-2fa
32
+ why: 高频账号被盗事件
33
+ scope: auth L1 加 2FA 需求
34
+ risk: 用户登录多一步
35
+ rollback: 移除 2FA 强制,保留可选
36
+ affectedCriteria:
37
+ - AC-1
38
+ - AC-2
39
+ ---
40
+ ```
41
+
42
+ 3. 写 delta spec 文件 `deltas/<code>.md`:
43
+
44
+ ```markdown
45
+ ---
46
+ code: 2026-06-04-a1b2c3
47
+ ---
48
+
49
+ ## MODIFIED Requirements
50
+
51
+ ### Requirement: 2026-06-04-a1b2c3
52
+ ## 2FA 强制
53
+
54
+ 登录成功后系统 **SHALL** 要求 TOTP 二次校验。
55
+ **SHALL NOT** 仅靠密码判定身份。
56
+
57
+ ## 范围边界
58
+ - 邮箱 + 密码
59
+ - TOTP
60
+ - 备份码
61
+
62
+ ## 验收标准
63
+ 1. **AC-1-2fa**: **Given** 用户登录成功 **When** 系统检测未配置 2FA **Then** **SHALL** 引导用户设置
64
+ 2. **AC-2-2fa**: **Given** 用户已配置 2FA **When** 登录 **Then** **SHALL** 要求 TOTP
65
+ ```
66
+
67
+ 支持 4 种 op:
68
+ - `## ADDED Requirements` — 新增 spec
69
+ - `## MODIFIED Requirements` — 修改 spec
70
+ - `## REMOVED Requirements` — 删除 spec
71
+ - `## RENAMED Requirements` — 改名 spec(`- FROM: X TO: Y`)
72
+
73
+ 4. ADDED 时需要 `changes/<name>/specs/<topic>/<code>/<code>.md` 占位文件(含 frontmatter level/title/parentCode)—— 占位文件按 `<code>/<code>.md` 嵌套存放(仅限 changes/ 目录),archive 时由 `archiveChange` 根据 `parentCode` 创建到主 specs 平铺目录:
74
+
75
+ ```bash
76
+ mkdir -p changes/add-2fa/specs/auth/auth-L2.1
77
+ cat > changes/add-2fa/specs/auth/auth-L2.1/auth-L2.1.md <<'EOF'
78
+ ---
79
+ code: auth-L2.1
80
+ level: L2
81
+ title: 2FA 后端设计
82
+ topic: auth
83
+ parentCode: auth-L1
84
+ status: draft
85
+ project: 1
86
+ ---
87
+ # 占位
88
+ EOF
89
+ ```
90
+
91
+ 5. 应用:
92
+
93
+ ```bash
94
+ spec-manager change archive add-2fa
95
+ ```
96
+
97
+ 输出(按 RENAMED→REMOVED→MODIFIED→ADDED 顺序):
98
+ ```
99
+ ✓ Change add-2fa archived
100
+ applied: 2
101
+ [MODIFIED] 2026-06-04-a1b2c3
102
+ [ADDED] 2026-06-05-d4e5f6
103
+ archived to: archive/add-2fa
104
+ ```
105
+
106
+ archive 会自动:
107
+ - 把 deltas/ 内容追加到主 spec 的 `## Delta (<name>)` 段
108
+ - 创建 ADDED 的新 spec
109
+ - REMOVED 把主 spec 移到 archive/
110
+ - RENAMED 改文件路径 + frontmatter code
111
+ - 整个 changes/<name>/ 目录移到 archive/<name>/
112
+ - 写 audit hit R24
113
+
114
+ ## 关联规则
115
+
116
+ - R14 跨层引用用 code 不是复述
117
+ - R24 delta change 必须含 proposal + delta spec
118
+ - R18 L1 implemented 后必须建决策卡片(改动 L1 时同步建/改 decision)
@@ -0,0 +1,53 @@
1
+ # Sub-skill: Design (L2)
2
+
3
+ ## 路由自检
4
+
5
+ ✓ 走本 skill 的信号:用户说"技术方案/架构/选型/接口设计/数据模型/可选方案"
6
+ ✗ 不走的信号:用户说"业务需求"(→ prd.md)或"实施"(→ impl.md)或"typo"(→ quick.md)
7
+
8
+ ## 模板
9
+
10
+ - [templates/L2-design.md](../templates/L2-design.md)
11
+
12
+ ## 流程
13
+
14
+ ### L2 Spec 创建
15
+
16
+ 1. **确认父 L1**:`spec-manager spec show <L1 code>`(默认 narrow 视图读 aiSummary)
17
+ > 🔍 **R19 自检**: 研究/跨层是否只读 aiSummary?→ `spec-manager audit hit R19`
18
+ 2. **L2 全文读父**(R19 跨层设计强制):写 L2 正文前必须 `spec show <L1 code> --include-content` 读父 L1 全文
19
+ 3. **Level 2 代码调查**(R23):Read ≥3 个源文件了解模块
20
+ 4. **创建 L2**:
21
+ ```bash
22
+ spec-manager spec new L2 --topic <topic> --title "..." --parent <L1 code> # --code 不传则自动生成
23
+ ```
24
+ > 🔍 **R7 自检**: L2 是否绑定了父 L1?→ `spec-manager audit hit R7`
25
+ 5. **写正文**:
26
+ ```bash
27
+ spec-manager spec update <code> --content ./draft.md --ai-summary "..." --change-summary "..."
28
+ ```
29
+ L2 必填段:方案概述 / 受影响模块 / 接口契约 / L3 裂变计划
30
+ 6. 🛑 **等用户审核**(R1)
31
+ 7. 用户批准 → `spec-manager spec confirm <code>`(R2)
32
+
33
+ ## L2 是架构拆解(R17)
34
+
35
+ - L1:L2 比例 1:1 或 1:2
36
+ - 按模块边界拆,不是功能点
37
+ - L2 裂变计划表格列出所有 L3
38
+
39
+ ## 与主 SKILL.md 关系
40
+
41
+ L2 confirmed 后,路由到 `subskills/impl.md` 继续 L3。
42
+
43
+ ## 适用规则
44
+
45
+ R1 / R2 / R4 / R7 / R13 / R14 / R17 / R19 / R22 / R23
46
+
47
+ ## 相关规则(按需加载)
48
+
49
+ | 规则 ID | 文件 | 适用场景 |
50
+ |---|---|---|
51
+ | R7/R14/R17 | [rules/doc-governance.md](../rules/doc-governance.md) | 层级绑定 / 跨层引用 / 架构拆解 |
52
+ | R19 | [rules/doc-governance.md](../rules/doc-governance.md) | 写 L2 前必读父 L1 全文 |
53
+ | R23 | [rules/codebase-survey.md](../rules/codebase-survey.md) | Level 2 模块深潜(≥3 源文件) |
@@ -0,0 +1,100 @@
1
+ # Sub-skill: Impl (L3 + Agent Task)
2
+
3
+ ## 路由自检
4
+
5
+ ✓ 走本 skill 的信号:用户说"实施/实现/编码/写代码/具体文件/planJson"
6
+ ✗ 不走的信号:用户说"业务需求"(→ prd.md)或"架构设计"(→ design.md)或"typo"(→ quick.md)
7
+
8
+ ## 模板
9
+
10
+ - [templates/L3-impl.md](../templates/L3-impl.md)
11
+ - [templates/agent-plan.json](../templates/agent-plan.json)(planJson 字段名 stepNo/stepType/name)
12
+
13
+ ## 流程
14
+
15
+ ### L3 Spec 创建
16
+
17
+ 1. **确认父 L2**:`spec-manager spec show <L2 code>`
18
+ > ☑ **R7**: L3 必须绑父 L2(违反时 CLI 自动 audit hit,见 `audit show`)
19
+ 2. **L3 全文读父**(R19 跨层设计强制):`spec show <L2 code> --include-content`
20
+ 3. **文件级分析(Level 3)**(R23):
21
+ - 读 L2"受影响模块"中的每个文件,确认存在
22
+ - 追踪 import/依赖:`grep -rn "functionName" <module-dir>`
23
+ - 识别测试文件:`find <module-dir>/../test -name "*Test*"`
24
+ > ☑ **R23** / **R12** / **R8** — 流程规则,人工把关
25
+ 4. **创建 L3**:
26
+ ```bash
27
+ spec-manager spec new L3 --topic <topic> --title "..." --parent <L2 code> # --code 不传则自动生成
28
+ ```
29
+ > ☑ **R20** — 流程规则:scope-split L2 时所有子 L3 一次建齐
30
+ 5. **写正文**:
31
+ ```bash
32
+ spec-manager spec update <code> --content ./draft.md --ai-summary "..." --change-summary "..."
33
+ ```
34
+ L3 必填段:目标 / 实施步骤 / 验证命令
35
+ planJson ≤ 20 步(用户授权 ≤10 — R11),Step 1 上下文收集,末步验证(R10)
36
+ ```bash
37
+ spec-manager spec validate-plan ./plan.json # R10/R11 校验,违反时自动 audit hit
38
+ ```
39
+ > ☑ **R11** / **R10** — `validate-plan` 违反时自动 audit hit
40
+ > ☑ **R13** / **R21** — `--ai-summary` ≤300 字符(CLI 截断,>300 自动 warn)
41
+ > ☑ **R14** / **R22** — 流程规则,人工把关
42
+ 6. 🛑 **等用户审核**(R1)— 流程规则,停下等用户信号
43
+ 7. 用户批准 → `spec-manager spec confirm <code>` → 用户再批准 → `spec-manager spec freeze <code>`
44
+ > ☑ **R2** / **R4** — 流程规则:状态由用户推进,每层独立审核
45
+ > CLI 在 `confirm`/`freeze` 之前会校验 R22(contentTemplate 非空)
46
+
47
+ ### Agent Task 执行
48
+
49
+ 8. **查历史任务**(连续性层):
50
+ ```bash
51
+ spec-manager task list --topic <topic>
52
+ ```
53
+ 了解同主题已有实现模式,复用成功的步骤顺序,避免重复踩坑。
54
+ 9. **frozen 才可建 Task**(R3):
55
+ ```bash
56
+ spec-manager task create <L3 code> --plan ./plan.json --auto-confirm
57
+ ```
58
+ > ☑ **R3** — 非 frozen 时 CLI 拒绝并 audit hit
59
+ 10. `spec-manager task start <task-id>`
60
+ 11. 逐步 `spec-manager task step <task-id> --no N --type T --name S --status ok --output-json J --latency L`
61
+ - 禁跳步(R5)
62
+ - outputJson 必含 summary(R15)
63
+ - step_report 必须在工作完成后才报(R15)
64
+ > ☑ **R5** — `task complete` 时仍有 pending/running 步会拒绝并报错
65
+ > ☑ **R15** — outputJson 缺 summary 时 warning 落 warn 数组
66
+ 12. `spec-manager task complete <task-id>`
67
+ > 完成后看 `cascadedL1Specs`,对每个 L1 用 `decision list --doc-code <L1>` 查是否已建决策卡
68
+ > ☑ **R6** — 流程规则:确认 cascade 后再标 implemented
69
+ 13. 若仍 frozen,手动 `spec-manager spec implement <L3 code>`
70
+ 14. L1 implemented 后必须 ≥1 张决策卡片(R18)
71
+ > ☑ **R18** — task complete 触发 L1 cascade 时 CLI 自动 audit hit,提示待建决策卡
72
+ 15. 规则审计合规检查:
73
+ ```bash
74
+ spec-manager audit show
75
+ ```
76
+ 确认最低合规基线通过(R1≥1, R4≥1, R13≥1, R22≥1)
77
+
78
+ ## 与主 SKILL.md 关系
79
+
80
+ L2 confirmed 后进入本 skill。Agent Task 完成后走 `/deploy` skill 部署。
81
+
82
+ ## 适用规则
83
+
84
+ R1 / R2 / R3 / R4 / R5 / R6 / R7 / R8 / R10 / R11 / R12 / R13 / R14 / R15 / R18 / R20 / R22 / R23
85
+
86
+ ## 相关规则(按需加载)
87
+
88
+ | 规则 ID | 文件 | 适用场景 | 类型 |
89
+ |---|---|---|---|
90
+ | R1/R2/R4 | [rules/flow-control.md](../rules/flow-control.md) | 停下审核 / 状态归用户 / 每层独立 | 流程 |
91
+ | R3/R5/R6 | [rules/flow-control.md](../rules/flow-control.md) + [rules/quality-gate.md](../rules/quality-gate.md) | frozen 才建 Task / 不跳步 / task 后校验 | 流程 + 代码 |
92
+ | R7/R11/R13/R14/R22 | [rules/doc-governance.md](../rules/doc-governance.md) | 层级绑定 / 粒度 / aiSummary / 跨层引用 / 创建即写正文 | 代码 + 流程 |
93
+ | R8/R12 | [rules/code-discipline.md](../rules/code-discipline.md) | 改代码前自检 / 禁凭记忆 | 流程 |
94
+ | R10/R15/R18 | [rules/quality-gate.md](../rules/quality-gate.md) | planJson 必含验证 / step 必含 summary / 决策卡片 | 代码 |
95
+ | R20 | [rules/doc-governance.md](../rules/doc-governance.md) | scope-split 批量建齐 | 流程 |
96
+ | R23 | [rules/codebase-survey.md](../rules/codebase-survey.md) | Level 3 文件级分析 | 流程 |
97
+
98
+ **类型说明**:
99
+ - **代码**:违反时 CLI 自动抛错或 audit hit
100
+ - **流程**:无自动审计,人工把关
@@ -0,0 +1,46 @@
1
+ # Plan 子 skill — 实施计划(不是 L2 架构设计)
2
+
3
+ ## 用途
4
+
5
+ 为已确认的 L2 spec 写"实施计划"(plan.md):
6
+ - **不是 L2 的架构设计**(L2 是"为什么这么做 / 怎么拆模块")
7
+ - plan.md 是"接下来几周按什么顺序做什么",可被任意角色读取
8
+ - 与 Agent Task 的关系:plan.md 是 task 的上游,task 是 plan 的执行
9
+
10
+ ## 流程
11
+
12
+ 1. 读父 L2 spec
13
+ 2. 用 `spec new L3` 创建 L3 spec(已有则跳过)
14
+ 3. 写 `plan.md`:
15
+
16
+ ```bash
17
+ spec-manager spec show 2026-06-04-b2c3d4 --include-content
18
+ ```
19
+
20
+ 4. `plan.md` 结构:
21
+
22
+ ```markdown
23
+ # <L2 title> 实施计划
24
+
25
+ ## 阶段拆分
26
+ - 阶段 1(M1):<一句话目标>
27
+ - 阶段 2(M2):<一句话目标>
28
+ - ...
29
+
30
+ ## 每个阶段交付
31
+ - M1:L3 spec 列表 + 预期工时
32
+ - M2:...
33
+
34
+ ## 风险
35
+ - ...
36
+
37
+ ## 里程碑 Spec
38
+ - M1: <link to L3 spec>
39
+ ```
40
+
41
+ 5. 写完用 `spec update` 把它存到 spec 的 frontmatter `changeSummary` 或专门建一个 plan/ 目录
42
+
43
+ ## 关联规则
44
+
45
+ - R17 L2 是架构拆解不是 todolist(plan.md 才是 todolist)
46
+ - R20 scope-split 批量建齐子 L3
@@ -0,0 +1,77 @@
1
+ # Postmortem 子 skill — Blameless 复盘
2
+
3
+ ## 用途
4
+
5
+ 故障复盘(Blameless 风格):
6
+ - 不指责个人,关注系统和流程
7
+ - 5 Whys 找根因
8
+ - 输出 action items → 改 spec / 改 runbook / 改规则
9
+
10
+ ## 流程
11
+
12
+ 1. 找到对应 incident:
13
+
14
+ ```bash
15
+ spec-manager incident list --status resolved
16
+ ```
17
+
18
+ 2. 创建 postmortem:
19
+
20
+ ```bash
21
+ mkdir -p postmortems
22
+ cat > postmortems/INC-20260604-001-postmortem.md <<'EOF'
23
+ # INC-20260604-001 复盘 — R15 step outputJson 缺 summary
24
+
25
+ ## 时间线
26
+ - 10:41 任务开始
27
+ - 10:42 step 3 重试时漏掉 summary
28
+ - 10:45 发现并补 summary
29
+ - 10:50 task complete
30
+
31
+ ## 5 Whys
32
+ 1. 为什么 outputJson 缺 summary?—— Agent 模板里只在 happy path 加了
33
+ 2. 为什么模板不一致?—— 模板没强制 summary
34
+ 3. 为什么没强校验?—— CLI 没把 R15 warning 转 throw
35
+ 4. 为什么没早发现?—— task show 不显示 warning
36
+ 5. 为什么?—— R15 是软约束
37
+
38
+ ## 根因
39
+ R15 是软约束(warning),缺乏 hard fail 机制
40
+
41
+ ## Action Items
42
+ - [ ] spec-manager task step 校验 R15,缺 summary 时 hard fail(PR #123)
43
+ - [ ] skill impl.md 写明"outputJson 必含 summary"红线
44
+ - [ ] decision:升 R15 为 hard constraint?DC-003 待评估
45
+
46
+ ## 关联
47
+ - incident: INC-20260604-001
48
+ - spec: 2026-06-04-c3d4e5
49
+ - 规则: R15
50
+ EOF
51
+ ```
52
+
53
+ 3. 同步更新 runbook / decision / spec
54
+
55
+ ## 决策错误的复盘
56
+
57
+ 如果事故根因追溯到一张「错」的决策卡片(DC-XXX),复盘要补两件事:
58
+
59
+ ```bash
60
+ # 1) 标记该决策为 partial(部分被取代/作废)
61
+ spec-manager decision set-partial DC-001 --reason "INC-20260604-001 复盘:AC-3 设计假设不成立"
62
+
63
+ # 2) 用新决策 supersede 旧的
64
+ spec-manager decision create <L1 code> \
65
+ --topic <topic> \
66
+ --what "改用 X 而非 Y" \
67
+ --why "INC-20260604-001:旧决策 AC-3 在 <场景> 下不成立" \
68
+ --criteria AC-3
69
+
70
+ spec-manager decision supersede DC-001 --by DC-002
71
+ ```
72
+
73
+ 这样多轮迭代后,`decision list --criteria AC-3` 能返回完整历史(active / superseded / partial)。
74
+
75
+ ## 关联规则
76
+
77
+ - 关联 R18 决策卡片(重大改动的决策落库)
@@ -0,0 +1,72 @@
1
+ # Sub-skill: PRD (L1)
2
+
3
+ ## 路由自检
4
+
5
+ ✓ 走本 skill 的信号:用户说"需求/想做 X/新功能/痛点/用户故事/商业价值"
6
+ ✗ 不走的信号:用户说"实施/编码"(→ impl.md)或"技术方案"(→ design.md)或"typo"(→ quick.md)
7
+
8
+ ## 模板
9
+
10
+ - [templates/L1-prd.md](../templates/L1-prd.md)
11
+ - skill 内 Read 该文件获取完整模板
12
+
13
+ ## 流程
14
+
15
+ ### L1 Spec 创建
16
+
17
+ 1. **Q4 历史决策查询**(必做):
18
+ ```bash
19
+ spec-manager decision list --topic <topic>
20
+ ```
21
+ 若返回非空 → 向用户展示决策摘要,让用户确认新 L1 是否与历史一致或有意覆盖。
22
+ > ☑ **R18** — 流程规则:新 L1 创建前查历史决策,避免与已实现 L1 的决策冲突
23
+ 2. **PRE-WRITE Q1-Q3**(必做):用当前工具的用户提问能力一次性问 3 个问题
24
+ - Q1 核心痛点(量化)
25
+ - Q2 范围边界(做/不做/推迟)
26
+ - Q3 成功指标(基线 + 目标 + 测量方式)
27
+ 3. **L1 去重搜索**(R16):
28
+ ```bash
29
+ spec-manager spec list --level L1 --topic <topic>
30
+ ```
31
+ 若发现同 topic L1 存在,**复用**而非新建。
32
+ > ☑ **R16** — 流程规则:查重确认无重复 L1
33
+ 4. **创建 L1**:
34
+ ```bash
35
+ spec-manager spec new L1 --topic <topic> --title "..." # --code 不传则自动生成 <YYYY-MM-DD>-<shortId>
36
+ ```
37
+ 5. **写正文**:把 L1-prd.md 模板填好后写到文件
38
+ ```bash
39
+ spec-manager spec update <code> --content ./draft.md --ai-summary "..." --change-summary "初始 L1"
40
+ ```
41
+ `spec update` 自动跑必填段校验(warning-only)。
42
+ > ☑ **R13** / **R21** — `--ai-summary` ≤300 字符(CLI 截断,>300 自动 warn)
43
+ > ☑ **R22** — 流程规则:创建后立即写正文,通知审核前自检 contentTemplate 非空(CLI 在 `confirm` 时强制校验)
44
+ 6. 🛑 **等用户审核**(R1)
45
+ > ☑ **R1** — 流程规则:停下等用户审核,不自行推进
46
+ 7. 用户批准 → 调本 skill(不要凭上下文):
47
+ ```bash
48
+ spec-manager spec confirm <code>
49
+ ```
50
+ > ☑ **R2** — 流程规则:状态变更由用户触发
51
+ > ☑ **R4** — 流程规则:L1 审核独立,不连带假设 L2
52
+
53
+ ## 与主 SKILL.md 关系
54
+
55
+ L1 confirmed 后,路由到 `subskills/design.md` 继续 L2。
56
+
57
+ ## 适用规则
58
+
59
+ R1 / R2 / R4 / R7 / R13 / R14 / R16 / R17 / R19 / R22 / R23
60
+
61
+ ## 相关规则(按需加载)
62
+
63
+ | 规则 ID | 文件 | 适用场景 | 类型 |
64
+ |---|---|---|---|
65
+ | R1/R2/R4 | [rules/flow-control.md](../rules/flow-control.md) | 停下审核 / 状态归用户 / 每层独立 | 流程 |
66
+ | R7 | [rules/doc-governance.md](../rules/doc-governance.md) | 层级绑定(虽 L1 无父,但确认子层要绑) | 代码 |
67
+ | R13/R21 | [rules/doc-governance.md](../rules/doc-governance.md) | aiSummary 必传 + ≤300 字符 | 代码 |
68
+ | R14 | [rules/doc-governance.md](../rules/doc-governance.md) | 跨层引用 — L1 不复述上层 | 流程 |
69
+ | R16 | [rules/doc-governance.md](../rules/doc-governance.md) | L1 去重搜索 | 流程 |
70
+ | R19 | [rules/doc-governance.md](../rules/doc-governance.md) | 研究期读 aiSummary 而非全文 | 流程 |
71
+ | R22 | [rules/doc-governance.md](../rules/doc-governance.md) | 创建后立即写正文 | 代码(CLI 在 `confirm` 时强制) |
72
+ | R23 | [rules/codebase-survey.md](../rules/codebase-survey.md) | 写 L1 前 Level 1 架构概览 | 流程 |
@@ -0,0 +1,25 @@
1
+ # Sub-skill: Quick (≤5 步微调)
2
+
3
+ ## 路由自检
4
+
5
+ ✓ 走本 skill 的信号:用户说"修 typo / 改一行注释 / 调一个字符串 / 改 log level"
6
+ ✗ 不走的信号:用户说"新功能"(→ prd.md)或"重构"(→ design.md + impl.md)
7
+
8
+ ## 流程
9
+
10
+ 1. **直接 Edit 源码**:用 `Read` 找到目标行,`Edit` 改一行
11
+ 2. **验证**(如有):`Bash` 跑相关测试
12
+ 3. **报告**:告诉用户改了哪个文件的哪一行
13
+ 4. **无需建任何 spec** — quick 不走完整 L1→L2→L3 流程
14
+
15
+ ## 限制
16
+
17
+ - 步数 ≤ 5
18
+ - 单一文件
19
+ - 不涉及 schema 变更
20
+ - 不涉及 API 契约变更
21
+ - 不跨模块
22
+
23
+ 超限则跳到 `prd.md` 走完整流程。
24
+
25
+ `git diff` 本身就是审计追踪。