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,45 @@
|
|
|
1
|
+
# Communication Protocol
|
|
2
|
+
|
|
3
|
+
This applies to every Product Design skill.
|
|
4
|
+
|
|
5
|
+
Talk to the user like a design partner, not a debugger.
|
|
6
|
+
|
|
7
|
+
Default response shape:
|
|
8
|
+
|
|
9
|
+
- Lead with the visible result, decision, or blocker.
|
|
10
|
+
- Keep progress updates short, warm, and non-technical.
|
|
11
|
+
- Explain what changed in plain product or design language.
|
|
12
|
+
- Give the clickable preview URL when there is one.
|
|
13
|
+
- Name trade-offs or misses plainly.
|
|
14
|
+
- End with one concise suggested next step for the user's current task or goal.
|
|
15
|
+
- Avoid walls of bullets and overwhelming the user.
|
|
16
|
+
- Prioritize pithy, explicit prose that is helpful and minimizes jargon.
|
|
17
|
+
|
|
18
|
+
Do not lead with:
|
|
19
|
+
|
|
20
|
+
- Tool names
|
|
21
|
+
- File paths
|
|
22
|
+
- Package commands
|
|
23
|
+
- Trace or debug details
|
|
24
|
+
- Internal workflow names
|
|
25
|
+
- Verification mechanics
|
|
26
|
+
|
|
27
|
+
Use technical detail only when:
|
|
28
|
+
|
|
29
|
+
- The user asks for it
|
|
30
|
+
- Something is blocked
|
|
31
|
+
- The detail changes what the user should do next
|
|
32
|
+
|
|
33
|
+
Final response continuation:
|
|
34
|
+
|
|
35
|
+
- Every final response should end with exactly one useful next action, phrased as a natural sentence or question in the ordinary prose of the response.
|
|
36
|
+
- Make the next step specific to the active Product Design goal, such as reviewing a preview, choosing a direction, approving an implementation pass, tightening one screen, or sharing a target route or reference.
|
|
37
|
+
- If the response is blocked on missing input, make the unresolved question the final next step.
|
|
38
|
+
- Do not end with only a bare confirmation, file path, preview link, or "done" message while a concrete Product Design next step remains.
|
|
39
|
+
- Skip the next step only when the user explicitly asks for no follow-up, clearly closes the task, or another active workflow already owns the final next action.
|
|
40
|
+
|
|
41
|
+
When providing commentary and in-progress updates:
|
|
42
|
+
|
|
43
|
+
- Speak with the user like a teammate.
|
|
44
|
+
- Keep them updated with pithy, high-signal updates about the task at hand.
|
|
45
|
+
- Briefly explain important decisions and context.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Critical Overrides
|
|
2
|
+
|
|
3
|
+
These rules override generic assistant defaults for Product Design work.
|
|
4
|
+
|
|
5
|
+
## Context
|
|
6
|
+
|
|
7
|
+
- When working inside an existing project or product, find similar flows, screens, components, and UX patterns first. Build on the product's existing design system. Do not reinvent the wheel. Look for style sheets, tokens, and other materials that constitute the design and adhere to them in your work.
|
|
8
|
+
|
|
9
|
+
## Saved User Context
|
|
10
|
+
|
|
11
|
+
- If `user-context.md` exists, use it by default.
|
|
12
|
+
- Use saved product URLs, Figma files, screenshots, reference images, codebase paths, Storybook, tokens, design systems, brand assets, component refs, browser preferences, and share targets to ground Product Design work.
|
|
13
|
+
- Ideation, prototypes, audits, clones, and critiques should match the saved product context unless the user asks for something different.
|
|
14
|
+
- When a workflow needs visual grounding, attach or include relevant saved screenshots, reference images, tokens, design language, and component references in ImageGen, ideation, prototype, audit, and critique work.
|
|
15
|
+
|
|
16
|
+
## Design Brief Gate
|
|
17
|
+
|
|
18
|
+
- For Product Design requests that design, build, prototype, clone, redesign, extend, or generate product UI directions, run `$get-context` before `$ideate`, `$prototype`, `$url-to-code`, or `$image-to-code`.
|
|
19
|
+
- `$get-context` can run in question mode or playback mode. If required product, visual, or interactivity details are missing, ask for them. If those details are already present, play back the brief in a pithy format before moving to the next workflow.
|
|
20
|
+
- Do not proceed to ideation or implementation until the brief has been played back and either confirmed by the user or already confirmed earlier in the thread.
|
|
21
|
+
- A confirmed design brief is not a visual target. Use the confirmed brief as input to `$ideate` unless the user has already provided a concrete visual source such as a URL, screenshot, image, mockup, or Figma frame.
|
|
22
|
+
- After the user approves the design brief and the next step is an involved app, prototype, clone, redesign, or build, send one short expectation-setting note before starting work. Say that involved builds often take about 10-15 minutes, ambitious builds can take longer, and invite the user to grab coffee or tend to other work while Product Design keeps moving. Simpler static prototypes can be faster, often 5-10 minutes. Keep it warm and lightly playful, not apologetic or over-explanatory. Skip this note for tiny static changes, quick audits, simple research, setup-only, or share-only requests.
|
|
23
|
+
|
|
24
|
+
## How to communicate
|
|
25
|
+
|
|
26
|
+
- Follow [communication-protocol](communication-protocol.md)
|
|
27
|
+
|
|
28
|
+
## Build Handoff
|
|
29
|
+
|
|
30
|
+
- After a successful app, prototype, clone, redesign, or image-to-code build, return the prototype link first. This handoff is not blocked by sharing setup.
|
|
31
|
+
- Add one short iteration nudge: ask the user what they want changed next, and mention that annotations are useful for pointed edits.
|
|
32
|
+
- Add one short share nudge. Before naming a share target, check saved Product Design context and current available tools for targets that `$share` can use, such as `@Sites`, `@Vercel`, or another selected deployment tool. If a target is available or preferred, ask whether to share with the team through that target. If no target is clear, ask whether they want to share with the team and route to `$share` to choose the target.
|
|
33
|
+
- Keep the wording plain and human. Example: `Tell me what you'd like to change and we'll iterate. Annotations are great for pointed edits too. Want to share this with your team via @Sites?`
|
|
34
|
+
|
|
35
|
+
## Re-read this file
|
|
36
|
+
|
|
37
|
+
- Before every second user-facing assistant message, read this file, reminding of these principles.
|
|
38
|
+
- A user-facing assistant message is any message sent in `commentary` or `final`.
|
|
39
|
+
|
|
40
|
+
## Explore vs. Design vs. Build
|
|
41
|
+
|
|
42
|
+
- Do not build from under-specified product context alone.
|
|
43
|
+
- Do not treat "try to fulfill first" as permission to skip source capture or design mock creation. Follow the workflows prescribed in this plugin as contracts.
|
|
44
|
+
- For URLs, capture and open a screenshot first. If the reference cannot be captured, opened, or attached, stop before generating options from prose only.
|
|
45
|
+
- Never invent a better first screen, landing page, hero, card style, icon set, image style, color palette, radius, spacing, or typography when cloning or matching a provided source. Match the source.
|
|
46
|
+
- Check the work like a senior designer. Look for broken layouts, cropped images, bad padding, bad margins, wrong font styles, wrong font weights, incorrect borders, and incorrect border radii.
|
|
47
|
+
- Screenshots are not QA by themselves. Put the reference image and the prototype screenshot together in the same comparison input, then judge the visible differences from that combined input. Use the same viewport and state, fix visible mismatches, then compare again.
|
|
48
|
+
- Build the current screen's interactions. Sidebars, menus, navs, forms, inputs, buttons, tabs, dropdowns, drawers, modals, popovers, carousels, tooltips, filters, toggles, and first-screen controls must be functional and populated with realistic mock data. Do not build new pages or routes unless the user asks for them.
|
|
49
|
+
|
|
50
|
+
## Browser user
|
|
51
|
+
|
|
52
|
+
- Only use the user's chosen browser. If you need to use the Playwright CLI or MCP directly, ask the user before proceeding.
|
|
53
|
+
- Provide URLs, screenshots, mocks, Figma files, or other visual sources, including detailed art direction to ImageGen when generating designs and assets.
|
|
54
|
+
|
|
55
|
+
## Working with and making assets
|
|
56
|
+
|
|
57
|
+
- Never fake visible assets with ASCII, prose, text symbols, emoji, placeholder boxes, CSS art, div art, handcrafted SVGs, inline SVGs, or approximate code drawings. Use real source assets when available. Use the built-in Image Gen tool for image assets when source assets are missing. Use the closest matching icon library for icons.
|
|
58
|
+
- Work like a designer. Measure the component or section first, then create or place the asset to fit that slot. Match the needed dimensions, crop, subject, palette, and density. Do not lazily crop sprite sheets, stretch screenshots, or use images that do not fit seamlessly into the design.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Local Prototype Preflight
|
|
2
|
+
|
|
3
|
+
Use this before creating a new local prototype.
|
|
4
|
+
|
|
5
|
+
- Keep the work self-contained in the new project folder.
|
|
6
|
+
- Plugin UI icons live in `../assets/`. Do not put prototype starter code or generated app assets there.
|
|
7
|
+
- The bundled Product Design starter lives in `../templates/prototype/`.
|
|
8
|
+
- Create the app with the bootstrap script. Resolve the script path relative to this file, then run it with an absolute path:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node /absolute/path/to/plugins/product-design/scripts/bootstrap-prototype.mjs --dest /absolute/path/to/new-prototype
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
- Run `npm install` from the generated project root. The generated app includes its own `.npmrc`.
|
|
15
|
+
- Do not replace the starter with static HTML because package install is slow. If install is genuinely blocked, report the blocker.
|
|
16
|
+
- Do not start a server until the route is ready to build.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
cpSync,
|
|
4
|
+
existsSync,
|
|
5
|
+
mkdirSync,
|
|
6
|
+
readdirSync,
|
|
7
|
+
readFileSync,
|
|
8
|
+
statSync,
|
|
9
|
+
writeFileSync,
|
|
10
|
+
} from "node:fs";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import { fileURLToPath } from "node:url";
|
|
13
|
+
|
|
14
|
+
const scriptPath = fileURLToPath(import.meta.url);
|
|
15
|
+
const pluginRoot = path.resolve(path.dirname(scriptPath), "..");
|
|
16
|
+
const templateRoot = path.join(pluginRoot, "templates", "prototype");
|
|
17
|
+
|
|
18
|
+
function parseArgs(argv) {
|
|
19
|
+
const args = {};
|
|
20
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
21
|
+
const arg = argv[index];
|
|
22
|
+
if (!arg.startsWith("--")) continue;
|
|
23
|
+
const raw = arg.slice(2);
|
|
24
|
+
const [key, inlineValue] = raw.split("=", 2);
|
|
25
|
+
if (inlineValue !== undefined) {
|
|
26
|
+
args[key] = inlineValue;
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const next = argv[index + 1];
|
|
30
|
+
if (next && !next.startsWith("--")) {
|
|
31
|
+
args[key] = next;
|
|
32
|
+
index += 1;
|
|
33
|
+
} else {
|
|
34
|
+
args[key] = true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return args;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function slugify(value) {
|
|
41
|
+
return (
|
|
42
|
+
String(value || "prototype")
|
|
43
|
+
.trim()
|
|
44
|
+
.toLowerCase()
|
|
45
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
46
|
+
.replace(/^-|-$/g, "") || "prototype"
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function readText(filePath) {
|
|
51
|
+
return existsSync(filePath) ? readFileSync(filePath, "utf8") : "";
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function writeText(filePath, value) {
|
|
55
|
+
mkdirSync(path.dirname(filePath), { recursive: true });
|
|
56
|
+
writeFileSync(filePath, value, "utf8");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function copyDir(source, target) {
|
|
60
|
+
cpSync(source, target, {
|
|
61
|
+
recursive: true,
|
|
62
|
+
force: true,
|
|
63
|
+
filter(current) {
|
|
64
|
+
const name = path.basename(current);
|
|
65
|
+
return !["node_modules", "dist", ".vite", ".turbo", ".DS_Store"].includes(name);
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function hasFiles(dir) {
|
|
71
|
+
return existsSync(dir) && readdirSync(dir).length > 0;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function ensureEmptyDest(dest) {
|
|
75
|
+
if (existsSync(dest) && statSync(dest).isFile()) {
|
|
76
|
+
throw new Error(`Destination exists and is not a directory: ${dest}`);
|
|
77
|
+
}
|
|
78
|
+
if (hasFiles(dest)) {
|
|
79
|
+
throw new Error(`Destination exists and is not empty: ${dest}`);
|
|
80
|
+
}
|
|
81
|
+
mkdirSync(dest, { recursive: true });
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function nearestPrototypeRoot(args) {
|
|
85
|
+
const root = args.root || args.dest || process.cwd();
|
|
86
|
+
return path.resolve(root);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function packageJsonPath(root) {
|
|
90
|
+
return path.join(root, "package.json");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function readPackage(root) {
|
|
94
|
+
const filePath = packageJsonPath(root);
|
|
95
|
+
if (!existsSync(filePath)) return null;
|
|
96
|
+
return JSON.parse(readText(filePath));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function writePackage(root, pkg) {
|
|
100
|
+
writeText(packageJsonPath(root), `${JSON.stringify(pkg, null, 2)}\n`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function setPackageName(root) {
|
|
104
|
+
const pkg = readPackage(root);
|
|
105
|
+
if (!pkg) return;
|
|
106
|
+
pkg.name = slugify(path.basename(root));
|
|
107
|
+
writePackage(root, pkg);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function setLocalNpmCache(root) {
|
|
111
|
+
writeText(path.join(root, ".npmrc"), [
|
|
112
|
+
`cache=${path.join(root, ".npm-cache")}`,
|
|
113
|
+
"fund=false",
|
|
114
|
+
"audit=false",
|
|
115
|
+
"",
|
|
116
|
+
].join("\n"));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function createNew(root) {
|
|
120
|
+
if (!existsSync(templateRoot)) {
|
|
121
|
+
throw new Error(`Bundled Product Design prototype template is missing: ${templateRoot}`);
|
|
122
|
+
}
|
|
123
|
+
ensureEmptyDest(root);
|
|
124
|
+
copyDir(templateRoot, root);
|
|
125
|
+
setPackageName(root);
|
|
126
|
+
setLocalNpmCache(root);
|
|
127
|
+
return { status: "created", root };
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function main() {
|
|
131
|
+
const args = parseArgs(process.argv.slice(2));
|
|
132
|
+
const root = nearestPrototypeRoot(args);
|
|
133
|
+
|
|
134
|
+
if (args.mode && args.mode !== "new") {
|
|
135
|
+
const mode = String(args.mode);
|
|
136
|
+
throw new Error(`Unknown mode: ${mode}`);
|
|
137
|
+
}
|
|
138
|
+
const result = createNew(root);
|
|
139
|
+
console.log(JSON.stringify(result, null, 2));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
try {
|
|
143
|
+
main();
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audit
|
|
3
|
+
description: "Audit or critique a product flow, journey, workflow, funnel, onboarding path, checkout path, settings path, screen, or multi-step product experience by capturing screenshots first, placing them in Figma or a local folder, then reporting UX, design, and accessibility findings from that evidence. Use when the user asks to audit, critique, review, inspect, assess, or evaluate a product experience."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Audit
|
|
7
|
+
|
|
8
|
+
Use this skill when the user wants to audit or critique a product flow, journey, funnel, onboarding path, checkout path, settings path, screen, or other product experience.
|
|
9
|
+
|
|
10
|
+
The output is not a loose opinion. The output is:
|
|
11
|
+
|
|
12
|
+
- Screenshots of the flow
|
|
13
|
+
- Those screenshots placed in the chosen destination
|
|
14
|
+
- A numbered step list
|
|
15
|
+
- UX and design findings tied to steps or screenshots
|
|
16
|
+
- Accessibility risks tied to steps or screenshots
|
|
17
|
+
- Clear limits on what could not be checked from screenshots alone
|
|
18
|
+
|
|
19
|
+
## Critical Overrides
|
|
20
|
+
|
|
21
|
+
- Refer to the Plugin router [$index](../index/SKILL.md) before proceeding.
|
|
22
|
+
- Follow [$critical-overrides](../../references/critical-overrides.md).
|
|
23
|
+
|
|
24
|
+
## User Context
|
|
25
|
+
|
|
26
|
+
Before starting, load [$user-context](../user-context/SKILL.md) and run its preflight script when local shell access is available.
|
|
27
|
+
|
|
28
|
+
Use saved product URLs, Figma files, screenshots, reference images, codebase paths, Storybook, tokens, design systems, brand assets, component refs, browser preferences, and share targets as grounding material when relevant.
|
|
29
|
+
|
|
30
|
+
Do not inspect every saved reference. Inspect only what the current task needs.
|
|
31
|
+
|
|
32
|
+
## Route
|
|
33
|
+
|
|
34
|
+
Before auditing:
|
|
35
|
+
|
|
36
|
+
1. Identify the product or surface.
|
|
37
|
+
2. Identify the flow or task.
|
|
38
|
+
3. Identify the destination.
|
|
39
|
+
4. Choose the capture tool.
|
|
40
|
+
5. Capture the flow.
|
|
41
|
+
6. Save, inspect, place, and annotate each screenshot.
|
|
42
|
+
|
|
43
|
+
Destination rules:
|
|
44
|
+
|
|
45
|
+
- If the user names Figma, use Figma.
|
|
46
|
+
- If the user names a local folder, use that folder.
|
|
47
|
+
- If the destination is missing, ask one question: "Should I put this in Figma or a local folder?"
|
|
48
|
+
|
|
49
|
+
Capture rules:
|
|
50
|
+
|
|
51
|
+
- Use the Codex in-app Browser first.
|
|
52
|
+
- If Browser cannot access, control, or screenshot the target, use Chrome [Internal].
|
|
53
|
+
- If Browser and Chrome cannot complete the capture, ask before using Playwright as the fallback.
|
|
54
|
+
- If none of those can capture valid screenshots or control the flow, stop and report the blocker.
|
|
55
|
+
|
|
56
|
+
Browser capture order:
|
|
57
|
+
|
|
58
|
+
1. Load the Browser skill before browser work.
|
|
59
|
+
2. Connect to the browser and use the current tab when it already shows the target.
|
|
60
|
+
3. Do not reload or navigate away unless the audit needs a fresh start.
|
|
61
|
+
4. Observe the visible state before acting.
|
|
62
|
+
5. Before each click, type, or key press, use the latest DOM snapshot to target one clear control.
|
|
63
|
+
6. After each action, take the cheapest fresh check that proves what changed: DOM for structure, screenshot for visual state.
|
|
64
|
+
7. Save and inspect the accepted screenshot before using it as audit evidence.
|
|
65
|
+
|
|
66
|
+
Figma rules:
|
|
67
|
+
|
|
68
|
+
- If Figma is the destination, load the required Figma skills before creating or editing the file.
|
|
69
|
+
- Keep a local copy of every screenshot even when Figma succeeds.
|
|
70
|
+
- Do not upload a screenshot to Figma until the saved local file has been inspected and accepted.
|
|
71
|
+
- Figma is not done until the screenshots are visibly placed in the Figma output.
|
|
72
|
+
- After placing screenshots in Figma, render or inspect the board and confirm every flow step has the correct screenshot visible in the correct card.
|
|
73
|
+
- If an image is missing, misplaced, blank, or only uploaded as an unused asset, fix it before handoff.
|
|
74
|
+
- If Figma tools cannot create files or place images, save the audit locally and explain the missing Figma capability.
|
|
75
|
+
|
|
76
|
+
Evidence rules:
|
|
77
|
+
|
|
78
|
+
- Use only evidence captured in the current audit run.
|
|
79
|
+
- Do not use memory, prior chats, old traces, cached screenshots, or prior generated artifacts as audit evidence unless the user explicitly provides them.
|
|
80
|
+
- Do not audit until the product, flow, destination, and capture tool are known.
|
|
81
|
+
- Do not claim full accessibility compliance from screenshots alone.
|
|
82
|
+
|
|
83
|
+
## Capture And Audit The Flow
|
|
84
|
+
|
|
85
|
+
You are an expert design, UX, and accessibility auditor. For each step in the flow, capture what the user sees, observe how the screen behaves, inspect the screenshot, and write audit notes before moving on.
|
|
86
|
+
|
|
87
|
+
Follow [references/design-audit-framework.md](references/design-audit-framework.md) when deciding what to inspect and how to describe strengths, UX issues, accessibility risks, limits, and recommendations.
|
|
88
|
+
|
|
89
|
+
Screenshot source rule:
|
|
90
|
+
|
|
91
|
+
- Use the screenshot you actually saw.
|
|
92
|
+
- Save that exact screenshot to the local audit folder.
|
|
93
|
+
- Open or inspect the saved file before accepting it.
|
|
94
|
+
- If the saved file shows the wrong window, wrong state, blank page, crop, or loading screen, reject it and capture again.
|
|
95
|
+
- When Figma is the destination, upload that accepted local file.
|
|
96
|
+
- After upload, verify the Figma board shows the same step.
|
|
97
|
+
- Do not replace a Browser, Chrome, or Computer Use screenshot with an OS screenshot unless you first prove the saved file shows the same window and state.
|
|
98
|
+
|
|
99
|
+
For every step:
|
|
100
|
+
|
|
101
|
+
1. Move to the next step in the requested flow.
|
|
102
|
+
2. Wait until the screen is loaded and visually stable.
|
|
103
|
+
3. Check for loading spinners, blank areas, login walls, error pages, blocked states, cookie dialogs, and half-rendered content.
|
|
104
|
+
4. Capture the screenshot.
|
|
105
|
+
5. Inspect the screenshot before accepting it.
|
|
106
|
+
6. Reject the screenshot if it is blank, loading, cropped, blocked, or showing the wrong state.
|
|
107
|
+
7. Observe behavior that matters for the audit, such as navigation, focus, loading, validation, error handling, empty states, motion, and whether the next action is clear.
|
|
108
|
+
8. Write notes for that step.
|
|
109
|
+
9. In the notes, report strengths, UX issues, accessibility risks, and any limits that made the step difficult to audit.
|
|
110
|
+
10. Save accepted screenshots with numbered names, such as `01-start.png`, `02-form-filled.png`, and `03-confirmation.png`.
|
|
111
|
+
11. Inspect the saved screenshot file before upload or handoff.
|
|
112
|
+
12. Add each accepted screenshot to the chosen destination immediately.
|
|
113
|
+
13. Add the notes for that step to the chosen destination immediately.
|
|
114
|
+
|
|
115
|
+
If the destination is a local folder:
|
|
116
|
+
|
|
117
|
+
- Save screenshots in that folder.
|
|
118
|
+
- Save the notes in a file that can be shared at the end.
|
|
119
|
+
|
|
120
|
+
If the destination is Figma:
|
|
121
|
+
|
|
122
|
+
- Place screenshots in order, left to right on the same row, with 200px between each one. Go to a new row every 15 screenshots, and separate those rows by 600px.
|
|
123
|
+
- Underneath the screenshot, add text with the Step number and its name, and notes.
|
|
124
|
+
- Keep a local folder copy even when Figma succeeds.
|
|
125
|
+
- When you are done, wrap all of the assets you added in a Section and title the section.
|
|
126
|
+
|
|
127
|
+
Acceptance checks:
|
|
128
|
+
|
|
129
|
+
- Every important step in the requested flow has a valid screenshot or a named blocker.
|
|
130
|
+
- Screenshots are saved in order.
|
|
131
|
+
- Screenshots are placed in the chosen destination as they are captured.
|
|
132
|
+
- Notes are placed in the chosen destination as they are written.
|
|
133
|
+
- Every note points to the screenshot or step it describes.
|
|
134
|
+
- Notes explain strengths, UX issues, accessibility risks, and evidence limits when those apply.
|
|
135
|
+
- Accessibility risks say what can be seen from screenshots and what still needs testing.
|
|
136
|
+
- The final screenshot set and notes are enough to support the requested audit.
|
|
137
|
+
|
|
138
|
+
Blockers:
|
|
139
|
+
|
|
140
|
+
- The flow cannot be completed.
|
|
141
|
+
- A required step cannot be screenshotted.
|
|
142
|
+
- The source changes in a way that makes the flow unclear.
|
|
143
|
+
- Screenshots cannot be saved or placed in the destination.
|
|
144
|
+
- Notes cannot be written or placed in the destination.
|
|
145
|
+
- The requested claim would require evidence that screenshots cannot provide.
|
|
146
|
+
|
|
147
|
+
## Final Response
|
|
148
|
+
|
|
149
|
+
After the flow is captured and notes are written, list every step in the final response.
|
|
150
|
+
|
|
151
|
+
The final step list MUST include:
|
|
152
|
+
|
|
153
|
+
- step number
|
|
154
|
+
- short description of the step
|
|
155
|
+
- general health of that step
|
|
156
|
+
|
|
157
|
+
Also include where the full output was saved or placed.
|
|
158
|
+
|
|
159
|
+
Keep the language direct. Do not use broad design jargon when a plain phrase works.
|
package/template/.codex/skills/product-design/skills/audit/references/design-audit-framework.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Design Audit Framework
|
|
2
|
+
|
|
3
|
+
Use this structure for `audit`.
|
|
4
|
+
|
|
5
|
+
Use `audit` for systematic assessment across a broader experience, not for feedback on a single artifact.
|
|
6
|
+
|
|
7
|
+
## Audit modes
|
|
8
|
+
|
|
9
|
+
- `UX audit`
|
|
10
|
+
- `Accessibility audit`
|
|
11
|
+
- `Combined audit`
|
|
12
|
+
|
|
13
|
+
## UX audit lenses
|
|
14
|
+
|
|
15
|
+
- Task entry and discoverability
|
|
16
|
+
- Information architecture
|
|
17
|
+
- Interaction flow and friction
|
|
18
|
+
- Hierarchy and clarity
|
|
19
|
+
- Trust and reassurance
|
|
20
|
+
- Default states and empty states
|
|
21
|
+
- Copy and calls to action
|
|
22
|
+
- Consistency across the experience
|
|
23
|
+
|
|
24
|
+
## Accessibility audit lenses
|
|
25
|
+
|
|
26
|
+
- Perceivable content and contrast risks
|
|
27
|
+
- Semantic structure and reading order
|
|
28
|
+
- Keyboard access and focus behavior
|
|
29
|
+
- Target size and interaction affordances
|
|
30
|
+
- Labels, instructions, and error recovery
|
|
31
|
+
- Motion, timing, and state change communication
|
|
32
|
+
- Responsive reflow and zoom resilience
|
|
33
|
+
- Assistive-technology clarity and robustness
|
|
34
|
+
|
|
35
|
+
## UX audit output structure
|
|
36
|
+
|
|
37
|
+
1. `Audit scope`
|
|
38
|
+
2. `User goal`
|
|
39
|
+
3. `Strengths`
|
|
40
|
+
4. `Notable risks`
|
|
41
|
+
5. `Opportunity areas`
|
|
42
|
+
6. `Optional comparison context`
|
|
43
|
+
7. `Recommendations`
|
|
44
|
+
|
|
45
|
+
## Accessibility audit output structure
|
|
46
|
+
|
|
47
|
+
1. `Audit scope`
|
|
48
|
+
2. `Accessibility target`
|
|
49
|
+
3. `Confirmed strengths`
|
|
50
|
+
4. `Likely issues`
|
|
51
|
+
5. `WCAG-relevant considerations`
|
|
52
|
+
6. `Evidence limits and verification gaps`
|
|
53
|
+
7. `Recommendations`
|
|
54
|
+
|
|
55
|
+
## Combined audit output structure
|
|
56
|
+
|
|
57
|
+
1. `Audit scope`
|
|
58
|
+
2. `User goal and accessibility target`
|
|
59
|
+
3. `Strengths`
|
|
60
|
+
4. `UX risks`
|
|
61
|
+
5. `Accessibility risks`
|
|
62
|
+
6. `Opportunity areas`
|
|
63
|
+
7. `Evidence limits and verification gaps`
|
|
64
|
+
8. `Recommendations`
|
|
65
|
+
|
|
66
|
+
## Guardrails
|
|
67
|
+
|
|
68
|
+
- Focus on experience patterns, not business strategy.
|
|
69
|
+
- Keep comparator products optional; use them only when they sharpen the audit.
|
|
70
|
+
- Separate structural issues from polish issues.
|
|
71
|
+
- Tie recommendations back to the user goal, workflow, or accessibility outcome.
|
|
72
|
+
- Do not imply full WCAG compliance unless the user has provided the implementation details needed to support that claim.
|
|
73
|
+
- If the request is about a single screen, component, modal, or bounded interaction, keep the audit scoped to that surface.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-qa
|
|
3
|
+
description: "Internal prototype QA helper. Use only after a Product Design prototype, URL-to-code build, or image-to-code build has a source visual target and a rendered implementation to compare before handoff. Do not use for broad UX critique, design critique, product audits, or flow reviews; route those user-facing requests to audit."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Design QA
|
|
7
|
+
|
|
8
|
+
Use this internal helper to compare a prototype's source design against the rendered implementation before handoff.
|
|
9
|
+
|
|
10
|
+
Do not use this skill for broad UX critique, design critique, product audits, or flow reviews. Use [audit](../audit/SKILL.md) for those user-facing requests.
|
|
11
|
+
|
|
12
|
+
Use this skill before every Product Design build handoff.
|
|
13
|
+
|
|
14
|
+
A passing QA run requires both:
|
|
15
|
+
|
|
16
|
+
- a source visual target: Figma node, image, screenshot, mockup, or source capture
|
|
17
|
+
- a rendered implementation: local URL, deployed URL, app screen, component, or screenshot
|
|
18
|
+
|
|
19
|
+
If either artifact cannot be opened, captured, or compared, write `design-qa.md` with `final result: blocked` and name the blocker. Do not let the build skill hand off as done.
|
|
20
|
+
|
|
21
|
+
## Critical Overrides
|
|
22
|
+
|
|
23
|
+
Follow [critical-overrides](../../references/critical-overrides.md).
|
|
24
|
+
|
|
25
|
+
## Workflow
|
|
26
|
+
|
|
27
|
+
Compare the intended design to the implementation as a product-quality reviewer, not as a generic aesthetic critic. The output must be a prioritized fix list grounded in evidence from both artifacts.
|
|
28
|
+
|
|
29
|
+
Do not write the QA review from memory, code, or file paths alone. Open or capture both the source design and the implementation first, then compare what is actually visible.
|
|
30
|
+
|
|
31
|
+
Do not pretend separate image views are side-by-side comparison. Put the source image and the implementation screenshot together in the same comparison input, then judge the visible differences from that combined input.
|
|
32
|
+
|
|
33
|
+
1. Identify the comparison target.
|
|
34
|
+
- Determine the source design: Figma node, image, design board, screenshot, spec, or mockup.
|
|
35
|
+
- Determine the implementation: local URL, deployed URL, app screen, component, screenshot, or code-rendered view.
|
|
36
|
+
- Match the same viewport, state, theme, device density, route, content, auth state, and interaction state before judging.
|
|
37
|
+
- If artifacts do not represent the same state, call that out first and avoid false precision.
|
|
38
|
+
|
|
39
|
+
2. Capture evidence.
|
|
40
|
+
- For Figma, use design context and screenshot tools when available.
|
|
41
|
+
- For web/app implementations, open the target in a browser and capture screenshots at the intended viewport.
|
|
42
|
+
- Capture additional states when relevant: mobile/desktop, hover/focus/active, empty/loading/error, dark/light, and key responsive breakpoints.
|
|
43
|
+
- Save paths or URLs for screenshots when available so findings can cite evidence.
|
|
44
|
+
- Capturing screenshots is not enough. Put the source image and the implementation screenshot together in the same comparison input before judging.
|
|
45
|
+
|
|
46
|
+
3. Normalize before comparing.
|
|
47
|
+
- Align crop, viewport size, scale, and device frame. Do not compare a framed mockup to an unframed page without noting the mismatch.
|
|
48
|
+
- Prefer comparing content regions over full browser chrome or surrounding canvas.
|
|
49
|
+
|
|
50
|
+
4. Compare at the right level of detail.
|
|
51
|
+
- Use a full-view comparison to judge overall composition, hierarchy, layout, density, and responsive structure.
|
|
52
|
+
- Use focused region comparisons when important details are too small to judge in the full-view comparison.
|
|
53
|
+
- Choose focused regions from the actual source and implementation. Use them where fidelity depends on precise typography, alignment, imagery, assets, icons, logos, controls, forms, navigation, tables, dense UI, or visible interaction states.
|
|
54
|
+
- If no focused region is needed, say why in `design-qa.md`.
|
|
55
|
+
- Do not pass QA from a full-view comparison alone when important details are not clearly readable.
|
|
56
|
+
|
|
57
|
+
5. Review systematically.
|
|
58
|
+
- Read [qa-rubric](./references/qa-rubric.md) when the QA pass spans more than a quick visual check.
|
|
59
|
+
- Check information architecture, layout, spacing, typography/fonts, color, imagery/image quality, icons, copy, affordances, interaction states, responsiveness, accessibility, and polish.
|
|
60
|
+
- Always make a specific pass over the five required fidelity surfaces: fonts/typography, spacing/layout rhythm, colors/tokens, image quality, and copy/content. Do this even if the user did not name those areas explicitly.
|
|
61
|
+
- If the mock does not address some issue you're seeing (e.g. a null state), call that out as a separate finding as a shortcoming of the mock to be addressed.
|
|
62
|
+
- Your other goal is to decide whether the implementation "looks as good" as the mock. If there are stylistic problems, call them out. If the user's prompt is leaking into the implementation (vs letting the app stand on its own), call that out as well.
|
|
63
|
+
- Distinguish design drift from intentional product/code constraints. If a deviation may be intentional, phrase it as a question or assumption.
|
|
64
|
+
|
|
65
|
+
6. Produce a fix-oriented QA report.
|
|
66
|
+
- Lead with findings, ordered by severity and user impact.
|
|
67
|
+
- For each finding include: severity, location, what differs, evidence, why it matters, and the concrete fix.
|
|
68
|
+
- Include exact CSS/component/token suggestions when the implementation context is available.
|
|
69
|
+
- Separate objective mismatches from subjective polish recommendations.
|
|
70
|
+
- Do not say a design matches, is done, or is as good as it can get until the required fidelity surfaces have been checked and any remaining differences are explicitly classified as acceptable, expected, or still actionable.
|
|
71
|
+
- End with a concise implementation checklist.
|
|
72
|
+
|
|
73
|
+
## Required Fidelity Surfaces
|
|
74
|
+
|
|
75
|
+
Every QA report must explicitly evaluate these surfaces:
|
|
76
|
+
|
|
77
|
+
- Fonts and typography: family, fallback, weight, size, line height, letter spacing, antialiasing, hierarchy, wrapping, truncation, and whether display text and small UI text use appropriate optical weights. It is incredibly important to check fonts carefully for fidelity, including looking up similar typefaces or using image analysis to find the font differences.
|
|
78
|
+
- Spacing and layout rhythm: frame size, crop, alignment, margins, padding, grid tracks, section gaps, component spacing, radii, shadows/elevation, and vertical rhythm.
|
|
79
|
+
- Colors and visual tokens: sampled or inferred palette, gradients, opacity, contrast, semantic state colors, foreground/background balance, and whether CSS tokens map to the source design.
|
|
80
|
+
- Image quality and asset fidelity: subject correctness, crop, scale, sharpness, compression, transparency halos, masking, background treatment, raster-vs-vector appropriateness, and whether generated assets match the source art direction. Fail QA if logos, illustrations, decorative marks, product imagery, non-standard icons, or other visible image assets from the visual target were replaced with custom inline SVG, handcrafted SVG, HTML elements, div/span shapes, CSS drawings, gradients, emoji, text glyphs, placeholder shapes, or code-native approximations.
|
|
81
|
+
- Copy and content of app-specific text
|
|
82
|
+
|
|
83
|
+
## Severity
|
|
84
|
+
|
|
85
|
+
- `P0`: Blocks core use, severe accessibility failure, broken layout, or impossible task.
|
|
86
|
+
- `P1`: Major design mismatch or usability regression likely to be noticed by users.
|
|
87
|
+
- `P2`: Moderate visual drift, inconsistent state, responsive issue, or fixable polish gap.
|
|
88
|
+
- `P3`: Minor refinement that improves fidelity but does not block acceptance.
|
|
89
|
+
|
|
90
|
+
## Output Format
|
|
91
|
+
|
|
92
|
+
Use this structure unless the user asks otherwise:
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
**Findings**
|
|
96
|
+
- [P1] Short issue title
|
|
97
|
+
Location: screen/component/selector/file if known.
|
|
98
|
+
Evidence: design does X, implementation does Y.
|
|
99
|
+
Impact: why this matters.
|
|
100
|
+
Fix: concrete change.
|
|
101
|
+
|
|
102
|
+
**Open Questions**
|
|
103
|
+
- Any ambiguity about intentional deviations, unavailable states, or missing artifacts.
|
|
104
|
+
|
|
105
|
+
**Implementation Checklist**
|
|
106
|
+
- Ordered fixes that can be executed directly.
|
|
107
|
+
|
|
108
|
+
**Follow-up Polish**
|
|
109
|
+
- P3 refinements that can improve fidelity after handoff.
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
If there are no substantive mismatches, say that clearly and list any residual test gaps.
|
|
113
|
+
|
|
114
|
+
When this skill is used before handoff, save the latest QA report as project-root `design-qa.md`.
|
|
115
|
+
|
|
116
|
+
`design-qa.md` must include:
|
|
117
|
+
|
|
118
|
+
- source visual truth path
|
|
119
|
+
- implementation screenshot path
|
|
120
|
+
- viewport
|
|
121
|
+
- state
|
|
122
|
+
- full-view comparison evidence
|
|
123
|
+
- focused region comparison evidence, or why it was not needed
|
|
124
|
+
- findings
|
|
125
|
+
- patches made since the previous QA pass
|
|
126
|
+
- final result
|
|
127
|
+
|
|
128
|
+
`final result` must be exactly `passed` or `blocked`.
|
|
129
|
+
|
|
130
|
+
Use `passed` when there are no actionable P0/P1/P2 findings. P3 findings may remain as follow-up polish.
|
|
131
|
+
Use `blocked` when actionable P0/P1/P2 findings remain and name the blocker.
|
|
132
|
+
|
|
133
|
+
Return the file path with the QA report.
|