cc-devflow 1.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 (277) hide show
  1. package/.claude/CLAUDE.md +83 -0
  2. package/.claude/agents/architecture-designer.md +443 -0
  3. package/.claude/agents/bug-analyzer.md +382 -0
  4. package/.claude/agents/checklist-agent.md +175 -0
  5. package/.claude/agents/clarify-analyst.md +50 -0
  6. package/.claude/agents/code-reviewer.md +71 -0
  7. package/.claude/agents/codex-analyzer.md +39 -0
  8. package/.claude/agents/compatibility-checker.md +580 -0
  9. package/.claude/agents/consistency-checker.md +532 -0
  10. package/.claude/agents/impact-analyzer.md +441 -0
  11. package/.claude/agents/planner.md +230 -0
  12. package/.claude/agents/prd-writer.md +320 -0
  13. package/.claude/agents/project-guidelines-generator.md +1329 -0
  14. package/.claude/agents/qa-tester.md +313 -0
  15. package/.claude/agents/release-manager.md +295 -0
  16. package/.claude/agents/security-reviewer.md +314 -0
  17. package/.claude/agents/style-guide-generator.md +458 -0
  18. package/.claude/agents/tech-architect.md +516 -0
  19. package/.claude/agents/ui-designer.md +485 -0
  20. package/.claude/commands/code-review-high.md +58 -0
  21. package/.claude/commands/core-architecture.md +429 -0
  22. package/.claude/commands/core-guidelines.md +486 -0
  23. package/.claude/commands/core-roadmap.md +439 -0
  24. package/.claude/commands/core-style.md +293 -0
  25. package/.claude/commands/flow-archive.md +245 -0
  26. package/.claude/commands/flow-checklist.md +260 -0
  27. package/.claude/commands/flow-clarify.md +136 -0
  28. package/.claude/commands/flow-constitution.md +82 -0
  29. package/.claude/commands/flow-dev.md +134 -0
  30. package/.claude/commands/flow-epic.md +150 -0
  31. package/.claude/commands/flow-fix.md +104 -0
  32. package/.claude/commands/flow-ideate.md +214 -0
  33. package/.claude/commands/flow-init.md +313 -0
  34. package/.claude/commands/flow-new.md +394 -0
  35. package/.claude/commands/flow-prd.md +131 -0
  36. package/.claude/commands/flow-qa.md +93 -0
  37. package/.claude/commands/flow-release.md +92 -0
  38. package/.claude/commands/flow-restart.md +98 -0
  39. package/.claude/commands/flow-status.md +64 -0
  40. package/.claude/commands/flow-tech.md +142 -0
  41. package/.claude/commands/flow-ui.md +189 -0
  42. package/.claude/commands/flow-update.md +111 -0
  43. package/.claude/commands/flow-upgrade.md +115 -0
  44. package/.claude/commands/flow-verify.md +96 -0
  45. package/.claude/commands/problem-analyzer.md +60 -0
  46. package/.claude/config/quality-rules.yml +161 -0
  47. package/.claude/docs/SPEC_KIT_CONSTITUTION_ANALYSIS.md +426 -0
  48. package/.claude/docs/design/consistency-conflict-detection-algorithms.md +658 -0
  49. package/.claude/docs/design/intent-driven-input-design.md +380 -0
  50. package/.claude/docs/design/prd-version-management-design.md +437 -0
  51. package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +117 -0
  52. package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +151 -0
  53. package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +188 -0
  54. package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +338 -0
  55. package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +633 -0
  56. package/.claude/docs/templates/BACKLOG_TEMPLATE.md +261 -0
  57. package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +52 -0
  58. package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +206 -0
  59. package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +71 -0
  60. package/.claude/docs/templates/EPIC_TEMPLATE.md +805 -0
  61. package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +213 -0
  62. package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +57 -0
  63. package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +148 -0
  64. package/.claude/docs/templates/PRD_TEMPLATE.md +562 -0
  65. package/.claude/docs/templates/RESEARCH_TEMPLATE.md +276 -0
  66. package/.claude/docs/templates/REVIEW-HIGH.md +57 -0
  67. package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +198 -0
  68. package/.claude/docs/templates/ROADMAP_TEMPLATE.md +310 -0
  69. package/.claude/docs/templates/STYLE_TEMPLATE.md +1266 -0
  70. package/.claude/docs/templates/TASKS_TEMPLATE.md +523 -0
  71. package/.claude/docs/templates/TECH_DESIGN_TEMPLATE.md +1019 -0
  72. package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +1436 -0
  73. package/.claude/guides/agent-guides/agent-coordination-guide.md +459 -0
  74. package/.claude/guides/project-guidelines-system.md +463 -0
  75. package/.claude/guides/technical-guides/datetime-handling-guide.md +563 -0
  76. package/.claude/guides/technical-guides/git-github-guide.md +642 -0
  77. package/.claude/guides/technical-guides/test-execution-guide.md +618 -0
  78. package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +217 -0
  79. package/.claude/guides/workflow-guides/flow-orchestrator.md +282 -0
  80. package/.claude/hooks/checklist-gate.js +397 -0
  81. package/.claude/hooks/error-handling-reminder.sh +12 -0
  82. package/.claude/hooks/error-handling-reminder.ts +459 -0
  83. package/.claude/hooks/post-tool-use-tracker.sh +280 -0
  84. package/.claude/hooks/pre-tool-use-guardrail.sh +36 -0
  85. package/.claude/hooks/pre-tool-use-guardrail.ts +342 -0
  86. package/.claude/hooks/skill-activation-prompt.sh +36 -0
  87. package/.claude/hooks/skill-activation-prompt.ts +214 -0
  88. package/.claude/hooks/state/skills-used-test-guard.json +3 -0
  89. package/.claude/rules/devflow-conventions.md +305 -0
  90. package/.claude/rules/project-constitution.md +748 -0
  91. package/.claude/schemas/constitution.schema.json +43 -0
  92. package/.claude/scripts/analyze-upgrade-impact.sh +200 -0
  93. package/.claude/scripts/archive-requirement.sh +351 -0
  94. package/.claude/scripts/calculate-checklist-completion.sh +243 -0
  95. package/.claude/scripts/calculate-quarter.sh +206 -0
  96. package/.claude/scripts/check-dependencies.sh +409 -0
  97. package/.claude/scripts/check-prerequisites.sh +232 -0
  98. package/.claude/scripts/check-task-status.sh +264 -0
  99. package/.claude/scripts/checklist-errors.sh +131 -0
  100. package/.claude/scripts/common.sh +570 -0
  101. package/.claude/scripts/consolidate-research.sh +182 -0
  102. package/.claude/scripts/create-requirement.sh +426 -0
  103. package/.claude/scripts/export-contracts.sh +117 -0
  104. package/.claude/scripts/extract-data-model.sh +78 -0
  105. package/.claude/scripts/generate-clarification-questions.sh +377 -0
  106. package/.claude/scripts/generate-clarification-report.sh +463 -0
  107. package/.claude/scripts/generate-quickstart.sh +146 -0
  108. package/.claude/scripts/generate-research-tasks.sh +157 -0
  109. package/.claude/scripts/generate-status-report.sh +523 -0
  110. package/.claude/scripts/generate-tech-analysis.sh +46 -0
  111. package/.claude/scripts/locate-requirement-in-roadmap.sh +233 -0
  112. package/.claude/scripts/manage-constitution.sh +602 -0
  113. package/.claude/scripts/mark-task-complete.sh +198 -0
  114. package/.claude/scripts/populate-research-tasks.sh +259 -0
  115. package/.claude/scripts/recover-workflow.sh +460 -0
  116. package/.claude/scripts/run-clarify-scan.sh +601 -0
  117. package/.claude/scripts/run-high-review.sh +62 -0
  118. package/.claude/scripts/run-problem-analysis.sh +68 -0
  119. package/.claude/scripts/setup-epic.sh +173 -0
  120. package/.claude/scripts/sync-roadmap-progress.sh +300 -0
  121. package/.claude/scripts/sync-task-marks.sh +199 -0
  122. package/.claude/scripts/test-clarify-scan.sh +515 -0
  123. package/.claude/scripts/update-agent-context.sh +806 -0
  124. package/.claude/scripts/validate-constitution.sh +567 -0
  125. package/.claude/scripts/validate-hooks.sh +487 -0
  126. package/.claude/scripts/validate-research.sh +332 -0
  127. package/.claude/scripts/validate-scope-boundary.sh +493 -0
  128. package/.claude/scripts/verify-setup.sh +37 -0
  129. package/.claude/settings.json +76 -0
  130. package/.claude/skills/_reference-implementations/README.md +96 -0
  131. package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +302 -0
  132. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +451 -0
  133. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +307 -0
  134. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +638 -0
  135. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +275 -0
  136. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +224 -0
  137. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +213 -0
  138. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +756 -0
  139. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +336 -0
  140. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +789 -0
  141. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +235 -0
  142. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +754 -0
  143. package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +399 -0
  144. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +331 -0
  145. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +872 -0
  146. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +502 -0
  147. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +767 -0
  148. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +502 -0
  149. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +501 -0
  150. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +406 -0
  151. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +364 -0
  152. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +428 -0
  153. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +418 -0
  154. package/.claude/skills/cc-devflow-orchestrator/SKILL.md +229 -0
  155. package/.claude/skills/constitution-guardian/SKILL.md +306 -0
  156. package/.claude/skills/devflow-constitution-quick-ref/SKILL.md +374 -0
  157. package/.claude/skills/devflow-file-standards/SKILL.md +353 -0
  158. package/.claude/skills/devflow-tdd-enforcer/SKILL.md +192 -0
  159. package/.claude/skills/skill-developer/ADVANCED.md +197 -0
  160. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
  161. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
  162. package/.claude/skills/skill-developer/SKILL.md +426 -0
  163. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
  164. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
  165. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
  166. package/.claude/skills/skill-rules.json +213 -0
  167. package/.claude/tests/README.md +300 -0
  168. package/.claude/tests/TODO.md +69 -0
  169. package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
  170. package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
  171. package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
  172. package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
  173. package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
  174. package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
  175. package/.claude/tests/constitution/run_all_constitution_tests.sh +111 -0
  176. package/.claude/tests/constitution/test_agent_assignment.sh +207 -0
  177. package/.claude/tests/constitution/test_article_coverage.sh +201 -0
  178. package/.claude/tests/constitution/test_template_completeness.sh +150 -0
  179. package/.claude/tests/constitution/test_version_consistency.sh +120 -0
  180. package/.claude/tests/fixtures/spec_delta_full.md +16 -0
  181. package/.claude/tests/fixtures/tasks_progress_sample.md +5 -0
  182. package/.claude/tests/run-all-tests.sh +229 -0
  183. package/.claude/tests/scripts/run.sh +30 -0
  184. package/.claude/tests/scripts/test-framework.sh +128 -0
  185. package/.claude/tests/scripts/test_check_prerequisites.sh +511 -0
  186. package/.claude/tests/scripts/test_check_prerequisites.sh.bak +504 -0
  187. package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +505 -0
  188. package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +506 -0
  189. package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +507 -0
  190. package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +508 -0
  191. package/.claude/tests/scripts/test_check_task_status.sh +499 -0
  192. package/.claude/tests/scripts/test_common.sh +244 -0
  193. package/.claude/tests/scripts/test_generate_status_report.sh +71 -0
  194. package/.claude/tests/scripts/test_mark_task_complete.sh +441 -0
  195. package/.claude/tests/scripts/test_mark_task_complete.sh.backup +410 -0
  196. package/.claude/tests/scripts/test_recover_workflow.sh +304 -0
  197. package/.claude/tests/scripts/test_setup_epic.sh +437 -0
  198. package/.claude/tests/scripts/test_sync_task_marks.sh +196 -0
  199. package/.claude/tests/scripts/test_validate_constitution.sh +74 -0
  200. package/.claude/tests/scripts/test_validate_research.sh +462 -0
  201. package/.claude/tests/slugify.bats +82 -0
  202. package/.claude/tests/test-framework.sh +732 -0
  203. package/.claude/tests/test_analyze_upgrade_impact.py +34 -0
  204. package/.claude/tests/test_consolidate_research.py +48 -0
  205. package/.claude/tests/test_export_contracts.py +43 -0
  206. package/.claude/tests/test_extract_data_model.py +33 -0
  207. package/.claude/tests/test_generate_quickstart.py +50 -0
  208. package/.claude/tests/test_generate_research_tasks.py +52 -0
  209. package/.claude/tsc-cache/6e64f818-6398-49ca-8623-581a9af85c44/edited-files.log +1 -0
  210. package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/affected-repos.txt +1 -0
  211. package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/edited-files.log +1 -0
  212. package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/affected-repos.txt +1 -0
  213. package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/edited-files.log +1 -0
  214. package/CHANGELOG.md +507 -0
  215. package/LICENSE +21 -0
  216. package/README.md +534 -0
  217. package/README.zh-CN.md +530 -0
  218. package/bin/adapt.js +240 -0
  219. package/bin/cc-devflow-cli.js +185 -0
  220. package/bin/cc-devflow.js +78 -0
  221. package/config/adapters.yml +5 -0
  222. package/config/schema/adapters.schema.json +44 -0
  223. package/docs/CLAUDE.md +26 -0
  224. package/docs/commands/README.md +61 -0
  225. package/docs/commands/README.zh-CN.md +55 -0
  226. package/docs/commands/core-roadmap.md +106 -0
  227. package/docs/commands/core-roadmap.zh-CN.md +102 -0
  228. package/docs/commands/core-style.md +405 -0
  229. package/docs/commands/core-style.zh-CN.md +405 -0
  230. package/docs/commands/flow-init.md +134 -0
  231. package/docs/commands/flow-init.zh-CN.md +163 -0
  232. package/docs/commands/flow-new.md +274 -0
  233. package/docs/commands/flow-new.zh-CN.md +270 -0
  234. package/docs/guides/getting-started.md +204 -0
  235. package/docs/guides/getting-started.zh-CN.md +152 -0
  236. package/lib/adapters/adapter-interface.js +57 -0
  237. package/lib/adapters/claude-adapter.js +74 -0
  238. package/lib/adapters/codex-adapter.js +40 -0
  239. package/lib/adapters/config-validator.js +68 -0
  240. package/lib/adapters/logger.js +42 -0
  241. package/lib/adapters/registry.js +153 -0
  242. package/lib/compiler/CLAUDE.md +92 -0
  243. package/lib/compiler/__tests__/drift.test.js +215 -0
  244. package/lib/compiler/__tests__/errors.test.js +184 -0
  245. package/lib/compiler/__tests__/incremental.test.js +174 -0
  246. package/lib/compiler/__tests__/integration.test.js +174 -0
  247. package/lib/compiler/__tests__/manifest.test.js +233 -0
  248. package/lib/compiler/__tests__/parser.test.js +456 -0
  249. package/lib/compiler/__tests__/schemas.test.js +301 -0
  250. package/lib/compiler/__tests__/skills-registry.test.js +125 -0
  251. package/lib/compiler/__tests__/transformer.test.js +286 -0
  252. package/lib/compiler/emitters/antigravity-emitter.js +171 -0
  253. package/lib/compiler/emitters/base-emitter.js +73 -0
  254. package/lib/compiler/emitters/codex-emitter.js +52 -0
  255. package/lib/compiler/emitters/cursor-emitter.js +31 -0
  256. package/lib/compiler/emitters/index.js +50 -0
  257. package/lib/compiler/emitters/qwen-emitter.js +39 -0
  258. package/lib/compiler/errors.js +119 -0
  259. package/lib/compiler/index.js +256 -0
  260. package/lib/compiler/manifest.js +242 -0
  261. package/lib/compiler/parser.js +258 -0
  262. package/lib/compiler/platforms.js +113 -0
  263. package/lib/compiler/resource-copier.js +320 -0
  264. package/lib/compiler/rules-emitters/__tests__/antigravity-rules-emitter.test.js +191 -0
  265. package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +109 -0
  266. package/lib/compiler/rules-emitters/__tests__/cursor-rules-emitter.test.js +123 -0
  267. package/lib/compiler/rules-emitters/__tests__/qwen-rules-emitter.test.js +123 -0
  268. package/lib/compiler/rules-emitters/antigravity-rules-emitter.js +253 -0
  269. package/lib/compiler/rules-emitters/base-rules-emitter.js +83 -0
  270. package/lib/compiler/rules-emitters/codex-rules-emitter.js +116 -0
  271. package/lib/compiler/rules-emitters/cursor-rules-emitter.js +98 -0
  272. package/lib/compiler/rules-emitters/index.js +71 -0
  273. package/lib/compiler/rules-emitters/qwen-rules-emitter.js +70 -0
  274. package/lib/compiler/schemas.js +144 -0
  275. package/lib/compiler/skills-registry.js +225 -0
  276. package/lib/compiler/transformer.js +236 -0
  277. package/package.json +50 -0
