sdd-full 5.0.4 → 5.0.6

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.
@@ -0,0 +1,104 @@
1
+ 【claude code调用标识:role-roundtable-review】【trae调用标识:role-roundtable-review+角色圆桌评审】【流程场景:需求分析阶段·头脑风暴后】
2
+
3
+ ---
4
+ name: role-roundtable-review
5
+ description: "角色圆桌评审:切换用户视角、产品、交互UX、技术可行性、测试视角进行多维度评审"
6
+ ---
7
+
8
+ # 角色圆桌评审
9
+
10
+ ## 职责定位
11
+
12
+ 本技能是**需求分析阶段的关键评审环节**,在头脑风暴后、需求收口前执行,通过多角色视角切换进行全面评审,确保需求的完整性和可行性。
13
+
14
+ **前置依赖**:brainstorming(头脑风暴)已完成
15
+
16
+ **后置技能**:requirement-completion-officer(需求收口)
17
+
18
+ ---
19
+
20
+ ## 核心流程
21
+
22
+ ```
23
+ 用户视角 → 产品视角 → 交互UX视角 → 技术可行性视角 → 测试视角 → 综合评审结论
24
+ ```
25
+
26
+ ---
27
+
28
+ ## 评审维度
29
+
30
+ ### 1. 用户视角评审
31
+
32
+ **评审要点**:
33
+ - 需求是否真正解决用户痛点?
34
+ - 用户使用场景是否清晰?
35
+ - 用户价值是否明确?
36
+ - 是否符合用户习惯和预期?
37
+
38
+ **输出**:用户价值评估报告
39
+
40
+ ### 2. 产品视角评审
41
+
42
+ **评审要点**:
43
+ - 需求是否符合产品战略方向?
44
+ - 是否与现有产品定位一致?
45
+ - 是否有商业价值?
46
+ - 优先级是否合理?
47
+
48
+ **输出**:产品价值评估报告
49
+
50
+ ### 3. 交互UX视角评审
51
+
52
+ **评审要点**:
53
+ - 用户体验流程是否顺畅?
54
+ - 是否存在交互障碍?
55
+ - 是否符合可用性原则?
56
+ - 是否考虑到不同用户群体?
57
+
58
+ **输出**:UX评估报告
59
+
60
+ ### 4. 技术可行性视角评审
61
+
62
+ **评审要点**:
63
+ - 技术实现难度如何?
64
+ - 是否有技术风险?
65
+ - 技术方案是否成熟?
66
+ - 资源需求评估(时间、人力)
67
+
68
+ **输出**:技术可行性评估报告
69
+
70
+ ### 5. 测试视角评审
71
+
72
+ **评审要点**:
73
+ - 需求是否可测试?
74
+ - 测试覆盖是否完整?
75
+ - 是否有不可测试的需求?
76
+ - 测试数据准备是否充分?
77
+
78
+ **输出**:可测试性评估报告
79
+
80
+ ---
81
+
82
+ ## 评审结论
83
+
84
+ ### 综合评估矩阵
85
+
86
+ | 维度 | 评分(1-5) | 风险等级 | 建议 |
87
+ |------|------------|---------|------|
88
+ | 用户价值 | | | |
89
+ | 产品战略 | | | |
90
+ | UX体验 | | | |
91
+ | 技术可行性 | | | |
92
+ | 可测试性 | | | |
93
+
94
+ ### 决策建议
95
+
96
+ - **通过**:所有维度评分≥3分,进入需求收口阶段
97
+ - **修订后重审**:部分维度需优化,返回修改
98
+ - **暂缓**:风险过高,建议重新评估需求价值
99
+
100
+ ---
101
+
102
+ ## 输出文档
103
+
104
+ - `docs/reviews/role-roundtable-YYYYMMDD.md` - 角色圆桌评审报告
@@ -1,32 +1,43 @@
1
- 【claude code调用标识:sdd】【trae调用标识:sdd+需求拆分】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代】
1
+ 【claude code调用标识:sdd】【trae调用标识:sdd+需求拆分】【流程场景:需求分析阶段核心技能】
2
2
 
3
3
  ---
4
4
  name: sdd
