claude-sdlc 1.0.0 → 1.0.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/README.md +98 -249
- package/lib/installer.js +18 -2
- package/package.json +1 -1
- package/template/.claude/settings.json +30 -10
package/README.md
CHANGED
|
@@ -1,313 +1,162 @@
|
|
|
1
|
-
#
|
|
1
|
+
# claude-sdlc
|
|
2
2
|
|
|
3
|
-
**让 Claude Code
|
|
3
|
+
**让 Claude Code 严格按 SDLC 规范开发 — 一条命令安装,零配置开箱即用。**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/claude-sdlc)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
7
|
|
|
7
8
|
---
|
|
8
9
|
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
| 问题 | 解决方案 |
|
|
12
|
-
|------|---------|
|
|
13
|
-
| Claude Code 不遵循开发流程,直接写代码 | SDLC 六阶段强制流程(需求→设计→编码→测试→审查→交付) |
|
|
14
|
-
| 需要用户反复输入指令推进流程 | **自动驱动模式**:确认 PRD 和设计后,P3→P6 全自动完成 |
|
|
15
|
-
| 规范需要手动每次提醒 | CLAUDE.md + rules/ 自动加载,Hooks 运行时拦截 |
|
|
16
|
-
| Claude Code 无法自动识别规范 | CLAUDE.md 启动指令自动初始化 + 任务自动识别 |
|
|
17
|
-
| Claude 自行添加/减少功能 | **PRD 驱动开发**:严格按需求清单执行,每行代码对应 PRD |
|
|
18
|
-
| 长对话后 Claude 忘记规范(context compaction) | 七层防御机制 + `# Compact Instructions` + CLAUDE.md 活文档 |
|
|
19
|
-
| CLAUDE.md 太长导致指令遵循率下降 | **精简到 ~100 行**,详细规则拆分到 rules/(自动加载) |
|
|
20
|
-
|
|
21
|
-
## 核心特性
|
|
22
|
-
|
|
23
|
-
- **自动驱动模式**:用户只需确认 PRD 和设计方案,P3 编码→P4 测试→P5 集成审查→P6 交付全自动完成
|
|
24
|
-
- **PRD 驱动开发**:P1 产出编号化需求清单,全流程以 PRD 为唯一依据,禁止自行添加/减少
|
|
25
|
-
- **六阶段 SDLC 流程**:P1 需求分析 → P2 系统设计 → P3 编码实现 → P4 测试验证 → P5 集成审查 → P6 部署交付
|
|
26
|
-
- **每阶段独立审查**:每个阶段都有专项 Review,审查通过才推进(自动驱动模式下自动执行)
|
|
27
|
-
- **自动修复重试**:审查未通过时自动修复并重试(最多 3 次),超过才请求用户帮助
|
|
28
|
-
- **运行时拦截**:Hooks 自动拦截当前阶段不允许的操作(写代码、测试、git 提交)
|
|
29
|
-
- **抗压缩**:`# Compact Instructions` + PreCompact hook,compaction 后自动恢复并继续自动驱动
|
|
30
|
-
- **精简 CLAUDE.md**:核心控制文件仅 ~100 行,指令遵循率最优;详细规则通过 rules/ 自动加载
|
|
31
|
-
- **斜杠命令**:`/phase`、`/status`、`/checkpoint`、`/review`(自动驱动时通常不需要手动使用)
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 快速安装
|
|
36
|
-
|
|
37
|
-
### 方式 1:npx 一条命令(推荐)
|
|
10
|
+
## 一条命令安装
|
|
38
11
|
|
|
39
12
|
```bash
|
|
40
|
-
npx claude-sdlc
|
|
41
|
-
npx claude-sdlc ./my-project # 安装到指定目录
|
|
13
|
+
npx claude-sdlc
|
|
42
14
|
```
|
|
43
15
|
|
|
44
|
-
|
|
16
|
+
安装到指定目录:
|
|
45
17
|
|
|
46
18
|
```bash
|
|
47
|
-
|
|
48
|
-
claude-sdlc
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### 方式 3:clone 后安装(备选)
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
git clone https://github.com/<your-username>/sdlc-enforcer.git
|
|
55
|
-
cd sdlc-enforcer
|
|
56
|
-
./install.sh /path/to/your-project
|
|
19
|
+
npx claude-sdlc ./my-project
|
|
57
20
|
```
|
|
58
21
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- **Node.js >= 16**(npx / npm 方式需要)
|
|
62
|
-
- **jq**(可选):Hook 脚本优先使用 jq 解析 JSON,未安装时自动降级为 sed 解析(仍然可用)
|
|
22
|
+
安装完成后,在项目目录启动 `claude` 即可自动加载全部规范。**每个项目只需安装一次。**
|
|
63
23
|
|
|
64
24
|
---
|
|
65
25
|
|
|
66
|
-
##
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
your-project/
|
|
70
|
-
├── CLAUDE.md # 核心控制文件(~100行,自动加载)
|
|
71
|
-
└── .claude/
|
|
72
|
-
├── settings.json # Hooks 配置
|
|
73
|
-
├── rules/ # 详细规则(自动加载)
|
|
74
|
-
│ ├── 01-lifecycle-phases.md # SDLC 阶段定义
|
|
75
|
-
│ ├── 02-coding-standards.md # 编码规范
|
|
76
|
-
│ ├── 03-testing-standards.md # 测试标准
|
|
77
|
-
│ ├── 04-git-workflow.md # Git 工作流
|
|
78
|
-
│ ├── 05-anti-amnesia.md # 反遗忘机制
|
|
79
|
-
│ ├── 06-review-tools.md # 审查工具链配置
|
|
80
|
-
│ └── 07-parallel-agents.md # 多 Agent 并行开发
|
|
81
|
-
├── hooks/ # 运行时拦截脚本
|
|
82
|
-
│ ├── check-phase-write.sh # 拦截非法代码写入
|
|
83
|
-
│ └── check-phase-test.sh # 拦截非法测试/git 执行
|
|
84
|
-
├── reviews/ # 审查报告持久化
|
|
85
|
-
└── commands/ # 斜杠命令
|
|
86
|
-
├── phase.md # /phase 命令
|
|
87
|
-
├── checkpoint.md # /checkpoint 命令
|
|
88
|
-
├── status.md # /status 命令
|
|
89
|
-
└── review.md # /review 命令
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### 架构设计原则
|
|
93
|
-
|
|
94
|
-
| 层 | 文件 | 加载方式 | 职责 |
|
|
95
|
-
|----|------|---------|------|
|
|
96
|
-
| 控制层 | `CLAUDE.md` (~100行) | 自动加载 | 启动指令、核心规则摘要、项目状态 YAML、Compact Instructions |
|
|
97
|
-
| 规则层 | `.claude/rules/*.md` | 自动加载 | 详细阶段定义、编码/测试/Git 规范、反遗忘机制 |
|
|
98
|
-
| 拦截层 | `.claude/hooks/*.sh` | 自动触发 | PreToolUse 运行时拦截违规操作 |
|
|
99
|
-
| 审查层 | `.claude/settings.json` | 自动注册 | Stop/PostToolUse/PreCompact prompt hooks |
|
|
100
|
-
| 交互层 | `.claude/commands/*.md` | 用户调用 | /phase, /status, /checkpoint, /review |
|
|
26
|
+
## 解决什么问题
|
|
101
27
|
|
|
102
|
-
|
|
28
|
+
| 痛点 | 解决方案 |
|
|
29
|
+
|------|---------|
|
|
30
|
+
| Claude 不走流程,直接写代码 | 六阶段强制流程:需求 → 设计 → 编码 → 测试 → 审查 → 交付 |
|
|
31
|
+
| 需要反复输入指令推进 | **自动驱动**:确认需求和设计后,编码到交付全自动 |
|
|
32
|
+
| 规范需要每次手动提醒 | CLAUDE.md + rules/ 自动加载,Hooks 运行时拦截 |
|
|
33
|
+
| Claude 自行加减功能 | **PRD 驱动**:严格按需求清单,每行代码对应 PRD |
|
|
34
|
+
| 长对话后遗忘规范 | 七层防御 + 抗压缩机制,compaction 后自动恢复 |
|
|
35
|
+
| CLAUDE.md 过长导致遵循率下降 | 精简到 ~100 行,详细规则拆到 rules/ 自动加载 |
|
|
103
36
|
|
|
104
37
|
---
|
|
105
38
|
|
|
106
|
-
##
|
|
107
|
-
|
|
108
|
-
### 开始开发
|
|
109
|
-
|
|
110
|
-
在目标项目目录启动 Claude Code:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
cd your-project
|
|
114
|
-
claude
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Claude 会自动加载 SDLC 规范。**当你提出开发任务时(如"帮我实现..."),Claude 会自动进入 P1(需求分析),无需手动操作。**
|
|
118
|
-
|
|
119
|
-
### 自动驱动模式(核心特性)
|
|
120
|
-
|
|
121
|
-
**用户只需两次确认,其余全自动:**
|
|
39
|
+
## 工作流程
|
|
122
40
|
|
|
123
41
|
```
|
|
124
42
|
你说"帮我实现XX"
|
|
125
|
-
↓
|
|
126
|
-
P1 需求分析 →
|
|
127
|
-
↓
|
|
128
|
-
P2 系统设计 →
|
|
129
|
-
↓
|
|
130
|
-
P3 编码 →
|
|
43
|
+
↓
|
|
44
|
+
P1 需求分析 → 整理 PRD →【你确认】
|
|
45
|
+
↓
|
|
46
|
+
P2 系统设计 → 设计方案 →【你确认】
|
|
47
|
+
↓ 以下全自动
|
|
48
|
+
P3 编码 → P4 测试 → P5 集成审查 → P6 交付 → 完成报告
|
|
131
49
|
```
|
|
132
50
|
|
|
133
|
-
|
|
134
|
-
- P3→P6:Claude 自动编码、测试、审查、交付,你坐等结果
|
|
135
|
-
- 审查失败时 Claude 自动修复重试(最多 3 次),超过才请求你帮助
|
|
136
|
-
- 你随时可以介入(输入任何消息即可)
|
|
137
|
-
|
|
138
|
-
### 可用命令(通常不需要手动使用)
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
/phase # 查看当前阶段进度
|
|
142
|
-
/phase next # 手动推进阶段(自动驱动模式下不需要)
|
|
143
|
-
/phase back # 回退到上一阶段
|
|
144
|
-
/status # 查看全面的项目状态报告
|
|
145
|
-
/checkpoint # 保存状态快照(建议长对话时定期使用)
|
|
146
|
-
/review # 手动触发当前阶段审查
|
|
147
|
-
/review src/auth/login.ts # 审查指定文件(P3+ 阶段)
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### SDLC 六阶段说明
|
|
151
|
-
|
|
152
|
-
| 阶段 | 名称 | 核心活动 | 阶段审查 | 推进方式 |
|
|
153
|
-
|------|------|---------|---------|---------|
|
|
154
|
-
| **P1** | 需求分析 | 理解需求、整理 PRD | 需求审查 | 用户确认 PRD |
|
|
155
|
-
| **P2** | 系统设计 | 架构设计、实现规划 | 设计审查 | 用户确认设计 |
|
|
156
|
-
| **P3** | 编码实现 | 按 PRD 编写代码 | 代码审查(含工具链) | **自动驱动** |
|
|
157
|
-
| **P4** | 测试验证 | 按 PRD 编写/执行测试 | 测试审查(含覆盖率) | **自动驱动** |
|
|
158
|
-
| **P5** | 集成审查 | 全局审查、四环追溯 | 集成审查 | **自动驱动** |
|
|
159
|
-
| **P6** | 部署交付 | Git 提交、交付报告 | 交付审查 | **自动完成** |
|
|
160
|
-
|
|
161
|
-
### 工具辅助审查(生产级特性)
|
|
162
|
-
|
|
163
|
-
`/review` 不仅依赖 LLM 判断,还会**自动运行真实工具链**,用客观数据辅助审查:
|
|
164
|
-
|
|
165
|
-
- **自动检测项目类型** — 根据 `package.json`、`pyproject.toml`、`go.mod`、`Cargo.toml` 等文件自动识别项目类型,运行对应的 Lint/Typecheck/Build/Audit 工具
|
|
166
|
-
- **工具未安装时自动安装** — 检测到所需工具未安装时,自动安装为 devDependency(如 `npm install --save-dev eslint`);安装失败时降级跳过,不阻塞审查
|
|
167
|
-
- **真实数据驱动** — Lint 错误数、Typecheck 错误数、构建结果、依赖漏洞数、测试通过率、代码覆盖率均来自工具实际输出,非 LLM 估算
|
|
168
|
-
- **审查报告持久化** — 每次 `/review` 的完整报告(含工具输出原文)写入 `.claude/reviews/P{n}-review-{时间}.md`,可追溯
|
|
169
|
-
|
|
170
|
-
详细配置见 `.claude/rules/06-review-tools.md`。
|
|
171
|
-
|
|
172
|
-
### 多 Agent 并行开发
|
|
173
|
-
|
|
174
|
-
P3/P4/P5 阶段支持多 Agent 并行工作,利用 Claude Code 的 Task 工具提高开发效率:
|
|
175
|
-
|
|
176
|
-
- **P3 并行编码** — 独立模块由不同子 Agent 同时编写,主 Agent 协调接口一致性
|
|
177
|
-
- **P4 并行测试** — 不同模块的测试由不同子 Agent 同时编写,主 Agent 统一执行验证
|
|
178
|
-
- **P5 并行审查** — 全局一致性、性能、PRD 追溯三个维度由不同子 Agent 同时审查
|
|
179
|
-
|
|
180
|
-
并行开发不适用于:P1/P2(需用户交互)、P6(git 串行)、模块间有依赖时。
|
|
181
|
-
|
|
182
|
-
详细规则见 `.claude/rules/07-parallel-agents.md`。
|
|
51
|
+
**用户只需两次确认(PRD + 设计),其余全自动。** 审查失败时自动修复重试,最多 3 次后才请求帮助。
|
|
183
52
|
|
|
184
53
|
---
|
|
185
54
|
|
|
186
|
-
##
|
|
187
|
-
|
|
188
|
-
本系统的设计目标:**Claude 在任何情况下都能自己读取规范、按规范执行**,用户不需要提醒。
|
|
55
|
+
## 核心特性
|
|
189
56
|
|
|
190
|
-
|
|
57
|
+
- **自动驱动** — P3→P6 全自动,用户坐等结果
|
|
58
|
+
- **PRD 驱动** — 每行代码对应 PRD 需求,禁止添加/减少
|
|
59
|
+
- **运行时拦截** — Hooks 自动拦截违规操作(P3 前写代码、P4 前跑测试、P6 前 git)
|
|
60
|
+
- **自动审查** — 每阶段通过 `/review` 审查才推进,集成真实工具链(Lint/Typecheck/Coverage)
|
|
61
|
+
- **抗压缩** — PreCompact Hook 保存状态,compaction 后自动恢复继续
|
|
62
|
+
- **多 Agent 并行** — P3/P4/P5 阶段支持 Task 工具并行开发
|
|
63
|
+
- **斜杠命令** — `/phase`、`/status`、`/checkpoint`、`/review`
|
|
191
64
|
|
|
192
|
-
|
|
193
|
-
|----|------|------|------|
|
|
194
|
-
| 1 | CLAUDE.md 启动指令 | 主动 | 每次加载时自动执行状态检查和初始化 |
|
|
195
|
-
| 2 | rules/ 规则文件 | 主动 | 详细规范自动加载,compaction 后重新加载 |
|
|
196
|
-
| 3 | PreToolUse Hooks | 被动 | 硬拦截违规操作(写代码/测试/git),不依赖 Claude 自觉 |
|
|
197
|
-
| 4 | PostToolUse Hook | 主动 | 每次文件修改后提醒更新 CLAUDE.md 状态 |
|
|
198
|
-
| 5 | Stop Hook | 主动 | 每次回复后强制自检合规性 + 自动驱动推进 |
|
|
199
|
-
| 6 | PreCompact Hook | 主动 | 压缩前强制保存所有状态到 CLAUDE.md |
|
|
200
|
-
| 7 | 用户命令 | 按需 | /status、/checkpoint、/phase、/review |
|
|
65
|
+
---
|
|
201
66
|
|
|
202
|
-
|
|
67
|
+
## 安装后的文件结构
|
|
203
68
|
|
|
204
69
|
```
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
70
|
+
your-project/
|
|
71
|
+
├── CLAUDE.md # 核心控制文件(~100行)
|
|
72
|
+
└── .claude/
|
|
73
|
+
├── settings.json # Hooks 配置
|
|
74
|
+
├── rules/ # 7 个规则文件(自动加载)
|
|
75
|
+
│ ├── 01-lifecycle-phases.md
|
|
76
|
+
│ ├── 02-coding-standards.md
|
|
77
|
+
│ ├── 03-testing-standards.md
|
|
78
|
+
│ ├── 04-git-workflow.md
|
|
79
|
+
│ ├── 05-anti-amnesia.md
|
|
80
|
+
│ ├── 06-review-tools.md
|
|
81
|
+
│ └── 07-parallel-agents.md
|
|
82
|
+
├── hooks/ # 2 个拦截脚本
|
|
83
|
+
│ ├── check-phase-write.sh
|
|
84
|
+
│ └── check-phase-test.sh
|
|
85
|
+
├── commands/ # 4 个斜杠命令
|
|
86
|
+
│ ├── phase.md
|
|
87
|
+
│ ├── checkpoint.md
|
|
88
|
+
│ ├── status.md
|
|
89
|
+
│ └── review.md
|
|
90
|
+
└── reviews/ # 审查报告持久化
|
|
221
91
|
```
|
|
222
92
|
|
|
223
|
-
全程每次回复 → Stop Hook 强制自检 + 自动驱动推进
|
|
224
|
-
全程每次工具调用 → PreToolUse Hook 拦截违规
|
|
225
|
-
全程每次文件修改 → PostToolUse Hook 同步状态
|
|
226
|
-
Context Compaction 时 → PreCompact Hook 保存状态 → 自动恢复后继续
|
|
227
|
-
|
|
228
93
|
---
|
|
229
94
|
|
|
230
|
-
##
|
|
231
|
-
|
|
232
|
-
### 修改阶段定义
|
|
95
|
+
## 七层防御机制
|
|
233
96
|
|
|
234
|
-
|
|
97
|
+
| 层 | 机制 | 作用 |
|
|
98
|
+
|----|------|------|
|
|
99
|
+
| 1 | CLAUDE.md 启动指令 | 自动状态检查和初始化 |
|
|
100
|
+
| 2 | rules/ 规则文件 | 详细规范自动加载 |
|
|
101
|
+
| 3 | PreToolUse Hooks | 硬拦截违规操作,不依赖 Claude 自觉 |
|
|
102
|
+
| 4 | PostToolUse Hook | 文件修改后同步状态 |
|
|
103
|
+
| 5 | Stop Hook | 每次回复后自检 + 自动驱动 |
|
|
104
|
+
| 6 | PreCompact Hook | 压缩前保存状态 |
|
|
105
|
+
| 7 | 用户命令 | /status、/checkpoint、/phase、/review |
|
|
235
106
|
|
|
236
|
-
|
|
107
|
+
---
|
|
237
108
|
|
|
238
|
-
|
|
109
|
+
## 其他安装方式
|
|
239
110
|
|
|
240
|
-
###
|
|
111
|
+
### 全局安装
|
|
241
112
|
|
|
242
|
-
|
|
113
|
+
```bash
|
|
114
|
+
npm install -g claude-sdlc
|
|
115
|
+
claude-sdlc
|
|
116
|
+
```
|
|
243
117
|
|
|
244
|
-
###
|
|
118
|
+
### Shell 脚本安装(无需 Node.js)
|
|
245
119
|
|
|
246
|
-
|
|
120
|
+
```bash
|
|
121
|
+
git clone https://github.com/muqian/claude-sdlc.git
|
|
122
|
+
cd claude-sdlc
|
|
123
|
+
./install.sh /path/to/your-project
|
|
124
|
+
```
|
|
247
125
|
|
|
248
|
-
###
|
|
126
|
+
### 前置依赖
|
|
249
127
|
|
|
250
|
-
|
|
128
|
+
- **Node.js >= 16**(npx/npm 方式)
|
|
129
|
+
- **jq**(可选):Hook 脚本优先用 jq 解析 JSON,未安装时自动降级为 sed
|
|
251
130
|
|
|
252
131
|
---
|
|
253
132
|
|
|
254
|
-
##
|
|
133
|
+
## 自定义
|
|
255
134
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
自动注册 .claude/settings.json 中的 Hooks
|
|
264
|
-
↓
|
|
265
|
-
自动注册 .claude/commands/*.md 为斜杠命令
|
|
266
|
-
↓
|
|
267
|
-
开始工作(受规范约束)
|
|
268
|
-
│
|
|
269
|
-
├── 每次工具调用 → PreToolUse Hook 检查阶段合规性
|
|
270
|
-
├── 每次文件修改 → PostToolUse Hook 同步状态到 CLAUDE.md
|
|
271
|
-
├── 每次回复后 → Stop Hook 自检 + 自动驱动推进
|
|
272
|
-
└── Context Compaction 前 → PreCompact Hook 保存状态
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
### 为什么精简 CLAUDE.md?
|
|
276
|
-
|
|
277
|
-
| 对比 | 旧版 (~285行) | 新版 (~100行) |
|
|
278
|
-
|------|-------------|-------------|
|
|
279
|
-
| 详细规则 | 全部写在 CLAUDE.md 中 | 拆分到 rules/ 自动加载 |
|
|
280
|
-
| 指令遵循率 | 随长度增加而下降 | 精简核心,遵循率更高 |
|
|
281
|
-
| Compaction 影响 | 信息过多可能被压缩遗漏 | 关键信息集中,不易遗漏 |
|
|
282
|
-
| 维护性 | 单文件维护困难 | 模块化,各规则独立维护 |
|
|
135
|
+
| 需求 | 编辑 |
|
|
136
|
+
|------|------|
|
|
137
|
+
| 修改阶段定义 | `.claude/rules/01-lifecycle-phases.md` |
|
|
138
|
+
| 修改编码规范 | `.claude/rules/02-coding-standards.md` |
|
|
139
|
+
| 添加新规则 | `.claude/rules/` 下新增 `.md` 文件 |
|
|
140
|
+
| 调整拦截规则 | `.claude/hooks/` 下的脚本 |
|
|
141
|
+
| 添加斜杠命令 | `.claude/commands/` 下新增 `.md` 文件 |
|
|
283
142
|
|
|
284
143
|
---
|
|
285
144
|
|
|
286
145
|
## 常见问题
|
|
287
146
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
安装 jq:`brew install jq`(macOS)或 `sudo apt-get install jq`(Ubuntu)。无 jq 时 hooks 自动降级为 sed 解析。
|
|
291
|
-
|
|
292
|
-
### 已有 CLAUDE.md 会被覆盖吗?
|
|
293
|
-
|
|
294
|
-
不会。安装脚本会先将已有的 CLAUDE.md 备份为 `CLAUDE.md.bak.<时间戳>`。
|
|
295
|
-
|
|
296
|
-
### 已有 settings.json 会被覆盖吗?
|
|
297
|
-
|
|
298
|
-
如果安装了 jq,脚本会智能合并 hooks 配置。否则会备份原文件后覆盖。
|
|
299
|
-
|
|
300
|
-
### 可以跳过某个阶段吗?
|
|
147
|
+
**已有 CLAUDE.md 会被覆盖吗?**
|
|
148
|
+
不会,自动备份为 `CLAUDE.md.bak.<时间戳>`。
|
|
301
149
|
|
|
302
|
-
|
|
150
|
+
**已有 settings.json 怎么办?**
|
|
151
|
+
自动智能合并 hooks 配置(去重),原文件备份。
|
|
303
152
|
|
|
304
|
-
|
|
153
|
+
**可以跳过阶段吗?**
|
|
154
|
+
可以,Claude 会先说明风险,确认后记录跳过原因并推进。
|
|
305
155
|
|
|
306
|
-
|
|
156
|
+
**如何卸载?**
|
|
307
157
|
```bash
|
|
308
158
|
rm CLAUDE.md
|
|
309
159
|
rm -rf .claude/rules/ .claude/hooks/ .claude/commands/
|
|
310
|
-
# 如需要,手动从 .claude/settings.json 中移除 SDLC 相关的 hooks
|
|
311
160
|
```
|
|
312
161
|
|
|
313
162
|
---
|
package/lib/installer.js
CHANGED
|
@@ -40,8 +40,21 @@ function copyFiles(srcDir, destDir, ext, label) {
|
|
|
40
40
|
return copied;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* 提取 hook 组的唯一标识(用于去重)
|
|
45
|
+
* 格式:{ matcher: "正则字符串", hooks: [{ type, command/prompt }] }
|
|
46
|
+
*/
|
|
47
|
+
function hookGroupKey(group) {
|
|
48
|
+
if (group.hooks && Array.isArray(group.hooks)) {
|
|
49
|
+
return group.hooks.map(h => h.command || h.prompt).join('|');
|
|
50
|
+
}
|
|
51
|
+
// 兼容旧格式
|
|
52
|
+
return group.command || group.prompt || JSON.stringify(group);
|
|
53
|
+
}
|
|
54
|
+
|
|
43
55
|
/**
|
|
44
56
|
* 智能合并 settings.json — 合并 hooks 数组(去重)
|
|
57
|
+
* 格式:{ matcher: "Write|Edit", hooks: [{ type, command/prompt }] }
|
|
45
58
|
*/
|
|
46
59
|
function mergeSettings(existing, template) {
|
|
47
60
|
const hookTypes = ['PreToolUse', 'PostToolUse', 'Stop', 'PreCompact'];
|
|
@@ -52,10 +65,13 @@ function mergeSettings(existing, template) {
|
|
|
52
65
|
const newHooks = template.hooks?.[type] || [];
|
|
53
66
|
|
|
54
67
|
const merged = [...existingHooks];
|
|
68
|
+
const existingKeys = new Set(existingHooks.map(hookGroupKey));
|
|
69
|
+
|
|
55
70
|
for (const hook of newHooks) {
|
|
56
|
-
const key = hook
|
|
57
|
-
if (!
|
|
71
|
+
const key = hookGroupKey(hook);
|
|
72
|
+
if (!existingKeys.has(key)) {
|
|
58
73
|
merged.push(hook);
|
|
74
|
+
existingKeys.add(key);
|
|
59
75
|
}
|
|
60
76
|
}
|
|
61
77
|
|
package/package.json
CHANGED
|
@@ -3,32 +3,52 @@
|
|
|
3
3
|
"PreToolUse": [
|
|
4
4
|
{
|
|
5
5
|
"matcher": "Write|Edit",
|
|
6
|
-
"
|
|
7
|
-
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "bash .claude/hooks/check-phase-write.sh"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
8
12
|
},
|
|
9
13
|
{
|
|
10
14
|
"matcher": "Bash",
|
|
11
|
-
"
|
|
12
|
-
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "bash .claude/hooks/check-phase-test.sh"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
13
21
|
}
|
|
14
22
|
],
|
|
15
23
|
"PostToolUse": [
|
|
16
24
|
{
|
|
17
25
|
"matcher": "Write|Edit",
|
|
18
|
-
"
|
|
19
|
-
|
|
26
|
+
"hooks": [
|
|
27
|
+
{
|
|
28
|
+
"type": "prompt",
|
|
29
|
+
"prompt": "文件已修改。用 Edit 更新 CLAUDE.md:将文件路径追加到 modified_files(如未记录),更新 last_updated。必须执行,不可跳过。"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
20
32
|
}
|
|
21
33
|
],
|
|
22
34
|
"Stop": [
|
|
23
35
|
{
|
|
24
|
-
"
|
|
25
|
-
|
|
36
|
+
"hooks": [
|
|
37
|
+
{
|
|
38
|
+
"type": "prompt",
|
|
39
|
+
"prompt": "【SDLC 自检】读取 CLAUDE.md 确认 current_phase。检查:(1)本次操作匹配当前阶段?(2)符合 PRD?做了 PRD 外的事立即停止说明。(3)工具在允许列表内?(4)YAML 是否最新?不是则立即用 Edit 更新。(5)P2/P3 阶段:是否已用 Context7 MCP 查阅最新官方文档 + WebSearch 搜索最流行设计?未查阅则先执行调研再继续。【自动驱动】P1/P2 工作完成 → 展示产出物等用户确认,用户确认后自动审查推进;P3/P4/P5 工作完成 → 立即执行 /review 审查 → 通过则更新 current_phase 并开始下一阶段 → 未通过则自动修复重试(review_retry_count+1,≤3次,超过停下报告用户);P6 审查通过 → 输出交付摘要报告。"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
26
42
|
}
|
|
27
43
|
],
|
|
28
44
|
"PreCompact": [
|
|
29
45
|
{
|
|
30
|
-
"
|
|
31
|
-
|
|
46
|
+
"hooks": [
|
|
47
|
+
{
|
|
48
|
+
"type": "prompt",
|
|
49
|
+
"prompt": "【压缩前保存】用 Read 读取 CLAUDE.md YAML 块,用 Edit 确保所有字段最新:current_phase、task_description、prd、modified_files、architecture_decisions、todo_items。特别更新 key_context 为当前工作摘要(在做什么、下一步什么)。不更新则状态丢失。"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
32
52
|
}
|
|
33
53
|
]
|
|
34
54
|
}
|