@salesforce/afv-skills 1.54.0 → 1.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-generate/SKILL.md +8 -0
  3. package/skills/agentforce-generate/references/actions-reference.md +2 -2
  4. package/skills/agentforce-generate/references/voice-modality-reference.md +51 -15
  5. package/skills/agentforce-generate/references/voice-telephony-cli.md +193 -0
  6. package/skills/agentforce-observe/SKILL.md +13 -9
  7. package/skills/agentforce-observe/references/ahm-alerts.md +193 -14
  8. package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +24 -15
  9. package/skills/automation-sandbox-post-copy-config-generate/assets/config_template.json +11 -0
  10. package/skills/automation-sandbox-post-copy-config-generate/assets/json_schema.json +33 -1
  11. package/skills/automation-sandbox-post-copy-config-generate/references/configuration_catalog.md +32 -1
  12. package/skills/automation-sandbox-post-copy-configure/SKILL.md +75 -71
  13. package/skills/automation-sandbox-post-copy-configure/assets/scheduled_apex_template.apex +13 -0
  14. package/skills/automation-sandbox-post-copy-configure/examples/sample_scheduled_apex_config.json +13 -0
  15. package/skills/automation-sandbox-post-copy-configure/references/scheduled_apex_path.md +155 -0
  16. package/skills/automation-sandbox-post-copy-configure/scripts/build-scheduled-apex.mjs +62 -0
  17. package/skills/automation-sandbox-post-copy-configure/scripts/soql-escape-job-name.mjs +28 -0
  18. package/skills/consumer-goods-accruals-datakit-deploy/SKILL.md +383 -0
  19. package/skills/consumer-goods-accruals-datakit-deploy/scripts/setup.js +324 -0
  20. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/00-check-prerequisites.js +63 -0
  21. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/01-download-static-resource.js +100 -0
  22. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/02-replace-org-id.js +46 -0
  23. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/03-deploy-metadata.js +46 -0
  24. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/04-deploy-engine.js +198 -0
  25. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/05-deploy-tpm-accruals.js +231 -0
  26. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/06-create-dataspace.js +82 -0
  27. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/07-deploy-accruals-reports.js +517 -0
  28. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/08-deploy-ui.js +416 -0
  29. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/09-completion.js +44 -0
  30. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/utils.js +514 -0
  31. package/skills/consumer-goods-sync-management-configure/SKILL.md +137 -0
  32. package/skills/consumer-goods-sync-management-configure/examples/scenarios.md +294 -0
  33. package/skills/consumer-goods-sync-management-configure/references/act1-setup-sync.md +333 -0
  34. package/skills/consumer-goods-sync-management-configure/references/act2-assign-users.md +324 -0
  35. package/skills/consumer-goods-sync-management-configure/references/act3-plan-verify.md +113 -0
  36. package/skills/consumer-goods-sync-management-configure/references/readiness-and-enablement.md +164 -0
  37. package/skills/consumer-goods-sync-management-configure/references/sync-management-app-install-backbone.md +159 -0
  38. package/skills/consumer-goods-sync-management-configure/references/transports-and-namespace.md +220 -0
  39. package/skills/consumer-goods-sync-management-configure/references/verify-and-smoke.md +175 -0
  40. package/skills/dx-org-analyze/README.md +310 -0
  41. package/skills/dx-org-analyze/SKILL.md +260 -0
  42. package/skills/dx-org-analyze/references/collection-details.md +88 -0
  43. package/skills/dx-org-analyze/references/report-format.md +67 -0
  44. package/skills/dx-org-analyze/scripts/collect_org_data.py +823 -0
  45. package/skills/dx-org-analyze/scripts/compute_diff.py +1101 -0
  46. package/skills/dx-org-analyze/scripts/introspect_org.py +400 -0
  47. package/skills/dx-org-analyze/tests/README.md +46 -0
  48. package/skills/dx-org-analyze/tests/fixtures/org_a.json +76 -0
  49. package/skills/dx-org-analyze/tests/fixtures/org_b.json +70 -0
  50. package/skills/dx-org-analyze/tests/test_compute_diff.sh +284 -0
  51. package/skills/dx-org-analyze/tests/test_consistency.sh +428 -0
  52. package/skills/dx-org-manage/SKILL.md +6 -50
  53. package/skills/dx-org-manage/examples/README.md +10 -16
  54. package/skills/dx-org-manage/references/scratch-org-create.md +1 -1
  55. package/skills/dx-org-manage/references/scratch-org-operations.md +1 -1
  56. package/skills/dx-org-shape-manage/SKILL.md +4 -3
  57. package/skills/education-cloud-domain-configure/references/gotchas-extended.md +1 -0
  58. package/skills/experience-accessibility-validate/SKILL.md +8 -5
  59. package/skills/experience-accessibility-validate/references/reviewers/sc-1-1-1-non-text-content.md +1 -4
  60. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-i-lists.md +0 -4
  61. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-ii-tables.md +20 -85
  62. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iii-form-labels.md +4 -4
  63. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iv-regions.md +0 -4
  64. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-v-groups.md +2 -4
  65. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-5-identify-input.md +0 -4
  66. package/skills/experience-accessibility-validate/references/reviewers/sc-1-4-3-contrast.md +4 -14
  67. package/skills/experience-accessibility-validate/references/reviewers/sc-2-1-1-keyboard.md +9 -5
  68. package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-4-link-purpose.md +1 -4
  69. package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-6-headings-labels.md +0 -4
  70. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-1-pointer-gestures.md +0 -4
  71. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-2-pointer-cancellation.md +0 -4
  72. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-3-label-in-name.md +0 -4
  73. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-7-dragging-movement.md +0 -4
  74. package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-1-on-focus.md +0 -4
  75. package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-2-on-input.md +1 -4
  76. package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-1-error-identification.md +1 -4
  77. package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-2-labels-instructions.md +1 -4
  78. package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-3-error-suggestion.md +1 -4
  79. package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-i-name.md +4 -5
  80. package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-ii-role.md +1 -4
  81. package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-iii-value.md +0 -4
  82. package/skills/experience-design-validate/SKILL.md +163 -0
  83. package/skills/experience-design-validate/references/ai.md +54 -0
  84. package/skills/experience-design-validate/references/components.md +61 -0
  85. package/skills/experience-design-validate/references/craft.md +158 -0
  86. package/skills/experience-design-validate/references/data.md +59 -0
  87. package/skills/experience-design-validate/references/forms-flows.md +57 -0
  88. package/skills/experience-design-validate/references/interaction.md +53 -0
  89. package/skills/experience-design-validate/references/navigation.md +51 -0
  90. package/skills/experience-design-validate/references/performance.md +56 -0
  91. package/skills/experience-design-validate/references/records.md +60 -0
  92. package/skills/experience-design-validate/references/responsive.md +48 -0
  93. package/skills/experience-design-validate/references/scoring-rubric.md +257 -0
  94. package/skills/experience-design-validate/references/state.md +53 -0
  95. package/skills/experience-design-validate/references/trust.md +47 -0
  96. package/skills/experience-design-validate/references/usability.md +35 -0
  97. package/skills/experience-design-validate/references/visual-system.md +183 -0
  98. package/skills/experience-lwc-accessibility-jest-run/SKILL.md +104 -25
  99. package/skills/experience-lwc-accessibility-jest-run/assets/jest.config.js +4 -0
  100. package/skills/experience-lwc-accessibility-jest-run/assets/sa11y-jest-setup.js +5 -0
  101. package/skills/experience-ui-bundle-app-coordinate/SKILL.md +5 -5
  102. package/skills/experience-ui-bundle-features-generate/SKILL.md +65 -36
  103. package/skills/experience-ui-bundle-features-generate/references/angular/features.md +74 -0
  104. package/skills/experience-ui-bundle-features-generate/references/react/features.md +59 -0
  105. package/skills/experience-ui-bundle-features-generate/scripts/detect-framework.sh +73 -0
  106. package/skills/experience-ui-bundle-frontend-generate/SKILL.md +2 -2
  107. package/skills/experience-ui-bundle-metadata-generate/SKILL.md +26 -14
  108. package/skills/experience-ui-bundle-metadata-generate/references/angular-metadata-generate.md +37 -0
  109. package/skills/experience-ui-bundle-metadata-generate/references/react-metadata-generate.md +32 -0
  110. package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.sh +73 -0
  111. package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.sh +30 -8
  112. package/skills/field-service-data-capture-migrate/SKILL.md +391 -0
  113. package/skills/field-service-data-capture-migrate/assets/sample-legacy-flow.flow-meta.xml +163 -0
  114. package/skills/field-service-data-capture-migrate/references/architecture-notes.md +40 -0
  115. package/skills/field-service-data-capture-migrate/references/component-mapping.md +278 -0
  116. package/skills/field-service-data-capture-migrate/references/converter-builder-contract.md +183 -0
  117. package/skills/field-service-data-capture-migrate/references/dc-platform-rules.md +130 -0
  118. package/skills/field-service-data-capture-migrate/references/fsm-dc-capability-catalog.md +215 -0
  119. package/skills/field-service-data-capture-migrate/references/known-deploy-errors.md +36 -0
  120. package/skills/field-service-data-capture-migrate/references/migration-checklist.md +121 -0
  121. package/skills/field-service-data-capture-migrate/references/transformer-rules.md +132 -0
  122. package/skills/field-service-data-capture-migrate/scripts/analyze_flow.py +277 -0
  123. package/skills/field-service-data-capture-migrate/scripts/convert_to_dc_spec.py +1311 -0
  124. package/skills/field-service-data-capture-migrate/scripts/cud_analysis.py +402 -0
  125. package/skills/field-service-data-capture-migrate/scripts/deploy_flow.sh +230 -0
  126. package/skills/field-service-data-capture-migrate/scripts/discover_subflow_tree.py +230 -0
  127. package/skills/field-service-data-capture-migrate/scripts/flow_input.py +186 -0
  128. package/skills/field-service-data-capture-migrate/scripts/flow_xml_utils.py +39 -0
  129. package/skills/field-service-data-capture-migrate/scripts/fsm_dc_catalog.py +413 -0
  130. package/skills/field-service-data-capture-migrate/scripts/generate_summary.py +199 -0
  131. package/skills/field-service-data-capture-migrate/scripts/json_to_flow_xml.py +146 -0
  132. package/skills/field-service-data-capture-migrate/scripts/manual_review_flags.py +42 -0
  133. package/skills/field-service-data-capture-migrate/scripts/retrieve_flow_rest.sh +155 -0
  134. package/skills/field-service-data-capture-migrate/scripts/subflow_names.py +49 -0
  135. package/skills/field-service-data-capture-migrate/scripts/transform_flow.py +1661 -0
  136. package/skills/field-service-data-capture-migrate/scripts/validate_flow.sh +147 -0
  137. package/skills/field-service-data-capture-migrate/scripts/vendor/build_flow.py +1258 -0
  138. package/skills/life-sciences-fieldsalesrep-coordinate/SKILL.md +1 -1
  139. package/skills/life-sciences-fieldsalesrep-coordinate/references/orchestration-flow.md +1 -1
  140. package/skills/life-sciences-kam-coordinate/references/stage-5-data-and-plan-templates-overview.md +14 -1
  141. package/skills/mobile-apps-create/SKILL.md +1 -1
  142. package/skills/{platform-agentsetup-categories-fetch → platform-agenticsetup-categories-get}/SKILL.md +7 -7
  143. package/skills/platform-sandbox-configure/SKILL.md +108 -133
  144. package/skills/platform-sandbox-configure/references/api-response-shapes.md +39 -0
  145. package/skills/platform-sandbox-configure/references/definition-file-approach.md +73 -0
  146. package/skills/platform-widget-generate/SKILL.md +26 -18
  147. package/skills/platform-widget-generate/examples/formulas.json +191 -0
  148. package/skills/platform-widget-generate/references/widget-formulas.md +123 -0
  149. package/skills/platform-widget-generate/references/widget-meta-directives.md +4 -4
  150. package/skills/sales-call-scoring-configure/SKILL.md +318 -0
  151. package/skills/sales-call-scoring-configure/assets/best-practice-competencies.json +67 -0
  152. package/skills/sales-call-scoring-configure/assets/ootb-competencies.json +58 -0
  153. package/skills/sales-call-scoring-configure/references/admin-communication.md +79 -0
  154. package/skills/sales-call-scoring-configure/references/competency-crud.md +130 -0
  155. package/skills/sales-call-scoring-configure/scripts/create-competency.sh +166 -0
  156. package/skills/sales-call-scoring-configure/scripts/create-custom-competency.sh +166 -0
  157. package/skills/sales-call-scoring-configure/scripts/edit-competency.sh +185 -0
  158. package/skills/sales-call-scoring-configure/scripts/edit-custom-competency.sh +190 -0
  159. package/skills/sales-call-scoring-configure/scripts/enable-call-scoring.sh +436 -0
  160. package/skills/sales-call-scoring-configure/scripts/get-competency.sh +72 -0
  161. package/skills/sales-call-scoring-configure/scripts/get-custom-competency.sh +78 -0
  162. package/skills/sales-call-scoring-configure/scripts/install-best-practice-competencies.sh +223 -0
  163. package/skills/sales-call-scoring-configure/scripts/install-ootb-competencies.sh +237 -0
  164. package/skills/sales-call-scoring-configure/scripts/list-competencies.sh +99 -0
  165. package/skills/sales-call-scoring-configure/scripts/shared/auth.sh +116 -0
  166. package/skills/sales-call-scoring-configure/scripts/shared/cap.sh +86 -0
  167. package/skills/sales-call-scoring-configure/scripts/shared/soap.sh +267 -0
  168. package/skills/sales-call-scoring-configure/scripts/shared/soql.sh +25 -0
  169. package/skills/sales-call-scoring-configure/scripts/toggle-competency.sh +112 -0
  170. package/skills/sales-call-scoring-configure/scripts/toggle-custom-competency.sh +125 -0
  171. package/skills/sales-call-scoring-configure/scripts/verify-ootb-competencies.sh +116 -0
  172. package/skills/service-concierge-portal-generate/references/portal-deploy-runbook.md +1 -0
  173. package/skills/service-de-channel-activate/SKILL.md +6 -5
  174. package/skills/service-de-channel-create/SKILL.md +3 -3
  175. package/skills/service-de-channel-routing-configure/SKILL.md +3 -3
  176. package/skills/service-de-channel-settings-configure/SKILL.md +195 -0
  177. package/skills/service-de-channel-settings-configure/references/channel-settings-facets.md +152 -0
  178. package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/gotchas.md +3 -3
  179. package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/language-keywords.md +4 -4
  180. package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/worked-examples.md +14 -14
  181. package/skills/service-de-headless-channel-configure/SKILL.md +6 -6
  182. package/skills/service-de-headless-channel-configure/references/worked-examples.md +1 -1
  183. package/skills/service-helpagent-coordinate/SKILL.md +3 -2
  184. package/skills/service-helpagent-coordinate/references/channel-voice.md +15 -4
  185. package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +49 -31
  186. package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +71 -6
  187. package/skills/service-itsm-agentic-setup-agentforce-coordinate/scripts/verify-child-verdict.mjs +26 -4
  188. package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +35 -10
  189. package/skills/service-itsm-agentic-setup-cmdb-access-assign/references/mcp-invocation.md +25 -5
  190. package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -1
  191. package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +5 -5
  192. package/skills/service-itsm-agentic-setup-cmdb-configure/references/mcp-invocation.md +1 -1
  193. package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +2 -2
  194. package/skills/service-itsm-agentic-setup-cmdb-coordinate/examples/output-templates.md +1 -1
  195. package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +25 -15
  196. package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +8 -5
  197. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/report-format.md +4 -2
  198. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/workflow-detail.md +1 -1
  199. package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +29 -16
  200. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +8 -5
  201. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/report-format.md +4 -2
  202. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/workflow-detail.md +1 -1
  203. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +29 -16
  204. package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +138 -68
  205. package/skills/service-itsm-agentic-setup-incident-management/examples/output-templates.md +31 -15
  206. package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +156 -0
  207. package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +148 -0
  208. package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +162 -0
  209. package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +149 -0
  210. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +103 -89
  211. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +2 -2
  212. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +21 -39
  213. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +3 -3
  214. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +18 -1
  215. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +63 -37
  216. package/skills/service-omni-attribute-routing-configure/SKILL.md +53 -0
  217. package/skills/service-omni-attribute-routing-configure/references/api-notes.md +7 -0
  218. package/skills/service-omni-attribute-routing-configure/scripts/configure-and-report.sh +224 -0
  219. package/skills/service-omni-attribute-routing-configure/scripts/tests/test_attribute_routing_contracts.py +137 -0
  220. package/skills/service-omni-channel-inventory-analyze/SKILL.md +96 -0
  221. package/skills/service-omni-channel-inventory-analyze/references/api-notes.md +52 -0
  222. package/skills/service-omni-channel-inventory-analyze/scripts/analyze.sh +185 -0
  223. package/skills/service-omni-channel-inventory-analyze/scripts/tests/_bootstrap.py +84 -0
  224. package/skills/service-omni-channel-inventory-analyze/scripts/tests/test_inventory_analyze_contracts.py +141 -0
  225. package/skills/service-omni-channel-limits-analyze/SKILL.md +70 -0
  226. package/skills/service-omni-channel-limits-analyze/references/api-notes.md +22 -0
  227. package/skills/service-omni-channel-limits-analyze/scripts/analyze.sh +159 -0
  228. package/skills/service-omni-channel-limits-analyze/scripts/tests/_bootstrap.py +87 -0
  229. package/skills/service-omni-channel-limits-analyze/scripts/tests/test_limits_analyze_contracts.py +99 -0
  230. package/skills/service-omni-channel-setup-coordinate/SKILL.md +12 -20
  231. package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +55 -5
  232. package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +38 -0
  233. package/skills/service-omni-command-center-analyze/SKILL.md +2 -2
  234. package/skills/service-omni-command-center-analyze/scripts/analyze.sh +3 -3
  235. package/skills/dx-org-manage/examples/snapshots/error_output.json +0 -9
  236. package/skills/dx-org-manage/examples/snapshots/success_output.json +0 -15
  237. package/skills/dx-org-manage/references/cli_flags.md +0 -67
  238. package/skills/dx-org-manage/references/creating-snapshot.md +0 -103
  239. package/skills/dx-org-manage/references/snapshot_usage.md +0 -74
  240. package/skills/experience-accessibility-validate/scripts/contrast-ratio.py +0 -153
  241. package/skills/experience-lwc-accessibility-jest-run/references/running-sa11y-jest-tests.md +0 -205
  242. package/skills/experience-ui-bundle-features-generate/scripts/verify-react-bundle.sh +0 -14
  243. /package/skills/experience-ui-bundle-features-generate/references/{conflict-resolution-schema.json → common/conflict-resolution-schema.json} +0 -0
  244. /package/skills/{platform-agentsetup-categories-fetch → platform-agenticsetup-categories-get}/references/api-response-schema.md +0 -0