5
- description: 用于将大型需求拆分为用户故事、UI设计、前后端架构边界、数据库/API契约与子代理可用的SDD功能规格,支持个人开发,适配Superpowers/Trae-CN全流程开发。
5
+ description: 需求拆分核心技能,负责将需求拆分为用户故事、前后端架构边界、数据库/API契约,产出子代理可用的SDD功能规格。UI设计请使用ui-sdd,实现设计请使用sdd-code。
6
6
  ---
7
7
 
8
- # SDD 需求拆分(个人开发版)
8
+ # SDD 需求拆分(需求层核心技能)
9
9
 
10
10
  ## 概述
11
11
 
12
- 本技能提供一套**"垂直切片+水平分层"双模式**需求拆分流程,兼顾敏捷快速交付与架构规范,专为个人开发者设计:
12
+ 本技能是**需求分析阶段的核心技能**,负责将模糊的业务需求转化为清晰的用户故事和技术规格:
13
13
 
14
- **大需求 → 第0步:Epic拆分(超大需求适用)→ 第0.5步:拆用户故事 第1步:拆UI设计 第2步:拆前后端分离架构第3步:拆数据库+接口 → 第4步:拆SDD**
14
+ **大需求 → Epic拆分(超大需求适用)→ 用户故事拆分(INVEST原则)→ 前后端架构拆分数据库+接口拆分 → SDD垂直切片**
15
15
 
16
16
  核心目的:
17
- - 既保证**快速交付用户价值**,又确保**技术架构规范**
18
- - 明确前后端**权责边界与协作契约**
19
- - 产出子代理可直接消费的**SDD功能规格**
20
- - 适配Superpowers/Trae-CN的**子代理驱动开发**与**测试驱动开发**工作流
17
+ - 产出符合INVEST原则的用户故事
18
+ - 明确前后端权责边界与协作契约
19
+ - 生成子代理可直接消费的SDD功能规格
20
+
21
+ ---
22
+
23
+ ## 职责边界
24
+
25
+ | 技能 | 职责 | 产出 |
26
+ |------|------|------|
27
+ | sdd | 需求层·业务拆分 | 用户故事、架构边界、接口契约 |
28
+ | ui-sdd | 架构层·UI交互设计 | UI页面/组件/弹窗SDD |
29
+ | sdd-code | 实现层·功能实现设计 | 代码实现SDD |
30
+
31
+ **注意**:本技能不负责详细UI设计和代码实现设计,相关工作请分别调用 **ui-sdd** 和 **sdd-code**。
21
32
 
22
33
  ---
23
34
 
24
35
  ## 何时使用
25
36
 
26
- - 你有一个**大型、模糊、跨模块**的需求/想法,需要结构化拆解
27
- - 项目采用**前后端分离架构**,需要明确技术边界
28
- - 在 **Superpowers / Trae-CN** 中进行**完整全流程开发**
29
- - 需要**敏捷迭代+架构规范**双保障,既快速交付又避免技术债务
37
+ - 需要将大型、模糊、跨模块的需求/想法进行结构化拆解
38
+ - 需要明确前后端技术边界和协作契约
39
+ - 在完整全流程开发中进行需求分析阶段工作
40
+ - 需要为子代理驱动开发准备可执行的SDD规格
30
41
 
31
42
  ---
32
43
 
@@ -1,4 +1,4 @@
1
- 【claude code调用标识:sdd-add】【trae调用标识:sdd-add+临时功能落地】【流程场景:3.小型功能迭代、4.Bug处理】
1
+ 【claude code调用标识:sdd-add】【trae调用标识:sdd-add+临时功能落地】【流程场景:开发执行阶段·个人快速开发】
2
2
 
3
3
  ---
4
4
  name: sdd-add
@@ -7,6 +7,19 @@ description: 个人开发临时新增功能全流程落地:需求澄清→优
7
7
 
8
8
  # 个人开发临时功能全流程落地
9
9
 
10
+ ## 职责定位
11
+
12
+ 本技能是**开发执行阶段的个人快速开发技能**,专注于个人开发者处理临时、小型需求的快速落地流程。
13
+
14
+ | 角色 | 适用场景 | 特点 |
15
+ |------|---------|------|
16
+ | sdd-add | 个人开发、临时需求、小功能 | 快速、自主、轻量 |
17
+ | Change Manager | 团队协作、变更管理、影响分析 | 规范、审批、追踪 |
18
+
19
+ **适用边界**:适用于个人开发者独立完成的小型功能,复杂需求或团队协作场景请使用 Change Manager。
20
+
21
+ ---
22
+
10
23
  ## 概述
