create-yss-spec 1.1.1 → 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.
- package/package.json +1 -1
- package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +102 -0
- package/template/.codex/skills/data-analytics/.app.json +84 -0
- package/template/.codex/skills/data-analytics/.codex-plugin/plugin.json +66 -0
- package/template/.codex/skills/data-analytics/.mcp.json +30 -0
- package/template/.codex/skills/data-analytics/AGENTS.md +20 -0
- package/template/.codex/skills/data-analytics/DEPENDENCIES.MD +27 -0
- package/template/.codex/skills/data-analytics/README.md +60 -0
- package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html +16 -0
- package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part001 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part002 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part003 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part004 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part005 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part006 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html +16 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part001 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part002 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part003 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part004 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part005 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part006 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part007 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-small.svg +5 -0
- package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html +16 -0
- package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part001 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part002 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part003 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part004 +1 -0
- package/template/.codex/skills/data-analytics/assets/datascience.png +0 -0
- package/template/.codex/skills/data-analytics/assets/datascience.svg +10 -0
- package/template/.codex/skills/data-analytics/mcp/server.cjs +2963 -0
- package/template/.codex/skills/data-analytics/package-lock.json +3048 -0
- package/template/.codex/skills/data-analytics/package.json +43 -0
- package/template/.codex/skills/data-analytics/scripts/normalize-widget-assets.mjs +75 -0
- package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +160 -0
- package/template/.codex/skills/data-analytics/skills/analyze-data-quality/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +148 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/bi-platform-dashboard.md +18 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/html-dashboard.md +24 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/mcp-artifact-dashboard.md +71 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/streamlit-dashboard.md +85 -0
- package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +207 -0
- package/template/.codex/skills/data-analytics/skills/build-report/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/build-report/assets/executive-report-shell.html +70 -0
- package/template/.codex/skills/data-analytics/skills/build-report/assets/technical-report-shell.html +66 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +118 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/__init__.py +1 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +57 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/constants.py +61 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/docx_writer.py +362 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/html_parser.py +829 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/model.py +30 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +129 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/quality.py +374 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/rendering.py +613 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/table_utils.py +54 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/utils.py +16 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc_plan.py +9 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +78 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/scripts/report_to_google_slides.py +2379 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +88 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/build-report/specifications/executive-report.md +97 -0
- package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +59 -0
- package/template/.codex/skills/data-analytics/skills/build-report/specifications/technical-report.md +75 -0
- package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +103 -0
- package/template/.codex/skills/data-analytics/skills/design-kpis/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +68 -0
- package/template/.codex/skills/data-analytics/skills/gather-business-context/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/index/SKILL.md +251 -0
- package/template/.codex/skills/data-analytics/skills/index/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +131 -0
- package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +141 -0
- package/template/.codex/skills/data-analytics/skills/kpi-reporting/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/kpi-reporting/references/report-templates.md +32 -0
- package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +106 -0
- package/template/.codex/skills/data-analytics/skills/market-sizing/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +130 -0
- package/template/.codex/skills/data-analytics/skills/metric-diagnostics/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +141 -0
- package/template/.codex/skills/data-analytics/skills/product-business-analysis/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +178 -0
- package/template/.codex/skills/data-analytics/skills/spreadsheets/agents/openai.yaml +9 -0
- package/template/.codex/skills/data-analytics/skills/spreadsheets/assets/file-spreadsheet.png +0 -0
- package/template/.codex/skills/data-analytics/skills/spreadsheets/charts.md +31 -0
- package/template/.codex/skills/data-analytics/skills/spreadsheets/references/artifact_tool_api.md +466 -0
- package/template/.codex/skills/data-analytics/skills/spreadsheets/style_guidelines.md +99 -0
- package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +195 -0
- package/template/.codex/skills/data-analytics/skills/user-context/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +26 -0
- package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/source-category-config.json +51 -0
- package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/user-context-config.md +66 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/automation.md +69 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +204 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-state-template.json +87 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +497 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/connector-playbook.md +74 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/setup.md +65 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/skill-template.md +160 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/source-intake.md +75 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/weekly-polling-automation.md +96 -0
- package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +263 -0
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +1460 -0
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/init_user_context_state.py +128 -0
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/reset_user_context_state.py +101 -0
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +499 -0
- package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +978 -0
- package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +190 -0
- package/template/.codex/skills/data-analytics/skills/validate-data/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +157 -0
- package/template/.codex/skills/data-analytics/skills/visualize-data/agents/openai.yaml +6 -0
- package/template/.codex/skills/data-analytics/skills/visualize-data/references/seaborn-templates.md +774 -0
- package/template/.codex/skills/data-analytics/src/DESIGN.md +222 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +3666 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/analytics-layout.test.mjs +136 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartFrame.tsx +54 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartLegend.tsx +96 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartRenderer.tsx +1647 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartTooltip.tsx +245 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-app-helpers.tsx +462 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-capabilities.ts +107 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-compatibility.ts +164 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-contract.ts +192 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-theme.ts +203 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-tokens.css +619 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-transforms.ts +402 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/fonts/SystemSansVariableVF.woff2 +0 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/imageExport.ts +370 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/layout/AnalyticsLayoutCanvas.tsx +536 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/layout/RichMarkdown.tsx +681 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/layout/analyticsLayoutCore.ts +164 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/main.tsx +21 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/scripts/chart_contract.py +472 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/scripts/check_analytics_app_runtime_links.py +75 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/scripts/design_contract.py +142 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/scripts/package_utils.py +142 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/scripts/tests/test_package_utils.py +377 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/styles.css +3468 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.d.ts +44 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.jsx +639 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/tables/data-table.css +327 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/tokens.css +225 -0
- package/template/.codex/skills/data-analytics/src/analytics-app/types.ts +204 -0
- package/template/.codex/skills/data-analytics/src/analytics-app-core.md +85 -0
- package/template/.codex/skills/data-analytics/src/codex-style-contract.md +30 -0
- package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.html +12 -0
- package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.jsx +1008 -0
- package/template/.codex/skills/data-analytics/src/datascience-chart-widget.css +2117 -0
- package/template/.codex/skills/data-analytics/src/datascience-chart-widget.html +122 -0
- package/template/.codex/skills/data-analytics/src/datascience-chart-widget.js +3588 -0
- package/template/.codex/skills/data-analytics/src/datascience-table-widget.css +483 -0
- package/template/.codex/skills/data-analytics/src/datascience-table-widget.html +32 -0
- package/template/.codex/skills/data-analytics/src/datascience-table-widget.js +333 -0
- package/template/.codex/skills/data-analytics/src/mcp-host.js +153 -0
- package/template/.codex/skills/data-analytics/src/recharts-config.js +315 -0
- package/template/.codex/skills/data-analytics/src/recharts-renderer.jsx +294 -0
- package/template/.codex/skills/data-analytics/src/sql-source-view.css +33 -0
- package/template/.codex/skills/data-analytics/src/sql-source-view.js +157 -0
- package/template/.codex/skills/data-analytics/src/styles/codex-theme.css +121 -0
- package/template/.codex/skills/data-analytics/src/table-renderer.jsx +28 -0
- package/template/.codex/skills/data-analytics/tests/chart-transforms.test.mjs +87 -0
- package/template/.codex/skills/data-analytics/tests/funnel-smoke.html +105 -0
- package/template/.codex/skills/data-analytics/tests/inline-widget-compare.html +233 -0
- package/template/.codex/skills/data-analytics/tests/mcp-server.test.mjs +1500 -0
- package/template/.codex/skills/data-analytics/tests/native-style-contract.test.mjs +219 -0
- package/template/.codex/skills/data-analytics/tests/recharts-config.test.mjs +144 -0
- package/template/.codex/skills/data-analytics/tests/recharts-renderer.test.mjs +11 -0
- package/template/.codex/skills/data-analytics/tests/rich-markdown.test.mjs +54 -0
- package/template/.codex/skills/data-analytics/tests/widget-render-harness.html +321 -0
- package/template/.codex/skills/data-analytics/tsconfig.json +19 -0
- package/template/.codex/skills/data-analytics/vite.config.ts +46 -0
- package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +102 -0
- package/template/.codex/skills/high-fidelity-html-prototype/agents/openai.yaml +5 -0
- package/template/.codex/skills/product-design/.app.json +7 -0
- package/template/.codex/skills/product-design/.codex-plugin/plugin.json +50 -0
- package/template/.codex/skills/product-design/README.md +50 -0
- package/template/.codex/skills/product-design/agents/openai.yaml +4 -0
- package/template/.codex/skills/product-design/assets/composerIcon.svg +9 -0
- package/template/.codex/skills/product-design/assets/logo.png +0 -0
- package/template/.codex/skills/product-design/package.json +11 -0
- package/template/.codex/skills/product-design/references/browser-order.md +9 -0
- package/template/.codex/skills/product-design/references/communication-protocol.md +45 -0
- package/template/.codex/skills/product-design/references/critical-overrides.md +58 -0
- package/template/.codex/skills/product-design/references/local-prototype-preflight.md +16 -0
- package/template/.codex/skills/product-design/scripts/bootstrap-prototype.mjs +147 -0
- package/template/.codex/skills/product-design/skills/audit/SKILL.md +159 -0
- package/template/.codex/skills/product-design/skills/audit/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/audit/references/design-audit-framework.md +73 -0
- package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +133 -0
- package/template/.codex/skills/product-design/skills/design-qa/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/design-qa/references/qa-rubric.md +61 -0
- package/template/.codex/skills/product-design/skills/get-context/SKILL.md +81 -0
- package/template/.codex/skills/product-design/skills/get-context/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/ideate/SKILL.md +179 -0
- package/template/.codex/skills/product-design/skills/ideate/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +105 -0
- package/template/.codex/skills/product-design/skills/image-to-code/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/index/SKILL.md +126 -0
- package/template/.codex/skills/product-design/skills/index/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/prototype/SKILL.md +128 -0
- package/template/.codex/skills/product-design/skills/prototype/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/prototype/references/existing-codebase-edits.md +18 -0
- package/template/.codex/skills/product-design/skills/research/SKILL.md +92 -0
- package/template/.codex/skills/product-design/skills/research/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/share/SKILL.md +41 -0
- package/template/.codex/skills/product-design/skills/share/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +124 -0
- package/template/.codex/skills/product-design/skills/url-to-code/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/user-context/SKILL.md +147 -0
- package/template/.codex/skills/product-design/skills/user-context/agents/openai.yaml +6 -0
- package/template/.codex/skills/product-design/skills/user-context/plugin-author-config/user-context-template.md +63 -0
- package/template/.codex/skills/product-design/skills/user-context/references/onboarding.md +66 -0
- package/template/.codex/skills/product-design/skills/user-context/scripts/init_user_context.py +86 -0
- package/template/.codex/skills/product-design/skills/user-context/scripts/user_context_preflight.py +204 -0
- package/template/.codex/skills/product-design/templates/prototype/AGENTS.md +7 -0
- package/template/.codex/skills/product-design/templates/prototype/index.html +12 -0
- package/template/.codex/skills/product-design/templates/prototype/package.json +18 -0
- package/template/.codex/skills/product-design/templates/prototype/src/App.jsx +5 -0
- package/template/.codex/skills/product-design/templates/prototype/src/main.jsx +10 -0
- package/template/.codex/skills/product-design/templates/prototype/src/styles.css +13 -0
- package/template/.codex/skills/product-design/templates/prototype/vite.config.mjs +14 -0
- package/template/.codex/skills/product-design-prototype/SKILL.md +2 -4
- package/template/.codex/skills/prototype-review/SKILL.md +7 -7
- package/template/.codex/skills/yss-design-system/SKILL.md +4 -2
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +10 -7
- package/template/.codex/skills/yss-product-lifecycle/references/artifact-checklist.md +1 -0
- package/template/.codex/skills/yss-product-lifecycle/references/stage-routing.md +1 -1
- package/template/.codex/skills/yss-ui/SKILL.md +4 -10
- package/template/.codex/skills/yss-ui/references/quick-recipes.md +1 -1
- package/template/AGENTS.md +9 -3
- package/template/CONTEXT.md +1 -0
- package/template/docs/adr/adr-product-design-prototype-entrypoint.md +54 -0
- package/template/docs/api/templates/openapi-draft-review-checklist.md +5 -1
- package/template/docs/design/README.md +13 -6
- package/template/docs/design/prototypes/.gitkeep +1 -0
- package/template/docs/design/templates/interaction-spec-template.md +8 -3
- package/template/docs/design/templates/product-overview-design-template.md +34 -5
- package/template/docs/design/templates/prototype-confirmation-template.md +57 -0
- package/template/docs/design/templates/prototype-review-checklist.md +7 -3
- package/template/docs/design/templates/state-matrix-template.md +1 -1
- package/template/docs/process/harness-executive-blueprint.md +6 -1
- package/template/docs/process/harness-process-tailoring.md +3 -3
- package/template/docs/process/harness-work-unit-map.md +1 -1
- package/template/docs/process/lifecycle-artifact-map.md +7 -5
- package/template/docs/process/product-prototype-workflow.md +82 -0
- package/template/docs/templates/requirement-freeze-template.md +4 -3
- package/template/docs/user-guide/product-lifecycle-workflow.md +2 -2
- package/template/docs/user-guide/product-rd-lifecycle-best-practices.md +54 -24
- package/template/.codex/skills/component-story-prototype/SKILL.md +0 -55
- package/template/.codex/skills/component-story-prototype/agents/openai.yaml +0 -4
- package/template/.codex/skills/mock-api-prototype/SKILL.md +0 -48
- package/template/.codex/skills/mock-api-prototype/agents/openai.yaml +0 -4
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Product Design Setup
|
|
2
|
+
|
|
3
|
+
Use this reference when saved user context is missing, when the user asks what Product Design can remember, when the user asks to set up Product Design, or when the user provides product/design references to save.
|
|
4
|
+
|
|
5
|
+
Setup is short. It is not a questionnaire and not a formal onboarding state machine.
|
|
6
|
+
|
|
7
|
+
## Step 1: Orientation
|
|
8
|
+
|
|
9
|
+
Render this first. Do not write files, inspect tools, browse URLs, open Figma, create prototypes, generate images, or run audits before this message.
|
|
10
|
+
|
|
11
|
+
```md
|
|
12
|
+
Product Design can remember the product surfaces and design sources you use most, so future work starts from the right place.
|
|
13
|
+
|
|
14
|
+
Useful things to save:
|
|
15
|
+
1. Product URLs
|
|
16
|
+
2. Figma files
|
|
17
|
+
3. Screenshots or reference images
|
|
18
|
+
4. Codebase paths
|
|
19
|
+
5. Storybook or component docs
|
|
20
|
+
6. Design-system refs
|
|
21
|
+
7. Brand and asset sources
|
|
22
|
+
8. Preferred tools and share targets
|
|
23
|
+
|
|
24
|
+
Send any of those now, or say `skip` and I'll work from each task's source.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Step 2: Save Context
|
|
28
|
+
|
|
29
|
+
When the user provides references, save them to:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
$CODEX_HOME/state/plugins/product-design/user-context.md
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Create the file first if needed:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
python3 scripts/init_user_context.py
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Use the category structure from `../SKILL.md`.
|
|
42
|
+
|
|
43
|
+
If the user provides screenshots or reference images, copy them into:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
$CODEX_HOME/state/plugins/product-design/assets/
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Give saved images clear names that say what they show, such as `assets/payment-sheet-mobile-error-state.png` or `assets/account-menu-open-state.png`.
|
|
50
|
+
|
|
51
|
+
Do not save secrets, API keys, credentials, private tokens, or unsupported claims.
|
|
52
|
+
|
|
53
|
+
Use this save recap:
|
|
54
|
+
|
|
55
|
+
```md
|
|
56
|
+
Saved Product Design context:
|
|
57
|
+
- {Category}: {what was saved}
|
|
58
|
+
|
|
59
|
+
I'll use this as a starting map for future Product Design work. The source you provide in a task still wins.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Step 3: Read Context
|
|
63
|
+
|
|
64
|
+
When the user asks what Product Design knows, read `user-context.md` and summarize only saved entries.
|
|
65
|
+
|
|
66
|
+
If no saved context exists, say that plainly and offer the Step 1 setup prompt.
|
package/template/.codex/skills/product-design/skills/user-context/scripts/init_user_context.py
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Create the local Product Design context file."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
SKILL_ROOT = Path(__file__).resolve().parents[1]
|
|
12
|
+
TEMPLATE_PATH = SKILL_ROOT / "plugin-author-config/user-context-template.md"
|
|
13
|
+
PLUGIN_STATE_DIR = Path("state/plugins/product-design")
|
|
14
|
+
|
|
15
|
+
CONTEXT_NOTE = """<!--
|
|
16
|
+
Product Design context. This file is user-editable.
|
|
17
|
+
Unresolved `status: not provided` entries are setup prompts, not saved facts.
|
|
18
|
+
Saved references should include Date Added, Useful Context, and Future Use when available.
|
|
19
|
+
-->
|
|
20
|
+
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def parse_args() -> argparse.Namespace:
|
|
25
|
+
parser = argparse.ArgumentParser(
|
|
26
|
+
description=(
|
|
27
|
+
"Create $CODEX_HOME/state/plugins/product-design/user-context.md "
|
|
28
|
+
"from the bundled Product Design template."
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
parser.add_argument(
|
|
32
|
+
"--codex-home",
|
|
33
|
+
type=Path,
|
|
34
|
+
default=None,
|
|
35
|
+
help="Codex home directory. Defaults to $CODEX_HOME or ~/.codex.",
|
|
36
|
+
)
|
|
37
|
+
parser.add_argument(
|
|
38
|
+
"--state-dir",
|
|
39
|
+
type=Path,
|
|
40
|
+
default=None,
|
|
41
|
+
help="Override the Product Design state directory.",
|
|
42
|
+
)
|
|
43
|
+
parser.add_argument(
|
|
44
|
+
"--overwrite",
|
|
45
|
+
action="store_true",
|
|
46
|
+
help="Overwrite an existing user-context.md file.",
|
|
47
|
+
)
|
|
48
|
+
return parser.parse_args()
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def resolve_state_dir(codex_home: Path | None, state_dir: Path | None) -> Path:
|
|
52
|
+
if state_dir is not None:
|
|
53
|
+
return state_dir.expanduser().resolve()
|
|
54
|
+
home = codex_home or Path(os.environ.get("CODEX_HOME", "~/.codex"))
|
|
55
|
+
return (home.expanduser() / PLUGIN_STATE_DIR).resolve()
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def main() -> int:
|
|
59
|
+
args = parse_args()
|
|
60
|
+
state_dir = resolve_state_dir(args.codex_home, args.state_dir)
|
|
61
|
+
context_path = state_dir / "user-context.md"
|
|
62
|
+
|
|
63
|
+
if not TEMPLATE_PATH.exists():
|
|
64
|
+
print("Missing Product Design context template.", file=sys.stderr)
|
|
65
|
+
print(f"- {TEMPLATE_PATH.relative_to(SKILL_ROOT)}", file=sys.stderr)
|
|
66
|
+
return 1
|
|
67
|
+
|
|
68
|
+
state_dir.mkdir(parents=True, exist_ok=True)
|
|
69
|
+
(state_dir / "assets").mkdir(parents=True, exist_ok=True)
|
|
70
|
+
|
|
71
|
+
existed = context_path.exists()
|
|
72
|
+
if existed and not args.overwrite:
|
|
73
|
+
result = "preserved"
|
|
74
|
+
else:
|
|
75
|
+
context_path.write_text(
|
|
76
|
+
CONTEXT_NOTE + TEMPLATE_PATH.read_text(encoding="utf-8"), encoding="utf-8"
|
|
77
|
+
)
|
|
78
|
+
result = "overwritten" if existed else "created"
|
|
79
|
+
|
|
80
|
+
print(f"Product Design state directory: {state_dir}")
|
|
81
|
+
print(f"user-context.md: {result}")
|
|
82
|
+
return 0
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
if __name__ == "__main__":
|
|
86
|
+
sys.exit(main())
|
package/template/.codex/skills/product-design/skills/user-context/scripts/user_context_preflight.py
ADDED
|
@@ -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,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
|
+
});
|
|
@@ -25,7 +25,7 @@ If no PRD baseline exists, route back to `yss-product-lifecycle` / `grill-with-d
|
|
|
25
25
|
5. Write the OpenAPI implication list: fields, filters, actions, errors, permissions, pagination, optimistic/concurrency states, and audit/version data.
|
|
26
26
|
6. For every primary page action, add an action-to-contract row: page/component, action label, `actionKey`, endpoint or explicit non-goal, request fields, response shape, permission behavior, state transition, idempotency/concurrency rule, and error codes.
|
|
27
27
|
7. For every P0 requirement containing verbs such as manage, maintain, configure, create, update, archive, retry, cancel, publish, export, or create draft, confirm the interaction spec either names the API implication or records that the capability is intentionally out of scope.
|
|
28
|
-
8. Hand off to `prototype-review`. Do not freeze/calibrate the PRD or enter OpenAPI Draft for UI work until prototype
|
|
28
|
+
8. Hand off to `prototype-review`. After low-fidelity review is approved, hand off to `high-fidelity-html-prototype`. Do not freeze/calibrate the PRD or enter OpenAPI Draft for UI work until the Ant Design v6 high-fidelity HTML prototype exists and has no blocking findings.
|
|
29
29
|
|
|
30
30
|
## Tool Routing
|
|
31
31
|
|
|
@@ -33,8 +33,6 @@ If no PRD baseline exists, route back to `yss-product-lifecycle` / `grill-with-d
|
|
|
33
33
|
|---|---|
|
|
34
34
|
| Low-fidelity page or flow sketch | `wireframe-prototype` |
|
|
35
35
|
| Figma work or existing Figma file | `figma` / `figma-use` |
|
|
36
|
-
| Engineering state prototype | `component-story-prototype` |
|
|
37
|
-
| API not frozen but interactions need data | `mock-api-prototype` |
|
|
38
36
|
| YSS implementation constraints | `yss-router`, then `yss-ui`, `yss-formily`, `yss-page-module-development` as needed |
|
|
39
37
|
|
|
40
38
|
## Output Contract
|
|
@@ -67,7 +65,7 @@ Product design / prototype / interaction design
|
|
|
67
65
|
- <yes/no; include whether PRD calibration is needed first>
|
|
68
66
|
|
|
69
67
|
### 下一步
|
|
70
|
-
- <prototype-review
|
|
68
|
+
- <prototype-review / high-fidelity-html-prototype / routing back to PRD/design>
|
|
71
69
|
```
|
|
72
70
|
|
|
73
71
|
## Data Modeling Example
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prototype-review
|
|
3
|
-
description: Use when reviewing UI design, wireframes, prototype links, interaction specs, or state matrices before PRD calibration, OpenAPI Draft, vertical slicing, or implementation.
|
|
3
|
+
description: Use when reviewing low-fidelity UI design, wireframes, prototype links, interaction specs, or state matrices before high-fidelity HTML prototype work, PRD calibration, OpenAPI Draft, vertical slicing, or implementation.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Prototype Review
|
|
7
7
|
|
|
8
|
-
Use this skill as the gate between product design/prototype work and
|
|
8
|
+
Use this skill as the low-fidelity gate between product design/prototype work and high-fidelity HTML prototype work. The review is fail-closed: if the design cannot drive calibrated requirements, API, frontend acceptance, and slices, send it back to product design.
|
|
9
9
|
|
|
10
10
|
## Required Inputs
|
|
11
11
|
|
|
@@ -27,13 +27,13 @@ Use this skill as the gate between product design/prototype work and PRD calibra
|
|
|
27
27
|
| Action contract coverage | Every primary page action has an `actionKey`, endpoint or explicit non-goal, permission behavior, state transition, idempotency/concurrency rule, and error codes |
|
|
28
28
|
| P0 contract coverage | Every P0 requirement with manage/maintain/configure/create/update/archive/retry/cancel/publish/export/create-draft semantics is mapped to an API implication or an explicit non-goal |
|
|
29
29
|
| Rule/source coverage | Validation, approval, coverage, and publish gates state where rules come from, who can configure them, whether they are fixed, and how blocker/warning decisions are represented |
|
|
30
|
-
| Frontend acceptance | A frontend engineer can tell which components,
|
|
30
|
+
| Frontend acceptance | A frontend engineer can tell which components, visible states, data dependencies, and E2E paths are needed |
|
|
31
31
|
|
|
32
32
|
## Decision Rules
|
|
33
33
|
|
|
34
|
-
- If a feature has UI impact and lacks page map, user flow, prototype/wireframe, or state matrix, block PRD calibration and OpenAPI Draft.
|
|
34
|
+
- If a feature has UI impact and lacks page map, user flow, prototype/wireframe, or state matrix, block high-fidelity HTML prototype work, PRD calibration, and OpenAPI Draft.
|
|
35
35
|
- If the prototype hides business rules behind generic text such as "校验失败", require field-level errors and recovery behavior.
|
|
36
|
-
- If a page shows a user action but the OpenAPI implication list lacks endpoint/non-goal mapping, block PRD calibration or OpenAPI Draft.
|
|
36
|
+
- If a page shows a user action but the OpenAPI implication list lacks endpoint/non-goal mapping, block high-fidelity HTML prototype work, PRD calibration, or OpenAPI Draft.
|
|
37
37
|
- If PRD P0 scope says a user can manage or configure an object but the design only shows read-only data, block until the write path or scope downgrade is explicit.
|
|
38
38
|
- If a state is intentionally out of scope, record why and who owns the decision.
|
|
39
39
|
- If implementation dependencies are unclear, route to `yss-router` only after the prototype passes this review.
|
|
@@ -57,10 +57,10 @@ Use this skill as the gate between product design/prototype work and PRD calibra
|
|
|
57
57
|
- <requirements gaps, acceptance criteria updates, non-goals, pending decisions>
|
|
58
58
|
|
|
59
59
|
### Frontend Prototype Readiness
|
|
60
|
-
- <
|
|
60
|
+
- <component states, data dependencies, frontend acceptance notes>
|
|
61
61
|
|
|
62
62
|
### Next Action
|
|
63
|
-
- <
|
|
63
|
+
- <high-fidelity-html-prototype / return to product-design-prototype>
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
Use `docs/design/templates/prototype-review-checklist.md` when writing a persistent review artifact.
|
|
@@ -70,12 +70,14 @@ description: YSS 产品设计系统与 Ant Design 企业级 UI 风格基线。
|
|
|
70
70
|
| 场景 | 配合技能 |
|
|
71
71
|
| --- | --- |
|
|
72
72
|
| PRD 后做页面 / 原型 / 交互说明 | `product-design-prototype` |
|
|
73
|
-
|
|
|
73
|
+
| 低保真原型进入高保真前评审 | `prototype-review` |
|
|
74
|
+
| 低保真评审通过后的高保真 HTML 原型 | `high-fidelity-html-prototype` |
|
|
74
75
|
| 低保真线框或流程图 | `wireframe-prototype` / `excalidraw-diagram-generator` |
|
|
75
76
|
| 前端页面实现 | `yss-ui` / `yss-page-module-development` |
|
|
76
77
|
| 表单 schema | `yss-formily` |
|
|
77
78
|
| YTable / YTree / 高度自适应 | `yss-components` / `yss-use-table-height` / `yss-use-tree-height` |
|
|
78
|
-
|
|
|
79
|
+
| Ant Design v6 组件 / token / demo 查询 | 官方 `@ant-design/cli` / `https://ant.design/docs/react/for-agents` |
|
|
80
|
+
| API 契约 / 接入 | `api-integration` / `yss-openapi` |
|
|
79
81
|
|
|
80
82
|
## 更新设计系统
|
|
81
83
|
|
|
@@ -63,7 +63,7 @@ Architecture artifacts are produced progressively. Do not try to finish every ar
|
|
|
63
63
|
| Artifact | Lifecycle timing | Primary question | Typical outputs | Diagram support |
|
|
64
64
|
|---|---|---|---|---|
|
|
65
65
|
| Business architecture | Opportunity exploration / Discovery / product definition | Who gets value, in which workflow, and where the product boundary sits | user journey, value stream, role/ecosystem model, capability map | journey map, swimlane, capability map |
|
|
66
|
-
| Product overview design / Functional architecture | PRD baseline / product design / PRD calibration | Which product capabilities, user flows, modules, pages, APIs, and data impacts support the MVP boundary | product overview, module map, feature list, priority, dependencies, state flow, open questions, PRD gaps | feature/module map, dependency graph, user flow, page map |
|
|
66
|
+
| Product overview design / Functional architecture | PRD baseline / product design / PRD calibration | Which product capabilities, user flows, modules, pages, low-fidelity prototypes, APIs, and data impacts support the MVP boundary | product overview, module map, feature list, priority, dependencies, low-fidelity wireframe, state flow, open questions, PRD gaps | feature/module map, dependency graph, user flow, page map, low-fidelity wireframe |
|
|
67
67
|
| System overview design / System architecture | Engineering baseline / architecture review | How the product is built, deployed, integrated, operated, and safely evolved | C4/container view, service boundary, integration, deployment, NFR decisions, rollout/rollback decisions | system architecture, sequence, deployment, DFD |
|
|
68
68
|
| Data architecture | Detailed design before persistence and repository work | How domain data, metadata, versions, lineage, and queries are modeled and stored | conceptual/logical/physical model, meta-model, versioning strategy, lineage/query/index strategy | ER, class, lineage graph, DFD |
|
|
69
69
|
|
|
@@ -90,7 +90,9 @@ Use `excalidraw-diagram-generator` when diagrams will make boundaries, flows, da
|
|
|
90
90
|
- service boundary, state machine, integration, NFR, rollout, or rollback -> system / data architecture, engineering contract, and Design Review downstream gates;
|
|
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
|
-
- Before formal vertical slicing, verify PRD
|
|
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, `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
|
+
- 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.
|
|
94
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.
|
|
95
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.
|
|
96
98
|
5. Output the next action:
|
|
@@ -139,10 +141,11 @@ Default routing:
|
|
|
139
141
|
|
|
140
142
|
| Intent | Next skill / workflow |
|
|
141
143
|
|---|---|
|
|
142
|
-
| Start a new business product/module | intake -> opportunity and Discovery -> `competitive-intelligence` when market / competitor facts are needed -> `grill-with-docs` -> `to-prd` ->
|
|
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 |
|
|
143
145
|
| Analyze competitors, substitute workflows, pricing, positioning, or market facts | `competitive-intelligence`; then feed stable findings into `grill-with-docs` and `to-prd` |
|
|
144
|
-
| Design UI flow after PRD baseline | `product-design-
|
|
145
|
-
| Review prototype before
|
|
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
|
+
| Review low-fidelity prototype before high-fidelity design | `prototype-review` |
|
|
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 |
|
|
146
149
|
| Review contract draft / OpenAPI Draft inside architecture/design review | `yss-openapi-draft-review` |
|
|
147
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` |
|
|
148
151
|
| Clarify architecture artifact timing or gaps | this skill plus `docs/process/lifecycle-artifact-map.md` and `references/artifact-checklist.md` |
|
|
@@ -202,10 +205,10 @@ When the user explicitly asks for a full delivery plan, include stage-by-stage t
|
|
|
202
205
|
|
|
203
206
|
- Do not skip opportunity exploration for new product/module work; use `competitive-intelligence` when market/competitor facts are needed, or record why it is not needed.
|
|
204
207
|
- Do not treat Discovery outputs as frozen downstream design. Discovery can provide product capability guidance and downstream impact signals, but PRD, functional architecture, OpenAPI, system architecture, and data architecture still require their own gates.
|
|
205
|
-
- Do not start implementation before PRD is calibrated, required architecture artifacts are explicit, product design / prototype / interaction design exists
|
|
208
|
+
- Do not start implementation before PRD is calibrated, product overview design / functional architecture exists, required architecture artifacts are explicit, product design / prototype / interaction design exists, low-fidelity `prototype-review` passes, high-fidelity Ant Design v6 HTML prototype exists when UI exists, OpenAPI Freeze decision, engineering baseline, design review, and vertical slice are clear.
|
|
206
209
|
- Do not start implementation before deciding whether the impacted frontend/backend runtime projects already exist and can be reused. Missing or conflicting runtime projects must route back to implementation routing and scaffold initialization first.
|
|
207
210
|
- Do not skip business architecture for new products unless the product boundary, users, ecosystem, and value stream are already captured elsewhere.
|
|
208
|
-
- Do not skip functional architecture before PRD calibration
|
|
211
|
+
- Do not skip product overview design / functional architecture after PRD baseline. It is a required artifact before PRD calibration, product design / prototype / interaction design, API impact analysis, OpenAPI Draft, requirement freeze, or implementation. Only tasks that do not enter the PRD lifecycle may record a not-applicable reason in the impact assessment.
|
|
209
212
|
- Do not skip system architecture when services, deployment, integrations, performance, security, reliability, or operations are affected.
|
|
210
213
|
- Do not skip data architecture before persistence / repository work. For data modeling, metadata, versioning, or lineage products, treat it as mandatory before Design Review and OpenAPI Freeze.
|
|
211
214
|
- Do not let Excalidraw diagrams invent requirements or architecture decisions; diagrams must point back to source artifacts and any findings must be written back to PRD, OpenAPI, ADR, or issues.
|
|
@@ -14,6 +14,7 @@ Use this checklist to decide whether the current request can move forward or mus
|
|
|
14
14
|
| Functional architecture | `docs/architecture/<feature>-functional-architecture.md` or PRD/design section | Product capabilities, module boundaries, priority, dependencies, and MVP scope are clear |
|
|
15
15
|
| Product overview design | `docs/design/<feature>-product-overview-design.md` | Pages, flows, states, permissions, API candidates, and PRD gaps are clear |
|
|
16
16
|
| Prototype / interaction review | `docs/design/<feature>-prototype-review.md` or issue comment | UI paths, empty/error/loading states, permission states, and API backflow list are reviewed |
|
|
17
|
+
| High-fidelity HTML prototype | `docs/design/prototypes/<feature>/index.html` | Ant Design v6 interactive HTML prototype exists after low-fidelity review and before PRD calibration / API Draft |
|
|
17
18
|
| API impact / OpenAPI Draft | `docs/api/specs/<feature>.yaml`, issue note, or API impact record | Request/response, wrappers, errors, pagination, permissions, concurrency, and contract test seams are reviewable |
|
|
18
19
|
| OpenAPI Freeze | `docs/api/<feature>-openapi-freeze.md` or issue comment | Draft has been reviewed and marked stable for frontend/backend implementation |
|
|
19
20
|
| Engineering baseline | `docs/architecture/<feature>-engineering-baseline-review.md` | YSS DDD module boundary, dependency direction, DTO/VO/CMD/Query conventions, and scaffold constraints are reviewed |
|
|
@@ -9,7 +9,7 @@ Use this reference after reading current repo context. It maps request shape to
|
|
|
9
9
|
| 1. Intake / lifecycle triage | 新需求、继续需求、Bug、小调整、流程不清、缺失资产判断 | User request, `CONTEXT.md`, docs, issues, git state | stage decision, nearest trustworthy artifact, minimal skill list | route to earliest impacted stage |
|
|
10
10
|
| 2. Opportunity and Discovery | 模糊想法、竞品/市场输入、用户痛点尚不清楚 | discovery docs, market/user facts, stakeholder notes | user, pain, why now, MVP, non-goals, success criteria, downstream impact | `competitive-intelligence` when market / competitor facts are needed, then `grill-with-docs` / PRD |
|
|
11
11
|
| 3. Business / PRD / functional architecture | 需要明确用户故事、验收标准、功能边界、模块依赖 | discovery, `CONTEXT.md`, ADRs, existing PRD | PRD, business architecture, functional architecture, PRD review notes | product design or contract design |
|
|
12
|
-
| 4. Product design and requirement freeze | 有 UI
|
|
12
|
+
| 4. Product design and requirement freeze | 有 UI、页面、交互、状态矩阵、权限状态、空/错/加载态、高保真体验 | PRD, design system, existing UI, component docs | product overview design, interaction spec, state matrix, prototype review, Ant Design v6 high-fidelity HTML prototype, requirement freeze | contract and architecture review |
|
|
13
13
|
| 5. System / data architecture, engineering contract, and Design Review | 接口、DTO、错误结构、后端新服务、新模块、DDD 分层、服务边界、部署、集成、状态机、权限、NFR、持久化、元模型、版本、血缘 | calibrated requirements, design inputs, API impact decision, engineering impact decision | API impact record; contract sketch or reviewable OpenAPI Draft marked draft-for-review; OpenAPI Draft Review; engineering baseline review; system overview; data architecture when required; ADR candidates; Design Review result | contract freeze and Issue formalization |
|
|
14
14
|
| 6. Contract freeze and Issue formalization | OpenAPI Freeze、无 API 影响记录、正式拆分垂直切片 | Design Review approval, contract draft / OpenAPI Draft, PRD/design/architecture artifacts | OpenAPI Freeze or no API impact record; GitHub/GitLab/local vertical slice Issues | vertical slices and TDD implementation |
|
|
15
15
|
| 7. Vertical slices and TDD implementation | issue、切片、实现、review、清理简化 | frozen contract / no API impact, approved slice, implementation repo/location | implementation routing, YSS skill routing, tests, review, verification evidence | verification, release, and retrospective |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "yss-ui"
|
|
3
|
-
description: "YSS UI 页面开发组件技能。涉及 YTable、YTree、YssFormily、useTableHeight、useTreeHeight、页面布局、Hook 抽离、API
|
|
3
|
+
description: "YSS UI 页面开发组件技能。涉及 YTable、YTree、YssFormily、useTableHeight、useTreeHeight、页面布局、Hook 抽离、API 契约接入、路由菜单约定时必须使用。组件技能可以参考 yss-components 与 yss-hooks 技能规范。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# YSS UI 页面与 Hook 一体化标准
|
|
@@ -197,19 +197,13 @@ const { loading, run: runPage } = useRequest(pageApi, {
|
|
|
197
197
|
- 翻页仅更新 `page/pageSize`,保留筛选项
|
|
198
198
|
- 导出、刷新等动作复用 `currentParams`
|
|
199
199
|
|
|
200
|
-
## 11. API
|
|
201
|
-
|
|
202
|
-
API 层:
|
|
200
|
+
## 11. API 契约接入标准
|
|
203
201
|
|
|
204
202
|
- 接口写在 `packages/src/api/*`
|
|
205
203
|
- 复用 `mutator.ts`
|
|
206
204
|
- 避免重复拼接 `/api`
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
- 路由放 `packages/mock/api.ts`
|
|
211
|
-
- 支持筛选和分页切片
|
|
212
|
-
- 返回结构统一:`{ code, message, data: { list, total, page, pageSize } }`
|
|
205
|
+
- 请求 / 响应字段以冻结后的 OpenAPI 或明确的契约草案为准
|
|
206
|
+
- 未冻结契约不得作为稳定生成客户端或实现依据
|
|
213
207
|
|
|
214
208
|
## 12. 路由菜单标准
|
|
215
209
|
|