create-yss-spec 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/package.json +1 -1
  2. package/template/.codex/skills/data-analytics/.app.json +84 -0
  3. package/template/.codex/skills/data-analytics/.codex-plugin/plugin.json +66 -0
  4. package/template/.codex/skills/data-analytics/.mcp.json +30 -0
  5. package/template/.codex/skills/data-analytics/AGENTS.md +20 -0
  6. package/template/.codex/skills/data-analytics/DEPENDENCIES.MD +27 -0
  7. package/template/.codex/skills/data-analytics/README.md +60 -0
  8. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html +16 -0
  9. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part001 +1 -0
  10. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part002 +1 -0
  11. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part003 +1 -0
  12. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part004 +1 -0
  13. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part005 +1 -0
  14. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part006 +1 -0
  15. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html +16 -0
  16. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part001 +1 -0
  17. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part002 +1 -0
  18. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part003 +1 -0
  19. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part004 +1 -0
  20. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part005 +1 -0
  21. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part006 +1 -0
  22. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part007 +1 -0
  23. package/template/.codex/skills/data-analytics/assets/datascience-small.svg +5 -0
  24. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html +16 -0
  25. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part001 +1 -0
  26. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part002 +1 -0
  27. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part003 +1 -0
  28. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part004 +1 -0
  29. package/template/.codex/skills/data-analytics/assets/datascience.png +0 -0
  30. package/template/.codex/skills/data-analytics/assets/datascience.svg +10 -0
  31. package/template/.codex/skills/data-analytics/mcp/server.cjs +2963 -0
  32. package/template/.codex/skills/data-analytics/package-lock.json +3048 -0
  33. package/template/.codex/skills/data-analytics/package.json +43 -0
  34. package/template/.codex/skills/data-analytics/scripts/normalize-widget-assets.mjs +75 -0
  35. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +160 -0
  36. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/agents/openai.yaml +6 -0
  37. package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +148 -0
  38. package/template/.codex/skills/data-analytics/skills/build-dashboard/agents/openai.yaml +6 -0
  39. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/bi-platform-dashboard.md +18 -0
  40. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/html-dashboard.md +24 -0
  41. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/mcp-artifact-dashboard.md +71 -0
  42. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/streamlit-dashboard.md +85 -0
  43. package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +207 -0
  44. package/template/.codex/skills/data-analytics/skills/build-report/agents/openai.yaml +6 -0
  45. package/template/.codex/skills/data-analytics/skills/build-report/assets/executive-report-shell.html +70 -0
  46. package/template/.codex/skills/data-analytics/skills/build-report/assets/technical-report-shell.html +66 -0
  47. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +118 -0
  48. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/agents/openai.yaml +6 -0
  49. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/__init__.py +1 -0
  50. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +57 -0
  51. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/constants.py +61 -0
  52. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/docx_writer.py +362 -0
  53. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/html_parser.py +829 -0
  54. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/model.py +30 -0
  55. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +129 -0
  56. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/quality.py +374 -0
  57. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/rendering.py +613 -0
  58. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/table_utils.py +54 -0
  59. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/utils.py +16 -0
  60. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc_plan.py +9 -0
  61. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +78 -0
  62. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/agents/openai.yaml +6 -0
  63. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/scripts/report_to_google_slides.py +2379 -0
  64. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +88 -0
  65. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/agents/openai.yaml +6 -0
  66. package/template/.codex/skills/data-analytics/skills/build-report/specifications/executive-report.md +97 -0
  67. package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +59 -0
  68. package/template/.codex/skills/data-analytics/skills/build-report/specifications/technical-report.md +75 -0
  69. package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +103 -0
  70. package/template/.codex/skills/data-analytics/skills/design-kpis/agents/openai.yaml +6 -0
  71. package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +68 -0
  72. package/template/.codex/skills/data-analytics/skills/gather-business-context/agents/openai.yaml +6 -0
  73. package/template/.codex/skills/data-analytics/skills/index/SKILL.md +251 -0
  74. package/template/.codex/skills/data-analytics/skills/index/agents/openai.yaml +6 -0
  75. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +131 -0
  76. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/agents/openai.yaml +6 -0
  77. package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +141 -0
  78. package/template/.codex/skills/data-analytics/skills/kpi-reporting/agents/openai.yaml +6 -0
  79. package/template/.codex/skills/data-analytics/skills/kpi-reporting/references/report-templates.md +32 -0
  80. package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +106 -0
  81. package/template/.codex/skills/data-analytics/skills/market-sizing/agents/openai.yaml +6 -0
  82. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +130 -0
  83. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/agents/openai.yaml +6 -0
  84. package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +141 -0
  85. package/template/.codex/skills/data-analytics/skills/product-business-analysis/agents/openai.yaml +6 -0
  86. package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +178 -0
  87. package/template/.codex/skills/data-analytics/skills/spreadsheets/agents/openai.yaml +9 -0
  88. package/template/.codex/skills/data-analytics/skills/spreadsheets/assets/file-spreadsheet.png +0 -0
  89. package/template/.codex/skills/data-analytics/skills/spreadsheets/charts.md +31 -0
  90. package/template/.codex/skills/data-analytics/skills/spreadsheets/references/artifact_tool_api.md +466 -0
  91. package/template/.codex/skills/data-analytics/skills/spreadsheets/style_guidelines.md +99 -0
  92. package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +195 -0
  93. package/template/.codex/skills/data-analytics/skills/user-context/agents/openai.yaml +6 -0
  94. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +26 -0
  95. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/source-category-config.json +51 -0
  96. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/user-context-config.md +66 -0
  97. package/template/.codex/skills/data-analytics/skills/user-context/references/automation.md +69 -0
  98. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +204 -0
  99. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-state-template.json +87 -0
  100. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +497 -0
  101. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/connector-playbook.md +74 -0
  102. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/setup.md +65 -0
  103. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/skill-template.md +160 -0
  104. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/source-intake.md +75 -0
  105. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/weekly-polling-automation.md +96 -0
  106. package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +263 -0
  107. package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +1460 -0
  108. package/template/.codex/skills/data-analytics/skills/user-context/scripts/init_user_context_state.py +128 -0
  109. package/template/.codex/skills/data-analytics/skills/user-context/scripts/reset_user_context_state.py +101 -0
  110. package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +499 -0
  111. package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +978 -0
  112. package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +190 -0
  113. package/template/.codex/skills/data-analytics/skills/validate-data/agents/openai.yaml +6 -0
  114. package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +157 -0
  115. package/template/.codex/skills/data-analytics/skills/visualize-data/agents/openai.yaml +6 -0
  116. package/template/.codex/skills/data-analytics/skills/visualize-data/references/seaborn-templates.md +774 -0
  117. package/template/.codex/skills/data-analytics/src/DESIGN.md +222 -0
  118. package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +3666 -0
  119. package/template/.codex/skills/data-analytics/src/analytics-app/analytics-layout.test.mjs +136 -0
  120. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartFrame.tsx +54 -0
  121. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartLegend.tsx +96 -0
  122. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartRenderer.tsx +1647 -0
  123. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartTooltip.tsx +245 -0
  124. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-app-helpers.tsx +462 -0
  125. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-capabilities.ts +107 -0
  126. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-compatibility.ts +164 -0
  127. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-contract.ts +192 -0
  128. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-theme.ts +203 -0
  129. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-tokens.css +619 -0
  130. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-transforms.ts +402 -0
  131. package/template/.codex/skills/data-analytics/src/analytics-app/fonts/SystemSansVariableVF.woff2 +0 -0
  132. package/template/.codex/skills/data-analytics/src/analytics-app/imageExport.ts +370 -0
  133. package/template/.codex/skills/data-analytics/src/analytics-app/layout/AnalyticsLayoutCanvas.tsx +536 -0
  134. package/template/.codex/skills/data-analytics/src/analytics-app/layout/RichMarkdown.tsx +681 -0
  135. package/template/.codex/skills/data-analytics/src/analytics-app/layout/analyticsLayoutCore.ts +164 -0
  136. package/template/.codex/skills/data-analytics/src/analytics-app/main.tsx +21 -0
  137. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/chart_contract.py +472 -0
  138. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/check_analytics_app_runtime_links.py +75 -0
  139. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/design_contract.py +142 -0
  140. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/package_utils.py +142 -0
  141. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/tests/test_package_utils.py +377 -0
  142. package/template/.codex/skills/data-analytics/src/analytics-app/styles.css +3468 -0
  143. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.d.ts +44 -0
  144. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.jsx +639 -0
  145. package/template/.codex/skills/data-analytics/src/analytics-app/tables/data-table.css +327 -0
  146. package/template/.codex/skills/data-analytics/src/analytics-app/tokens.css +225 -0
  147. package/template/.codex/skills/data-analytics/src/analytics-app/types.ts +204 -0
  148. package/template/.codex/skills/data-analytics/src/analytics-app-core.md +85 -0
  149. package/template/.codex/skills/data-analytics/src/codex-style-contract.md +30 -0
  150. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.html +12 -0
  151. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.jsx +1008 -0
  152. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.css +2117 -0
  153. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.html +122 -0
  154. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.js +3588 -0
  155. package/template/.codex/skills/data-analytics/src/datascience-table-widget.css +483 -0
  156. package/template/.codex/skills/data-analytics/src/datascience-table-widget.html +32 -0
  157. package/template/.codex/skills/data-analytics/src/datascience-table-widget.js +333 -0
  158. package/template/.codex/skills/data-analytics/src/mcp-host.js +153 -0
  159. package/template/.codex/skills/data-analytics/src/recharts-config.js +315 -0
  160. package/template/.codex/skills/data-analytics/src/recharts-renderer.jsx +294 -0
  161. package/template/.codex/skills/data-analytics/src/sql-source-view.css +33 -0
  162. package/template/.codex/skills/data-analytics/src/sql-source-view.js +157 -0
  163. package/template/.codex/skills/data-analytics/src/styles/codex-theme.css +121 -0
  164. package/template/.codex/skills/data-analytics/src/table-renderer.jsx +28 -0
  165. package/template/.codex/skills/data-analytics/tests/chart-transforms.test.mjs +87 -0
  166. package/template/.codex/skills/data-analytics/tests/funnel-smoke.html +105 -0
  167. package/template/.codex/skills/data-analytics/tests/inline-widget-compare.html +233 -0
  168. package/template/.codex/skills/data-analytics/tests/mcp-server.test.mjs +1500 -0
  169. package/template/.codex/skills/data-analytics/tests/native-style-contract.test.mjs +219 -0
  170. package/template/.codex/skills/data-analytics/tests/recharts-config.test.mjs +144 -0
  171. package/template/.codex/skills/data-analytics/tests/recharts-renderer.test.mjs +11 -0
  172. package/template/.codex/skills/data-analytics/tests/rich-markdown.test.mjs +54 -0
  173. package/template/.codex/skills/data-analytics/tests/widget-render-harness.html +321 -0
  174. package/template/.codex/skills/data-analytics/tsconfig.json +19 -0
  175. package/template/.codex/skills/data-analytics/vite.config.ts +46 -0
  176. package/template/.codex/skills/product-design/.app.json +7 -0
  177. package/template/.codex/skills/product-design/.codex-plugin/plugin.json +50 -0
  178. package/template/.codex/skills/product-design/README.md +50 -0
  179. package/template/.codex/skills/product-design/agents/openai.yaml +4 -0
  180. package/template/.codex/skills/product-design/assets/composerIcon.svg +9 -0
  181. package/template/.codex/skills/product-design/assets/logo.png +0 -0
  182. package/template/.codex/skills/product-design/package.json +11 -0
  183. package/template/.codex/skills/product-design/references/browser-order.md +9 -0
  184. package/template/.codex/skills/product-design/references/communication-protocol.md +45 -0
  185. package/template/.codex/skills/product-design/references/critical-overrides.md +58 -0
  186. package/template/.codex/skills/product-design/references/local-prototype-preflight.md +16 -0
  187. package/template/.codex/skills/product-design/scripts/bootstrap-prototype.mjs +147 -0
  188. package/template/.codex/skills/product-design/skills/audit/SKILL.md +159 -0
  189. package/template/.codex/skills/product-design/skills/audit/agents/openai.yaml +6 -0
  190. package/template/.codex/skills/product-design/skills/audit/references/design-audit-framework.md +73 -0
  191. package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +133 -0
  192. package/template/.codex/skills/product-design/skills/design-qa/agents/openai.yaml +6 -0
  193. package/template/.codex/skills/product-design/skills/design-qa/references/qa-rubric.md +61 -0
  194. package/template/.codex/skills/product-design/skills/get-context/SKILL.md +81 -0
  195. package/template/.codex/skills/product-design/skills/get-context/agents/openai.yaml +6 -0
  196. package/template/.codex/skills/product-design/skills/ideate/SKILL.md +179 -0
  197. package/template/.codex/skills/product-design/skills/ideate/agents/openai.yaml +6 -0
  198. package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +105 -0
  199. package/template/.codex/skills/product-design/skills/image-to-code/agents/openai.yaml +6 -0
  200. package/template/.codex/skills/product-design/skills/index/SKILL.md +126 -0
  201. package/template/.codex/skills/product-design/skills/index/agents/openai.yaml +6 -0
  202. package/template/.codex/skills/product-design/skills/prototype/SKILL.md +128 -0
  203. package/template/.codex/skills/product-design/skills/prototype/agents/openai.yaml +6 -0
  204. package/template/.codex/skills/product-design/skills/prototype/references/existing-codebase-edits.md +18 -0
  205. package/template/.codex/skills/product-design/skills/research/SKILL.md +92 -0
  206. package/template/.codex/skills/product-design/skills/research/agents/openai.yaml +6 -0
  207. package/template/.codex/skills/product-design/skills/share/SKILL.md +41 -0
  208. package/template/.codex/skills/product-design/skills/share/agents/openai.yaml +6 -0
  209. package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +124 -0
  210. package/template/.codex/skills/product-design/skills/url-to-code/agents/openai.yaml +6 -0
  211. package/template/.codex/skills/product-design/skills/user-context/SKILL.md +147 -0
  212. package/template/.codex/skills/product-design/skills/user-context/agents/openai.yaml +6 -0
  213. package/template/.codex/skills/product-design/skills/user-context/plugin-author-config/user-context-template.md +63 -0
  214. package/template/.codex/skills/product-design/skills/user-context/references/onboarding.md +66 -0
  215. package/template/.codex/skills/product-design/skills/user-context/scripts/init_user_context.py +86 -0
  216. package/template/.codex/skills/product-design/skills/user-context/scripts/user_context_preflight.py +204 -0
  217. package/template/.codex/skills/product-design/templates/prototype/AGENTS.md +7 -0
  218. package/template/.codex/skills/product-design/templates/prototype/index.html +12 -0
  219. package/template/.codex/skills/product-design/templates/prototype/package.json +18 -0
  220. package/template/.codex/skills/product-design/templates/prototype/src/App.jsx +5 -0
  221. package/template/.codex/skills/product-design/templates/prototype/src/main.jsx +10 -0
  222. package/template/.codex/skills/product-design/templates/prototype/src/styles.css +13 -0
  223. package/template/.codex/skills/product-design/templates/prototype/vite.config.mjs +14 -0
  224. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +3 -3
  225. package/template/AGENTS.md +3 -3
  226. package/template/docs/adr/adr-product-design-prototype-entrypoint.md +54 -0
  227. package/template/docs/api/templates/openapi-draft-review-checklist.md +4 -2
  228. package/template/docs/design/README.md +8 -4
  229. package/template/docs/design/templates/interaction-spec-template.md +4 -1
  230. package/template/docs/design/templates/prototype-confirmation-template.md +57 -0
  231. package/template/docs/design/templates/prototype-review-checklist.md +6 -2
  232. package/template/docs/design/templates/state-matrix-template.md +1 -1
  233. package/template/docs/process/harness-executive-blueprint.md +2 -1
  234. package/template/docs/process/harness-process-tailoring.md +1 -1
  235. package/template/docs/process/harness-work-unit-map.md +1 -1
  236. package/template/docs/process/lifecycle-artifact-map.md +4 -3
  237. package/template/docs/process/product-prototype-workflow.md +82 -0
  238. package/template/docs/user-guide/product-lifecycle-workflow.md +2 -2
  239. package/template/docs/user-guide/product-rd-lifecycle-best-practices.md +15 -10
