@mison/ag-kit-cn 2.0.1

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 (237) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  28. package/.agent/ARCHITECTURE.md +285 -0
  29. package/.agent/agents/backend-specialist.md +268 -0
  30. package/.agent/agents/code-archaeologist.md +106 -0
  31. package/.agent/agents/database-architect.md +225 -0
  32. package/.agent/agents/debugger.md +225 -0
  33. package/.agent/agents/devops-engineer.md +242 -0
  34. package/.agent/agents/documentation-writer.md +104 -0
  35. package/.agent/agents/explorer-agent.md +73 -0
  36. package/.agent/agents/frontend-specialist.md +618 -0
  37. package/.agent/agents/game-developer.md +162 -0
  38. package/.agent/agents/mobile-developer.md +382 -0
  39. package/.agent/agents/orchestrator.md +438 -0
  40. package/.agent/agents/penetration-tester.md +188 -0
  41. package/.agent/agents/performance-optimizer.md +187 -0
  42. package/.agent/agents/product-manager.md +112 -0
  43. package/.agent/agents/product-owner.md +95 -0
  44. package/.agent/agents/project-planner.md +405 -0
  45. package/.agent/agents/qa-automation-engineer.md +103 -0
  46. package/.agent/agents/security-auditor.md +170 -0
  47. package/.agent/agents/seo-specialist.md +111 -0
  48. package/.agent/agents/test-engineer.md +158 -0
  49. package/.agent/mcp_config.json +12 -0
  50. package/.agent/rules/GEMINI.md +273 -0
  51. package/.agent/scripts/auto_preview.py +148 -0
  52. package/.agent/scripts/checklist.py +217 -0
  53. package/.agent/scripts/session_manager.py +120 -0
  54. package/.agent/scripts/verify_all.py +327 -0
  55. package/.agent/skills/api-patterns/SKILL.md +84 -0
  56. package/.agent/skills/api-patterns/api-style.md +42 -0
  57. package/.agent/skills/api-patterns/auth.md +24 -0
  58. package/.agent/skills/api-patterns/documentation.md +26 -0
  59. package/.agent/skills/api-patterns/graphql.md +41 -0
  60. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  61. package/.agent/skills/api-patterns/response.md +37 -0
  62. package/.agent/skills/api-patterns/rest.md +40 -0
  63. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  64. package/.agent/skills/api-patterns/security-testing.md +122 -0
  65. package/.agent/skills/api-patterns/trpc.md +41 -0
  66. package/.agent/skills/api-patterns/versioning.md +22 -0
  67. package/.agent/skills/app-builder/SKILL.md +75 -0
  68. package/.agent/skills/app-builder/agent-coordination.md +74 -0
  69. package/.agent/skills/app-builder/feature-building.md +53 -0
  70. package/.agent/skills/app-builder/project-detection.md +34 -0
  71. package/.agent/skills/app-builder/scaffolding.md +118 -0
  72. package/.agent/skills/app-builder/tech-stack.md +40 -0
  73. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  74. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  75. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  76. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  77. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  78. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  79. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  80. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  81. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  82. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  83. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  84. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  85. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  86. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  87. package/.agent/skills/architecture/SKILL.md +57 -0
  88. package/.agent/skills/architecture/context-discovery.md +43 -0
  89. package/.agent/skills/architecture/examples.md +94 -0
  90. package/.agent/skills/architecture/pattern-selection.md +68 -0
  91. package/.agent/skills/architecture/patterns-reference.md +50 -0
  92. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  93. package/.agent/skills/bash-linux/SKILL.md +201 -0
  94. package/.agent/skills/behavioral-modes/SKILL.md +264 -0
  95. package/.agent/skills/brainstorming/SKILL.md +164 -0
  96. package/.agent/skills/brainstorming/dynamic-questioning.md +359 -0
  97. package/.agent/skills/clean-code/SKILL.md +200 -0
  98. package/.agent/skills/code-review-checklist/SKILL.md +125 -0
  99. package/.agent/skills/database-design/SKILL.md +54 -0
  100. package/.agent/skills/database-design/database-selection.md +43 -0
  101. package/.agent/skills/database-design/indexing.md +39 -0
  102. package/.agent/skills/database-design/migrations.md +50 -0
  103. package/.agent/skills/database-design/optimization.md +36 -0
  104. package/.agent/skills/database-design/orm-selection.md +30 -0
  105. package/.agent/skills/database-design/schema-design.md +56 -0
  106. package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  107. package/.agent/skills/deployment-procedures/SKILL.md +241 -0
  108. package/.agent/skills/doc.md +177 -0
  109. package/.agent/skills/documentation-templates/SKILL.md +194 -0
  110. package/.agent/skills/frontend-design/SKILL.md +418 -0
  111. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  112. package/.agent/skills/frontend-design/color-system.md +307 -0
  113. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  114. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  115. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  116. package/.agent/skills/frontend-design/scripts/ux_audit.py +727 -0
  117. package/.agent/skills/frontend-design/typography-system.md +345 -0
  118. package/.agent/skills/frontend-design/ux-psychology.md +1118 -0
  119. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  120. package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  121. package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  122. package/.agent/skills/game-development/SKILL.md +167 -0
  123. package/.agent/skills/game-development/game-art/SKILL.md +185 -0
  124. package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  125. package/.agent/skills/game-development/game-design/SKILL.md +129 -0
  126. package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  127. package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  128. package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  129. package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  130. package/.agent/skills/game-development/web-games/SKILL.md +150 -0
  131. package/.agent/skills/geo-fundamentals/SKILL.md +155 -0
  132. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  133. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  134. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  135. package/.agent/skills/intelligent-routing/SKILL.md +335 -0
  136. package/.agent/skills/lint-and-validate/SKILL.md +44 -0
  137. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  138. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  139. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  140. package/.agent/skills/mobile-design/SKILL.md +394 -0
  141. package/.agent/skills/mobile-design/decision-trees.md +516 -0
  142. package/.agent/skills/mobile-design/mobile-backend.md +491 -0
  143. package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  144. package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  145. package/.agent/skills/mobile-design/mobile-design-thinking.md +355 -0
  146. package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  147. package/.agent/skills/mobile-design/mobile-performance.md +767 -0
  148. package/.agent/skills/mobile-design/mobile-testing.md +356 -0
  149. package/.agent/skills/mobile-design/mobile-typography.md +432 -0
  150. package/.agent/skills/mobile-design/platform-android.md +666 -0
  151. package/.agent/skills/mobile-design/platform-ios.md +561 -0
  152. package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  153. package/.agent/skills/mobile-design/touch-psychology.md +537 -0
  154. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
  155. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
  156. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
  157. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
  158. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  159. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
  160. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
  161. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
  162. package/.agent/skills/nextjs-react-expert/SKILL.md +286 -0
  163. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  164. package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  165. package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  166. package/.agent/skills/parallel-agents/SKILL.md +194 -0
  167. package/.agent/skills/performance-profiling/SKILL.md +149 -0
  168. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  169. package/.agent/skills/plan-writing/SKILL.md +152 -0
  170. package/.agent/skills/powershell-windows/SKILL.md +166 -0
  171. package/.agent/skills/python-patterns/SKILL.md +441 -0
  172. package/.agent/skills/red-team-tactics/SKILL.md +203 -0
  173. package/.agent/skills/rust-pro/SKILL.md +190 -0
  174. package/.agent/skills/seo-fundamentals/SKILL.md +135 -0
  175. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
  176. package/.agent/skills/server-management/SKILL.md +161 -0
  177. package/.agent/skills/systematic-debugging/SKILL.md +114 -0
  178. package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  179. package/.agent/skills/tdd-workflow/SKILL.md +149 -0
  180. package/.agent/skills/testing-patterns/SKILL.md +178 -0
  181. package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  182. package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  183. package/.agent/skills/vulnerability-scanner/checklists.md +131 -0
  184. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +459 -0
  185. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  186. package/.agent/skills/webapp-testing/SKILL.md +187 -0
  187. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  188. package/.agent/workflows/brainstorm.md +113 -0
  189. package/.agent/workflows/create.md +59 -0
  190. package/.agent/workflows/debug.md +103 -0
  191. package/.agent/workflows/deploy.md +176 -0
  192. package/.agent/workflows/enhance.md +63 -0
  193. package/.agent/workflows/orchestrate.md +242 -0
  194. package/.agent/workflows/plan.md +89 -0
  195. package/.agent/workflows/preview.md +80 -0
  196. package/.agent/workflows/restore-localize-compat.md +525 -0
  197. package/.agent/workflows/status.md +86 -0
  198. package/.agent/workflows/test.md +144 -0
  199. package/.agent/workflows/ui-ux-pro-max.md +295 -0
  200. package/AGENT_FLOW.md +609 -0
  201. package/CHANGELOG.md +68 -0
  202. package/LICENSE +21 -0
  203. package/README.md +260 -0
  204. package/bin/adapters/base.js +63 -0
  205. package/bin/adapters/codex.js +391 -0
  206. package/bin/adapters/gemini.js +137 -0
  207. package/bin/ag-kit.js +1336 -0
  208. package/bin/core/builder.js +80 -0
  209. package/bin/core/generator.js +59 -0
  210. package/bin/core/resource-loader.js +64 -0
  211. package/bin/core/transformer.js +208 -0
  212. package/bin/interactive.js +65 -0
  213. package/bin/utils/atomic-writer.js +97 -0
  214. package/bin/utils/git-helper.js +68 -0
  215. package/bin/utils/managed-block.js +65 -0
  216. package/bin/utils/manifest.js +241 -0
  217. package/bin/utils.js +82 -0
  218. package/docs/codex-rules-template.md +36 -0
  219. package/docs/mapping-spec.md +68 -0
  220. package/docs/multi-target-adapter.md +80 -0
  221. package/docs/official/README.md +53 -0
  222. package/docs/official/antigravity/agent-modes-settings.md +64 -0
  223. package/docs/official/antigravity/rules-workflows.md +96 -0
  224. package/docs/official/antigravity/skills.md +147 -0
  225. package/docs/official/codex/agents-md.md +119 -0
  226. package/docs/official/codex/config-advanced.md +358 -0
  227. package/docs/official/codex/config-basic.md +141 -0
  228. package/docs/official/codex/config-reference.md +223 -0
  229. package/docs/official/codex/config-sample.md +216 -0
  230. package/docs/official/codex/mcp.md +107 -0
  231. package/docs/official/codex/rules.md +79 -0
  232. package/docs/official/codex/skills.md +114 -0
  233. package/docs/official/sources-index.md +32 -0
  234. package/docs/operations.md +145 -0
  235. package/docs/terminology-style-guide.md +69 -0
  236. package/package.json +51 -0
  237. package/scripts/postinstall-check.js +112 -0