11
24
 
12
25
  本技能提供一套完整的**个人开发临时功能处理流程**,确保临时功能不打乱节奏、不埋技术债务,同时兼顾**快速交付**与**架构规范**。
@@ -1,12 +1,26 @@
1
- 【claude code调用标识:sdd-code】【trae调用标识:sdd-code+功能实现SDD拆分】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代、4.Bug处理】
1
+ 【claude code调用标识:sdd-code】【trae调用标识:sdd-code+功能实现SDD拆分】【流程场景:设计规划阶段·实现设计】
2
2
 
3
3
  ---
4
4
  name: "sdd-code"
5
- description: "功能实现逻辑SDD拆分,将用户故事拆分为独立可交付的功能实现SDD,按语言架构特性适配。Invoke when needing to split user stories into implementation-level SDDs after basic SDD split."
5
+ description: "功能实现逻辑SDD拆分,将用户故事和UI设计拆分为独立可交付的功能实现SDD,按语言架构特性适配。Invoke after sdd and ui-sdd are completed."
6
6
  ---
7
7
 
8
8
  # 功能实现逻辑SDD拆分技能
9
9
 
10
+ ## 职责定位
11
+
12
+ 本技能是**设计规划阶段的实现设计核心技能**,负责将sdd产出的用户故事和ui-sdd产出的UI设计转化为可执行的代码实现SDD。
13
+
14
+ | 技能 | 职责 | 产出 |
15
+ |------|------|------|
16
+ | sdd | 需求层·业务拆分 | 用户故事、架构边界 |
17
+ | ui-sdd | 架构层·UI交互设计 | UI页面/组件/弹窗SDD |
18
+ | sdd-code | 实现层·功能实现设计 | 代码实现SDD |
19
+
20
+ **前置依赖**:需先完成sdd需求拆分和ui-sdd设计,再调用本技能。
21
+
22
+ ---
23
+
10
24
  本技能定义「功能实现逻辑SDD拆分」为独立技能,核心解决「功能实现逻辑如何拆分、拆分多少个SDD、不同场景下如何适配」的核心问题,可直接嵌入原有开发流程。
11
25
 
12
26
  ## 核心原则
@@ -341,7 +355,16 @@ description: "功能实现逻辑SDD拆分,将用户故事拆分为独立可交
341
355
  - **sdd-add**:快速迭代补充(如需要)
342
356
  - **子代理开发**:执行SDD开发
343
357
 
344
- ## 7.3 流程关系
358
+ ## 7.3 配套技能
359
+ - **code-split-spec**:代码拆分规范,指导实际代码文件/模块/组件拆分
360
+ - **state-management**:状态管理,处理应用状态管理
361
+ - **data-fetching**:数据获取处理,统一API请求和缓存
362
+ - **component-split**:组件拆分,前端组件化设计
363
+ - **architecture-refactor**:架构重构,如需架构调整时使用
364
+ - **code-review-standard**:代码审查标准,确保代码质量
365
+ - **test-driven-development**:TDD开发,测试驱动开发
366
+
367
+ ## 7.4 流程关系
345
368
  ```
346
- sdd → ui-sdd → sdd-code → sdd-test → 开发
369
+ sdd → ui-sdd → sdd-code → [code-split-spec/component-split/state-management/data-fetching → sdd-test → 开发 → code-review-standard
347
370
  ```