@@ -0,0 +1,1436 @@
1
+ ---
2
+ title: UI Prototype Template
3
+ description: Self-executable template for generating interactive HTML prototypes from PRD
4
+ version: 1.0.0
5
+ created: 2025-01-10
6
+ updated: 2025-01-10
7
+ type: self-executable-template
8
+ ---
9
+
10
+ # UI Prototype Template - 自执行原型生成模板
11
+
12
+ **目的**: 从PRD需求文档生成完整的HTML交互原型,融合艺术设计灵感,输出可直接用于开发实现的高质量原型。
13
+
14
+ **使用者**: ui-designer研究型代理
15
+ **输入**: PRD.md (产品需求文档)
16
+ **输出**: UI_PROTOTYPE.html (完整单文件HTML原型)
17
+
18
+ ---
19
+
20
+ ## ⚠️ CRITICAL ANTI-GENERIC-DESIGN RULES
21
+
22
+ ### 强制约束
23
+ 1. **NO PLACEHOLDER IMAGES**: 必须使用Picsum真实图片资源
24
+ 2. **NO GENERIC PURPLE/BLUE**: 禁止千篇一律的紫色/蓝色AI风格
25
+ 3. **NO EMOJI ICONS**: 使用SVG图标或图标库(Lucide/Heroicons/Tabler)
26
+ 4. **NO LOREM IPSUM**: 使用真实业务场景内容
27
+ 5. **COMPLETE INTERACTIONS**: 所有交互元素必须有完整状态(hover/active/disabled/error)
28
+ 6. **ARTISTIC INSPIRATION**: 必须从灵感池采样2位大师并转译风格
29
+
30
+ ### 质量标准
31
+ - [ ] HTML文件可独立运行(无外部依赖文件)
32
+ - [ ] 响应式布局在三种断点正常显示(320px/768px/1024px)
33
+ - [ ] 所有PRD用户故事都有对应UI页面或组件
34
+ - [ ] 设计系统完整(色彩/字体/栅格/间距/组件)
35
+ - [ ] 通过Constitution检查(NO PARTIAL IMPLEMENTATION)
36
+
37
+ ---
38
+
39
+ ## Execution Flow (10 Phases)
40
+
41
+ 本模板的Execution Flow定义了ui-designer代理必须遵循的10个阶段。
42
+
43
+ ---
44
+
45
+ ### Phase 1: Product Analysis (产品经理分析)
46
+
47
+ **目标**: 从PRD中提取核心功能、用户流程和UI需求
48
+
49
+ **输入**: PRD.md
50
+ **输出**: 产品分析报告(嵌入HTML注释)
51
+
52
+ **执行步骤**:
53
+ ```markdown
54
+ 1.1 读取PRD.md文档
55
+ → 使用 check-prerequisites.sh 获取文件路径
56
+
57
+ 1.2 提取关键信息:
58
+ - 目标用户画像(从"背景与目标"章节)
59
+ - 核心功能列表(从"用户故事"章节)
60
+ - 关键任务流程(从"验收标准"章节)
61
+ - UI相关的非功能需求(性能/可访问性/响应式)
62
+
63
+ 1.3 识别页面类型:
64
+ - 认证页面(登录/注册/重置密码)
65
+ - 仪表盘/主界面
66
+ - 列表/表格页面
67
+ - 详情/编辑页面
68
+ - 表单/创建页面
69
+ - 设置/配置页面
70
+
71
+ 1.4 构建信息架构草图:
72
+ 页面层级
73
+ └─ 导航结构
74
+ └─ 核心交互路径
75
+
76
+ 1.5 输出产品分析报告(存储为变量,稍后写入HTML注释):
77
+ """
78
+ ## Product Analysis
79
+ - Target Users: {用户画像}
80
+ - Core Features: {功能列表}
81
+ - Page Types: {页面类型}
82
+ - Critical Flows: {关键流程}
83
+ """
84
+ ```
85
+
86
+ **验证点**:
87
+ - [x] 至少识别出3个核心功能
88
+ - [x] 明确定义了主要用户角色
89
+ - [x] 识别出至少2个关键任务流程
90
+
91
+ ---
92
+
93
+ ### Phase 2: Design Inspiration Sampling (设计灵感采样)
94
+
95
+ **目标**: 从80+位艺术家/设计师/建筑师中随机采样2位,生成风格转译说明
96
+
97
+ **输入**: 灵感来源池(见下方)
98
+ **输出**: 设计灵感报告(2位大师+转译说明)
99
+
100
+ **执行步骤**:
101
+ ```markdown
102
+ 2.1 随机采样策略:
103
+ - 从不同类别中选择(避免风格过于相似)
104
+ - 优先组合: 现代主义 + 生成艺术, 建筑 + 平面设计
105
+ - 避免组合: 同类别内的大师(如两位都是建筑师)
106
+
107
+ 2.2 为每位大师生成转译说明:
108
+ 模板:
109
+ """
110
+ **灵感来源X**: {艺术家姓名} ({类别})
111
+ **核心特质**: {艺术家代表性特点,1-2句话}
112
+ **网页转译**:
113
+ - 色彩: {具体色值} → {应用场景}
114
+ - 版式: {布局策略} → {CSS实现方式}
115
+ - 形态: {视觉元素} → {HTML/CSS实现}
116
+ - 动效: {动态特征} → {CSS/JS实现}
117
+ **禁止模仿**: 不复刻{具体作品名称}的{具体元素}
118
+ """
119
+
120
+ 2.3 生成设计关键词:
121
+ 从转译说明中提取3-5个关键设计方向
122
+ 示例: ["网格秩序", "高对比撞色", "曲线切割", "200ms过渡动效"]
123
+
124
+ 2.4 定义配色方案基调:
125
+ 根据灵感来源确定主色调
126
+ 避免: #6B46C1(常见AI紫), #3B82F6(常见AI蓝)
127
+ 推荐: 基于大师作品的特征色,但调整明度/饱和度
128
+
129
+ 2.5 输出设计灵感报告(存储为变量):
130
+ 包含2位大师的完整转译说明
131
+ ```
132
+
133
+ **灵感来源池** (80+ Masters):
134
+
135
+ #### 类别1: 影视片头 / 动态叙事
136
+ Saul Bass, Maurice Binder, Pablo Ferro, Dan Perri, Kyle Cooper
137
+
138
+ #### 类别2: 平面 / 字体 / 后现代图形
139
+ Paula Scher, Neville Brody, April Greiman, David Carson, Jamie Reid, Push Pin Studios (Seymour Chwast)
140
+
141
+ #### 类别3: 现代主义信息设计 / 网格系统
142
+ Massimo Vignelli, Josef Müller-Brockmann, Otl Aicher, Armin Hofmann, Karl Gerstner, Muriel Cooper
143
+
144
+ #### 类别4: 几何与抽象艺术 / 光学艺术
145
+ Piet Mondrian, Sonia Delaunay, Josef Albers, Victor Vasarely, Bridget Riley, M. C. Escher, Paul Klee, Kazimir Malevich, Joan Miró, Henri Matisse, Mark Rothko, René Magritte, Salvador Dalí
146
+
147
+ #### 类别5: 亚洲与当代艺术
148
+ Yayoi Kusama, Takashi Murakami, Katsushika Hokusai(葛饰北斋), Xu Bing(徐冰), Zao Wou-Ki(赵无极)
149
+
150
+ #### 类别6: 生成艺术 / 新媒体
151
+ John Maeda, Casey Reas, Zach Lieberman, Vera Molnár, Manfred Mohr, Refik Anadol, Sougwen Chung
152
+
153
+ #### 类别7: 建筑 / 空间形态
154
+ Zaha Hadid, Bjarke Ingels (BIG), Thomas Heatherwick, Olafur Eliasson, Le Corbusier, Ludwig Mies van der Rohe, Frank Lloyd Wright, Alvar Aalto, Louis Kahn, Norman Foster, Renzo Piano, Herzog & de Meuron, OMA/Rem Koolhaas, Tadao Ando(安藤忠雄), SANAA(Sejima & Nishizawa), Kengo Kuma(隈研吾), Kenzo Tange(丹下健三), Lina Bo Bardi, Luis Barragán
155
+
156
+ #### 类别8: 工业 / 硬件设备设计
157
+ Dieter Rams(Braun), Jony Ive(Apple), Naoto Fukasawa(无印良品), Jasper Morrison, Marc Newson, Yves Béhar, Hartmut Esslinger(frog), Raymond Loewy, Richard Sapper(ThinkPad), Charles & Ray Eames, Sori Yanagi, Kenji Ekuan(龟甲万壶/新干线), Nendo(Oki Sato), Philippe Starck, F. A. Porsche, James Dyson, Teenage Engineering, Susan Kare(界面图标语义)
158
+
159
+ **验证点**:
160
+ - [x] 采样了2位来自不同类别的大师
161
+ - [x] 每位大师都有明确的转译说明(色彩/版式/形态/动效)
162
+ - [x] 明确了禁止模仿的具体作品/元素
163
+ - [x] 生成了配色方案基调(非常见AI紫/蓝)
164
+
165
+ ---
166
+
167
+ ### Phase 3: Design System Definition (设计系统定义)
168
+
169
+ **目标**: 基于设计灵感,定义完整的设计系统(色彩/字体/栅格/间距/组件)
170
+
171
+ **输入**: Phase 2的设计灵感报告
172
+ **输出**: Design Tokens (CSS变量形式)
173
+
174
+ **执行步骤**:
175
+ ```markdown
176
+ 3.1 色彩系统 (Color Palette):
177
+ 基于Phase 2的配色基调,定义:
178
+ - 主色 (Primary): 1个主色 + 3个深浅变体
179
+ - 辅色 (Secondary): 1-2个辅色 + 变体
180
+ - 中性色 (Neutral): 灰度7-9级(50/100/200/.../900)
181
+ - 状态色 (Semantic): 成功/警告/错误/信息(各3个变体)
182
+ - 表面色 (Surface): 背景/卡片/浮层
183
+
184
+ 示例:
185
+ --primary-500: #0066CC;
186
+ --primary-600: #0052A3;
187
+ --primary-400: #3385D6;
188
+
189
+ ⚠️ 禁止使用:
190
+ - 纯黑 #000000
191
+ - 纯白 #FFFFFF
192
+ - 常见AI紫 #6B46C1
193
+ - 常见AI蓝 #3B82F6
194
+
195
+ 3.2 字体系统 (Typography):
196
+ - 字体栈: 优先Google Fonts,备用系统字体
197
+ - 中英文混排: 英文字体 + 中文备用(思源黑体/苹方)
198
+ - 字号系统: 6-8级 (12/14/16/18/20/24/32/48px)
199
+ - 字重: 400 Regular, 500 Medium, 600 Semi-Bold, 700 Bold
200
+ - 行高: 标题1.2-1.3, 正文1.5-1.6, 小字1.4
201
+
202
+ 示例:
203
+ --font-base: 'Inter', 'Noto Sans SC', system-ui, sans-serif;
204
+ --font-size-base: 16px;
205
+ --font-size-lg: 18px;
206
+ --line-height-base: 1.5;
207
+
208
+ 3.3 间距系统 (Spacing):
209
+ 基于8px栅格或4px栅格
210
+ - 基础单位: 4px或8px
211
+ - 间距级别: 1/2/3/4/6/8/12/16/24/32/48/64
212
+
213
+ 示例:
214
+ --space-1: 0.25rem; /* 4px */
215
+ --space-2: 0.5rem; /* 8px */
216
+ --space-4: 1rem; /* 16px */
217
+ --space-8: 2rem; /* 32px */
218
+
219
+ 3.4 栅格系统 (Grid):
220
+ - 容器最大宽度: 1200px或1280px
221
+ - 列数: 12列
222
+ - 间距: 16px或24px
223
+ - 响应式断点:
224
+ * Mobile: 320px-767px
225
+ * Tablet: 768px-1023px
226
+ * Desktop: 1024px+
227
+
228
+ 3.5 圆角与阴影 (Border Radius & Shadow):
229
+ - 圆角: 4px/8px/12px/16px/9999px(圆形)
230
+ - 阴影层级: 3-4级(小/中/大/超大)
231
+
232
+ 示例:
233
+ --radius-sm: 4px;
234
+ --radius-md: 8px;
235
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
236
+ --shadow-md: 0 4px 6px rgba(0,0,0,0.1);
237
+
238
+ 3.6 动效系统 (Animation):
239
+ - 过渡时长: 150ms/200ms/300ms
240
+ - 缓动函数: ease/ease-in-out/cubic-bezier
241
+ - 支持 prefers-reduced-motion 静态回退
242
+
243
+ 示例:
244
+ --transition-fast: 150ms ease;
245
+ --transition-base: 200ms ease;
246
+ --easing-smooth: cubic-bezier(0.4, 0, 0.2, 1);
247
+
248
+ 3.7 输出Design Tokens:
249
+ 将上述系统整理为CSS :root 变量
250
+ 准备稍后嵌入HTML <style> 标签
251
+ ```
252
+
253
+ **验证点**:
254
+ - [x] 色彩系统包含至少8个色值(主/辅/中性/状态)
255
+ - [x] 字体系统支持中英文混排
256
+ - [x] 间距系统基于统一基准(4px或8px)
257
+ - [x] 定义了响应式断点(至少3个)
258
+ - [x] 动效支持无障碍(prefers-reduced-motion)
259
+
260
+ ---
261
+
262
+ ### Phase 4: Information Architecture (信息架构设计)
263
+
264
+ **目标**: 根据PRD用户故事,规划页面结构和导航体系
265
+
266
+ **输入**: Phase 1的产品分析报告
267
+ **输出**: 站点地图 + 导航结构
268
+
269
+ **执行步骤**:
270
+ ```markdown
271
+ 4.1 站点地图 (Sitemap):
272
+ 根据PRD用户故事列出所有页面:
273
+
274
+ 示例:
275
+ / (首页/仪表盘)
276
+ /auth/login (登录)
277
+ /auth/register (注册)
278
+ /orders (订单列表)
279
+ /orders/:id (订单详情)
280
+ /orders/create (创建订单)
281
+ /profile (用户资料)
282
+ /settings (设置)
283
+
284
+ 4.2 导航结构:
285
+ - 主导航 (Primary Nav): 顶部导航栏,3-7个主菜单
286
+ - 次级导航 (Secondary Nav): 侧边栏或标签页
287
+ - 面包屑 (Breadcrumb): 用于深层页面
288
+
289
+ 示例:
290
+ 主导航:
291
+ - 首页
292
+ - 订单管理
293
+ - 数据报表
294
+ - 系统设置
295
+
296
+ 4.3 用户流程图:
297
+ 为每个核心用户故事绘制流程:
298
+
299
+ 示例:
300
+ 创建订单流程:
301
+ 订单列表页 → 点击"新建" → 填写表单 → 预览确认 → 提交成功 → 跳转详情
302
+
303
+ 4.4 页面优先级:
304
+ - P0: 必须实现的核心页面(登录/主界面/核心功能)
305
+ - P1: 重要但非关键的页面
306
+ - P2: 辅助功能页面
307
+
308
+ 4.5 输出站点地图文档:
309
+ 存储为变量,稍后嵌入HTML注释
310
+ ```
311
+
312
+ **验证点**:
313
+ - [x] 站点地图覆盖所有PRD用户故事
314
+ - [x] 主导航菜单数量合理(3-7个)
315
+ - [x] 至少1个核心用户流程被完整定义
316
+
317
+ ---
318
+
319
+ ### Phase 5: Component Inventory (组件清单生成)
320
+
321
+ **目标**: 根据页面需求,列出所有需要的UI组件及其状态
322
+
323
+ **输入**: Phase 4的站点地图
324
+ **输出**: 组件清单 + 状态定义
325
+
326
+ **执行步骤**:
327
+ ```markdown
328
+ 5.1 基础组件 (Atoms):
329
+ - Button (按钮): 主按钮/次要按钮/文本按钮/图标按钮
330
+ - Input (输入框): 文本/数字/密码/搜索/多行文本
331
+ - Checkbox (复选框)
332
+ - Radio (单选框)
333
+ - Select (下拉选择)
334
+ - Switch (开关)
335
+ - Icon (图标): 使用Lucide或Heroicons
336
+
337
+ 5.2 组合组件 (Molecules):
338
+ - Form Field (表单字段): Label + Input + Error Message
339
+ - Search Bar (搜索栏): Input + Icon + Button
340
+ - Card (卡片): Header + Body + Footer
341
+ - List Item (列表项): Avatar + Title + Subtitle + Action
342
+ - Pagination (分页器)
343
+ - Breadcrumb (面包屑)
344
+
345
+ 5.3 复杂组件 (Organisms):
346
+ - Navigation Bar (导航栏): Logo + Menu + User Avatar
347
+ - Sidebar (侧边栏): Menu + Collapse
348
+ - Table (表格): Header + Rows + Pagination + Actions
349
+ - Modal (模态框): Overlay + Content + Close
350
+ - Toast (通知提示)
351
+ - Dropdown Menu (下拉菜单)
352
+
353
+ 5.4 状态定义 (States):
354
+ 为每个交互组件定义状态:
355
+ - Default (默认)
356
+ - Hover (悬停)
357
+ - Active (激活)
358
+ - Focus (聚焦)
359
+ - Disabled (禁用)
360
+ - Error (错误)
361
+ - Loading (加载中)
362
+ - Empty (空状态)
363
+
364
+ 5.5 输出组件清单:
365
+ 组织为表格形式,包含:
366
+ 组件名称 | 类型 | 状态列表 | 使用页面
367
+
368
+ 示例:
369
+ | Button | Atom | default, hover, active, disabled | 所有页面 |
370
+ | Modal | Organism | default, open, closing | 订单创建,设置 |
371
+
372
+ 5.6 确定图标库:
373
+ 选择 Lucide Icons 或 Heroicons 或 Tabler Icons
374
+ 记录CDN链接,稍后嵌入HTML
375
+ ```
376
+
377
+ **验证点**:
378
+ - [x] 至少定义了10个基础组件
379
+ - [x] 所有交互组件都定义了至少3种状态
380
+ - [x] 选定了图标库并记录了CDN链接
381
+ - [x] 组件清单与PRD用户故事对齐
382
+
383
+ ---
384
+
385
+ ### Phase 6: HTML Structure (HTML结构编写)
386
+
387
+ **目标**: 编写语义化的HTML5结构,包含所有页面内容
388
+
389
+ **输入**: Phase 4的站点地图 + Phase 5的组件清单
390
+ **输出**: 完整的HTML结构(无样式)
391
+
392
+ **执行步骤**:
393
+ ```markdown
394
+ 6.1 HTML文档结构:
395
+ <!DOCTYPE html>
396
+ <html lang="zh-CN">
397
+ <head>
398
+ <meta charset="UTF-8">
399
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
400
+ <meta name="color-scheme" content="light dark">
401
+ <title>{需求标题} - 原型</title>
402
+
403
+ <!-- 设计系统元数据 (来自Phase 1/2/3) -->
404
+ <!--
405
+ Generated: {ISO 8601 timestamp}
406
+ REQ-ID: {REQ_ID}
407
+ Design Inspirations: {Phase 2输出}
408
+ Product Analysis: {Phase 1输出}
409
+ -->
410
+
411
+ <!-- CDN资源: Google Fonts + 图标库 -->
412
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
413
+ <script src="https://unpkg.com/lucide@latest"></script>
414
+
415
+ <style>
416
+ /* Phase 7 将在这里填充CSS */
417
+ </style>
418
+ </head>
419
+ <body>
420
+ <!-- Phase 6 将在这里填充HTML -->
421
+ </body>
422
+ </html>
423
+
424
+ 6.2 语义化标签:
425
+ 使用HTML5语义标签:
426
+ - <header> - 页面头部/导航
427
+ - <nav> - 导航菜单
428
+ - <main> - 主要内容区
429
+ - <section> - 内容分段
430
+ - <article> - 独立内容单元
431
+ - <aside> - 侧边栏/辅助信息
432
+ - <footer> - 页面底部
433
+
434
+ 6.3 可访问性 (Accessibility):
435
+ - ARIA标签: aria-label, aria-labelledby, aria-describedby
436
+ - 键盘导航: tabindex属性
437
+ - 语义化按钮: <button> 而非 <div onclick>
438
+ - 表单标签: <label for="input-id">
439
+
440
+ 6.4 多页面处理策略:
441
+ 选项A: 单页应用(SPA)风格
442
+ - 所有页面作为<section>嵌入同一HTML
443
+ - 使用CSS显示/隐藏切换页面 (.page-active)
444
+ - JavaScript路由模拟
445
+
446
+ 选项B: 选择1个核心页面深度实现
447
+ - 如果页面过多(>5个),选择最重要的1个页面
448
+ - 其他页面用简化卡片展示
449
+
450
+ 推荐: 选项A (SPA风格)
451
+
452
+ 6.5 页面结构示例:
453
+ <body>
454
+ <!-- Global Header -->
455
+ <header class="header">
456
+ <nav class="nav-primary">
457
+ <div class="nav-logo">{Logo}</div>
458
+ <ul class="nav-menu">
459
+ <li><a href="#home">首页</a></li>
460
+ <li><a href="#orders">订单</a></li>
461
+ </ul>
462
+ <div class="nav-user">{User Avatar}</div>
463
+ </nav>
464
+ </header>
465
+
466
+ <!-- Main Content Area -->
467
+ <main class="main">
468
+ <!-- Page 1: Dashboard -->
469
+ <section id="page-dashboard" class="page page-active">
470
+ <h1>仪表盘</h1>
471
+ <!-- Dashboard content -->
472
+ </section>
473
+
474
+ <!-- Page 2: Orders List -->
475
+ <section id="page-orders" class="page">
476
+ <h1>订单列表</h1>
477
+ <div class="table-container">
478
+ <table><!-- Table rows --></table>
479
+ </div>
480
+ </section>
481
+
482
+ <!-- More pages... -->
483
+ </main>
484
+
485
+ <!-- Global Footer -->
486
+ <footer class="footer">
487
+ <p>&copy; 2025 {Project Name}</p>
488
+ </footer>
489
+
490
+ <script>
491
+ /* Phase 8 将在这里填充JavaScript */
492
+ </script>
493
+ </body>
494
+
495
+ 6.6 内容填充:
496
+ - 使用真实的业务场景内容(来自PRD)
497
+ - 图片使用Picsum: https://picsum.photos/id/{id}/{width}/{height}
498
+ - 数据使用模拟真实数据(如订单编号/用户名/日期)
499
+ - 禁止使用Lorem Ipsum占位文本
500
+
501
+ 6.7 组件实例化:
502
+ 根据Phase 5的组件清单,在HTML中实例化所有组件
503
+ 确保每个状态都有对应的HTML示例(可用CSS类名切换)
504
+ ```
505
+
506
+ **验证点**:
507
+ - [x] 使用HTML5语义化标签
508
+ - [x] 包含ARIA标签和可访问性属性
509
+ - [x] 所有图片使用Picsum真实资源
510
+ - [x] 无Lorem Ipsum占位文本
511
+ - [x] 至少2个完整页面被实现
512
+
513
+ ---
514
+
515
+ ### Phase 7: CSS Styling (CSS样式实现)
516
+
517
+ **目标**: 基于Phase 3的设计系统,编写完整的CSS样式
518
+
519
+ **输入**: Phase 6的HTML结构 + Phase 3的Design Tokens
520
+ **输出**: 完整的CSS样式(嵌入<style>标签)
521
+
522
+ **执行步骤**:
523
+ ```markdown
524
+ 7.1 CSS架构:
525
+ 组织为以下模块:
526
+ 1. Design System (CSS变量)
527
+ 2. Reset & Base Styles
528
+ 3. Layout (Grid/Flexbox)
529
+ 4. Components (按Phase 5组件清单)
530
+ 5. Pages (页面特定样式)
531
+ 6. Utilities (工具类)
532
+ 7. Responsive (媒体查询)
533
+ 8. Animations (动效)
534
+ 9. Dark Mode (可选)
535
+
536
+ 7.2 Design System (CSS Variables):
537
+ 将Phase 3的Design Tokens写入:root
538
+
539
+ :root {
540
+ /* Colors */
541
+ --primary-500: #0066CC;
542
+ --neutral-50: #F9FAFB;
543
+
544
+ /* Typography */
545
+ --font-base: 'Inter', system-ui, sans-serif;
546
+ --font-size-base: 16px;
547
+
548
+ /* Spacing */
549
+ --space-2: 0.5rem;
550
+ --space-4: 1rem;
551
+
552
+ /* Transitions */
553
+ --transition-fast: 200ms ease;
554
+ }
555
+
556
+ 7.3 Reset & Base Styles:
557
+ * { box-sizing: border-box; margin: 0; padding: 0; }
558
+ body {
559
+ font-family: var(--font-base);
560
+ font-size: var(--font-size-base);
561
+ line-height: 1.5;
562
+ color: var(--neutral-900);
563
+ background: var(--neutral-50);
564
+ }
565
+
566
+ 7.4 Layout System:
567
+ 使用Flexbox或Grid实现响应式布局
568
+
569
+ .container {
570
+ max-width: 1200px;
571
+ margin: 0 auto;
572
+ padding: 0 var(--space-4);
573
+ }
574
+
575
+ .grid {
576
+ display: grid;
577
+ grid-template-columns: repeat(12, 1fr);
578
+ gap: var(--space-4);
579
+ }
580
+
581
+ 7.5 Component Styles:
582
+ 为Phase 5的每个组件编写样式,包含所有状态
583
+
584
+ 示例:
585
+ .btn {
586
+ display: inline-flex;
587
+ padding: var(--space-2) var(--space-4);
588
+ border: none;
589
+ border-radius: var(--radius-md);
590
+ background: var(--primary-500);
591
+ color: white;
592
+ cursor: pointer;
593
+ transition: all var(--transition-fast);
594
+ }
595
+ .btn:hover {
596
+ background: var(--primary-600);
597
+ transform: translateY(-2px);
598
+ }
599
+ .btn:active {
600
+ transform: translateY(0);
601
+ }
602
+ .btn:disabled {
603
+ opacity: 0.5;
604
+ cursor: not-allowed;
605
+ }
606
+
607
+ 7.6 Page-Specific Styles:
608
+ 为每个页面编写特定样式
609
+
610
+ .page {
611
+ display: none; /* 默认隐藏 */
612
+ }
613
+ .page-active {
614
+ display: block; /* 激活页面显示 */
615
+ }
616
+
617
+ 7.7 Responsive Design:
618
+ 使用媒体查询实现三断点响应式
619
+
620
+ /* Mobile: 320px-767px (默认) */
621
+ .nav-menu {
622
+ flex-direction: column;
623
+ }
624
+
625
+ /* Tablet: 768px-1023px */
626
+ @media (min-width: 768px) {
627
+ .nav-menu {
628
+ flex-direction: row;
629
+ }
630
+ }
631
+
632
+ /* Desktop: 1024px+ */
633
+ @media (min-width: 1024px) {
634
+ .container {
635
+ max-width: 1200px;
636
+ }
637
+ }
638
+
639
+ 7.8 Animations:
640
+ 基于Phase 2的设计灵感添加动效
641
+
642
+ @keyframes fadeIn {
643
+ from { opacity: 0; transform: translateY(20px); }
644
+ to { opacity: 1; transform: translateY(0); }
645
+ }
646
+
647
+ .card {
648
+ animation: fadeIn var(--transition-base);
649
+ }
650
+
651
+ /* 无障碍: 禁用动效 */
652
+ @media (prefers-reduced-motion: reduce) {
653
+ * {
654
+ animation: none !important;
655
+ transition: none !important;
656
+ }
657
+ }
658
+
659
+ 7.9 Dark Mode (可选):
660
+ @media (prefers-color-scheme: dark) {
661
+ :root {
662
+ --neutral-50: #111827;
663
+ --neutral-900: #F9FAFB;
664
+ }
665
+ }
666
+
667
+ 7.10 Utilities:
668
+ .text-center { text-align: center; }
669
+ .mt-4 { margin-top: var(--space-4); }
670
+ .hidden { display: none; }
671
+ ```
672
+
673
+ **验证点**:
674
+ - [x] 使用CSS变量实现Design System
675
+ - [x] 所有组件都有完整的状态样式
676
+ - [x] 响应式布局在三种断点正常显示
677
+ - [x] 动效时长在150-300ms之间
678
+ - [x] 支持prefers-reduced-motion
679
+
680
+ ---
681
+
682
+ ### Phase 8: JavaScript Interactions (JavaScript交互实现)
683
+
684
+ **目标**: 实现所有交互逻辑和状态管理
685
+
686
+ **输入**: Phase 6的HTML结构 + Phase 7的CSS样式
687
+ **输出**: 完整的JavaScript代码(嵌入<script>标签)
688
+
689
+ **执行步骤**:
690
+ ```markdown
691
+ 8.1 基础初始化:
692
+ document.addEventListener('DOMContentLoaded', () => {
693
+ // 初始化图标库
694
+ lucide.createIcons();
695
+
696
+ // 初始化路由
697
+ initRouter();
698
+
699
+ // 初始化事件监听
700
+ initEventListeners();
701
+ });
702
+
703
+ 8.2 SPA路由系统:
704
+ const routes = {
705
+ 'home': 'page-dashboard',
706
+ 'orders': 'page-orders',
707
+ 'settings': 'page-settings'
708
+ };
709
+
710
+ function navigateTo(routeName) {
711
+ // 隐藏所有页面
712
+ document.querySelectorAll('.page').forEach(page => {
713
+ page.classList.remove('page-active');
714
+ });
715
+
716
+ // 显示目标页面
717
+ const targetPageId = routes[routeName];
718
+ document.getElementById(targetPageId).classList.add('page-active');
719
+
720
+ // 更新URL (使用hash)
721
+ window.location.hash = routeName;
722
+ }
723
+
724
+ function initRouter() {
725
+ // 监听hash变化
726
+ window.addEventListener('hashchange', () => {
727
+ const route = window.location.hash.slice(1) || 'home';
728
+ navigateTo(route);
729
+ });
730
+
731
+ // 初始化路由
732
+ const initialRoute = window.location.hash.slice(1) || 'home';
733
+ navigateTo(initialRoute);
734
+ }
735
+
736
+ 8.3 导航交互:
737
+ document.querySelectorAll('.nav-menu a').forEach(link => {
738
+ link.addEventListener('click', (e) => {
739
+ e.preventDefault();
740
+ const route = link.getAttribute('href').slice(1);
741
+ navigateTo(route);
742
+
743
+ // 更新活动状态
744
+ document.querySelectorAll('.nav-menu a').forEach(a => {
745
+ a.classList.remove('active');
746
+ });
747
+ link.classList.add('active');
748
+ });
749
+ });
750
+
751
+ 8.4 表单验证:
752
+ document.querySelectorAll('form').forEach(form => {
753
+ form.addEventListener('submit', (e) => {
754
+ e.preventDefault();
755
+
756
+ // 简单验证示例
757
+ const inputs = form.querySelectorAll('input[required]');
758
+ let isValid = true;
759
+
760
+ inputs.forEach(input => {
761
+ if (!input.value.trim()) {
762
+ input.classList.add('error');
763
+ isValid = false;
764
+ } else {
765
+ input.classList.remove('error');
766
+ }
767
+ });
768
+
769
+ if (isValid) {
770
+ showToast('提交成功!', 'success');
771
+ form.reset();
772
+ } else {
773
+ showToast('请填写所有必填字段', 'error');
774
+ }
775
+ });
776
+ });
777
+
778
+ 8.5 模态框 (Modal):
779
+ function openModal(modalId) {
780
+ const modal = document.getElementById(modalId);
781
+ modal.classList.add('modal-open');
782
+ document.body.style.overflow = 'hidden';
783
+ }
784
+
785
+ function closeModal(modalId) {
786
+ const modal = document.getElementById(modalId);
787
+ modal.classList.remove('modal-open');
788
+ document.body.style.overflow = '';
789
+ }
790
+
791
+ // 点击遮罩关闭
792
+ document.querySelectorAll('.modal-overlay').forEach(overlay => {
793
+ overlay.addEventListener('click', (e) => {
794
+ if (e.target === overlay) {
795
+ closeModal(overlay.closest('.modal').id);
796
+ }
797
+ });
798
+ });
799
+
800
+ 8.6 Toast 通知:
801
+ function showToast(message, type = 'info') {
802
+ const toast = document.createElement('div');
803
+ toast.className = `toast toast-${type}`;
804
+ toast.textContent = message;
805
+ document.body.appendChild(toast);
806
+
807
+ // 动画显示
808
+ setTimeout(() => toast.classList.add('toast-show'), 10);
809
+
810
+ // 3秒后移除
811
+ setTimeout(() => {
812
+ toast.classList.remove('toast-show');
813
+ setTimeout(() => toast.remove(), 300);
814
+ }, 3000);
815
+ }
816
+
817
+ 8.7 表格排序 (Table Sorting):
818
+ document.querySelectorAll('.table-sortable th').forEach(th => {
819
+ th.addEventListener('click', () => {
820
+ const table = th.closest('table');
821
+ const columnIndex = Array.from(th.parentNode.children).indexOf(th);
822
+ const rows = Array.from(table.querySelectorAll('tbody tr'));
823
+
824
+ rows.sort((a, b) => {
825
+ const aText = a.children[columnIndex].textContent;
826
+ const bText = b.children[columnIndex].textContent;
827
+ return aText.localeCompare(bText);
828
+ });
829
+
830
+ // 重新插入排序后的行
831
+ rows.forEach(row => table.querySelector('tbody').appendChild(row));
832
+ });
833
+ });
834
+
835
+ 8.8 模拟数据加载:
836
+ function simulateDataLoad(callback, delay = 1000) {
837
+ // 显示加载状态
838
+ const loader = document.createElement('div');
839
+ loader.className = 'loader';
840
+ loader.textContent = '加载中...';
841
+ document.querySelector('.main').appendChild(loader);
842
+
843
+ // 模拟异步加载
844
+ setTimeout(() => {
845
+ loader.remove();
846
+ callback();
847
+ }, delay);
848
+ }
849
+
850
+ 8.9 搜索功能:
851
+ const searchInput = document.querySelector('.search-input');
852
+ if (searchInput) {
853
+ searchInput.addEventListener('input', (e) => {
854
+ const query = e.target.value.toLowerCase();
855
+ const items = document.querySelectorAll('.searchable-item');
856
+
857
+ items.forEach(item => {
858
+ const text = item.textContent.toLowerCase();
859
+ item.style.display = text.includes(query) ? '' : 'none';
860
+ });
861
+ });
862
+ }
863
+
864
+ 8.10 防抖/节流 (Debounce/Throttle):
865
+ function debounce(func, wait) {
866
+ let timeout;
867
+ return function(...args) {
868
+ clearTimeout(timeout);
869
+ timeout = setTimeout(() => func.apply(this, args), wait);
870
+ };
871
+ }
872
+
873
+ // 应用于搜索
874
+ searchInput.addEventListener('input', debounce((e) => {
875
+ console.log('搜索:', e.target.value);
876
+ }, 300));
877
+ ```
878
+
879
+ **验证点**:
880
+ - [x] SPA路由系统正常工作
881
+ - [x] 所有按钮/链接有点击交互
882
+ - [x] 表单有验证逻辑
883
+ - [x] 模态框可打开/关闭
884
+ - [x] Toast通知可显示
885
+ - [x] 至少1个复杂交互(排序/搜索/过滤)
886
+
887
+ ---
888
+
889
+ ### Phase 9: Responsive Adaptation (响应式适配)
890
+
891
+ **目标**: 确保所有页面和组件在三种断点下正常显示和交互
892
+
893
+ **输入**: Phase 6/7/8的完整HTML/CSS/JS
894
+ **输出**: 响应式测试报告(嵌入HTML注释)
895
+
896
+ **执行步骤**:
897
+ ```markdown
898
+ 9.1 三断点测试:
899
+ - Mobile (320px-767px): 竖屏手机
900
+ - Tablet (768px-1023px): 平板/横屏手机
901
+ - Desktop (1024px+): 桌面/笔记本
902
+
903
+ 9.2 Mobile优化:
904
+ - 导航: 汉堡菜单或底部Tab导航
905
+ - 表格: 卡片化展示或横向滚动
906
+ - 表单: 全宽输入框
907
+ - 图片: 响应式图片(srcset或object-fit)
908
+ - 字体: 稍小的基准字号(14px)
909
+
910
+ 9.3 Tablet优化:
911
+ - 导航: 折叠式侧边栏或顶部导航
912
+ - 表格: 简化列数或固定关键列
913
+ - 布局: 2列网格
914
+
915
+ 9.4 Desktop优化:
916
+ - 导航: 完整顶部导航+侧边栏
917
+ - 表格: 完整列数+排序/过滤
918
+ - 布局: 3-4列网格
919
+
920
+ 9.5 Touch Targets:
921
+ 确保所有可点击元素在移动端至少44x44px
922
+
923
+ .btn, .nav-link {
924
+ min-height: 44px;
925
+ min-width: 44px;
926
+ }
927
+
928
+ 9.6 Viewport Meta:
929
+ 已在Phase 6添加:
930
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
931
+
932
+ 9.7 测试清单:
933
+ 在每个断点测试:
934
+ - [ ] 页面布局正常
935
+ - [ ] 导航可用
936
+ - [ ] 表单可填写
937
+ - [ ] 按钮可点击
938
+ - [ ] 图片正常显示
939
+ - [ ] 文字可读(不截断)
940
+ - [ ] 滚动流畅
941
+ - [ ] 无水平滚动条
942
+
943
+ 9.8 输出测试报告:
944
+ 将测试结果记录为HTML注释
945
+ <!-- Responsive Test Report
946
+ Mobile (375px): ✅ Layout OK, ✅ Nav OK, ✅ Forms OK
947
+ Tablet (768px): ✅ Layout OK, ✅ Nav OK, ✅ Tables OK
948
+ Desktop (1280px): ✅ Layout OK, ✅ Nav OK, ✅ All features OK
949
+ -->
950
+ ```
951
+
952
+ **验证点**:
953
+ - [x] 在320px宽度下页面可用
954
+ - [x] 在768px宽度下页面可用
955
+ - [x] 在1280px宽度下页面可用
956
+ - [x] 所有Touch Targets ≥ 44px
957
+ - [x] 无水平滚动条
958
+
959
+ ---
960
+
961
+ ### Phase 10: Constitution & Quality Check (宪法与质量检查)
962
+
963
+ **目标**: 验证原型符合所有Constitution条款和质量标准
964
+
965
+ **输入**: 完整的UI_PROTOTYPE.html
966
+ **输出**: Constitution检查报告
967
+
968
+ **执行步骤**:
969
+ ```markdown
970
+ 10.1 Constitution检查:
971
+
972
+ Article I - Quality First (质量至上):
973
+ - [ ] I.1 Complete Implementation: HTML无占位符,所有页面完整
974
+ - [ ] I.2 No Simplification: 交互逻辑完整,非简化版本
975
+ - [ ] I.4 Quality Gates: 通过HTML验证,无console错误
976
+
977
+ Article III - Security First (安全优先):
978
+ - [ ] III.1 No Hardcoded Secrets: 无API密钥硬编码
979
+ - [ ] III.2 Input Validation: 表单有验证逻辑
980
+ - [ ] III.4 Secure by Default: 使用HTTPS CDN资源
981
+
982
+ Article V - Maintainability (可维护性):
983
+ - [ ] V.3 Documentation: HTML注释包含设计文档
984
+ - [ ] V.4 File Size Limits: 单文件HTML ≤ 2000行(可接受)
985
+
986
+ Article X - Requirement Boundary (需求边界):
987
+ - [ ] X.1 No Speculation: 仅实现PRD明确的功能
988
+ - [ ] X.2 No Speculative Features: 无"未来可能需要"的功能
989
+
990
+ 10.2 质量检查清单:
991
+
992
+ HTML质量:
993
+ - [ ] 使用HTML5语义化标签
994
+ - [ ] 无未闭合标签
995
+ - [ ] ARIA标签完整
996
+ - [ ] 无重复ID
997
+
998
+ CSS质量:
999
+ - [ ] 使用CSS变量(Design System)
1000
+ - [ ] 响应式媒体查询正常
1001
+ - [ ] 无!important滥用
1002
+ - [ ] 命名规范(BEM或一致的命名)
1003
+
1004
+ JavaScript质量:
1005
+ - [ ] 无全局变量污染
1006
+ - [ ] 事件监听器正确绑定
1007
+ - [ ] 无内存泄漏(事件监听器移除)
1008
+ - [ ] Console无错误
1009
+
1010
+ 可访问性:
1011
+ - [ ] 色彩对比度 ≥ 4.5:1
1012
+ - [ ] 键盘导航可用
1013
+ - [ ] 屏幕阅读器友好
1014
+ - [ ] focus状态可见
1015
+
1016
+ 性能:
1017
+ - [ ] CDN资源加载<1s
1018
+ - [ ] 首屏渲染<2s
1019
+ - [ ] 交互响应<100ms
1020
+ - [ ] 无不必要的重绘/回流
1021
+
1022
+ 10.3 PRD对齐检查:
1023
+ 遍历PRD中的每个用户故事:
1024
+ - [ ] 用户故事1: {标题} → UI页面/组件: {对应实现}
1025
+ - [ ] 用户故事2: {标题} → UI页面/组件: {对应实现}
1026
+ ...
1027
+
1028
+ 确保所有用户故事都有对应的UI实现
1029
+
1030
+ 10.4 设计灵感验证:
1031
+ - [ ] 采样了2位大师
1032
+ - [ ] 转译说明清晰可执行
1033
+ - [ ] 实际样式符合转译说明
1034
+ - [ ] 禁止模仿的元素未出现
1035
+
1036
+ 10.5 Anti-Generic-Design验证:
1037
+ - [ ] 无占位图片(Picsum图片正常加载)
1038
+ - [ ] 无常见AI紫/蓝配色
1039
+ - [ ] 无Emoji图标(使用SVG/图标库)
1040
+ - [ ] 无Lorem Ipsum文本
1041
+
1042
+ 10.6 运行Constitution验证脚本:
1043
+ bash .claude/scripts/validate-constitution.sh --type ui --severity warning
1044
+
1045
+ 解析输出:
1046
+ - 如果有ERROR级别违规 → 必须修复
1047
+ - 如果有WARNING级别违规 → 记录到报告
1048
+
1049
+ 10.7 输出Constitution检查报告:
1050
+ 嵌入HTML注释:
1051
+ <!-- Constitution Check Report
1052
+ Generated: {timestamp}
1053
+ Status: PASS / WARN / FAIL
1054
+
1055
+ Article I - Quality First: ✅ PASS
1056
+ Article III - Security First: ✅ PASS
1057
+ Article V - Maintainability: ⚠️ WARN (文件略大,但可接受)
1058
+ Article X - Requirement Boundary: ✅ PASS
1059
+
1060
+ Quality Checklist:
1061
+ - HTML: ✅ 18/18 checks passed
1062
+ - CSS: ✅ 12/12 checks passed
1063
+ - JavaScript: ✅ 8/8 checks passed
1064
+ - Accessibility: ⚠️ 7/8 checks passed (1 minor issue)
1065
+ - Performance: ✅ 4/4 checks passed
1066
+
1067
+ PRD Alignment:
1068
+ - User Story 1: ✅ Implemented in page-orders
1069
+ - User Story 2: ✅ Implemented in modal-create-order
1070
+ - User Story 3: ✅ Implemented in page-settings
1071
+
1072
+ Design Inspirations:
1073
+ - Inspiration 1: ✅ Applied (grid system from Müller-Brockmann)
1074
+ - Inspiration 2: ✅ Applied (color palette from Kusama)
1075
+
1076
+ Anti-Generic-Design:
1077
+ - ✅ Real images (Picsum)
1078
+ - ✅ Unique color palette (避免AI紫)
1079
+ - ✅ SVG icons (Lucide)
1080
+ - ✅ Real content (no Lorem Ipsum)
1081
+
1082
+ Overall Status: READY FOR HANDOFF
1083
+ -->
1084
+
1085
+ 10.8 最终文件输出:
1086
+ 将完整的HTML写入:
1087
+ devflow/requirements/${reqId}/UI_PROTOTYPE.html
1088
+
1089
+ 10.9 更新状态:
1090
+ orchestration_status.json:
1091
+ {
1092
+ "phase": "ui_complete",
1093
+ "uiPrototypeGenerated": true,
1094
+ "uiPrototypeFile": "UI_PROTOTYPE.html",
1095
+ "constitutionCheckPassed": true
1096
+ }
1097
+
1098
+ 10.10 记录事件:
1099
+ log_event "$REQ_ID" "UI prototype generation completed"
1100
+ ```
1101
+
1102
+ **验证点**:
1103
+ - [x] Constitution检查通过(或仅WARNING)
1104
+ - [x] 质量检查清单至少90%通过
1105
+ - [x] 所有PRD用户故事都有对应UI实现
1106
+ - [x] 设计灵感已应用且可验证
1107
+ - [x] Anti-Generic-Design规则全部遵守
1108
+
1109
+ ---
1110
+
1111
+ ## Output Format (最终输出格式)
1112
+
1113
+ ### UI_PROTOTYPE.html Structure:
1114
+
1115
+ ```html
1116
+ <!DOCTYPE html>
1117
+ <html lang="zh-CN">
1118
+ <head>
1119
+ <meta charset="UTF-8">
1120
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
1121
+ <meta name="color-scheme" content="light dark">
1122
+ <title>{REQ_ID} - {需求标题} - UI原型</title>
1123
+
1124
+ <!-- === Design System Metadata === -->
1125
+ <!--
1126
+ Generated: {ISO 8601 timestamp}
1127
+ REQ-ID: {REQ_ID}
1128
+ Template Version: 1.0.0
1129
+
1130
+ === Product Analysis ===
1131
+ {Phase 1 输出}
1132
+
1133
+ === Design Inspirations ===
1134
+ {Phase 2 输出: 2位大师+转译说明}
1135
+
1136
+ === Design System ===
1137
+ {Phase 3 输出: 色彩/字体/间距系统}
1138
+
1139
+ === Information Architecture ===
1140
+ {Phase 4 输出: 站点地图+导航结构}
1141
+
1142
+ === Component Inventory ===
1143
+ {Phase 5 输出: 组件清单}
1144
+
1145
+ === Constitution Check Report ===
1146
+ {Phase 10 输出: 完整检查报告}
1147
+ -->
1148
+
1149
+ <!-- CDN Resources -->
1150
+ <link href="https://fonts.googleapis.com/css2?family={选定字体}&display=swap" rel="stylesheet">
1151
+ <script src="https://unpkg.com/lucide@latest"></script>
1152
+
1153
+ <style>
1154
+ /* === Design System (CSS Variables) === */
1155
+ :root {
1156
+ /* Phase 3 的 Design Tokens */
1157
+ }
1158
+
1159
+ /* === Reset & Base Styles === */
1160
+ /* Phase 7.3 */
1161
+
1162
+ /* === Layout System === */
1163
+ /* Phase 7.4 */
1164
+
1165
+ /* === Components === */
1166
+ /* Phase 7.5 - 所有组件样式 */
1167
+
1168
+ /* === Pages === */
1169
+ /* Phase 7.6 - 页面特定样式 */
1170
+
1171
+ /* === Responsive === */
1172
+ /* Phase 7.7 - 媒体查询 */
1173
+
1174
+ /* === Animations === */
1175
+ /* Phase 7.8 - 动效 */
1176
+
1177
+ /* === Utilities === */
1178
+ /* Phase 7.10 - 工具类 */
1179
+ </style>
1180
+ </head>
1181
+ <body>
1182
+ <!-- === Global Header === -->
1183
+ <header class="header">
1184
+ <!-- Phase 6.5 - 导航栏 -->
1185
+ </header>
1186
+
1187
+ <!-- === Main Content === -->
1188
+ <main class="main">
1189
+ <!-- Page 1 -->
1190
+ <section id="page-{name}" class="page page-active">
1191
+ <!-- Phase 6.5 - 页面内容 -->
1192
+ </section>
1193
+
1194
+ <!-- Page 2 -->
1195
+ <section id="page-{name}" class="page">
1196
+ <!-- More pages... -->
1197
+ </section>
1198
+ </main>
1199
+
1200
+ <!-- === Global Footer === -->
1201
+ <footer class="footer">
1202
+ <!-- Phase 6.5 - 页脚 -->
1203
+ </footer>
1204
+
1205
+ <!-- === Modals === -->
1206
+ <div id="modal-{name}" class="modal">
1207
+ <!-- Phase 6.5 - 模态框 -->
1208
+ </div>
1209
+
1210
+ <script>
1211
+ /* === Initialization === */
1212
+ /* Phase 8.1 */
1213
+
1214
+ /* === SPA Router === */
1215
+ /* Phase 8.2 */
1216
+
1217
+ /* === Navigation === */
1218
+ /* Phase 8.3 */
1219
+
1220
+ /* === Forms === */
1221
+ /* Phase 8.4 */
1222
+
1223
+ /* === Modals === */
1224
+ /* Phase 8.5 */
1225
+
1226
+ /* === Toast === */
1227
+ /* Phase 8.6 */
1228
+
1229
+ /* === Table Sorting === */
1230
+ /* Phase 8.7 */
1231
+
1232
+ /* === More Interactions === */
1233
+ /* Phase 8.8-8.10 */
1234
+ </script>
1235
+
1236
+ <!-- === Responsive Test Report === -->
1237
+ <!-- Phase 9.8 输出 -->
1238
+ </body>
1239
+ </html>
1240
+ ```
1241
+
1242
+ ---
1243
+
1244
+ ## Error Handling & Recovery
1245
+
1246
+ ### Common Errors:
1247
+
1248
+ **1. PRD中无UI需求**
1249
+ ```
1250
+ WARNING: No UI requirements detected in PRD.md
1251
+ Analyzed sections: 用户故事, 非功能需求
1252
+ Found keywords: 0 matches for "用户界面|前端|Web页面|UI"
1253
+
1254
+ Recommendation:
1255
+ 1. This appears to be a backend-only requirement
1256
+ 2. Skipping UI prototype generation
1257
+ 3. Continuing to /flow-epic
1258
+
1259
+ Action: EXIT with status "ui_skipped"
1260
+ ```
1261
+
1262
+ **2. 设计灵感采样失败**
1263
+ ```
1264
+ ERROR: Design inspiration sampling failed
1265
+ Sampled: {Designer1}, {Designer2}
1266
+ Issue: Both designers from same category (建筑)
1267
+ Expected: Designers from different categories
1268
+
1269
+ Recovery:
1270
+ 1. Re-sample with category diversity check
1271
+ 2. Retry Phase 2
1272
+ ```
1273
+
1274
+ **3. HTML验证失败**
1275
+ ```
1276
+ ERROR: HTML validation failed
1277
+ Issues:
1278
+ - Unclosed <div> tag at line 145
1279
+ - Duplicate ID "btn-submit" at lines 89, 203
1280
+ - Missing alt attribute on <img> at line 67
1281
+
1282
+ Recovery:
1283
+ 1. Fix HTML errors
1284
+ 2. Re-run validate-constitution.sh
1285
+ 3. Retry Phase 10
1286
+ ```
1287
+
1288
+ **4. Constitution违规**
1289
+ ```
1290
+ ⚠️ Constitution violations detected:
1291
+
1292
+ [error] Article I.1 - NO PARTIAL IMPLEMENTATION
1293
+ Location: UI_PROTOTYPE.html:245
1294
+ Issue: Placeholder image <img src="placeholder.jpg">
1295
+ Fix: Replace with Picsum URL
1296
+
1297
+ [warning] Article V.4 - File Size
1298
+ Location: UI_PROTOTYPE.html
1299
+ Issue: File size 2300 lines (limit: 2000 lines)
1300
+ Fix: Acceptable for complex prototypes, or split into modules
1301
+
1302
+ Recovery:
1303
+ 1. If ERROR violations: MUST FIX before proceeding
1304
+ 2. If only WARNINGS: Document in report, proceed with caution
1305
+ ```
1306
+
1307
+ ---
1308
+
1309
+ ## Integration with DevFlow
1310
+
1311
+ ### Workflow Position:
1312
+ ```text
1313
+ /flow-prd → PRD.md 生成完成
1314
+
1315
+ /flow-ui → 检测UI需求 → 生成UI_PROTOTYPE.html ← YOU ARE HERE
1316
+
1317
+ /flow-epic → 参考UI原型生成EPIC.md和TASKS.md
1318
+
1319
+ /flow-dev → 基于UI原型实现代码
1320
+ ```
1321
+
1322
+ ### Conditional Trigger Logic:
1323
+ 在 `/flow-new` 或 `/flow-prd` 完成后自动执行:
1324
+
1325
+ ```bash
1326
+ # 检测是否需要UI原型
1327
+ has_ui_keywords=$(grep -iE "用户界面|前端|Web页面|UI|界面设计|交互" "$PRD_FILE")
1328
+ has_frontend_stack=$(ls -d src/components 2>/dev/null || ls package.json 2>/dev/null)
1329
+
1330
+ if [[ -n "$has_ui_keywords" || -n "$has_frontend_stack" ]]; then
1331
+ echo "✅ UI requirements detected, triggering /flow-ui"
1332
+ /flow-ui "$REQ_ID"
1333
+ else
1334
+ echo "ℹ️ No UI requirements detected, skipping UI prototype"
1335
+ # 直接进入 /flow-epic
1336
+ fi
1337
+ ```
1338
+
1339
+ ### Data Flow:
1340
+ ```text
1341
+ PRD.md (Input)
1342
+ ├─ 用户故事 → Phase 1 (产品分析) → 页面列表
1343
+ ├─ 非功能需求 → Phase 3 (设计系统) → 性能/可访问性约束
1344
+ └─ 验收标准 → Phase 8 (交互逻辑) → 验证规则
1345
+
1346
+ UI_PROTOTYPE.html (Output)
1347
+ ├─ HTML注释 → EPIC生成时的参考资料
1348
+ ├─ Design System → TASKS生成时的技术约束
1349
+ └─ Component Inventory → DEV实现时的组件清单
1350
+ ```
1351
+
1352
+ ---
1353
+
1354
+ ## Best Practices
1355
+
1356
+ ### For ui-designer Agent:
1357
+
1358
+ 1. **严格遵循Execution Flow**
1359
+ - 不跳过任何Phase
1360
+ - 每个Phase的输出是下一个Phase的输入
1361
+
1362
+ 2. **设计灵感采样**
1363
+ - 选择互补而非冲突的风格
1364
+ - 推荐组合: 现代主义(秩序) + 生成艺术(动态)
1365
+ - 避免组合: 两位极简主义大师(风格过于相似)
1366
+
1367
+ 3. **内容真实性**
1368
+ - 图片: https://picsum.photos/id/{1-200}/{width}/{height}
1369
+ - 数据: 使用符合业务场景的模拟数据
1370
+ - 文本: 从PRD中提取真实的业务术语
1371
+
1372
+ 4. **响应式优先**
1373
+ - 移动端优先设计(Mobile First)
1374
+ - 在小屏幕可用是基础,而非可选
1375
+
1376
+ 5. **可访问性非可选**
1377
+ - ARIA标签是必需品
1378
+ - 键盘导航必须可用
1379
+ - 色彩对比度必须达标
1380
+
1381
+ ### For Main Agent (Claude):
1382
+
1383
+ 1. **条件触发**
1384
+ - 检测PRD关键词前使用grep -i(忽略大小写)
1385
+ - 检测前端技术栈时检查多个标志(package.json, src/, components/)
1386
+
1387
+ 2. **状态管理**
1388
+ - 更新orchestration_status.json中的phase
1389
+ - 记录uiPrototypeFile路径
1390
+
1391
+ 3. **错误处理**
1392
+ - 如果UI生成失败,记录详细错误到EXECUTION_LOG.md
1393
+ - 允许用户选择跳过UI阶段直接进入Epic
1394
+
1395
+ ---
1396
+
1397
+ ## Validation Checklist (最终检查清单)
1398
+
1399
+ 在输出UI_PROTOTYPE.html前,确保:
1400
+
1401
+ ### Template Compliance
1402
+ - [x] 遵循了所有10个Phase的Execution Flow
1403
+ - [x] 每个Phase的输出都已生成并嵌入HTML注释
1404
+
1405
+ ### Anti-Generic-Design
1406
+ - [x] 无占位图片(所有图片使用Picsum URL)
1407
+ - [x] 无常见AI紫色/蓝色配色
1408
+ - [x] 无Emoji图标(使用SVG或图标库)
1409
+ - [x] 无Lorem Ipsum占位文本
1410
+
1411
+ ### Constitution Compliance
1412
+ - [x] Article I - 完整实现,无占位符
1413
+ - [x] Article III - 无硬编码密钥
1414
+ - [x] Article V - HTML注释完整,代码可维护
1415
+ - [x] Article X - 仅实现PRD明确的需求
1416
+
1417
+ ### Quality Standards
1418
+ - [x] HTML5语义化标签
1419
+ - [x] ARIA标签完整
1420
+ - [x] 响应式布局(三断点)
1421
+ - [x] 交互逻辑完整
1422
+ - [x] 设计系统完整
1423
+ - [x] 所有PRD用户故事对齐
1424
+
1425
+ ### Ready for Handoff
1426
+ - [x] 文件可独立运行(浏览器打开即可查看)
1427
+ - [x] 开发人员可直接参考实现代码
1428
+ - [x] 产品经理可用于需求验证
1429
+ - [x] 设计师可用于设计评审
1430
+
1431
+ ---
1432
+
1433
+ **Template Version**: 1.0.0
1434
+ **Last Updated**: 2025-01-10
1435
+ **Maintainer**: CC-DevFlow Team
1436
+ **License**: MIT