@@ -0,0 +1,204 @@
1
+ #!/usr/bin/env python3
2
+ """Read local Product Design context and print compact JSON."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import hashlib
8
+ import json
9
+ import os
10
+ import re
11
+ import sys
12
+ from datetime import datetime, timezone
13
+ from pathlib import Path
14
+ from typing import Any
15
+
16
+ PLUGIN_STATE_DIR = Path("state/plugins/product-design")
17
+ DEFAULT_MAX_CONTEXT_BYTES = 2_000_000
18
+
19
+
20
+ def parse_args() -> argparse.Namespace:
21
+ parser = argparse.ArgumentParser(
22
+ description="Read Product Design user-context.md and return saved context as JSON."
23
+ )
24
+ parser.add_argument(
25
+ "--codex-home",
26
+ type=Path,
27
+ default=None,
28
+ help="Codex home directory. Defaults to $CODEX_HOME or ~/.codex.",
29
+ )
30
+ parser.add_argument(
31
+ "--state-dir",
32
+ type=Path,
33
+ default=None,
34
+ help="Override the Product Design state directory.",
35
+ )
36
+ parser.add_argument(
37
+ "--max-context-bytes",
38
+ type=int,
39
+ default=DEFAULT_MAX_CONTEXT_BYTES,
40
+ help="Maximum user-context.md size to read.",
41
+ )
42
+ return parser.parse_args()
43
+
44
+
45
+ def resolve_state_dir(codex_home: Path | None, state_dir: Path | None) -> Path:
46
+ if state_dir is not None:
47
+ return state_dir.expanduser().resolve()
48
+ home = codex_home or Path(os.environ.get("CODEX_HOME", "~/.codex"))
49
+ return (home.expanduser() / PLUGIN_STATE_DIR).resolve()
50
+
51
+
52
+ def file_mtime(path: Path) -> str | None:
53
+ try:
54
+ return datetime.fromtimestamp(path.stat().st_mtime, tz=timezone.utc).isoformat()
55
+ except OSError:
56
+ return None
57
+
58
+
59
+ def sha256_text(text: str) -> str:
60
+ return hashlib.sha256(text.encode("utf-8")).hexdigest()
61
+
62
+
63
+ def parse_resource_name(line: str) -> dict[str, str]:
64
+ link_match = re.match(r"^\[(.+?)\]\((.+?)\)\s*$", line)
65
+ if link_match:
66
+ return {"name": link_match.group(1).strip(), "url": link_match.group(2).strip()}
67
+ url_match = re.match(r"^(https?://\S+)\s*$", line)
68
+ if url_match:
69
+ return {"name": url_match.group(1).strip(), "url": url_match.group(1).strip()}
70
+ return {"name": line.strip()}
71
+
72
+
73
+ def summarize_user_context(markdown: str) -> dict[str, Any]:
74
+ entries: list[dict[str, Any]] = []
75
+ unresolved_categories: list[str] = []
76
+ category: str | None = None
77
+ in_saved_context = False
78
+ current_entry: dict[str, Any] | None = None
79
+
80
+ def flush_entry() -> None:
81
+ nonlocal current_entry
82
+ if current_entry:
83
+ entries.append(current_entry)
84
+ current_entry = None
85
+
86
+ for raw_line in markdown.splitlines():
87
+ line = raw_line.strip()
88
+ if not line or line.startswith(("<!--", "-->")):
89
+ continue
90
+
91
+ category_match = re.match(r"^# ([^#].*?)\s*$", line)
92
+ if category_match:
93
+ flush_entry()
94
+ category = category_match.group(1).strip()
95
+ in_saved_context = False
96
+ continue
97
+
98
+ if line == "## Saved Links And Context":
99
+ flush_entry()
100
+ in_saved_context = True
101
+ continue
102
+
103
+ if not category or not in_saved_context:
104
+ continue
105
+
106
+ if line.casefold() == "status: not provided" or line.casefold() == "status: not provided.":
107
+ flush_entry()
108
+ unresolved_categories.append(category)
109
+ continue
110
+
111
+ if not line.startswith("- "):
112
+ flush_entry()
113
+ current_entry = {"category": category, **parse_resource_name(line)}
114
+ continue
115
+
116
+ if not current_entry:
117
+ continue
118
+
119
+ bullet = line[2:].strip()
120
+ for prefix, key in (
121
+ ("Date Added:", "date_added"),
122
+ ("File:", "file"),
123
+ ("Useful Context:", "useful_context"),
124
+ ("Future Use:", "future_use"),
125
+ ):
126
+ if bullet.startswith(prefix):
127
+ current_entry[key] = bullet[len(prefix) :].strip().rstrip(".")
128
+ break
129
+ else:
130
+ current_entry.setdefault("notes", []).append(bullet)
131
+
132
+ flush_entry()
133
+ return {"entries": entries, "unresolved_categories": unresolved_categories}
134
+
135
+
136
+ def missing_payload(state_dir: Path, context_path: Path) -> dict[str, Any]:
137
+ return {
138
+ "plugin": "product-design",
139
+ "state_dir": str(state_dir),
140
+ "user_context": {
141
+ "path": str(context_path),
142
+ "exists": False,
143
+ "status": "missing",
144
+ "entries": [],
145
+ "unresolved_categories": [],
146
+ },
147
+ }
148
+
149
+
150
+ def main() -> int:
151
+ args = parse_args()
152
+ state_dir = resolve_state_dir(args.codex_home, args.state_dir)
153
+ context_path = state_dir / "user-context.md"
154
+
155
+ if not context_path.exists():
156
+ print(json.dumps(missing_payload(state_dir, context_path), indent=2))
157
+ return 0
158
+
159
+ size = context_path.stat().st_size
160
+ if size > args.max_context_bytes:
161
+ print(
162
+ json.dumps(
163
+ {
164
+ "plugin": "product-design",
165
+ "state_dir": str(state_dir),
166
+ "user_context": {
167
+ "path": str(context_path),
168
+ "exists": True,
169
+ "status": "too_large",
170
+ "size_bytes": size,
171
+ "max_context_bytes": args.max_context_bytes,
172
+ "entries": [],
173
+ "unresolved_categories": [],
174
+ },
175
+ },
176
+ indent=2,
177
+ )
178
+ )
179
+ return 0
180
+
181
+ markdown = context_path.read_text(encoding="utf-8")
182
+ summary = summarize_user_context(markdown)
183
+ print(
184
+ json.dumps(
185
+ {
186
+ "plugin": "product-design",
187
+ "state_dir": str(state_dir),
188
+ "user_context": {
189
+ "path": str(context_path),
190
+ "exists": True,
191
+ "status": "present",
192
+ "sha256": sha256_text(markdown),
193
+ "modified_at": file_mtime(context_path),
194
+ **summary,
195
+ },
196
+ },
197
+ indent=2,
198
+ )
199
+ )
200
+ return 0
201
+
202
+
203
+ if __name__ == "__main__":
204
+ sys.exit(main())
@@ -0,0 +1,7 @@
1
+ # Prototype Instructions
2
+
3
+ Run the local server yourself and open the preview in the in-app browser. Do not give the user server-start instructions when you can run it.
4
+
5
+ Before making substantial visual changes, use the Product Design plugin's `get-context` skill when the visual source is unclear or no longer matches the current goal. When the user gives durable prototype-specific design feedback, preferences, or decisions, record them in `AGENTS.md`.
6
+
7
+ When implementing from a selected generated mock, treat that image as the source of truth for layout, component anatomy, density, spacing, color, typography, visible content, and hierarchy.
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Prototype</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/main.jsx"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "design-prototype",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite --host 127.0.0.1",
8
+ "build": "vite build",
9
+ "preview": "vite preview --host 127.0.0.1"
10
+ },
11
+ "dependencies": {
12
+ "@vitejs/plugin-react": "5.0.4",
13
+ "vite": "6.4.2",
14
+ "react": "19.2.0",
15
+ "react-dom": "19.2.0"
16
+ },
17
+ "devDependencies": {}
18
+ }
@@ -0,0 +1,5 @@
1
+ export function App() {
2
+ return (
3
+ <main></main>
4
+ );
5
+ }
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { createRoot } from "react-dom/client";
3
+ import { App } from "./App.jsx";
4
+ import "./styles.css";
5
+
6
+ createRoot(document.getElementById("root")).render(
7
+ <React.StrictMode>
8
+ <App />
9
+ </React.StrictMode>,
10
+ );
@@ -0,0 +1,13 @@
1
+ :root {
2
+ }
3
+
4
+ * {
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ body {
9
+ margin: 0;
10
+ min-width: 320px;
11
+ min-height: 100vh;
12
+ -webkit-font-smoothing: antialiased;
13
+ }
@@ -0,0 +1,14 @@
1
+ import { defineConfig } from "vite";
2
+ import react from "@vitejs/plugin-react";
3
+
4
+ export default defineConfig({
5
+ optimizeDeps: {
6
+ include: ["react", "react-dom/client"],
7
+ },
8
+ server: {
9
+ warmup: {
10
+ clientFiles: ["./src/main.jsx"],
11
+ },
12
+ },
13
+ plugins: [react()],
14
+ });
@@ -91,7 +91,7 @@ Use `excalidraw-diagram-generator` when diagrams will make boundaries, flows, da
91
91
  - persistence, metadata, versioning, lineage, query, or index -> system / data architecture, engineering contract, and Design Review downstream gates.
92
92
  4. Check whether required upstream artifacts exist.
93
93
  - Before PRD calibration, product design, API impact analysis, OpenAPI Draft, requirement freeze, or formal vertical slicing, verify PRD baseline and product overview design / functional architecture exist. If the task does not enter the PRD lifecycle, record the not-applicable reason in the impact assessment.
94
- - For UI work, before PRD calibration, API impact analysis, OpenAPI Draft, or requirement freeze, verify low-fidelity `prototype-review` is approved and `docs/design/prototypes/<feature>/index.html` exists as an Ant Design v6 high-fidelity HTML prototype.
94
+ - For UI work, before PRD calibration, API impact analysis, OpenAPI Draft, or requirement freeze, verify low-fidelity `prototype-review` is approved, `docs/design/prototypes/<feature>/index.html` exists as an Ant Design v6 high-fidelity HTML prototype, AntD v6 CLI validation evidence is recorded, and user confirmation is recorded after the prototype is produced. This prototype is a required lifecycle artifact and may be generated automatically by the system / Agent after low-fidelity prototype review; it does not have to be manually supplied by the user.
95
95
  - Before formal vertical slicing, verify PRD, product overview design / functional architecture, OpenAPI Freeze or no-API-impact record, architecture review as needed, and a clear issue destination.
96
96
  - For medium/high-risk API, permission, state-machine, data-model, cross-client, new-module, or safety-sensitive changes, verify an OpenSpec-style Spec Delta exists or record why it is not needed.
97
97
  - Before frontend/backend implementation, verify vertical slice scope, implementation repo/location, whether the impacted frontend/backend runtime projects already exist and are reusable, YSS skill routing, Build Architecture Checklist, test command, and review strategy.
@@ -143,9 +143,9 @@ Default routing:
143
143
  |---|---|
144
144
  | Start a new business product/module | intake -> opportunity and Discovery -> `competitive-intelligence` when market / competitor facts are needed -> `grill-with-docs` -> `to-prd` -> product overview design / functional architecture -> product design and requirement freeze when UI exists |
145
145
  | Analyze competitors, substitute workflows, pricing, positioning, or market facts | `competitive-intelligence`; then feed stable findings into `grill-with-docs` and `to-prd` |
146
- | Design UI flow after PRD baseline | Verify product overview design / functional architecture first, then use `product-design-prototype`; add `wireframe-prototype` only when a low-fidelity page or flow sketch is needed |
146
+ | Design UI flow after PRD baseline | Verify product overview design / functional architecture first, then use `product-design:index` as the primary Product Design router; follow its focused routing such as `$get-context`, `$ideate`, `$prototype`, `$image-to-code`, or `$url-to-code` |
147
147
  | Review low-fidelity prototype before high-fidelity design | `prototype-review` |
148
- | Build high-fidelity interactive HTML prototype | `high-fidelity-html-prototype` with Ant Design v6 after low-fidelity prototype review is approved |
148
+ | Build high-fidelity interactive HTML prototype | Use `product-design:index` as the primary entrypoint and route to the appropriate Product Design focused workflow for prototype/code output; query AntD v6 design/component/demo/token/semantic facts with `antd` CLI before output; the required stage output must be Ant Design v6 HTML at `docs/design/prototypes/<feature>/index.html`, may be system / Agent generated, must record AntD CLI validation evidence, and must be confirmed by the user before downstream gates |
149
149
  | Review contract draft / OpenAPI Draft inside architecture/design review | `yss-openapi-draft-review` |
150
150
  | Record behavior deltas for medium/high-risk changes | OpenSpec-style Spec Delta at `docs/specs/<feature>-spec-delta.md` using `docs/templates/spec-delta-template.md` |
151
151
  | Clarify architecture artifact timing or gaps | this skill plus `docs/process/lifecycle-artifact-map.md` and `references/artifact-checklist.md` |
@@ -68,9 +68,9 @@ yss-product-lifecycle
68
68
  -> grill-with-docs
69
69
  -> to-prd
70
70
  -> product overview design / functional architecture
71
- -> product-design-prototype
71
+ -> product-design:index
72
72
  -> prototype-review
73
- -> high-fidelity-html-prototype
73
+ -> Product Design focused skill 产出高保真 HTML 原型并经用户确认
74
74
  -> OpenAPI Draft
75
75
  -> OpenSpec-style Spec Delta (中高风险行为变化时)
76
76
  -> OpenAPI Freeze
@@ -132,7 +132,7 @@ Matt skills 与 YSS skills 产物正文默认使用中文,包括澄清记录
132
132
  - PRD 基线阶段必须同步明确功能架构:功能域、模块边界、优先级、MVP / 非目标范围和模块依赖;不清晰时不得进入 PRD 校准。
133
133
  - 只要进入 PRD 初稿 / 需求基线流程,产品总体设计 / 功能架构就是必要产物,默认路径为 `docs/design/<feature>-product-overview-design.md`,且必须包含低保真原型 / 页面草图。不得直接从 PRD 初稿进入页面 / 原型 / 交互设计、OpenAPI Draft、PRD 校准、需求冻结或实现;不进入 PRD 生命周期的小文案、低风险 Bug 或局部配置变更,必须在影响面评估中说明不适用原因。
134
134
  - 涉及页面设计、原型评审、UI 实现、组件选型、主题 token、颜色排版间距或 Ant Design / YSS UI 风格一致性的任务,必须先用 `yss-design-system` 作为设计系统基线;详细规范引用 `docs/design/design-system.md`。
135
- - 有用户界面的功能在 PRD 初稿和产品总体设计 / 功能架构后必须先引用 `yss-design-system`,再用 `product-design-prototype` 产出页面、原型、交互状态、PRD 回填项和 OpenAPI 反推清单;低保真 `prototype-review` 通过后,必须新增 `high-fidelity-html-prototype` 产物,默认路径为 `docs/design/prototypes/<feature>/index.html`,且必须使用 Ant Design v6,之后才能进入 PRD 校准 / 需求冻结和 UI 驱动的 OpenAPI Draft。
135
+ - 有用户界面的功能在 PRD 初稿和产品总体设计 / 功能架构后必须先引用 `yss-design-system`,再以 `product-design:index` 作为产品原型产出主入口,按 Product Design plugin 路由到 `$get-context`、`$ideate`、`$prototype`、`$image-to-code`、`$url-to-code` 等 focused skill,产出页面、原型、交互状态、PRD 回填项和 OpenAPI 反推清单;低保真 `prototype-review` 通过后,必须产出高保真 HTML 原型,默认路径为 `docs/design/prototypes/<feature>/index.html`,且必须使用 Ant Design v6。原型产出前必须使用 `antd` CLI 查询设计语言、组件 API、demo、token 和 semantic 信息;原型完成后必须记录 AntD v6 校验证据。该高保真 HTML 原型是流程必需产物,可由系统 / Agent 在低保真评审通过后自动产出,不要求用户手工提供;产出后必须获得用户确认并记录确认结果,未产出或未确认前不得进入 PRD 校准 / 需求冻结和 UI 驱动的 OpenAPI Draft。
136
136
  - 任何 API 契约变更必须先在 `docs/api/specs/*.yaml` 形成 Draft;OpenAPI 不得只基于 PRD 反推,必须结合产品总体设计 / 功能架构;有 UI 的功能还必须结合页面/原型/交互说明、状态矩阵、`prototype-review` 结论和 Ant Design v6 高保真 HTML 原型,经工程基线(如适用)、系统 / 数据架构和设计审查后 Freeze,再实现前后端和测试。
137
137
  - API、权限、状态机、数据模型、跨端、新模块或高风险行为变化,应在 Design Review / OpenAPI Freeze 前补充 OpenSpec-style Spec Delta,落点为 `docs/specs/<feature>-spec-delta.md`;小文案、局部样式、配置微调和低风险 Bug 默认不需要。Spec Delta 只记录行为差异、验收场景和测试映射,不恢复 OpenSpec CLI、额外变更目录或状态机。
138
138
  - OpenAPI Freeze 后进入 `to-issues`,将冻结范围拆成端到端垂直切片 Issue;不得要求额外状态机或变更目录作为交付前置。
@@ -0,0 +1,54 @@
1
+ # ADR-001: 使用 product-design:index 作为产品原型主入口
2
+
3
+ ## 状态
4
+
5
+ 已接受
6
+
7
+ ## 日期
8
+
9
+ 2026-07-06
10
+
11
+ ## 背景
12
+
13
+ YSS Harness 需要把有 UI 功能的产品原型产出收敛到一个稳定入口,同时保留需求质询、设计系统、Ant Design v6 事实校验、原型评审和用户确认门禁。原有 `product-design-prototype`、`wireframe-prototype`、`high-fidelity-html-prototype` 容易被理解为并列主入口,导致 Agent 在不同阶段选择不同原型工具,难以保证高保真 HTML 原型、AntD v6 校验证据和用户确认记录一致落地。
14
+
15
+ ## 决策
16
+
17
+ 产品原型产出统一以 `product-design:index` 为主入口。该 skill 只负责路由,实际按 Product Design plugin 规则进入 `$get-context`、`$ideate`、`$prototype`、`$image-to-code`、`$url-to-code`、`$design-qa` 或 `$share` 等 focused skill。
18
+
19
+ `grill-with-docs` 保留为前置需求质询和领域边界澄清工具,不承担 HTML 原型产出。`antd` skill / `antd` CLI 作为 Ant Design v6 组件、demo、token、semantic 和 design.md 的事实来源。YSS 生命周期继续负责 `prototype-review`、用户确认、PRD 回填和 OpenAPI Draft 门禁。
20
+
21
+ ## 考虑的替代方案
22
+
23
+ | 方案 | 优点 | 缺点 | 结论 |
24
+ |------|------|------|------|
25
+ | 继续使用多个原型技能并列入口 | 对旧流程改动少 | Agent 路由不稳定,难以统一 AntD v6 高保真 HTML 原型和确认记录 | 放弃 |
26
+ | 只保留 `high-fidelity-html-prototype` | 产物目标直接 | 缺少 Product Design plugin 的上下文、视觉探索、URL / 图片 / 代码来源路由能力 | 放弃 |
27
+ | 以 `product-design:index` 为主入口,旧技能保留兼容 | 路由统一,可复用 focused skills,迁移风险低 | 需要在文档中明确 legacy 边界 | 采纳 |
28
+
29
+ ## 后果
30
+
31
+ ### 正面影响
32
+
33
+ - 有 UI 的产品原型产出入口统一。
34
+ - 高保真 HTML 原型、AntD CLI 校验证据和用户确认记录成为固定门禁。
35
+ - Figma / Axure / Excalidraw / 截图 / URL 可作为输入来源,而不是主交付格式。
36
+
37
+ ### 负面影响
38
+
39
+ - 需要维护完整 `.codex/skills/product-design/` 插件目录,不能只复制 `index/SKILL.md`。
40
+ - 旧原型技能在过渡期仍会存在,需要通过流程文档限制使用语境。
41
+
42
+ ### 风险
43
+
44
+ - 如果 Agent 未读取 Product Design focused skill,可能误把 `product-design:index` 当作直接产出技能。
45
+ - 如果跳过 `antd` CLI 查询,原型可能偏离 Ant Design v6 组件 API 或 token。
46
+ - 如果缺少用户确认记录,下游 PRD 校准和 OpenAPI Draft 会失去体验冻结依据。
47
+
48
+ ## 相关
49
+
50
+ - `AGENTS.md`
51
+ - `docs/process/product-prototype-workflow.md`
52
+ - `docs/process/lifecycle-artifact-map.md`
53
+ - `docs/design/README.md`
54
+ - `docs/design/templates/prototype-confirmation-template.md`
@@ -16,7 +16,9 @@
16
16
  | 原型 / 线框图 | | |
17
17
  | 状态矩阵 | `docs/design/<feature>-state-matrix.md` | |
18
18
  | 原型评审结论 | `docs/design/<feature>-prototype-review.md` | |
19
- | 高保真 HTML 原型 | `docs/design/prototypes/<feature>/index.html` | 有 UI 时必需;必须使用 Ant Design v6 |
19
+ | 高保真 HTML 原型 | `docs/design/prototypes/<feature>/index.html` | 有 UI 时必需;必须使用 Ant Design v6,并通过 `product-design:index` 路由产出或记录例外原因 |
20
+ | AntD CLI 校验证据 | `docs/design/<feature>-prototype-confirmation.md` 或评审记录 | 有 UI 时必需;记录 design.md / info / demo / token / semantic 查询 |
21
+ | 用户确认记录 | `docs/design/<feature>-prototype-confirmation.md` | 有 UI 时必需;未确认前不得进入 OpenAPI Draft 评审 |
20
22
  | YSS 工程基线 | `.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md` | |
21
23
 
22
24
  ## P0 追踪矩阵
@@ -33,7 +35,7 @@
33
35
  | OpenAPI 语法 | YAML、`$ref`、path 参数、lint 通过 | | |
34
36
  | P0 覆盖 | 每个 P0 需求有 endpoint/schema/error/test 或明确非目标 | | |
35
37
  | 产品总体设计完整 | Draft 已依据 PRD 和产品总体设计 / 功能架构;缺产品总体设计时返回上游补齐 | | |
36
- | 交互输入完整 | 有 UI 时,Draft 已同时依据交互说明、原型/线框、状态矩阵、prototype-review 和 Ant Design v6 高保真 HTML 原型;无 UI 时需说明页面 / 交互资产不适用原因 | | |
38
+ | 交互输入完整 | 有 UI 时,Draft 已同时依据交互说明、原型/线框、状态矩阵、prototype-review、Ant Design v6 高保真 HTML 原型、AntD CLI 校验证据和用户确认记录;无 UI 时需说明页面 / 交互资产不适用原因 | | |
37
39
  | DDD 契约边界 | Endpoint/schema 归属的限界上下文清楚;术语与 `CONTEXT.md` 和功能架构一致;契约不直接暴露内部聚合、Repository 或持久化表结构 | | |
38
40
  | 页面动作覆盖 | 每个按钮 / 抽屉 / 弹窗动作有 endpoint/non-goal、`actionKey`、权限和错误码 | | |
39
41
  | 对象生命周期 | manage/maintain/configure/create/update/archive/retry/cancel/publish/export/create-draft 语义闭环 | | |
@@ -7,6 +7,8 @@
7
7
  - `docs/design/design.md`:从本地 `Product-Design-System` 引入并整理的 Ant Design 企业级设计系统说明,后续页面设计、交互说明、原型评审和前端实现默认引用该文件。
8
8
  - `docs/design/tokens/`:随仓库保存的主题、亮色 / 暗色 / 紧凑 token 和 CSS 变量快照,后续实现不得依赖本机 Downloads 目录。
9
9
 
10
+ 产品原型产出默认以 `product-design:index` 为主入口。该 skill 只负责路由,实际按 Product Design plugin 规则进入 `$get-context`、`$ideate`、`$prototype`、`$image-to-code`、`$url-to-code`、`$share` 或 `$design-qa` 等 focused skill;YSS 生命周期仍负责校验低保真评审、高保真 HTML 原型、AntD CLI 校验证据、用户确认和 PRD / OpenAPI 回填。
11
+
10
12
  进入 PRD 初稿 / 需求基线流程后,必须先沉淀产品总体设计 / 功能架构,再进入页面 / 原型 / 交互设计、PRD 校准、API 影响分析 / 契约草案或实现。产品总体设计文档必须包含低保真原型 / 页面草图,用于验证页面结构、关键操作和主流程。无 UI 的功能也需要产品总体设计 / 功能架构来说明功能域、业务对象、模块边界、API / 数据影响和不适用的页面状态;只有不进入 PRD 生命周期的小改动可在影响面评估中记录不适用原因。
11
13
 
12
14
  进入 API 影响分析 / 契约草案前,有用户界面的功能还必须沉淀:
@@ -18,7 +20,7 @@
18
20
  - 表单、表格、弹窗、抽屉、步骤流等交互说明。
19
21
  - loading、empty、error、readonly、disabled、no-permission、conflict 等状态矩阵。
20
22
  - 页面字段、筛选条件、操作按钮和权限规则。
21
- - 低保真原型评审通过后的 Ant Design v6 高保真可交互 HTML 原型,默认路径为 `docs/design/prototypes/<feature>/index.html`。
23
+ - 低保真原型评审通过后的 Ant Design v6 高保真可交互 HTML 原型,默认路径为 `docs/design/prototypes/<feature>/index.html`;该产物可由系统 / Agent 自动生成,不要求用户手工提供,产出前必须使用 `antd` CLI 查询设计语言、组件 API、demo、token 和 semantic 信息,产出后必须记录 AntD v6 校验证据并获得用户确认。
22
24
 
23
25
  这些资产用于反推 API 影响、契约草案、OpenAPI 请求 / 响应字段、错误结构、分页筛选、权限状态和前端验收标准。
24
26
 
@@ -28,14 +30,16 @@
28
30
  - `docs/design/templates/interaction-spec-template.md`:页面、流程、交互、PRD 回填项和 OpenAPI 反推清单。
29
31
  - `docs/design/templates/state-matrix-template.md`:loading、empty、error、readonly、no-permission、conflict 等状态。
30
32
  - `docs/design/templates/prototype-review-checklist.md`:进入 PRD 校准 / API 影响分析 / 契约草案前的原型评审门禁。
33
+ - `docs/design/templates/prototype-confirmation-template.md`:高保真 HTML 原型产出后的用户确认记录。
31
34
 
32
35
  推荐技能:
33
36
 
34
37
  - `yss-design-system`:项目设计系统与 Ant Design 企业级 UI 风格基线;页面设计、原型评审、UI 实现和主题 token 落地时默认先引用。
35
- - `product-design-prototype`:基于 PRD 初稿和产品总体设计 / 功能架构,产出页面 / 原型 / 交互设计资产。
36
- - `wireframe-prototype`:低保真线框、Excalidraw、Figma、Penpot、tldraw、Axure 等原型链接沉淀。
38
+ - `product-design:index`:产品原型产出的主路由;根据输入是否有 URL、截图、Figma、代码目标或视觉方向,进入 `$get-context`、`$ideate`、`$prototype`、`$image-to-code`、`$url-to-code`、`$share` 或 `$design-qa` 等 focused skill。
39
+ - Product Design focused skills:基于 PRD 初稿和产品总体设计 / 功能架构,产出低保真 / 高保真页面、原型、交互设计资产和可分享原型;高保真 HTML 原型默认由该路由链路产出。
40
+ - `antd`:Ant Design v6 组件、demo、token、semantic 和 design.md 查询工具;生成或修改高保真 HTML 原型前后必须留下 CLI 校验证据。
37
41
  - `prototype-review`:原型阶段评审门禁;未通过则不要进入 PRD 校准 / API 影响分析 / 契约草案。
38
- - `high-fidelity-html-prototype`:低保真原型评审通过后,基于官方 `@ant-design/cli` / Ant Design For Agents 指引生成 Ant Design v6 高保真可交互 HTML 原型;未产出前不要进入 PRD 校准 / API 影响分析 / 契约草案。
42
+ - 兼容入口:`product-design-prototype`、`wireframe-prototype`、`high-fidelity-html-prototype` 仅作为历史兼容或产物门禁名称保留;新的产品原型产出默认使用 `product-design:index`。
39
43
  - `excalidraw-diagram-generator`:根据已形成的 Discovery、PRD、OpenAPI Draft、Architecture 或 系统 / 数据架构设计 生成 `.excalidraw` 图;用于说明和审查,不替代文本规格。
40
44
 
41
45
  推荐目录:
@@ -10,8 +10,10 @@
10
10
  | 产品总体设计 / 功能架构 | `docs/design/<feature>-product-overview-design.md` | 必需;缺失时先返回产品总体设计阶段 |
11
11
  | 领域术语 | `CONTEXT.md` | 核心名词、状态和业务规则 |
12
12
  | Discovery | `docs/discovery/<feature>-discovery.md` | 可选 |
13
+ | Product Design 路由 | `product-design:index -> <focused skill>` | 必需;记录 `$get-context`、`$ideate`、`$prototype`、`$image-to-code` 或 `$url-to-code` |
13
14
  | 原型 / 线框图 | `<链接或导出图片路径>` | Excalidraw / Figma / Penpot / tldraw / Axure / Markdown |
14
- | 高保真 HTML 原型 | `docs/design/prototypes/<feature>/index.html` | 低保真原型评审通过后补齐;必须使用 Ant Design v6 |
15
+ | 高保真 HTML 原型 | `docs/design/prototypes/<feature>/index.html` | 低保真原型评审通过后补齐;必须使用 Ant Design v6;可由系统 / Agent 自动产出;产出后必须获得用户确认 |
16
+ | AntD CLI 校验证据 | `<命令输出或记录路径>` | `antd design.md/info/demo/token/semantic --version 6.0.0 --format json` |
15
17
  | 现有 API 草案 | `docs/api/specs/<feature>.yaml` | 可选;通常应先完成产品设计和 PRD 校准 |
16
18
 
17
19
  ## 2. 页面地图
@@ -104,6 +106,7 @@
104
106
  - 每个表格列、筛选条件、表单字段、抽屉、弹窗和按钮都有数据来源或契约反推说明。
105
107
  - 设计可以拆成独立可演示的垂直切片。
106
108
  - 低保真原型评审通过后,高保真 HTML 原型使用 Ant Design v6 覆盖主流程、关键状态和响应式断点。
109
+ - 原型产出前已使用 `antd` CLI 查询设计语言、组件 API、demo、token 和 semantic 信息;原型产出后已记录 AntD v6 校验证据。
107
110
 
108
111
  ## 9. 决策与未决问题
109
112
 
@@ -0,0 +1,57 @@
1
+ # <功能名称> 高保真原型确认记录
2
+
3
+ > 适用时机:Ant Design v6 高保真 HTML 原型产出后、PRD 校准 / 需求冻结 / UI 驱动 OpenAPI Draft 前。未确认前不得进入下游门禁。
4
+
5
+ ## 1. 原型信息
6
+
7
+ | 项目 | 内容 |
8
+ |---|---|
9
+ | 功能名称 | |
10
+ | PRD | `docs/requirements/<feature>-prd.md` |
11
+ | 产品总体设计 / 功能架构 | `docs/design/<feature>-product-overview-design.md` |
12
+ | 交互说明 | `docs/design/<feature>-interaction-spec.md` |
13
+ | 状态矩阵 | `docs/design/<feature>-state-matrix.md` |
14
+ | 原型评审 | `docs/design/<feature>-prototype-review.md` |
15
+ | 高保真 HTML 原型 | `docs/design/prototypes/<feature>/index.html` |
16
+ | Product Design 路由 | `product-design:index -> <focused skill>` |
17
+ | 产出方式 | 系统 / Agent 自动产出 / 人工补充 |
18
+ | Ant Design 版本 | v6 |
19
+
20
+ ## 2. AntD CLI 校验证据
21
+
22
+ | 校验项 | 命令 / 记录路径 | 结论 |
23
+ |---|---|---|
24
+ | 设计语言 | `antd design.md --version 6.0.0 --format json` | |
25
+ | 组件 API | `antd info <Component> --version 6.0.0 --format json` | |
26
+ | 组件 demo | `antd demo <Component> <demo> --version 6.0.0 --format json` | |
27
+ | 组件 token | `antd token <Component> --version 6.0.0 --format json` | |
28
+ | semantic | `antd semantic <Component> --version 6.0.0 --format json` | |
29
+ | lint / 替代校验 | `antd lint <prototype path> --format json` | |
30
+
31
+ ## 3. 用户确认
32
+
33
+ | 项目 | 内容 |
34
+ |---|---|
35
+ | 确认人 | |
36
+ | 确认时间 | |
37
+ | 确认方式 | 口头 / 评论 / Issue / 会议纪要 / 其他 |
38
+ | 确认结论 | 通过 / 需调整 / 暂缓 |
39
+ | 是否允许进入 PRD 校准 | 是 / 否 |
40
+ | 是否允许进入 API 影响分析 / OpenAPI Draft | 是 / 否 |
41
+
42
+ ## 4. 调整项
43
+
44
+ | 序号 | 调整内容 | 优先级 | 负责人 | 状态 |
45
+ |---|---|---|---|---|
46
+ | 1 | | P0 / P1 / P2 | | |
47
+
48
+ ## 5. 结论
49
+
50
+ ```text
51
+ 确认结论:
52
+ 允许进入下一阶段:是 / 否
53
+ 阻断原因:
54
+ -
55
+ 补充说明:
56
+ -
57
+ ```
@@ -1,6 +1,6 @@
1
1
  # <功能名称> 原型评审清单
2
2
 
3
- > 适用时机:配合 `prototype-review` 使用。评审采用 fail-closed:有阻断项时必须回到产品设计阶段;低保真评审通过后必须进入 `high-fidelity-html-prototype`,不能直接进入 PRD 校准或 API 影响分析 / 契约草案。
3
+ > 适用时机:配合 `prototype-review` 使用。评审采用 fail-closed:有阻断项时必须回到产品设计阶段;产品原型产出以 `product-design:index` 路由到 Product Design focused skill 为主;低保真评审通过后必须产出高保真 HTML 原型,可由系统 / Agent 自动产出;产出后必须获得用户确认,确认前不能直接进入 PRD 校准或 API 影响分析 / 契约草案。
4
4
 
5
5
  ## 评审输入
6
6
 
@@ -10,6 +10,8 @@
10
10
  | 交互说明 | `docs/design/<feature>-interaction-spec.md` | |
11
11
  | 原型 / 线框图 | `<链接或导出图片路径>` | |
12
12
  | 状态矩阵 | `docs/design/<feature>-state-matrix.md` | |
13
+ | Product Design 路由记录 | `product-design:index -> <focused skill>` | |
14
+ | AntD CLI 校验证据 | `<命令输出或记录路径>` | |
13
15
  | 现有 API 草案 | `docs/api/specs/<feature>.yaml` | 可选 |
14
16
 
15
17
  ## 门禁清单
@@ -24,6 +26,8 @@
24
26
  | 权限行为能区分隐藏、禁用和调用后拒绝 | | |
25
27
  | 校验错误能区分模型级和字段级展示位置 | | |
26
28
  | 能从界面需求反推出 API 影响和契约草案 | | |
29
+ | AntD v6 设计语言、组件 API、demo、token 和 semantic 已用 `antd` CLI 查询并记录 | | |
30
+ | 高保真 HTML 原型未使用旧原型技能作为主入口,已通过 `product-design:index` 路由产出或记录例外原因 | | |
27
31
  | 前端验收、组件状态和数据依赖已明确 | | |
28
32
  | 安全红线已标记人工审查 | | |
29
33
 
@@ -59,5 +63,5 @@
59
63
  非阻断建议:
60
64
  -
61
65
  下一步:
62
- - high-fidelity-html-prototype / 回到 product-design-prototype
66
+ - product-design:index 路由高保真 HTML 原型产出 / 回到 Product Design focused skill 补齐原型 / 进入用户确认
63
67
  ```
@@ -1,6 +1,6 @@
1
1
  # <功能名称> 状态矩阵模板
2
2
 
3
- > 适用时机:配合 `product-design-prototype` 使用,在 PRD 校准和 API 影响分析 / 契约草案之前补齐页面状态。
3
+ > 适用时机:配合 `product-design:index` 路由后的 Product Design focused skill 使用,在 PRD 校准和 API 影响分析 / 契约草案之前补齐页面状态。
4
4
 
5
5
  | 页面 / 组件 | 状态 | 触发条件 | 界面行为 | API / 数据要求 | 验收点 |
6
6
  |---|---|---|---|---|---|
@@ -46,7 +46,8 @@ AI 不能只作为一次性辅助工具使用。Harness 工程的目标,是把
46
46
  PRD
47
47
  → 产品总体设计 / 功能架构
48
48
  → 页面 / 原型 / 交互设计与 prototype-review(有 UI 时)
49
- → Ant Design v6 高保真 HTML 原型(有 UI 时)
49
+ → product-design:index 路由 Product Design focused skill 产出 Ant Design v6 高保真 HTML 原型(有 UI 时)
50
+ → antd CLI 校验证据与用户确认记录(有 UI 时)
50
51
  → API 影响分析 / 契约草案
51
52
  → review-only OpenAPI Draft(如需要)
52
53
  → Issue Change
@@ -18,7 +18,7 @@
18
18
  |---|---|---|
19
19
  | 只有模糊想法、业务机会或竞品输入 | 2. 机会与 Discovery | Discovery、`grill-with-docs`、PRD、产品总体设计 / 功能架构 |
20
20
  | 已有清晰 PRD,但用户、痛点、MVP 或非目标不稳 | 3. 业务 / PRD / 功能架构 | PRD Review、产品总体设计 / 功能架构、必要的页面 / 原型 / 交互设计 |
21
- | 有 UI 变更但缺页面流、状态矩阵、原型评审或高保真 HTML 原型 | 4. 产品设计与需求冻结 | 交互说明、状态矩阵、Prototype Review、Ant Design v6 高保真 HTML 原型、PRD 回填 |
21
+ | 有 UI 变更但缺页面流、状态矩阵、原型评审、高保真 HTML 原型、AntD CLI 校验证据或用户确认记录 | 4. 产品设计与需求冻结 | 交互说明、状态矩阵、Prototype Review、Ant Design v6 高保真 HTML 原型(可在低保真评审通过后由系统 / Agent 自动产出)、AntD CLI 校验证据、用户确认记录、PRD 回填 |
22
22
  | API 路径、schema、错误结构、分页或权限发生变化 | 5. 系统 / 数据架构与工程契约设计审查 | API 影响记录、契约草案 / OpenAPI Draft Review、必要时 Spec Delta、系统 / 数据架构反审、Freeze、`to-issues` |
23
23
  | 服务边界、集成、部署、性能、可靠性或运维变化 | 5. 系统 / 数据架构与工程契约设计审查 | 系统架构、Design Review、必要时 Spec Delta、Build Architecture Checklist |
24
24
  | 持久化、元数据、版本、血缘、搜索、索引或迁移变化 | 5. 系统 / 数据架构与工程契约设计审查 | 数据架构、必要时 Spec Delta、人审点、Repository / MyBatis 前置审查 |
@@ -14,7 +14,7 @@
14
14
  |---|---|---|---|---|---|---|
15
15
  | 0. 机会 / 问题收集 | 1. 入口分诊;2. 机会与 Discovery | 0. 入口分诊;1. 机会探索 | 分诊结论、Discovery 收敛、MVP 边界 | `yss-product-lifecycle`、`competitive-intelligence`、Discovery 模板 | 小改动可跳过;新产品 / 新模块必需 | 半自动生成分诊清单、竞品情报简报和 Discovery 模板 |
16
16
  | 1. 需求澄清 | 3. 业务 / PRD / 功能架构 | 3. 需求澄清 | 澄清记录、用户 / 痛点 / 验收标准 | `grill-with-docs`、`to-prd` | 小文案 / 单点 bug 可轻量化 | 半自动生成澄清问题和缺口清单 |
17
- | 2. PRD -> 产品总体设计 -> 原型校准 | 3. 业务 / PRD / 功能架构;4. 产品设计与需求冻结 | 4. 需求基线 / 功能架构;5. 页面 / 原型 / 交互设计;6. 原型评审;7. PRD 校准 / 需求冻结 | PRD、产品总体设计 / 功能架构、低保真原型、页面清单、状态矩阵、原型评审、Ant Design v6 高保真 HTML 原型、需求冻结 | `yss-design-system`、`product-design-prototype`、`prototype-review`、`high-fidelity-html-prototype` | 无 UI 可省略后续交互原型;进入 PRD 初稿 / 需求基线流程时不得省略产品总体设计及其低保真原型;有 UI 时低保真评审通过后不得省略高保真 HTML 原型;中等变更只补受影响页面 | 半自动检查 PRD 字段、产品总体设计、低保真原型、状态矩阵、原型评审和高保真 HTML 原型 |
17
+ | 2. PRD -> 产品总体设计 -> 原型校准 | 3. 业务 / PRD / 功能架构;4. 产品设计与需求冻结 | 4. 需求基线 / 功能架构;5. 页面 / 原型 / 交互设计;6. 原型评审;7. PRD 校准 / 需求冻结 | PRD、产品总体设计 / 功能架构、低保真原型、页面清单、状态矩阵、原型评审、Ant Design v6 高保真 HTML 原型、AntD CLI 校验证据、用户确认记录、需求冻结 | `yss-design-system`、`product-design:index`、Product Design focused skills(`$get-context` / `$ideate` / `$prototype` / `$image-to-code` / `$url-to-code`)、`antd`、`prototype-review` | 无 UI 可省略后续交互原型;进入 PRD 初稿 / 需求基线流程时不得省略产品总体设计及其低保真原型;有 UI 时产品原型产出以 `product-design:index` 路由为主,低保真评审通过后不得省略高保真 HTML 原型,可由系统 / Agent 自动产出,产出前后必须使用 `antd` CLI 校验并在产出后获得用户确认;中等变更只补受影响页面 | 半自动检查 PRD 字段、产品总体设计、低保真原型、状态矩阵、原型评审、高保真 HTML 原型、AntD CLI 校验证据和用户确认记录 |
18
18
  | 3. SDD 研发规范基线 | 5. 系统 / 数据架构与工程契约设计审查;6. 契约冻结与 Issue | 8. API 影响分析 / 契约草案;9. 工程基线;13. 契约冻结;14. Issue formalization | API 影响记录、契约草案 / OpenAPI Draft / Freeze、Spec Delta、工程基线、垂直切片 Issue、实施路由、验证证据 | `to-issues`、`yss-router` | 无 API / 无工程边界变化时记录无影响结论;低风险小改动跳过 Spec Delta | 自动检查 OpenAPI Freeze / no API impact / Spec Delta / vertical slice Issue / implementation routing |
19
19
  | 4. DDD 领域建模 | 3. 业务 / PRD / 功能架构;5. 系统 / 数据架构与工程契约设计审查 | 2. 业务架构;10. 系统总体架构;11. 数据架构 | CONTEXT 术语、业务能力、领域边界、聚合 / 状态规则 | `domain-modeling`、`yss-domain-modeling`、`yss-domain` | 小改动只校验是否影响既有术语或边界 | 半自动检查术语回填和领域边界审查项 |
20
20
  | 5. 架构设计 | 5. 系统 / 数据架构与工程契约设计审查 | 8. API 影响分析 / 契约草案;9. 工程基线;10. 系统总体架构;11. 数据架构;12. 设计审查 | API 影响记录、工程基线、系统概要设计、数据架构、ADR 候选、架构评审 | `codebase-design`、`improve-codebase-architecture`、YSS 架构模板 | 不触碰 API、工程边界、服务边界、数据、NFR、部署时可轻量记录无影响 | 半自动生成 Architecture Review checklist |