@@ -22,6 +22,9 @@ description: "SDD全流程通用可复用技能集合"
22
22
  - [sdd-deploy](#sdd-deploy) - 部署SDD
23
23
  - [writing-plans](#writing-plans) - 制定计划
24
24
  - [ui-motion-interaction-standard](#ui-motion-interaction-standard) - UI动效交互标准
25
+ - [code-split-spec](#code-split-spec) - 代码拆分规范
26
+ - [component-split](#component-split) - 组件拆分
27
+ - [architecture-refactor](#architecture-refactor) - 架构重构执行
25
28
 
26
29
  ### 开发执行类
27
30
  - [sdd-add](#sdd-add) - 快速迭代
@@ -30,6 +33,8 @@ description: "SDD全流程通用可复用技能集合"
30
33
  - [verification-before-completion](#verification-before-completion) - 完成前验证
31
34
  - [design-to-code](#design-to-code) - 设计转代码
32
35
  - [performance-optimize](#performance-optimize) - 性能优化
36
+ - [state-management](#state-management) - 状态管理
37
+ - [data-fetching](#data-fetching) - 数据获取处理
33
38
 
34
39
  ### Flutter专项类
35
40
  - [flutter-apply-architecture-best-practices](#flutter-apply-architecture-best-practices) - Flutter架构适配
@@ -53,6 +58,7 @@ description: "SDD全流程通用可复用技能集合"
53
58
  - [bug-reproduction-confirm](#bug-reproduction-confirm) - Bug复现确认
54
59
  - [requesting-code-review](#requesting-code-review) - 请求代码审查
55
60
  - [receiving-code-review](#receiving-code-review) - 接收代码审查
61
+ - [code-review-standard](#code-review-standard) - 代码审查标准
56
62
 
57
63
  ### 发布运维类
58
64
  - [finishing-a-development-branch](#finishing-a-development-branch) - 完成开发分支
@@ -376,3 +382,45 @@ description: "SDD全流程通用可复用技能集合"
376
382
  **描述**: 设计契约专家
377
383
  **适用场景**: API设计、接口契约
378
384
  **关键输出**: 契约文档
385
+
386
+ ---
387
+
388
+ ### code-split-spec
389
+ **描述**: 代码拆分规范
390
+ **适用场景**: 代码文件/模块/组件拆分、架构设计
391
+ **关键输出**: 拆分后的代码结构、规范文档
392
+
393
+ ---
394
+
395
+ ### state-management
396
+ **描述**: 状态管理
397
+ **适用场景**: React/Vue/Flutter状态管理方案选择与实现
398
+ **关键输出**: 状态管理代码、状态结构设计
399
+
400
+ ---
401
+
402
+ ### data-fetching
403
+ **描述**: 数据获取处理
404
+ **适用场景**: API请求、缓存策略、错误处理
405
+ **关键输出**: 数据请求封装、缓存实现
406
+
407
+ ---
408
+
409
+ ### component-split
410
+ **描述**: 组件拆分
411
+ **适用场景**: 前端组件化拆分、可复用组件设计
412
+ **关键输出**: 拆分后的组件、组件库
413
+
414
+ ---
415
+
416
+ ### architecture-refactor
417
+ **描述**: 架构重构执行
418
+ **适用场景**: 架构演进、代码重构、遗留系统改造
419
+ **关键输出**: 重构计划、重构后的代码
420
+
421
+ ---
422
+
423
+ ### code-review-standard
424
+ **描述**: 代码审查标准
425
+ **适用场景**: 代码审查、质量把控
426
+ **关键输出**: 审查报告、改进建议
@@ -1,40 +1,33 @@
1
- 【claude code调用标识:sdd-full-flow】【trae调用标识:sdd-full-flow+全流程开发】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代、4.Bug处理、5.代码发布】
1
+ 【claude code调用标识:sdd-full-flow】【trae调用标识:sdd-full-flow+全流程开发】【流程场景:快速启动开发流程】
2
2
 
3
3
  ---
4
4
  name: sdd-full-flow
5
- description: "Use when starting a new project from scratch, performing small feature iterations, handling bugs, or releasing code"
5
+ description: "简化版全流程入口,适合快速启动开发。完整智能调度请使用Orchestrator Agent"
6
6
  ---
7
7
 
8
8
  <TRIGGER-WORDS>
9
- - 从零开始新项目
10
- - 我现在要做新项目
11
- - 新项目启动
12
- - 从零开始
13
- - 创建新项目
14
- - 我现在要做小型功能迭代
15
- - 功能迭代
16
- - 小型迭代
17
- - 快速迭代
18
- - 新增小功能
19
- - 我现在要处理Bug
20
- - 处理Bug
21
- - 修复Bug
22
- - Bug修复
23
- - 调试Bug
24
- - 我现在要发布代码
25
- - 发布代码
26
- - 代码发布
27
- - 部署上线
28
- - 发布上线
29
9
  - 启动开发流程
30
10
  - 开始开发
11
+ - 快速开始
12
+ - 快速启动
31
13
  </TRIGGER-WORDS>
32
14
 
33
15
  <SUBAGENT-STOP>
34
16
  如果您被派作为子代理执行特定任务,请跳过此技能。
35
17
  </SUBAGENT-STOP>
36
18
 
37
- # SDD全流程开发
19
+ # SDD全流程开发(简化版入口)
20
+
21
+ ## 📌 定位说明
22
+
23
+ 本技能是**简化版流程入口**,适合快速启动开发。对于复杂项目或需要智能调度的场景,请使用 **Orchestrator Agent**。
24
+
25
+ | 入口类型 | 适用场景 | 特点 |
26
+ |---------|---------|------|
27
+ | sdd-full-flow | 快速启动、简单项目 | 直接进入流程选择 |
28
+ | Orchestrator | 复杂项目、智能调度 | 意图识别、智能路由 |
29
+
30
+ ---
38
31
 
39
32
  ## 🎯 流程选项
40
33
 
@@ -1,12 +1,26 @@
1
- 【claude code调用标识:sdd-test】【trae调用标识:sdd-test+测试SDD拆分】【流程场景:1.完整3阶段SDD流程、3.小型功能迭代、4.Bug处理】
1
+ 【claude code调用标识:sdd-test】【trae调用标识:sdd-test+测试SDD拆分】【流程场景:设计规划阶段·测试设计】
2
2
 
3
3
  ---
4
4
  name: "sdd-test"
5
- description: "测试SDD拆分技能,将用户故事拆分为可执行的测试SDD。Invoke when you need to create test SDDs after sdd-code is complete."
5
+ description: "测试SDD拆分技能,将用户故事拆分为可执行的测试SDD。Invoke after sdd-code is complete."
6
6
  ---
7
7
 
8
8
  # sdd-test - 测试SDD拆分技能
9
9
 
10
+ ## 职责定位
11
+
12
+ 本技能是**设计规划阶段的测试设计核心技能**,负责将用户故事和功能实现SDD转化为完整的测试设计方案。
13
+
14
+ | 技能 | 职责 | 产出 |
15
+ |------|------|------|
16
+ | sdd-code | 实现层·功能实现设计 | 代码实现SDD |
17
+ | sdd-test | 测试层·测试设计 | 测试用例、测试SDD |
18
+ | QA Agent | 执行层·测试执行 | 测试执行、质量报告 |
19
+
20
+ **前置依赖**:需先完成sdd-code实现设计,再调用本技能。
21
+
22
+ ---
23
+
10
24
  ## 概述
11
25
 
12
26
  本技能专注于将用户故事拆分为完整的测试SDD,覆盖单元测试、集成测试、E2E测试、性能测试、安全测试等多种测试类型。
@@ -19,7 +33,8 @@ description: "测试SDD拆分技能,将用户故事拆分为可执行的测试
19
33
  - **sdd-code** - 功能实现SDD已完成
20
34
 
21
35
  ### 后置技能
22
- - 子代理执行测试
36
+ - **test-driven-development** - 执行测试开发
37
+ - **QA Agent** - 执行测试和质量审查
23
38
 
24
39
  ---
25
40
 
@@ -0,0 +1,260 @@
1
+ ---
2
+ name: state-management
3
+ description: 状态管理技能 - 提供 React/Vue/Flutter 状态管理最佳实践和方案选择指导
4
+ ---
5
+
6
+ # state-management - 状态管理技能
7
+
8
+ ## 概述
9
+
10
+ 提供状态管理的统一规范和最佳实践,帮助选择合适的状态管理方案,指导状态拆分、存储和更新。
11
+
12
+ **核心原则:最小化状态、单一数据源、单向数据流**
13
+
14
+ ---
15
+
16
+ ## 1. 状态管理方案选择
17
+
18
+ ### 1.1 方案选型决策树
19
+
20
+ ```
21
+ 项目规模小/状态简单?
22
+ ├─ 是 → 使用框架原生状态(React useState/Vue data/Flutter State)
23
+ └─ 否 → 需要共享状态?
24
+ ├─ 否 → 组件内状态
25
+ └─ 是 → 共享范围?
26
+ ├─ 局部(几个组件)→ Context/Provider/InheritedWidget
27
+ └─ 全局/复杂 → Redux/Zustand/Pinia/MobX/Bloc/Riverpod
28
+ ```
29
+
30
+ ### 1.2 各场景推荐方案
31
+
32
+ | 场景 | React | Vue | Flutter |
33
+ |-----|-------|-----|---------|
34
+ | 小项目/简单状态 | useState | data/setup | State |
35
+ | 父子组件共享 | Context + useReducer | Provide/Inject | InheritedWidget |
36
+ | 中等项目 | Zustand/Jotai | Pinia | Provider |
37
+ | 大项目/复杂流 | Redux Toolkit | Pinia + Vuex(legacy) | Bloc/Riverpod |
38
+
39
+ ---
40
+
41
+ ## 2. 状态拆分原则
42
+
43
+ ### 2.1 按生命周期拆分
44
+
45
+ ```
46
+ 1. 临时状态(UI状态):表单输入、弹窗开关、加载状态 → 组件内
47
+ 2. 持久状态:用户偏好、主题设置 → LocalStorage/SharedPreferences
48
+ 3. 服务端状态:API数据 → 缓存层(React Query/SWR)
49
+ 4. URL状态:路由参数、查询字符串 → URL
50
+ ```
51
+
52
+ ### 2.2 按作用域拆分
53
+
54
+ ```
55
+ 全局状态:App主题、用户登录状态、权限
56
+
57
+ 模块状态:购物车、当前订单
58
+
59
+ 页面状态:列表筛选、分页
60
+
61
+ 组件状态:表单输入、动画进度
62
+ ```
63
+
64
+ ### 2.3 状态最小化原则
65
+
66
+ - **不要存储可计算的数据**:从其他状态派生
67
+ - **不要存储UI组件引用**:使用回调/事件
68
+ - **保持状态扁平化**:避免深层嵌套
69
+
70
+ ```typescript
71
+ // Bad: 存储派生数据
72
+ const state = {
73
+ items: [...],
74
+ itemCount: 5, // 可从 items.length 计算
75
+ filteredItems: [...] // 可从 items 过滤
76
+ };
77
+
78
+ // Good: 只存储源数据
79
+ const state = {
80
+ items: [...]
81
+ };
82
+ // 使用选择器获取派生数据
83
+ const getItemCount = (state) => state.items.length;
84
+ ```
85
+
86
+ ---
87
+
88
+ ## 3. React 状态管理
89
+
90
+ ### 3.1 Zustand 实践(推荐)
91
+
92
+ ```typescript
93
+ // store/useUserStore.ts
94
+ import { create } from 'zustand';
95
+
96
+ interface UserState {
97
+ user: User | null;
98
+ isLoading: boolean;
99
+ error: string | null;
100
+ setUser: (user: User) => void;
101
+ logout: () => void;
102
+ fetchUser: (id: string) => Promise<void>;
103
+ }
104
+
105
+ export const useUserStore = create<UserState>((set, get) => ({
106
+ user: null,
107
+ isLoading: false,
108
+ error: null,
109
+
110
+ setUser: (user) => set({ user }),
111
+
112
+ logout: () => set({ user: null }),
113
+
114
+ fetchUser: async (id) => {
115
+ set({ isLoading: true, error: null });
116
+ try {
117
+ const user = await api.getUser(id);
118
+ set({ user, isLoading: false });
119
+ } catch (error) {
120
+ set({ error: error.message, isLoading: false });
121
+ }
122
+ }
123
+ }));
124
+ ```
125
+
126
+ ### 3.2 状态拆分示例
127
+
128
+ ```
129
+ src/stores/
130
+ ├── useUserStore.ts # 用户相关
131
+ ├── useCartStore.ts # 购物车
132
+ ├── useThemeStore.ts # 主题
133
+ └── useNotificationStore.ts # 通知
134
+ ```
135
+
136
+ ---
137
+
138
+ ## 4. Vue 状态管理
139
+
140
+ ### 4.1 Pinia 实践(推荐)
141
+
142
+ ```typescript
143
+ // stores/user.ts
144
+ import { defineStore } from 'pinia';
145
+ import { ref, computed } from 'vue';
146
+
147
+ export const useUserStore = defineStore('user', () => {
148
+ // State
149
+ const user = ref<User | null>(null);
150
+ const isLoading = ref(false);
151
+ const error = ref<string | null>(null);
152
+
153
+ // Getters
154
+ const isLoggedIn = computed(() => !!user.value);
155
+ const userName = computed(() => user.value?.name || '');
156
+
157
+ // Actions
158
+ async function fetchUser(id: string) {
159
+ isLoading.value = true;
160
+ error.value = null;
161
+ try {
162
+ user.value = await api.getUser(id);
163
+ } catch (err) {
164
+ error.value = err.message;
165
+ } finally {
166
+ isLoading.value = false;
167
+ }
168
+ }
169
+
170
+ function logout() {
171
+ user.value = null;
172
+ }
173
+
174
+ return { user, isLoading, error, isLoggedIn, userName, fetchUser, logout };
175
+ });
176
+ ```
177
+
178
+ ---
179
+
180
+ ## 5. Flutter 状态管理
181
+
182
+ ### 5.1 Provider 实践(推荐入门)
183
+
184
+ ```dart
185
+ // providers/user_provider.dart
186
+ class UserProvider with ChangeNotifier {
187
+ User? _user;
188
+ bool _isLoading = false;
189
+ String? _error;
190
+
191
+ User? get user => _user;
192
+ bool get isLoading => _isLoading;
193
+ String? get error => _error;
194
+ bool get isLoggedIn => _user != null;
195
+
196
+ Future<void> fetchUser(String id) async {
197
+ _isLoading = true;
198
+ _error = null;
199
+ notifyListeners();
200
+
201
+ try {
202
+ _user = await api.getUser(id);
203
+ } catch (e) {
204
+ _error = e.toString();
205
+ } finally {
206
+ _isLoading = false;
207
+ notifyListeners();
208
+ }
209
+ }
210
+
211
+ void logout() {
212
+ _user = null;
213
+ notifyListeners();
214
+ }
215
+ }
216
+ ```
217
+
218
+ ### 5.2 Riverpod 实践(推荐进阶)
219
+
220
+ ```dart
221
+ // providers/user_provider.dart
222
+ @riverpod
223
+ class UserNotifier extends _$UserNotifier {
224
+ @override
225
+ FutureOr<User?> build() {
226
+ return null; // 初始状态
227
+ }
228
+
229
+ Future<void> fetchUser(String id) async {
230
+ state = const AsyncLoading();
231
+ try {
232
+ final user = await api.getUser(id);
233
+ state = AsyncData(user);
234
+ } catch (e, stackTrace) {
235
+ state = AsyncError(e, stackTrace);
236
+ }
237
+ }
238
+
239
+ void logout() {
240
+ state = const AsyncData(null);
241
+ }
242
+ }
243
+ ```
244
+
245
+ ---
246
+
247
+ ## 6. 状态管理检查清单
248
+
249
+ - [ ] 状态按生命周期和作用域正确拆分
250
+ - [ ] 没有存储可计算的派生数据
251
+ - [ ] 状态结构扁平化,避免深层嵌套
252
+ - [ ] 异步操作有 loading/error 状态
253
+ - [ ] 使用选择器(Selectors)优化渲染
254
+ - [ ] 状态更新通过统一的 actions/mutations
255
+ - [ ] 持久化状态有明确的持久化策略
256
+
257
+ ## 与其他技能的衔接
258
+
259
+ - **配合**:code-split-spec、data-fetching
260
+ - **参考**:sdd-code、test-driven-development
@@ -1,9 +1,23 @@
1
- 【claude code调用标识:ui-sdd】【trae调用标识:ui-sdd+UI交互SDD】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目】
1
+ 【claude code调用标识:ui-sdd】【trae调用标识:ui-sdd+UI交互SDD】【流程场景:设计规划阶段·UI设计】
2
2
 
3
3
  # UI-SDD 完整整合版:App全域全景骨架 + 标准模板
4
4
 
5
5
  ---
6
6
 
7
+ ## 职责定位
8
+
9
+ 本技能是**设计规划阶段的UI设计核心技能**,负责将sdd产出的用户故事转化为完整的UI交互设计。
10
+
11
+ | 技能 | 职责 | 产出 |
12
+ |------|------|------|
13
+ | sdd | 需求层·业务拆分 | 用户故事、架构边界 |
14
+ | ui-sdd | 架构层·UI交互设计 | UI页面/组件/弹窗SDD |
15
+ | sdd-code | 实现层·功能实现设计 | 代码实现SDD |
16
+
17
+ **前置依赖**:需先完成sdd需求拆分,产出用户故事后再调用本技能。
18
+
19
+ ---
20
+
7
21
  ## 第一部分:App全域全景骨架(项目启动第一步)
8
22
 
9
23
  ### 核心定义