@@ -0,0 +1,57 @@
1
+ # Forms & Flows
2
+
3
+ > **Skip this reference if the design has no destructive actions, no save model, no multi-step flows, no checkout, no timelines, and no first-run experience — i.e. no journey to craft.**
4
+
5
+ Forms and flows are where craft compounds. A delete confirmation that names what's about to die, a save indicator that fades at exactly the right moment, an undo toast with a visible countdown — these are the small considered moments that separate a polished product from a functional one. Good craft here feels like the product respects your work; poor craft feels like the product is indifferent to it.
6
+
7
+ ## Why this matters
8
+
9
+ Flows are where users feel either confident or cornered. A confirmation dialog that uses generic "Are you sure?" copy and a gray "OK" button feels like a form letter; one that names the specific item, explains the consequence, and uses error-styled "Delete project" feels designed by someone who cared. A multi-step flow with a confident step indicator and a graceful "save and exit" feels like a partner; one that resets your inputs on validation feels like an adversary. The craft is in the calibration — friction proportional to consequence, save status unambiguous, every step earning its place. Done well, the product feels trustworthy and humane. Done badly, every save and submit becomes an act of faith.
10
+
11
+ ---
12
+
13
+ ## Destructive Actions
14
+
15
+ - **Friction is calibrated to consequence.** Archiving gets an undo toast. Deleting gets a simple confirmation. Destroying a project gets specifics and consequences. Wiping an account requires typing the name. Friction matched to stakes reads as respectful.
16
+ - **Confirmations name the thing.** "Delete 'Q4 Marketing Plan'?" reads as designed; "Are you sure?" reads as a template. The destructive button names the action — "Delete project," not "OK."
17
+ - **Reversible actions earn an undo, not a confirmation.** Destructive actions never sit next to the most-used neighbor. Soft-delete with a recovery window reads as a designed safety net.
18
+
19
+ ## Save
20
+
21
+ - **The save model is unambiguous.** The user always knows whether their work is saved, saving, or unsaved. A drifting "Saved" indicator that lies during failure is a critical breach of trust.
22
+ - **Failure preserves work.** A save that fails never leaves the user thinking it succeeded. Content stays, retry is offered, navigation away from unsaved work prompts a guard.
23
+ - **Draft and published states are visually distinct.** "Draft," "Published," "Modified since last publish" each read at a glance.
24
+
25
+ ## Multi-Step Flows
26
+
27
+ - **Steps feel earned.** Each one addresses a different topic or depends on an earlier choice. Two steps that could've been one read as bloat.
28
+ - **The step indicator tells the truth.** Position, progress, and completion visible. Branching paths show the actual route. Hidden steps stay hidden.
29
+ - **Back never punishes; the flow can be paused.** Returning to a previous step preserves what was entered. Long flows offer "save and exit" and resume the user where they were.
30
+ - **Submission is reviewable and resilient.** Irreversible work gets a summary with edit links. The final button names the action ("Place Order," not "Done"). Submission failure preserves everything — one error to fix, not a full re-entry.
31
+
32
+ ## Checkout
33
+
34
+ - **The summary stays visible throughout.** Items, pricing, and total in view at every step. Security signals live where the anxiety lives — next to the card input. Confirmation closes the loop with specifics and a copyable reference.
35
+
36
+ ## Timelines
37
+
38
+ - **Time scale is the user's primary handle.** Day, week, month, quarter, year — toggled cleanly. Today is unmistakable. Detail opens beside the timeline, not away from it. Direct manipulation feels confident — drag to move, drag the endpoint to resize.
39
+
40
+ ## Onboarding
41
+
42
+ - **Time-to-first-value is the goal.** Every screen between signup and first success has to earn its place. A long onboarding before the user gets to do anything reads as bureaucratic.
43
+ - **Empty states do onboarding's job.** The first time the user lands on an empty section, the screen explains what will live here and offers a way to make the first one. Tours don't lock the UI; tooltips arrive one at a time and never block the thing they're describing.
44
+
45
+ ---
46
+
47
+ ## Scoring Guide
48
+
49
+ **Contributes to dimensions: Useful, Usable, Reliable**
50
+
51
+ | Score | Criteria |
52
+ |-------|----------|
53
+ | 9-10 | Friction is calibrated. Save status is unambiguous. Multi-step flows preserve work and recover from failure. Onboarding earns its time. |
54
+ | 7-8 | Flows handle destruction, saving, and multi-step competently with minor gaps. |
55
+ | 5-6 | Some flows lose data on error. Generic confirmation copy. Onboarding overstays. |
56
+ | 3-4 | Flows lose work. Destructive actions sit next to safe ones. No undo. |
57
+ | 1-2 | Catastrophic flow failures. Users routinely lose what they typed. |
@@ -0,0 +1,53 @@
1
+ # Interaction
2
+
3
+ > **Load this reference only with `DYNAMIC_VISUAL` evidence that directly exercises or records hover, click, focus, drag, touch, keyboard, or motion behavior. Static screenshots cannot substantiate interaction craft; mark interaction coverage `INSUFFICIENT_EVIDENCE` rather than inferring behavior.**
4
+
5
+ ## Why this matters
6
+
7
+ Interaction is where a static surface becomes a living thing — and where craft is felt before it is seen. When interactions are well-crafted, the interface answers every gesture: a button presses back, a hover hints, a drop animates into place, a focus ring lands instantly and tastefully. The product feels responsive, alive, considerate. When interactions are sloppy, the surface feels dead — clicks land in silence, hovers do nothing, motion is either missing or jangly, and the user starts to doubt whether the interface is even working. Interaction craft is what separates products that feel inert from products that feel inhabited.
8
+
9
+ ---
10
+
11
+ ## Affordance and States
12
+
13
+ - **The eye sorts interactive from inert without hovering.** Buttons look like buttons. Links carry two visible signals. Static elements never borrow interactive styling. Icon-only buttons say what they are — a tooltip, a label, or both.
14
+ - **The primary action is obvious.** One filled button per logical section, sitting where the eye expects it. Secondary actions live one degree quieter.
15
+ - **Every interactive element has a full life.** Default, hover, pressed, focus, disabled — each visibly distinct. Hover hints, press confirms — the two are different. Missing states make the interface feel half-built.
16
+ - **Focus lands cleanly.** Keyboard focus shows up instantly at a consistent offset, tasteful against light and dark. A disabled element feels disabled and quietly explains why.
17
+ - **Selected is heavier than hover.** When both apply at once, they're still distinguishable.
18
+
19
+ ## Motion
20
+
21
+ - **Every animation earns its place.** If removing the motion doesn't reduce comprehension, the motion shouldn't exist. Decoration without purpose reads as showy.
22
+ - **Similar transitions share a tempo.** Micro-feedback is quick. Layout changes are moderate. Cross-view transitions are slightly slower. Drift in tempo costs the product its rhythm. Reduced-motion preferences are honored.
23
+ - **Motion never reflows the page.** A "smooth" animation that pushes neighboring content is a layout bug wearing a bowtie.
24
+
25
+ ## Micro-interactions
26
+
27
+ - **Click feedback lands in a single frame.** The button presses, the toggle commits past its midpoint, the dropdown opens with calm — no waiting to see whether anything took.
28
+ - **The wait sets the indicator.** A flash for the very fast, an inline spinner for a brief pause, a skeleton for longer. A spinner that appears for 80ms and vanishes feels worse than silence.
29
+
30
+ ## Drag, Touch, and Keyboard
31
+
32
+ - **Drag and drop feels confident on any input.** Dragged items lift, neighbors make room, valid drops light up, invalid ones say no, cancel always recovers. Keyboard parity is real, not theoretical.
33
+ - **Touch targets feel comfortable to tap, not cramped.** Adjacent controls give fingers breathing room. Destructive actions hold their distance. Primary actions land in the thumb's reach.
34
+ - **Keyboard shortcuts shadow visible UI.** They accelerate, never replace. Platform conventions are respected. Single-key shortcuts step aside in text inputs.
35
+
36
+ ## Selection and Latency
37
+
38
+ - **Selection is unmistakable.** What's chosen, how to change it, and what to do with it — all clear at a glance. A floating action bar handles bulk operations without shifting the layout.
39
+ - **Every input is acknowledged within a frame.** Optimistic feedback is reserved for the safe and reversible. Search and filtering feel alive but never anxious — calm refinement, not jittery flicker.
40
+
41
+ ---
42
+
43
+ ## Scoring Guide
44
+
45
+ **Contributes to dimensions: Usable, Reliable, Well-Crafted**
46
+
47
+ | Score | Criteria |
48
+ |-------|----------|
49
+ | 9-10 | The interface feels inhabited. Every gesture is answered. Motion is purposeful and quiet. Touch and keyboard parity is real. Latency is invisible. |
50
+ | 7-8 | Strong interaction craft with minor gaps in states or motion consistency. |
51
+ | 5-6 | Functional but unpolished. Some interactions land in silence; durations drift; touch targets feel cramped. |
52
+ | 3-4 | The surface feels dead. Missing states. Inconsistent motion. Keyboard or touch fails. |
53
+ | 1-2 | Clicks vanish into silence. The interface feels uninhabited. |
@@ -0,0 +1,51 @@
1
+ # Navigation
2
+
3
+ > **Skip this reference if the input is a single screen with no IA, no nav system, no tabs, no breadcrumbs, no search, and no inter-page linking.**
4
+
5
+ ## Why this matters
6
+
7
+ Navigation is the structural craft of a product — the bones beneath every surface — and a user feels its quality long before they could articulate it. When navigation is well-crafted, the product feels orienting: you always know where you are, where you can go, and what is one click away; the active state catches the eye, breadcrumbs settle in calmly, and the sidebar collapses with a confidence that suggests someone thought about it. When it is poorly crafted, the product feels like a maze — labels mismatch destinations, the active state drifts, mobile becomes a hamburger graveyard, and every click feels like a guess. Great navigation is invisible discipline; bad navigation is the first thing users complain about.
8
+
9
+ ---
10
+
11
+ ## Information Architecture
12
+
13
+ - **The map is shallow and task-shaped.** No primary destination feels like an excavation. Labels mirror what the user came to do, not the engineering team's diagram. The top level is small enough to scan in one glance.
14
+ - **No junk drawers.** Sections labeled "Other" or "More" without further structure read as places where decisions weren't made.
15
+ - **Every label promises what it delivers.** A click that lands somewhere unexpected breaks trust faster than any visual flaw. The same destination never has two labels.
16
+
17
+ ## The Nav Frame
18
+
19
+ - **The frame holds still.** Primary navigation stays in the same place across every screen. When it drifts, the product feels assembled by different teams.
20
+ - **The chrome chooses its style.** Sidebar for many destinations or top bar for a few — never a hamburger on desktop pretending to be a navigation system.
21
+ - **Active state announces itself.** The current location reads at a glance — distinct from hover, distinct from default, calm rather than shouty. It lights up the moment the click lands, even if content is still on the way.
22
+ - **Collapsed states still navigate.** A collapsed sidebar with unrecognizable icons isn't a feature, it's a riddle.
23
+
24
+ ## Tabs and Breadcrumbs
25
+
26
+ - **Tabs hold parallel views, not pages.** When the content behind a tab feels like a different topic, that topic deserved a destination. Tabs stay modest in number, never wrap to a second row, and use short uniform labels. The active indicator sits cleanly — a precise underline sized to the label.
27
+ - **Breadcrumbs settle into the page; they don't compete with it.** Smaller than the page title, muted, with the current page rendered as plain text. Long trails fold their middle into an ellipsis.
28
+
29
+ ## Search and URLs
30
+
31
+ - **Search lands where the eye looks and answers calmly.** Top-center or top-right on desktop, persistent on mobile, summoned by shortcut from anywhere. Suggestions arrive without jittery flicker. Exact matches go straight to the destination.
32
+ - **The URL is shareable and human-readable.** Every meaningful state has its own address. Back returns to where the user was — filters, scroll, and tab selection preserved.
33
+ - **Missing destinations explain themselves.** "Doesn't exist" looks different from "you can't see this." Both offer a way back. Transitions between pages never go blank.
34
+
35
+ ## Responsive
36
+
37
+ - **Each viewport gets its own nav.** Full sidebar on desktop, icon rail on tablet, bottom tabs or drawer on mobile. A shrunken desktop nav on a phone is the giveaway of unfinished work. Mobile primary actions sit in the thumb zone.
38
+
39
+ ---
40
+
41
+ ## Scoring Guide
42
+
43
+ **Contributes to dimensions: Useful, Usable**
44
+
45
+ | Score | Criteria |
46
+ |-------|----------|
47
+ | 9-10 | The user always knows where they are and where they can go. IA mirrors tasks. Active state is unmistakable. URL and back behave as expected. Each viewport has its own nav voice. |
48
+ | 7-8 | Navigation is solid with minor inconsistencies in active state, breadcrumbs, or mobile transformation. |
49
+ | 5-6 | Functional but with junk drawers, drifting active state, or mobile that's a reflowed desktop. |
50
+ | 3-4 | Confusing IA, broken back behavior, labels that mismatch destinations. |
51
+ | 1-2 | Users can't tell where they are or where to go. |
@@ -0,0 +1,56 @@
1
+ # Performance
2
+
3
+ > **Load this reference only with `DYNAMIC_VISUAL` evidence that directly shows timing, latency, loading, scrolling, animation, or layout stability. Static screenshots and source code cannot substantiate felt performance; mark performance coverage `INSUFFICIENT_EVIDENCE` rather than inferring it.**
4
+
5
+ Craft in performance is the felt quality of an interface that responds the moment you ask it to. It lives in the precision of an instant feedback flash, the calm of a skeleton screen that lands exactly where the content will be, the discipline of motion that doesn't shove the layout around, and the absence of jolts as content settles into place. This reference judges whether the interface feels effortless — load behavior, interaction latency, layout stability, and the formatting craft of numbers, dates, and units that hold the surface together.
6
+
7
+ ## Why this matters
8
+
9
+ Performance is the most invisible form of craft — users rarely praise a fast app, but they always feel a slow one. When craft is high, the interface feels weightless: pages snap in, content lands without shifting, every press is acknowledged before the user wonders if anything happened, and animations feel quietly confident. When craft is low, the experience feels janky and unsure of itself — buttons that move as you reach for them, skeletons that don't match the content they preview, dropdowns that hang, numbers that change format mid-table. Polish at this layer is what makes the rest of the design feel real instead of staged.
10
+
11
+ ---
12
+
13
+ ## Loading
14
+
15
+ - **The page never opens to white.** Meaningful structure or a designed loading state arrives quickly. The interface becomes usable before it's complete — primary actions work first, secondary content fills in.
16
+ - **Skeletons mirror what's coming.** Same layout, same dimensions, same item count. When the real content lands, nothing shifts. Repeat visits feel instant.
17
+
18
+ ## Interaction
19
+
20
+ - **Every press is acknowledged immediately.** No silent moments, no wondering if the click registered. Typing feels alive. Dropdowns and route changes open with confidence — no third-of-a-second hang.
21
+ - **The wait sets the indicator.** A flash for the very fast, an inline spinner for a brief pause, a skeleton or progress for longer. A spinner that flashes for a fraction of a second is worse than silence. Long work goes background and returns the UI.
22
+
23
+ ## Layout Stability
24
+
25
+ - **Content lands where it landed.** Buttons don't move as the user reaches. The page doesn't jump as a late image arrives. Layout shift is the visible signature of an unfinished page. Skeletons reserve their final size; toasts overlay rather than push.
26
+ - **Lists settle, not lurch.** Append doesn't shift earlier content. Back navigation restores scroll position.
27
+
28
+ ## Scale
29
+
30
+ - **Large lists feel as smooth as small ones.** Scrolling through thousands of rows doesn't drag or hang. Filtering and sorting respond instantly. Dashboards load independently — one slow widget never holds the rest of the page hostage.
31
+ - **Spatial UIs hold their frame rate.** Pan, zoom, and drag feel smooth. Stutter during direct manipulation is the giveaway of a canvas not engineered for the work.
32
+
33
+ ## Perceived Performance
34
+
35
+ - **The product feels faster than it is.** Optimistic feedback for low-risk actions; content streamed in rather than withheld; the most important elements first. Long operations let the user keep working, with completion finding them wherever they go.
36
+ - **Offline is detected immediately.** Cached content stays usable; new work queues for sync. The interface doesn't pretend the network is fine.
37
+
38
+ ## Formatting Craft
39
+
40
+ - **Recent times read as human time; older times settle into absolute dates.** "Just now," "5 min ago," "Yesterday" feel natural for recent activity. Past a week, real dates arrive. Ambiguous numeric dates ("1/15/24") are avoided. Time zones surface only when they matter.
41
+ - **Numbers are formatted for fastest comprehension.** "1.2M" reads faster than "1,247,893" on a dashboard. Full precision belongs in detail views. Number columns right-align so decimals stack. Zero is not null — "—" or "N/A" tells the user nothing was measured. The same metric is formatted the same everywhere.
42
+ - **Type, spacing, and stacking follow systems.** When the user enlarges text, the interface scales gracefully. Stacking order is predictable — toasts above modals, tooltips above everything. Adjacent gaps that read as 12, 14, 16, and 18 pixels feel improvised.
43
+
44
+ ---
45
+
46
+ ## Scoring Guide
47
+
48
+ **Contributes to dimension: Reliable**
49
+
50
+ | Score | Criteria |
51
+ |-------|----------|
52
+ | 9-10 | The product feels effortless. Pages snap in. Every interaction is acknowledged. Nothing shifts. Numbers, dates, and units are formatted with discipline. |
53
+ | 7-8 | Mostly responsive with minor lulls or layout shifts. Formatting is mostly consistent. |
54
+ | 5-6 | Some sluggish moments. Layout shifts as content arrives. Mixed number formats. |
55
+ | 3-4 | Slow primary flows. Visible jank. Buttons move as the user reaches. Large lists choke. |
56
+ | 1-2 | Long waits with no feedback. Clicks unresponsive. The interface feels janky and unsure of itself. |
@@ -0,0 +1,60 @@
1
+ # Entities & Objects
2
+
3
+ > **Skip this reference if the design shows no records, objects, detail pages, status fields, metadata, versioning, collaboration, or workflow surfaces.**
4
+
5
+ Craft in entity design is felt in how confidently a record presents itself — the calm authority of a well-structured header, the rhythm of metadata that recedes without disappearing, the visual grammar of status that reads at a glance. This reference judges the visual and structural craft of object pages, status systems, metadata treatment, versioning surfaces, collaboration cues, and workflow visualizations.
6
+
7
+ ## Why this matters
8
+
9
+ Entities are the protagonists of most software — every record a user touches is a small first impression of the product's care and competence. When craft is high, an object feels solid: identity is unmistakable, status reads at a glance, metadata sits politely in the margins, and history feels like a designed surface rather than a log. When craft is low, records feel like form dumps — labels everywhere, statuses competing for attention, timestamps in three formats, and presence indicators that lie about who is there. The difference is the felt sense that someone arranged this carefully versus someone wired it up.
10
+
11
+ ---
12
+
13
+ ## Object Anatomy
14
+
15
+ - **The header establishes identity at a glance.** The user knows what this thing is, what state it's in, who owns it, and what they can do with it — without scrolling.
16
+ - **Read mode is designed, not a disabled form.** Inputs greyed out and read-only is the giveaway of an entity surface that wasn't actually composed for reading. Body content is organized by relevance — what users look at most lives in the default view. Empty optional fields stay quiet.
17
+ - **Creation is fast and forward.** Minimum viable fields, then drop the user into the new record. No record is an orphan — every object links back to its parent context.
18
+
19
+ ## Status
20
+
21
+ - **Statuses are a small, closed set with semantic meaning.** A handful of states the user can hold in mind. "Awaiting approval" reads as designed; "PENDING_APPROVER_REVIEW" leaks the database into the page.
22
+ - **Status is communicated by more than color.** A label, an icon shape, or both — never color alone. The mapping holds across the product. Only valid transitions show as actions; invalid moves don't appear as disabled options.
23
+
24
+ ## Metadata
25
+
26
+ - **System metadata recedes.** Findable but never competing with primary content. Timestamps speak in human time when recent, transitioning to absolute as content ages. People references show face and name together. Reference numbers offer copy in one click.
27
+ - **Empty values say something.** A "—" or "Not set" tells the user a value wasn't recorded; blank space hides whether the field even exists. Date and time formats hold across the product.
28
+
29
+ ## History and Versioning
30
+
31
+ - **History is one click away.** A clear timeline with attribution: who, when, what changed. Diffs are visible, not just listed — additions highlighted, deletions struck through.
32
+ - **Viewing a historical version is unmistakable.** A banner makes the time-travel state clear. Restoring creates a new entry — nothing silently lost.
33
+
34
+ ## Collaboration
35
+
36
+ - **Presence is honest.** Active, idle, and recently-active are visually distinct. A stale "online" indicator is worse than no presence at all.
37
+ - **Comments thread, resolve, and notify; conflicts surface rather than silently overwrite.** Ownership is visible and transferable. The user's own permission level is in view — they can tell what they're allowed to do without trying and failing.
38
+
39
+ ## Messaging Surfaces
40
+
41
+ - **The conversation lives in three calm panels.** List, thread, context. AI-generated content is visually distinct from human messages — a model's reply never silently passes for a person's. System events render as compact inline notes rather than full-width cards.
42
+
43
+ ## Workflow
44
+
45
+ - **Sequential processes show their steps.** Each node has a status — pending, running, succeeded, failed — and failures explain themselves inline. Cells awaiting computation declare it ("Click to run," "Pending") rather than going blank.
46
+ - **Configuration overlays the work, not replaces it.** A side drawer keeps the table visible. Batch progress is honest and cancellable.
47
+
48
+ ---
49
+
50
+ ## Scoring Guide
51
+
52
+ **Contributes to dimensions: Useful, Coherent, Reliable**
53
+
54
+ | Score | Criteria |
55
+ |-------|----------|
56
+ | 9-10 | Entities are instantly identifiable. Status systems are closed and semantic. Metadata recedes politely. History and collaboration are first-class. |
57
+ | 7-8 | Entity structure is clear with minor gaps in status discipline or metadata treatment. |
58
+ | 5-6 | Status communicated by color alone. Inconsistent metadata. History hidden behind menus. |
59
+ | 3-4 | Records read as form dumps. Stale presence. No history. |
60
+ | 1-2 | Objects feel disorienting. No coherent identity or status system. |
@@ -0,0 +1,48 @@
1
+ # Responsive Design
2
+
3
+ > **Skip this reference if the input targets a single fixed viewport with no media queries, no mobile/tablet/desktop variants, and no embedded use case.**
4
+
5
+ ## Why this matters
6
+
7
+ Responsive craft is the discipline of composing the same product gracefully across every viewport, and it is one of the surest signs that a designer thought past the artboard. When it is well-crafted, mobile feels designed for the thumb, tablet earns its width with side-by-side layouts, desktop uses space for density rather than empty margins, and the spaces between breakpoints never feel cramped or abandoned. When it is poorly crafted, the product feels like one screen warped to fit others — buttons drift off the edge, text walls appear at wide widths, mobile becomes a sad shrunken desktop. Considered responsiveness is what makes a product feel native everywhere it lives.
8
+
9
+ ---
10
+
11
+ ## Across Breakpoints
12
+
13
+ - **Each viewport feels intentional.** Not a single layout warped to fit, but distinct compositions that look designed for the size they live at. The dead zones between common breakpoints are tended — content doesn't crowd, clip, or strand itself in awkward gutters.
14
+ - **Content priority leads the layout.** Most important elements stay visible; decoration drops away first; secondary content collapses or moves before primary content does. Multi-column layouts collapse with grace — never an orphan trailing item that exposes the grid's seams.
15
+ - **Spacing scales with the viewport.** Generous on desktop, moderate on tablet, modest but never zero on mobile. Hierarchy holds at every width.
16
+
17
+ ## Mobile
18
+
19
+ - **Mobile is its own design, not a shrunken desktop.** Designed for the thumb, the glance, and the interruption. Targets feel comfortable to tap, not cramped. Primary actions live in thumb territory; rare or dangerous ones sit out of reach.
20
+ - **Single-column layouts feel calm, not stretched.** Buttons, inputs, and cards span the width with intent. Body text never shrinks below comfort. Safe areas — notches, home indicators, rounded corners — are accommodated rather than fought.
21
+
22
+ ## Tablet
23
+
24
+ - **Tablet earns its width.** Side-by-side list/detail layouts, persistent navigation, two-pane workflows — not a stretched phone screen. Both orientations feel designed. Touch parity holds at the larger size; every action remains reachable by tap alone.
25
+
26
+ ## Desktop
27
+
28
+ - **Space serves density, not emptiness.** A narrow centered column with massive margins on a wide screen reads as wasted real estate. Multi-column architecture is composed with deliberate widths and breathable gaps.
29
+ - **The layout works from a small laptop to a wide monitor.** Ultrawide doesn't yield endless empty gutters; small desktop doesn't crowd. Max-width keeps reading lines from sprawling.
30
+ - **Mouse and keyboard precision are leveraged.** Hover layers, right-click menus, drag-and-drop, shortcuts, command palette — the input device's strengths are used rather than ignored. Density modes give intensive users a calmer view.
31
+
32
+ ## Embedded
33
+
34
+ - **An embedded surface behaves like a guest.** Minimal chrome, compact controls, denser spacing. Visual integration respects the host's palette and typography. Overflow stays inside — the embed never pushes the host's layout around. A path to the full experience exists when space gets tight.
35
+
36
+ ---
37
+
38
+ ## Scoring Guide
39
+
40
+ **Contributes to dimensions: Well-Crafted, Usable**
41
+
42
+ | Score | Criteria |
43
+ |-------|----------|
44
+ | 9-10 | Every viewport feels intentionally composed. Mobile is designed for the thumb. Desktop uses space for density. The spaces between breakpoints are tended. |
45
+ | 7-8 | Strong responsive craft with minor gaps at edge widths. |
46
+ | 5-6 | Mobile reads as a reflowed desktop. Some breakpoints feel cramped or empty. |
47
+ | 3-4 | Touch targets are too small. The layout fights the viewport. |
48
+ | 1-2 | Layout breaks at common viewports. The product wasn't designed for the screens it lives on. |
@@ -0,0 +1,257 @@
1
+ # Scoring Rubric
2
+
3
+ Use this rubric to judge the visual craft of a rendered design across five dimensions. Scores describe only the evidence observed in the declared evidence mode.
4
+
5
+ ## Scoring rules
6
+
7
+ Every score must be:
8
+
9
+ - **Evidence-based:** cite specific, visible or directly observed qualities.
10
+ - **Bounded:** do not treat unobserved screens, behavior, states, responsiveness, or performance as good or bad.
11
+ - **Repeatable:** another reviewer should land within one point using the same evidence.
12
+ - **Actionable:** name what the next supported level requires.
13
+ - **Felt:** judge the visible experience, not implementation or intent.
14
+
15
+ ### Anchor selection
16
+
17
+ Use the anchors at 2, 4, 6, 8, and 10. For each dimension:
18
+
19
+ 1. Determine which criteria are applicable and observable in the declared evidence mode.
20
+ 2. Evaluate anchors from 10 downward.
21
+ 3. Assign the **highest anchor whose applicable, observable criteria are all fully supported by evidence**.
22
+ 4. Assign the odd score above that anchor only when all criteria at the anchor are supported and the evidence clearly exceeds it but does not fully support the next anchor. For example, 7 means all applicable criteria at 6 are supported and some, but not all, applicable criteria at 8 are supported.
23
+ 5. Assign 1 only when observed evidence falls below the applicable criteria at anchor 2.
24
+ 6. Use `INSUFFICIENT_EVIDENCE` rather than a number when evidence cannot support the applicable dimension. Use `N/A` only when the dimension genuinely does not apply.
25
+
26
+ Do not start from an assumed middle score. Do not average unknowns into a score. When evidence supports multiple anchors, choose the highest fully supported anchor, not the lowest level whose criteria happen to be met.
27
+
28
+ ## Scale and visual-craft implication
29
+
30
+ | Score | Level | Visual-craft implication only |
31
+ |---|---|---|
32
+ | 10 | Exceptional | Reference-quality visual craft; suitable to showcase for craft |
33
+ | 9 | Near-exceptional | Visually excellent with trivial polish opportunities |
34
+ | 8 | Strong | Visually ready with minor craft opportunities |
35
+ | **7** | **Good** | **Meets the visual-craft threshold with a minor polish plan** |
36
+ | 6 | Above adequate | Visually functional but craft is uneven |
37
+ | 5 | Adequate | Clear visible friction or roughness remains |
38
+ | 4 | Below standard | Significant craft issues diminish the visible experience |
39
+ | 3 | Poor | Multiple visible craft failures make the design feel rushed |
40
+ | 2 | Very poor | Fundamental visible craft failures require major rework |
41
+ | 1 | Critical | The rendered design feels visually broken or abandoned |
42
+
43
+ These implications do not approve accessibility, functional behavior, security, measured performance, or production release.
44
+
45
+ ## Verdict
46
+
47
+ - **PASS:** every applicable dimension is scored and all scores are at least 7.
48
+ - **WARN:** every applicable dimension is scored; at least one is below 7 and none is below 5.
49
+ - **FAIL:** every applicable dimension is scored and at least one is below 5.
50
+ - **LIMITED:** at least one applicable dimension is `INSUFFICIENT_EVIDENCE`. Report supported scores as provisional observations, but do not imply complete visual-craft readiness.
51
+
52
+ `N/A` dimensions do not affect the verdict. If no dimension can be scored, do not issue a Craft Report verdict; follow the `INSUFFICIENT_VISUAL_EVIDENCE` behavior in `SKILL.md` when no rendered pixels exist, or return `LIMITED` with the coverage ledger when pixels exist but support no dimension-level score.
53
+
54
+ ## Dimension anchors
55
+
56
+ ### Useful
57
+
58
+ Felt question: *Does the visible content earn the space and attention it occupies?*
59
+
60
+ | Anchor | Observable criteria |
61
+ |---|---|
62
+ | 10 | Every visible element appears purposeful; priority and restraint anticipate the user's visible needs; no decorative dead weight competes for attention. |
63
+ | 8 | Core visible goals are well supported; most elements clearly earn their place; only minor tangents remain. |
64
+ | 6 | The visible value is understandable, but some content feels tangential, unfinished, or weakly prioritized. |
65
+ | 4 | Multiple visible elements do not earn their space; clutter obscures the apparent purpose. |
66
+ | 2 | The surface is dominated by content that does not visibly support the apparent core task. |
67
+
68
+ Do not infer whether features meet real user needs from pixels alone. Qualify the score as visible usefulness and flag behavioral assumptions for research.
69
+
70
+ ### Usable
71
+
72
+ Felt question: *Does the visible hierarchy make the intended path feel effortless?*
73
+
74
+ | Anchor | Observable criteria |
75
+ |---|---|
76
+ | 10 | The intended path is visually unmistakable; complex structure feels simple; visible affordances prevent likely mistakes. |
77
+ | 8 | Primary actions and next steps are clear with minor hierarchy or affordance gaps. |
78
+ | 6 | The path is discoverable but invites hesitation; some visible actions compete or lack clarity. |
79
+ | 4 | Common visible paths appear confusing, fragmented, or poorly prioritized. |
80
+ | 2 | The rendered surface provides little visible guidance toward a core task. |
81
+
82
+ Static evidence supports visible hierarchy and affordance only, not task completion, recovery behavior, keyboard operation, or observed user success.
83
+
84
+ ### Reliable
85
+
86
+ Felt question: *Do the observed states and feedback make the experience feel predictable?*
87
+
88
+ For `DYNAMIC_VISUAL` evidence, use these anchors:
89
+
90
+ | Anchor | Dynamic observable criteria |
91
+ |---|---|
92
+ | 10 | Every directly exercised relevant state and transition is clear, calm, and designed; observed feedback and timing remove uncertainty. |
93
+ | 8 | Major exercised states and feedback are clear; only minor observed edge gaps remain. |
94
+ | 6 | Observed states function but some treatment is generic, ambiguous, or poorly timed. |
95
+ | 4 | Directly observed feedback is missing, contradictory, or visibly brittle. |
96
+ | 2 | Observed behavior leaves the user unable to tell what happened or whether work persisted. |
97
+
98
+ For `STATIC_VISUAL` or `MULTI_VIEW_STATIC` evidence, score only the visible communication of depicted states and consequences:
99
+
100
+ | Anchor | Static observable criteria |
101
+ |---|---|
102
+ | 10 | Every depicted relevant state or consequence is immediately legible, calm, specifically authored, and unambiguous in context. |
103
+ | 8 | Major depicted states and consequences are clear and specifically treated; only minor visual-communication gaps remain. |
104
+ | 6 | Depicted states are identifiable, but some treatment is generic, ambiguous, or weakly prioritized. |
105
+ | 4 | Important depicted state or consequence cues are contradictory, hard to associate, or visually overwhelmed. |
106
+ | 2 | The depicted state leaves the viewer unable to tell what is true, what changed in the captured moment, or which visible action has serious consequences. |
107
+
108
+ Qualify every static Reliable score as **depicted-state visual communication only**. A static score cannot substantiate state coverage, transition behavior, save behavior, feedback timing, persistence, or performance. Use `INSUFFICIENT_EVIDENCE` when no relevant state or consequence is visibly depicted, or when behavior is necessary to score the dimension responsibly.
109
+
110
+ ### Coherent
111
+
112
+ Felt question: *Does the visible experience feel like the same hand made it?*
113
+
114
+ | Anchor | Observable criteria |
115
+ |---|---|
116
+ | 10 | Every supplied screen shares one disciplined visual language; variants have clear visible purpose; patterns repeat consistently. |
117
+ | 8 | Core screens are visibly consistent with minor deviations in secondary areas. |
118
+ | 6 | The main visual language is recognizable, but repeated patterns drift. |
119
+ | 4 | Major visible inconsistencies make surfaces feel assembled by separate teams. |
120
+ | 2 | Supplied screens feel like unrelated products with no discernible shared system. |
121
+
122
+ One screenshot may support internal composition coherence, but cross-screen coherence requires multiple screens.
123
+
124
+ ### Well-Crafted
125
+
126
+ Felt question: *Does the rendered design feel precise, considered, and delightful?*
127
+
128
+ | Anchor | Observable criteria |
129
+ |---|---|
130
+ | 10 | Every observed detail feels intentional and precise; hierarchy, type, spacing, alignment, color, and any exercised motion work as one quiet whole. |
131
+ | 8 | Execution is visibly strong and consistent with only minor polish opportunities. |
132
+ | 6 | Execution is generally sound but visible alignment, spacing, hierarchy, or state-treatment gaps remain. |
133
+ | 4 | Multiple visible inconsistencies or unfinished treatments make the design feel rough. |
134
+ | 2 | Pervasive visual quality failures make the rendered design feel broken or abandoned. |
135
+
136
+ Do not require motion, responsiveness, dark mode, reduced motion, or unseen states unless they are relevant and directly evidenced.
137
+
138
+ ## Coverage and relevance ledger
139
+
140
+ The report must include a ledger before scores. Create one row for every dimension and every reference topic considered.
141
+
142
+ | Field | Allowed content |
143
+ |---|---|
144
+ | `item` | Dimension or reference topic |
145
+ | `relevance` | `APPLICABLE` or `N/A` |
146
+ | `coverage` | `SCORED`, `INSUFFICIENT_EVIDENCE`, or `N/A` |
147
+ | `evidence_mode` | `STATIC_VISUAL`, `MULTI_VIEW_STATIC`, or `DYNAMIC_VISUAL` |
148
+ | `evidence` | Artifact, screen, state, viewport, recording segment, or directly observed action |
149
+ | `reason` | Why it is scored, not applicable, or insufficiently evidenced |
150
+
151
+ `N/A` means the topic is absent or irrelevant. `INSUFFICIENT_EVIDENCE` means it is relevant but not observable. Never collapse these states into `Unknown`, and never invent a score to make the table complete.
152
+
153
+ ## Finding severity
154
+
155
+ - **critical:** An observed visual-craft failure blocks comprehension of the primary surface or makes a destructive/high-consequence path visibly unsafe. Address before claiming visual-craft readiness.
156
+ - **major:** A repeated or prominent issue substantially weakens hierarchy, confidence, or task clarity. It materially lowers one or more dimensions.
157
+ - **minor:** A localized issue causes noticeable friction or inconsistency without undermining the primary path.
158
+ - **polish:** A small refinement would improve precision or delight but does not create meaningful confusion.
159
+
160
+ Each finding has one `primary_dimension`, the dimension most directly weakened by the root cause, and zero or more `related_dimensions`. Record the finding once and reference related dimensions rather than duplicating it. If severity could fit multiple levels, use the highest supported severity.
161
+
162
+ ## Output discipline
163
+
164
+ - Cap findings at five per dimension.
165
+ - Consolidate a problem seen in three or more places into one finding with a count and representative location.
166
+ - Include zero to five cross-cutting patterns. A pattern must span multiple findings.
167
+ - Include zero to five recommendations, ordered by expected effect on observed visual craft.
168
+ - Do not add findings, patterns, or recommendations merely to fill the schema.
169
+ - Flag recommendations dependent on real-user behavior for usability research.
170
+ - Keep accessibility findings out of this report and route compliance to `experience-accessibility-validate`.
171
+
172
+ ## Craft Report schema
173
+
174
+ ```text
175
+ scope: visual-craft-only
176
+ verdict: PASS | WARN | FAIL | LIMITED
177
+ evidence_mode: STATIC_VISUAL | MULTI_VIEW_STATIC | DYNAMIC_VISUAL
178
+ evidence_inventory: [artifacts, screens, states, viewports, or recording segments reviewed]
179
+ evidence_limitations: [what this evidence cannot substantiate]
180
+
181
+ first_impressions: [0-3 felt observations recorded before rubric analysis]
182
+
183
+ coverage_relevance_ledger:
184
+ - item: [dimension or reference topic]
185
+ relevance: APPLICABLE | N/A
186
+ coverage: SCORED | INSUFFICIENT_EVIDENCE | N/A
187
+ evidence_mode: [mode]
188
+ evidence: [specific artifact or observation, or none]
189
+ reason: [concise rationale]
190
+
191
+ dimensions:
192
+ - name: Useful | Usable | Reliable | Coherent | Well-Crafted
193
+ score: [1-10] | INSUFFICIENT_EVIDENCE | N/A
194
+ evidence: [specific observed evidence]
195
+ gap_to_next_level: [next fully supportable craft improvement] | N/A
196
+
197
+ findings:
198
+ - severity: critical | major | minor | polish
199
+ primary_dimension: [one dimension]
200
+ related_dimensions: [zero or more other dimensions]
201
+ location: [screen, region, state, viewport, or Figma node; never file:line]
202
+ problem: [visible or directly observed issue]
203
+ why_it_weakens_craft: [design principle and felt effect]
204
+ what_better_looks_like: [improved visible experience]
205
+ fix: [specific design move]
206
+
207
+ cross_cutting_patterns: [0-5 evidence-backed themes]
208
+ recommendations: [0-5 evidence-backed prioritized moves]
209
+ fix_prompt: [self-contained design directive] | OMITTED_NO_ACTIONS
210
+ ```
211
+
212
+ The report must state that the verdict indicates visual-craft readiness only and is not an accessibility, functionality, performance, security, or production-release approval.
213
+
214
+ ## Comparative schema
215
+
216
+ Preserve the complete individual audit for each design, then add:
217
+
218
+ ```text
219
+ comparison_result: A_HIGHER_CRAFT | B_HIGHER_CRAFT | TIE | MIXED
220
+
221
+ designs:
222
+ - id: Design A
223
+ first_impressions: [0-3 observations]
224
+ strongest_visible_move: [evidence-backed strength]
225
+ gaps: [0-5 evidence-backed gaps or INSUFFICIENT_EVIDENCE entries]
226
+ - id: Design B
227
+ first_impressions: [0-3 observations]
228
+ strongest_visible_move: [evidence-backed strength]
229
+ gaps: [0-5 evidence-backed gaps or INSUFFICIENT_EVIDENCE entries]
230
+
231
+ comparison_table:
232
+ - dimension: [dimension]
233
+ design_a: [1-10] | INSUFFICIENT_EVIDENCE | N/A
234
+ design_b: [1-10] | INSUFFICIENT_EVIDENCE | N/A
235
+ outcome: A | B | TIE | NOT_COMPARABLE
236
+ evidence: [why]
237
+
238
+ differentiating_dimensions: [0-5 dimensions]
239
+ craft_moves:
240
+ design_a: [0-5 moves Design A executes better]
241
+ design_b: [0-5 moves Design B executes better]
242
+ borrow_without_copying: [0-5 grounded opportunities]
243
+ ```
244
+
245
+ Use `TIE` when supported scores and qualitative evidence are materially equivalent. Use `MIXED` when each design leads in different dimensions or unequal evidence prevents a responsible overall ranking.
246
+
247
+ ## Fix prompt
248
+
249
+ Include a fix prompt only when the report has at least one recommendation. It must:
250
+
251
+ - Open with a one-sentence felt goal and a short design brief.
252
+ - List only the report's evidence-backed recommendations, in priority order.
253
+ - Name the affected screen or region and felt outcome for each move.
254
+ - End with verification on fresh rendered evidence and identify dimensions expected to improve.
255
+ - Preserve parts of the design that already work.
256
+
257
+ Use design language, not CSS variables, class names, file paths, or implementation diffs. If there are no actionable recommendations, emit `OMITTED_NO_ACTIONS`.