@@ -0,0 +1,516 @@
1
+ # 移动端决策树
2
+
3
+ > 框架选择、状态管理、存储策略与上下文决策。
4
+ > **这些是“思考指引”,不是可复制粘贴的答案。**
5
+
6
+ ---
7
+
8
+ ## 1. 框架选择
9
+
10
+ ### 总决策树
11
+
12
+ ```
13
+ 你在构建什么?
14
+
15
+ ├── 需要 OTA 更新且不走应用商店审核?
16
+ │ │
17
+ │ ├── 是 → React Native + Expo
18
+ │ │ ├── Expo Go 用于开发
19
+ │ │ ├── EAS Update 用于生产 OTA
20
+ │ │ └── 适合:快速迭代、Web 团队
21
+ │ │
22
+ │ └── 否 → 继续 ▼
23
+
24
+ ├── 需要跨平台像素级一致 UI?
25
+ │ │
26
+ │ ├── 是 → Flutter
27
+ │ │ ├── 自定义渲染引擎
28
+ │ │ ├── iOS + Android 同一 UI
29
+ │ │ └── 适合:强品牌视觉型应用
30
+ │ │
31
+ │ └── 否 → 继续 ▼
32
+
33
+ ├── 强原生能力(ARKit、HealthKit、特定传感器)?
34
+ │ │
35
+ │ ├── 仅 iOS → SwiftUI / UIKit
36
+ │ │ └── 原生能力最大化
37
+ │ │
38
+ │ ├── 仅 Android → Kotlin + Jetpack Compose
39
+ │ │ └── 原生能力最大化
40
+ │ │
41
+ │ └── 两端都要 → 考虑原生 + 共享逻辑
42
+ │ └── Kotlin Multiplatform 共享逻辑
43
+
44
+ ├── 已有 Web 团队 + TypeScript 代码库?
45
+ │ │
46
+ │ └── 是 → React Native
47
+ │ ├── React 开发者上手快
48
+ │ ├── 与 Web 共享部分代码(有限)
49
+ │ └── 生态成熟
50
+
51
+ └── 企业已有 Flutter 团队?
52
+
53
+ └── 是 → Flutter
54
+ └── 复用既有经验
55
+ ```
56
+
57
+ ### 框架对比
58
+
59
+ | 维度 | React Native | Flutter | Native(Swift/Kotlin) |
60
+ | --- | --- | --- | --- |
61
+ | **OTA Updates** | ✅ Expo | ❌ No | ❌ No |
62
+ | **学习曲线** | 低(React 开发者) | 中 | 更高 |
63
+ | **性能** | 好 | 极好 | 最佳 |
64
+ | **UI 一致性** | 平台原生 | 完全一致 | 平台原生 |
65
+ | **包体积** | 中 | 更大 | 最小 |
66
+ | **原生访问** | 通过桥接 | 通过通道 | 直接 |
67
+ | **热重载** | ✅ | ✅ | ✅(Xcode 15+) |
68
+
69
+ ### 何时选择原生
70
+
71
+ ```
72
+ 选择原生当:
73
+ ├── 必须极致性能(游戏、3D)
74
+ ├── 深度系统集成
75
+ ├── 平台特性是核心
76
+ ├── 团队已有原生能力
77
+ ├── 应用商店体验是核心
78
+ └── 长期维护优先
79
+
80
+ 避免原生当:
81
+ ├── 预算/时间有限
82
+ ├── 需要快速迭代
83
+ ├── 两端 UI 强一致
84
+ ├── 团队偏 Web 技术栈
85
+ └── 跨平台优先
86
+ ```
87
+
88
+ ---
89
+
90
+ ## 2. 状态管理选择
91
+
92
+ ### React Native 状态决策
93
+
94
+ ```
95
+ 你的状态复杂度如何?
96
+
97
+ ├── 简单 App,屏幕少,共享状态少
98
+ │ │
99
+ │ └── Zustand(或 useState/Context)
100
+ │ ├── 样板少
101
+ │ ├── 易理解
102
+ │ └── 可扩展到中等规模
103
+
104
+ ├── 主要是服务器数据(API 驱动)
105
+ │ │
106
+ │ └── TanStack Query(React Query)+ Zustand
107
+ │ ├── Query 负责 server state
108
+ │ ├── Zustand 负责 UI state
109
+ │ └── 缓存/重拉优秀
110
+
111
+ ├── 功能复杂、模块多
112
+ │ │
113
+ │ └── Redux Toolkit + RTK Query
114
+ │ ├── 可预测、易调试
115
+ │ ├── RTK Query 管 API
116
+ │ └── 适合大团队协作
117
+
118
+ └── 需要原子级细粒度状态
119
+
120
+ └── Jotai
121
+ ├── 原子状态(类似 Recoil)
122
+ ├── 降低重渲染
123
+ └── 适合衍生状态
124
+ ```
125
+
126
+ ### Flutter 状态决策
127
+
128
+ ```
129
+ 你的状态复杂度如何?
130
+
131
+ ├── 简单 App,或处于学习 Flutter
132
+ │ │
133
+ │ └── Provider(或 setState)
134
+ │ ├── 官方方案,简单
135
+ │ ├── Flutter 内置习惯
136
+ │ └── 适合小型项目
137
+
138
+ ├── 现代、类型安全、可测试
139
+ │ │
140
+ │ └── Riverpod 2.0
141
+ │ ├── 编译期安全
142
+ │ ├── 支持代码生成
143
+ │ ├── 适合中大型项目
144
+ │ └── 新项目推荐
145
+
146
+ ├── 企业级,需要严谨模式
147
+ │ │
148
+ │ └── BLoC
149
+ │ ├── Event → State 模式
150
+ │ ├── 很易测试
151
+ │ ├── 样板较多
152
+ │ └── 适合大团队
153
+
154
+ └── 快速原型
155
+
156
+ └── GetX(谨慎使用)
157
+ ├── 上手快
158
+ ├── 约束较少
159
+ └── 大型项目易混乱
160
+ ```
161
+
162
+ ### 状态管理反模式
163
+
164
+ ```
165
+ ❌ 不要:
166
+ ├── 所有状态都放全局
167
+ ├── 一个项目混用多套方案
168
+ ├── 把 server state 放在 local state
169
+ ├── 不做状态归一化
170
+ ├── 过度使用 Context(重渲染严重)
171
+ └── 把导航状态塞进业务状态
172
+
173
+ ✅ 应该:
174
+ ├── Server state → Query 类库
175
+ ├── UI state → 先局部、再上提
176
+ ├── 只在需要时上提状态
177
+ ├── 项目只选一套方案
178
+ └── 状态贴近使用位置
179
+ ```
180
+
181
+ ---
182
+
183
+ ## 3. 导航模式选择
184
+
185
+ ```
186
+ 顶层入口有几个?
187
+
188
+ ├── 2 个入口
189
+ │ └── 可能用 Top tabs 或简单 Stack
190
+
191
+ ├── 3-5 个入口(同等重要)
192
+ │ └── ✅ Tab Bar / Bottom Navigation
193
+ │ ├── 最常见模式
194
+ │ └── 可发现性强
195
+
196
+ ├── 5+ 个入口
197
+ │ │
198
+ │ ├── 都重要 → Drawer Navigation
199
+ │ │ └── 入口多但隐藏
200
+ │ │
201
+ │ └── 次要入口 → Tab bar + drawer 混合
202
+
203
+ └── 单一线性流程?
204
+ └── 仅 Stack Navigation
205
+ └── 引导、结账等
206
+ ```
207
+
208
+ ### 按应用类型选择导航
209
+
210
+ | 应用类型 | 模式 | 原因 |
211
+ | --- | --- | --- |
212
+ | 社交(Instagram) | Tab bar | 频繁切换 |
213
+ | 电商 | Tab bar + stack | 类别作为 tab |
214
+ | 邮件(Gmail) | Drawer + 列表详情 | 文件夹多 |
215
+ | 设置 | 仅 Stack | 深层钻取 |
216
+ | 新手引导 | Stack 向导 | 线性流程 |
217
+ | 消息 | Tab(聊天)+ stack | 线程 |
218
+
219
+ ---
220
+
221
+ ## 4. 存储策略选择
222
+
223
+ ```
224
+ 是什么类型的数据?
225
+
226
+ ├── 敏感数据(token、密码、密钥)
227
+ │ │
228
+ │ └── ✅ 安全存储
229
+ │ ├── iOS: Keychain
230
+ │ ├── Android: EncryptedSharedPreferences
231
+ │ └── RN: expo-secure-store / react-native-keychain
232
+
233
+ ├── 用户偏好(设置、主题)
234
+ │ │
235
+ │ └── ✅ 键值存储
236
+ │ ├── iOS: UserDefaults
237
+ │ ├── Android: SharedPreferences
238
+ │ └── RN: AsyncStorage / MMKV
239
+
240
+ ├── 结构化数据(实体、关系)
241
+ │ │
242
+ │ └── ✅ 数据库
243
+ │ ├── SQLite(expo-sqlite, sqflite)
244
+ │ ├── Realm(NoSQL, reactive)
245
+ │ └── WatermelonDB(大数据集)
246
+
247
+ ├── 大文件(图片、文档)
248
+ │ │
249
+ │ └── ✅ 文件系统
250
+ │ ├── iOS: Documents / Caches 目录
251
+ │ ├── Android: Internal/External 存储
252
+ │ └── RN: react-native-fs / expo-file-system
253
+
254
+ └── 缓存的 API 数据
255
+
256
+ └── ✅ Query 库缓存
257
+ ├── TanStack Query(RN)
258
+ ├── Riverpod async(Flutter)
259
+ └── 自动失效
260
+ ```
261
+
262
+ ### 存储对比
263
+
264
+ | 存储 | 速度 | 安全 | 容量 | 适用场景 |
265
+ | --- | --- | --- | --- | --- |
266
+ | Secure Storage | 中 | 🔒 高 | 小 | Token、密钥 |
267
+ | Key-Value | 快 | 低 | 中 | 设置 |
268
+ | SQLite | 快 | 低 | 大 | 结构化数据 |
269
+ | File System | 中 | 低 | 很大 | 媒体、文档 |
270
+ | Query Cache | 快 | 低 | 中 | API 响应 |
271
+
272
+ ---
273
+
274
+ ## 5. 离线策略选择
275
+
276
+ ```
277
+ 离线有多关键?
278
+
279
+ ├── 可有可无(尽量可用)
280
+ │ │
281
+ │ └── 缓存最近数据 + 显示过期
282
+ │ ├── 实现简单
283
+ │ ├── TanStack Query + staleTime
284
+ │ └── 显示“最后更新”时间戳
285
+
286
+ ├── 必须离线(核心功能离线)
287
+ │ │
288
+ │ └── Offline-first 架构
289
+ │ ├── 本地数据库为真源
290
+ │ ├── 在线时与服务器同步
291
+ │ ├── 冲突解决策略
292
+ │ └── 操作队列后续同步
293
+
294
+ └── 实时关键(协作、聊天)
295
+
296
+ └── WebSocket + 本地队列
297
+ ├── 乐观更新
298
+ ├── 最终一致
299
+ └── 复杂冲突处理
300
+ ```
301
+
302
+ ### 离线实现模式
303
+
304
+ ```
305
+ 1. CACHE-FIRST(简单)
306
+ 请求 → 查缓存 → 若过期再拉取 → 更新缓存
307
+
308
+ 2. STALE-WHILE-REVALIDATE
309
+ 请求 → 先返缓存 → 后台更新 → 更新 UI
310
+
311
+ 3. OFFLINE-FIRST(复杂)
312
+ 动作 → 写本地 DB → 排队同步 → 上线后同步
313
+
314
+ 4. SYNC ENGINE
315
+ 使用:Firebase、Realm Sync、Supabase realtime
316
+ 自动处理冲突
317
+ ```
318
+
319
+ ---
320
+
321
+ ## 6. 认证模式选择
322
+
323
+ ```
324
+ 需要哪种认证?
325
+
326
+ ├── 简单邮箱/密码
327
+ │ │
328
+ │ └── 基于 Token(JWT)
329
+ │ ├── 安全存储 refresh token
330
+ │ ├── access token 放内存
331
+ │ └── 静默刷新流程
332
+
333
+ ├── 社交登录(Google、Apple 等)
334
+ │ │
335
+ │ └── OAuth 2.0 + PKCE
336
+ │ ├── 使用平台 SDK
337
+ │ ├── 深链回调
338
+ │ └── iOS 必须支持 Apple Sign-In
339
+
340
+ ├── 企业/SSO
341
+ │ │
342
+ │ └── OIDC / SAML
343
+ │ ├── Web view 或系统浏览器
344
+ │ └── 正确处理重定向
345
+
346
+ └── 生物识别(FaceID、指纹)
347
+
348
+ └── 本地认证 + 安全 Token
349
+ ├── 生物识别解锁已存 Token
350
+ ├── 不能替代服务端认证
351
+ └── 回退到 PIN/密码
352
+ ```
353
+
354
+ ### 认证 Token 存储
355
+
356
+ ```
357
+ ❌ 不要存 Token 于:
358
+ ├── AsyncStorage(明文)
359
+ ├── Redux/state(持久化不可靠)
360
+ ├── Local storage 等价物
361
+ └── 日志或调试输出
362
+
363
+ ✅ 应该存 Token 于:
364
+ ├── iOS: Keychain
365
+ ├── Android: EncryptedSharedPreferences
366
+ ├── Expo: SecureStore
367
+ ├── 可用时启用生物识别保护
368
+ ```
369
+
370
+ ---
371
+
372
+ ## 7. 项目类型模板
373
+
374
+ ### 电商应用
375
+
376
+ ```
377
+ 推荐技术栈:
378
+ ├── Framework: React Native + Expo(便于价格 OTA)
379
+ ├── Navigation: Tab bar(Home, Search, Cart, Account)
380
+ ├── State: TanStack Query(商品)+ Zustand(购物车)
381
+ ├── Storage: SecureStore(认证)+ SQLite(购物车缓存)
382
+ ├── Offline: 缓存商品,队列化购物车操作
383
+ └── Auth: 邮箱/密码 + 社交 + Apple Pay
384
+
385
+ 关键决策:
386
+ ├── 商品图:懒加载,强缓存
387
+ ├── 购物车:跨设备同步
388
+ ├── 结账:安全、最少步骤
389
+ └── 深链:商品分享、营销
390
+ ```
391
+
392
+ ### 社交/内容应用
393
+
394
+ ```
395
+ 推荐技术栈:
396
+ ├── Framework: React Native 或 Flutter
397
+ ├── Navigation: Tab bar(Feed, Search, Create, Notifications, Profile)
398
+ ├── State: TanStack Query(feed)+ Zustand(UI)
399
+ ├── Storage: SQLite(feed 缓存、草稿)
400
+ ├── Offline: 缓存 feed,队列化发帖
401
+ └── Auth: 社交登录优先,iOS 必须 Apple
402
+
403
+ 关键决策:
404
+ ├── Feed:无限滚动,列表项 memo
405
+ ├── 媒体:上传队列、后台上传
406
+ ├── 推送:深链到内容
407
+ └── 实时:WebSocket 用于通知
408
+ ```
409
+
410
+ ### 生产力/SaaS 应用
411
+
412
+ ```
413
+ 推荐技术栈:
414
+ ├── Framework: Flutter(UI 一致)或 RN
415
+ ├── Navigation: Drawer 或 Tab bar
416
+ ├── State: Riverpod/BLoC 或 Redux Toolkit
417
+ ├── Storage: SQLite(离线)+ SecureStore(认证)
418
+ ├── Offline: 完整离线编辑、同步
419
+ └── Auth: 企业 SSO/OIDC
420
+
421
+ 关键决策:
422
+ ├── 数据同步:冲突解决策略
423
+ ├── 协作:实时还是最终一致?
424
+ ├── 文件:大文件处理
425
+ └── 企业:MDM、合规
426
+ ```
427
+
428
+ ---
429
+
430
+ ## 8. 决策检查清单
431
+
432
+ ### 开始任何项目之前
433
+
434
+ - [ ] 目标平台已定义(iOS/Android/双端)?
435
+ - [ ] 已根据标准选择框架?
436
+ - [ ] 状态管理方案已确定?
437
+ - [ ] 导航模式已选择?
438
+ - [ ] 各类数据的存储策略已明确?
439
+ - [ ] 离线需求已明确?
440
+ - [ ] 认证流程已设计?
441
+ - [ ] 深链从一开始就规划?
442
+
443
+ ### 提问用户的问题
444
+
445
+ ```
446
+ 如果需求模糊,必须询问:
447
+
448
+ 1. “是否需要 OTA 更新而不走应用商店审核?”
449
+ → 影响框架选择(Expo = yes)
450
+
451
+ 2. “iOS 和 Android 是否需要完全一致的 UI?”
452
+ → 影响框架(Flutter = identical)
453
+
454
+ 3. “离线需求是什么?”
455
+ → 影响架构复杂度
456
+
457
+ 4. “是否已有后端/认证系统?”
458
+ → 影响认证与 API 方案
459
+
460
+ 5. “设备类型?仅手机还是平板?”
461
+ → 影响导航与布局
462
+
463
+ 6. “企业还是消费级?”
464
+ → 影响认证(SSO)、安全与合规
465
+ ```
466
+
467
+ ---
468
+
469
+ ## 9. 反模式决策
470
+
471
+ ### ❌ 决策反模式
472
+
473
+ | 反模式 | 为什么不好 | 更好的方案 |
474
+ | --- | --- | --- |
475
+ | **简单应用用 Redux** | 过度设计 | Zustand 或 context |
476
+ | **MVP 用原生** | 开发慢 | 跨平台 MVP |
477
+ | **3 个入口用 Drawer** | 导航隐藏 | Tab bar |
478
+ | **Token 用 AsyncStorage** | 不安全 | SecureStore |
479
+ | **不考虑离线** | 地铁断网就坏 | 从一开始规划 |
480
+ | **所有项目用同一栈** | 不匹配场景 | 逐项目评估 |
481
+
482
+ ---
483
+
484
+ ## 10. 快速参考
485
+
486
+ ### 框架快选
487
+
488
+ ```
489
+ 需要 OTA? → React Native + Expo
490
+ 需要一致 UI? → Flutter
491
+ 要极致性能? → Native
492
+ Web 团队? → React Native
493
+ 快速原型? → Expo
494
+ ```
495
+
496
+ ### 状态快选
497
+
498
+ ```
499
+ 简单应用? → Zustand / Provider
500
+ 服务端为主? → TanStack Query / Riverpod
501
+ 企业级? → Redux / BLoC
502
+ 原子状态? → Jotai
503
+ ```
504
+
505
+ ### 存储快选
506
+
507
+ ```
508
+ 密钥/Token? → SecureStore / Keychain
509
+ 设置? → AsyncStorage / UserDefaults
510
+ 结构化数据? → SQLite
511
+ API 缓存? → Query library
512
+ ```
513
+
514
+ ---
515
+
516
+ > **记住:** 这些树是思考指南,不是硬性规则。每个项目约束不同,需求模糊时先提问,再按真实需求做选择。