claude-sdlc 1.4.1 → 1.4.3

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": "claude-sdlc",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "让 Claude Code 严格按 SDLC 规范开发 — 一条命令安装",
5
5
  "bin": {
6
6
  "claude-sdlc": "./bin/cli.js"
@@ -23,6 +23,6 @@ WARNINGS=""
23
23
  [ -z "$KC" ] && WARNINGS="key_context 为空!"
24
24
  [ "${HAS_LU:-0}" -eq 0 ] && WARNINGS="${WARNINGS} last_updated 未设置。"
25
25
 
26
- CONTEXT="[SDLC 压缩前紧急保存] 上下文即将被压缩!阶段=${PHASE},任务=${TASK},PRD ${PRD_COUNT:-0}条,已修改${FILES_COUNT:-0}个文件。${WARNINGS}请立即用 Edit 更新 project-state.md:(1) 确认 modified_files 列表完整 (2) 将当前工作摘要写入 key_context (3) 更新 last_updated。压缩后早期对话将丢失,这是最后保存机会。"
26
+ CONTEXT="[SDLC 压缩前紧急保存] 上下文即将被压缩!阶段=${PHASE},任务=${TASK},PRD ${PRD_COUNT:-0}条,已修改${FILES_COUNT:-0}个文件。${WARNINGS}请立即用 Edit 更新 project-state.md:(1) 确认 modified_files 列表完整 (2) 将当前工作摘要写入 key_context (3) 更新 last_updated (4) 确认 project_roadmap 和 global_architecture 已记录(如有长期规划)。压缩后早期对话将丢失,这是最后保存机会。"
27
27
 
28
28
  printf '{"hookSpecificOutput":{"hookEventName":"PreCompact","additionalContext":"%s"}}' "$CONTEXT"
@@ -20,22 +20,30 @@ eval "$(awk '
20
20
  /^task_description:/ { sub(/^task_description:[[:space:]]*"?/,""); sub(/"$/,""); task=$0 }
21
21
  /^modified_files:/,/^[a-z]/ { if(/^\s*-\s/) fc++ }
22
22
  /^key_context:/ { sub(/^key_context:[[:space:]]*"?/,""); sub(/"$/,""); kc=$0 }
23
+ /^project_roadmap:/ { sub(/^project_roadmap:[[:space:]]*"?/,""); sub(/"$/,""); rm=$0 }
24
+ /^completed_tasks:/,/^[a-z]/ { if(/^\s*-\s*task:/) ct++ }
23
25
  END {
24
26
  gsub(/["\\]/,"",task)
25
27
  gsub(/["\\]/,"",kc)
26
- printf "PHASE=%s\nTASK=%s\nFILES_COUNT=%d\nKEY_CTX=%s\n", phase, task, fc, kc
28
+ gsub(/["\\]/,"",rm)
29
+ printf "PHASE=%s\nTASK=%s\nFILES_COUNT=%d\nKEY_CTX=%s\nROADMAP=%s\nCOMPLETED=%d\n", phase, task, fc, kc, rm, ct
27
30
  }
28
31
  ' "$STATE_FILE" 2>/dev/null)"
29
32
 
33
+ # 构建持久化上下文提示
34
+ PERSIST=""
35
+ [ -n "$ROADMAP" ] && PERSIST="有长期规划(project_roadmap),"
36
+ [ "${COMPLETED:-0}" -gt 0 ] && PERSIST="${PERSIST}已完成${COMPLETED}个任务,"
37
+
30
38
  # 构建上下文信息(根据 source 定制)
31
39
  if [ "$PHASE" = "P0" ] || [ -z "$PHASE" ]; then
32
- CONTEXT="SDLC 状态:P0(等待新任务)。用户提出开发请求后自动进入 P1"
40
+ CONTEXT="SDLC 状态:P0(等待新任务)。${PERSIST}用户提出开发请求后自动进入 P1。请先 Read .claude/project-state.md 了解已有规划和历史。"
33
41
  elif [ "$SOURCE" = "compact" ]; then
34
- CONTEXT="SDLC 压缩恢复:阶段=${PHASE},任务=${TASK},已修改${FILES_COUNT:-0}个文件。关键上下文=${KEY_CTX}。请用 Read 读取 .claude/project-state.md 获取完整状态,然后继续工作。注意:压缩前的对话已丢失,依赖 project-state.md 恢复。"
42
+ CONTEXT="SDLC 压缩恢复:阶段=${PHASE},任务=${TASK},已修改${FILES_COUNT:-0}个文件。${PERSIST}关键上下文=${KEY_CTX}。请用 Read 读取 .claude/project-state.md 获取完整状态(特别是 project_roadmap 和 completed_tasks),然后继续工作。注意:压缩前的对话已丢失,依赖 project-state.md 恢复。"
35
43
  elif [ "$SOURCE" = "resume" ]; then
36
- CONTEXT="SDLC 会话恢复:阶段=${PHASE},任务=${TASK},已修改${FILES_COUNT:-0}个文件。请用 Read 读取 .claude/project-state.md 确认状态后继续工作。"
44
+ CONTEXT="SDLC 会话恢复:阶段=${PHASE},任务=${TASK},已修改${FILES_COUNT:-0}个文件。${PERSIST}请用 Read 读取 .claude/project-state.md 确认状态后继续工作。"
37
45
  else
38
- CONTEXT="SDLC 状态恢复:阶段=${PHASE},任务=${TASK},已修改${FILES_COUNT:-0}个文件。请用 Read 读取 .claude/project-state.md 获取完整状态,然后继续工作。"
46
+ CONTEXT="SDLC 状态恢复:阶段=${PHASE},任务=${TASK},已修改${FILES_COUNT:-0}个文件。${PERSIST}请用 Read 读取 .claude/project-state.md 获取完整状态,然后继续工作。"
39
47
  fi
40
48
 
41
49
  # 通过 $CLAUDE_ENV_FILE 导出环境变量(仅 SessionStart 支持)
@@ -5,7 +5,12 @@
5
5
  > 升级 claude-sdlc 时本文件不会被覆盖。
6
6
 
7
7
  ```yaml
8
- # === SDLC 项目状态 ===
8
+ # === 项目级别(跨任务持久化,任务重置时 ⚠️ 绝不清除) ===
9
+ project_roadmap: "" # 长期规划/里程碑/多阶段计划,任务重置时必须保留
10
+ completed_tasks: [] # 已完成任务归档(每条含 task/prd_summary/architecture/files)
11
+ global_architecture: [] # 跨任务的全局架构决策(技术选型、目录结构等)
12
+
13
+ # === 当前任务(任务重置时清除并归档到 completed_tasks) ===
9
14
  current_phase: P0 # P0=未开始, P1=需求, P2=设计, P3=编码, P4=测试, P5=审查, P6=部署
10
15
  task_description: ""
11
16
  started_at: ""
@@ -29,14 +34,30 @@ key_context: "" # compaction 后恢复用
29
34
 
30
35
  | 事件 | 更新字段 |
31
36
  |------|---------|
32
- | 新任务 | `current_phase`→P1, `task_description`, `started_at` |
37
+ | 新任务 | **归档旧任务到 `completed_tasks`** → 重置当前任务字段 → `current_phase`→P1, `task_description`, `started_at`。**`project_roadmap`/`completed_tasks`/`global_architecture` 绝不重置** |
33
38
  | PRD 确认 | `prd`(编号化需求列表,此后为唯一依据) |
34
39
  | 阶段推进 | `current_phase`, `phase_history`, `review_retry_count`→0, `last_updated` |
35
40
  | 文件修改 | `modified_files`(追加路径), `last_updated` |
36
- | 架构决策 | `architecture_decisions`, `last_updated` |
41
+ | 架构决策 | `architecture_decisions`(当前任务)+ 通用决策同步到 `global_architecture`, `last_updated` |
42
+ | 长期规划 | `project_roadmap`(用户确认的里程碑/多阶段计划) |
37
43
  | 审查重试 | `review_retry_count`+1, `last_updated` |
38
44
  | 即将压缩 | 所有字段确认最新, `key_context`(写入当前工作摘要) |
39
45
 
46
+ ### 任务重置规则(关键)
47
+
48
+ 新任务开始时:
49
+
50
+ 1. **归档**:将当前任务摘要写入 `completed_tasks`:
51
+ ```yaml
52
+ - task: "旧任务描述"
53
+ prd_summary: "R1:xx, R2:xx"
54
+ key_decisions: "关键架构决策"
55
+ files: ["file1.ts", "file2.ts"]
56
+ completed_at: "2024-01-01"
57
+ ```
58
+ 2. **重置**:清空 `current_phase`/`task_description`/`prd`/`architecture_decisions`/`modified_files`/`todo_items`/`review_retry_count`/`phase_history`/`key_context`
59
+ 3. **保留**:`project_roadmap`、`completed_tasks`、`global_architecture` **绝不清除**
60
+
40
61
  # Compact Instructions
41
62
 
42
- 压缩时必须保留:(1) 本文件路径和存在性 (2) 上方 YAML 块完整内容 (3) 当前阶段和任务 (4) 已修改文件列表 (5) 架构决策 (6) 用户最近指令。恢复后:P1/P2 等待用户确认继续,P3-P6 自动恢复自动驱动继续完成。
63
+ 压缩时必须保留:(1) 本文件路径和存在性 (2) 上方 YAML 块完整内容(含项目级别和当前任务两部分) (3) project_roadmap 和 completed_tasks 和 global_architecture (4) 当前阶段和任务 (5) 已修改文件列表 (6) 用户最近指令。恢复后:P1/P2 等待用户确认继续,P3-P6 自动恢复自动驱动继续完成。
@@ -7,11 +7,13 @@
7
7
  ## P1 — 需求分析
8
8
 
9
9
  ### 阶段活动
10
+ - **检查 `project_roadmap` 和 `completed_tasks`** — 了解长期规划和已完成的工作,确保新任务与整体规划一致
10
11
  - 理解用户需求,逐条澄清,消除模糊点
11
- - 分析现有代码库(Read, Glob, Grep
12
+ - 分析现有代码库(Read, Glob, Grep),参考 `global_architecture` 中的全局架构决策
12
13
  - 识别技术约束、依赖关系和影响范围
13
14
  - 搜索相关文档和最佳实践(WebSearch, WebFetch)
14
15
  - **整理编号化 PRD 需求清单,提交给用户确认**
16
+ - 如用户提供了多阶段计划,写入 `project_roadmap`
15
17
 
16
18
  ### 必需产出物
17
19
  - PRD(每条需求有编号 R1/R2...、验收标准、范围排除项)
@@ -38,23 +40,30 @@
38
40
  **需用户确认** — 确认后自动审查推进到 P3 并启动自动驱动。
39
41
 
40
42
  ### 阶段活动
41
- - **【必须首先执行】最新技术调研**:Context7 MCP 查询最新文档 + WebSearch 搜索最流行架构方案 + UI/UX 趋势
43
+ - **【必须首先执行】最新技术调研**:Context7 MCP 查询最新文档 + WebSearch 搜索最流行架构方案
44
+ - **【涉及 UI 时必须执行】现代 UI 设计调研**:
45
+ 1. WebSearch 搜索 `"{框架名} modern UI design {当前年份}"` `"best {框架名} UI component library {当前年份}"` `"UI design trends {当前年份}"`
46
+ 2. 调研主流 UI 组件库(如 shadcn/ui、Radix、Ant Design 5、Material Design 3、Tailwind UI 等)的最新设计语言
47
+ 3. 参考成功产品的 UI 设计模式(圆角、渐变、玻璃态、微动画、暗色模式等现代元素)
48
+ 4. 确定配色方案、字体层级、间距系统、响应式断点
49
+ 5. **禁止使用过时/简陋的 UI 风格**(如无样式 HTML、Bootstrap 3 默认主题、90 年代表格布局)
42
50
  - 逐条对照 PRD 设计架构方案
43
51
  - 确定技术选型(基于最新文档,非过时记忆)
44
- - 原型设计(如涉及 UI):页面布局、组件结构、交互流程、视觉风格
52
+ - 原型设计(如涉及 UI):页面布局、组件结构、交互流程、视觉风格、动效方案
45
53
  - 设计数据模型和接口,制定文件修改计划
46
54
  - **为每条 PRD 需求标注对应的设计模块**
47
55
 
48
56
  ### 必需产出物
49
57
  - 技术调研记录 + 架构设计方案(引用最新文档)
50
58
  - PRD→设计映射表 + 文件修改清单
51
- - 原型设计(如涉及 UI)+ 实现步骤分解
59
+ - **UI 设计方案**(如涉及 UI):组件库选型 + 配色方案 + 布局结构 + 交互细节 + 参考来源链接
60
+ - 实现步骤分解
52
61
 
53
62
  ### 审查清单(`/review`)
54
63
  - [ ] **最新文档已查阅**(Context7 + WebSearch)
55
64
  - [ ] **PRD 全覆盖**(逐条对照)+ **无超出 PRD 的设计**
56
65
  - [ ] 架构合理(符合社区最佳实践,无过度设计)
57
- - [ ] 原型设计完整(如涉及 UI
66
+ - [ ] **UI 现代化**(如涉及 UI)— 使用当前主流组件库/设计语言,有参考来源,无过时风格
58
67
  - [ ] 接口清晰 + 错误处理已考虑 + 可测试
59
68
  - [ ] 技术选型有据(引用最新文档)
60
69
 
@@ -12,7 +12,7 @@
12
12
  | 长对话漂移 | 渐忘规范 | UserPromptSubmit 每次注入 + Stop 回复后自检 |
13
13
  | Context Compaction | 早期对话丢失 | PreCompact 保存状态 → SessionStart 恢复注入 |
14
14
  | 用户催促跳过 | 放弃规范 | Hooks 硬拦截 + Permissions 声明式 deny |
15
- | 新任务覆盖 | 状态残留 | 新任务检测自动重置 |
15
+ | 新任务覆盖 | 长期规划丢失 | 归档到 completed_tasks 仅重置任务字段 → project_roadmap/completed_tasks/global_architecture 永不重置 |
16
16
  | Claude 自行跳过 | 认为不需要流程 | CLAUDE.md 明确要求 |
17
17
  | 子 Agent 脱离 | 不知 SDLC 上下文 | SubagentStart hook 注入阶段+PRD+工具限制 |
18
18
  | 子任务不合规 | 代码不符 PRD | TaskCompleted hook 提醒验证 |
@@ -71,7 +71,7 @@
71
71
  | 用户要求跳过流程 | 说明风险 → 用户确认 → 记录 phase_history → 强制推进 |
72
72
  | 审查未通过 | 自动修复重试(最多3次)→ 仍失败则停下请求用户帮助 |
73
73
  | 多次审查失败 | 停止自动驱动 → 报告问题 → 等待用户指导 |
74
- | 新任务 | 归档旧任务重置状态 → 新 P1 |
74
+ | 新任务 | 归档旧任务到 `completed_tasks` 仅重置任务字段保留 `project_roadmap`/`completed_tasks`/`global_architecture` → 新 P1 参考已有规划 |
75
75
 
76
76
  ---
77
77
 
@@ -84,7 +84,7 @@
84
84
  4. 【状态】project-state.md 最新吗?
85
85
 
86
86
  **深度自检(阶段转换 / compaction 后 / /status 时)**:
87
- Read project-state.md → 逐项确认 phase/task/modified_files/architecture_decisions/todo_items/phase_history → 有异常向用户报告。
87
+ Read project-state.md → 逐项确认 phase/task/modified_files/architecture_decisions/todo_items/phase_history/**project_roadmap**/**completed_tasks**/**global_architecture** → 有异常向用户报告。
88
88
 
89
89
  **疑问时**:不猜测,Read `.claude/project-state.md`。
90
90
 
@@ -83,11 +83,11 @@ Review 是每个阶段的退出门禁。每个阶段必须检查 PRD 符合性
83
83
  - [ ] **最新文档已查阅**(Context7 + WebSearch)
84
84
  - [ ] **PRD 全覆盖** + **无超出 PRD 的设计**
85
85
  - [ ] 架构合理(符合最佳实践,无过度设计)+ 与现有架构一致
86
- - [ ] 原型设计完整(如涉及 UI
86
+ - [ ] **UI 现代化**(如涉及 UI)— 已搜索当年 UI 设计趋势 + 使用主流组件库/设计语言 + 有参考来源链接 + 无过时/简陋风格
87
87
  - [ ] 接口清晰 + 错误处理已考虑 + 可测试
88
88
  - [ ] 技术选型有据(引用最新文档)
89
89
 
90
- 输出格式参照 P1 模板,增加技术调研、UI/UX 调研、PRD→设计映射等审查项。
90
+ 输出格式参照 P1 模板,增加技术调研、**UI 设计调研(组件库选型+配色+布局+参考来源)**、PRD→设计映射等审查项。
91
91
 
92
92
  ---
93
93
 
@@ -15,18 +15,21 @@
15
15
  - **严格按 PRD 开发**:每行代码对应 PRD 哪条需求?答不上来就不写。禁止增减 PRD 外内容
16
16
  - **六阶段顺序执行**:P1需求→P2设计→P3编码→P4测试→P5审查→P6交付,每阶段须 `/review` 通过才可推进
17
17
  - **自动驱动**:P1/P2 需用户确认,P3-P6 全自动。审查未通过自动修复(最多3次)
18
- - **任务自动识别**:用户说"实现/修复/重构..." → 自动进入 P1。旧任务完成后新请求 → 归档+重置+新 P1
18
+ - **任务自动识别**:用户说"实现/修复/重构..." → 自动进入 P1。旧任务完成后新请求 → 归档到 `completed_tasks` + 重置任务字段 + 新 P1。**`project_roadmap`/`completed_tasks`/`global_architecture` 永不重置**
19
19
 
20
20
  ## P2/P3 必须先调研
21
21
 
22
22
  设计/编码前用 Context7 MCP 查最新文档 + WebSearch 查最新方案。禁止凭过时记忆编码。
23
23
 
24
+ **P2 涉及 UI 时必须**:WebSearch 搜索当前最流行的 UI 设计趋势、组件库、配色方案。UI 必须现代化,禁止过时/简陋的设计风格。
25
+
24
26
  ## 每次回复前自检
25
27
 
26
28
  1. `current_phase` 是什么?
27
29
  2. 要做的事对应 PRD 哪条?
28
30
  3. 操作在当前阶段允许吗?
29
31
  4. `.claude/project-state.md` 更新了吗?
32
+ 5. 有 `project_roadmap` 吗?当前任务在整体规划中的位置?
30
33
 
31
34
  有疑问 → Read `.claude/project-state.md`,不依赖记忆。
32
35