@event4u/agent-config 14.23.0 → 15.0.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 (503) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +198 -0
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/agent-handoff.md +8 -7
  7. package/dist/agent-src/commands/agents/init.md +1 -1
  8. package/dist/agent-src/commands/agents/user/accept.md +4 -4
  9. package/dist/agent-src/commands/agents/user/delete.md +2 -2
  10. package/dist/agent-src/commands/agents/user/init.md +3 -3
  11. package/dist/agent-src/commands/agents/user/review.md +3 -3
  12. package/dist/agent-src/commands/agents/user/show.md +3 -3
  13. package/dist/agent-src/commands/agents/user/update.md +2 -2
  14. package/dist/agent-src/commands/agents/user.md +6 -6
  15. package/dist/agent-src/commands/analytics/prune.md +1 -1
  16. package/dist/agent-src/commands/analytics/show.md +2 -2
  17. package/dist/agent-src/commands/analyze/decision.md +2 -2
  18. package/dist/agent-src/commands/analyze/inbox.md +5 -5
  19. package/dist/agent-src/commands/analyze/incident.md +3 -3
  20. package/dist/agent-src/commands/analyze/near-miss.md +3 -3
  21. package/dist/agent-src/commands/analyze/postmortem.md +4 -4
  22. package/dist/agent-src/commands/analyze/premortem.md +2 -2
  23. package/dist/agent-src/commands/analyze.md +2 -2
  24. package/dist/agent-src/commands/bug/fix.md +1 -1
  25. package/dist/agent-src/commands/bug/investigate.md +2 -2
  26. package/dist/agent-src/commands/cost/profile.md +3 -3
  27. package/dist/agent-src/commands/design.md +1 -1
  28. package/dist/agent-src/commands/feature/explore.md +1 -1
  29. package/dist/agent-src/commands/feature/plan.md +2 -2
  30. package/dist/agent-src/commands/feature/roadmap.md +2 -2
  31. package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
  32. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  33. package/dist/agent-src/commands/ghostwriter/show.md +1 -1
  34. package/dist/agent-src/commands/ghostwriter/write.md +9 -9
  35. package/dist/agent-src/commands/humanize.md +6 -6
  36. package/dist/agent-src/commands/jira-ticket.md +1 -1
  37. package/dist/agent-src/commands/judge/solo.md +1 -1
  38. package/dist/agent-src/commands/judge.md +1 -1
  39. package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
  40. package/dist/agent-src/commands/knowledge/forget.md +1 -1
  41. package/dist/agent-src/commands/knowledge/ingest.md +2 -2
  42. package/dist/agent-src/commands/knowledge/list.md +1 -1
  43. package/dist/agent-src/commands/memory/add.md +3 -3
  44. package/dist/agent-src/commands/memory/load.md +4 -4
  45. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  46. package/dist/agent-src/commands/memory/promote.md +4 -4
  47. package/dist/agent-src/commands/memory/propose.md +2 -2
  48. package/dist/agent-src/commands/mode.md +5 -5
  49. package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
  50. package/dist/agent-src/commands/post-as/me.md +7 -7
  51. package/dist/agent-src/commands/pr/create.md +1 -1
  52. package/dist/agent-src/commands/pr/merge.md +1 -1
  53. package/dist/agent-src/commands/profile/activate.md +1 -1
  54. package/dist/agent-src/commands/profile/show.md +1 -1
  55. package/dist/agent-src/commands/research/deep.md +2 -2
  56. package/dist/agent-src/commands/research/report.md +2 -2
  57. package/dist/agent-src/commands/review/changes.md +1 -1
  58. package/dist/agent-src/commands/review/routing.md +1 -1
  59. package/dist/agent-src/commands/roadmap/create.md +1 -1
  60. package/dist/agent-src/commands/roadmap/materialize.md +2 -2
  61. package/dist/agent-src/commands/roadmap/next.md +1 -1
  62. package/dist/agent-src/commands/roadmap/process-full.md +2 -2
  63. package/dist/agent-src/commands/security-audit-config.md +3 -3
  64. package/dist/agent-src/commands/skill/preview.md +1 -1
  65. package/dist/agent-src/commands/skills/discover.md +1 -1
  66. package/dist/agent-src/commands/sync/agent-settings.md +2 -2
  67. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  68. package/dist/agent-src/commands/tests/create.md +1 -1
  69. package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
  70. package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
  71. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
  72. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
  73. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
  74. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
  75. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
  76. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
  77. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  78. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  79. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +1 -1
  80. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
  81. package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
  82. package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
  83. package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
  84. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
  85. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
  86. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
  87. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
  88. package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
  89. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
  90. package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
  91. package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
  92. package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
  93. package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
  94. package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
  95. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
  96. package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
  97. package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
  98. package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
  99. package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
  100. package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
  101. package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  102. package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
  103. package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
  104. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
  105. package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
  106. package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
  107. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
  108. package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  109. package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
  110. package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
  111. package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  112. package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
  113. package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  114. package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
  115. package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
  116. package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  117. package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  118. package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
  119. package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
  120. package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
  121. package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
  122. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
  123. package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
  124. package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
  125. package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
  126. package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
  127. package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
  128. package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
  129. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
  130. package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
  131. package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
  132. package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
  133. package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
  134. package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
  135. package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
  136. package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
  137. package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
  138. package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  139. package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  140. package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
  141. package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  142. package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
  143. package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  144. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
  145. package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
  146. package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  147. package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
  148. package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
  149. package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  150. package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
  151. package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
  152. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
  153. package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
  154. package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
  155. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
  156. package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
  157. package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  158. package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
  159. package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
  160. package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
  161. package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  162. package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
  163. package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
  164. package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
  165. package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
  166. package/dist/agent-src/guidelines/code-clarity.md +350 -0
  167. package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
  168. package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
  169. package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
  170. package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
  171. package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
  172. package/dist/agent-src/guidelines/design-canon.md +63 -0
  173. package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
  174. package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
  175. package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
  176. package/dist/agent-src/guidelines/design-modes.md +143 -0
  177. package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
  178. package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
  179. package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
  180. package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
  181. package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
  182. package/dist/agent-src/guidelines/php/api-design.md +115 -0
  183. package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
  184. package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
  185. package/dist/agent-src/guidelines/php/controllers.md +90 -0
  186. package/dist/agent-src/guidelines/php/database.md +194 -0
  187. package/dist/agent-src/guidelines/php/eloquent.md +208 -0
  188. package/dist/agent-src/guidelines/php/flux.md +80 -0
  189. package/dist/agent-src/guidelines/php/general.md +207 -0
  190. package/dist/agent-src/guidelines/php/git.md +164 -0
  191. package/dist/agent-src/guidelines/php/jobs.md +111 -0
  192. package/dist/agent-src/guidelines/php/livewire.md +71 -0
  193. package/dist/agent-src/guidelines/php/logging.md +79 -0
  194. package/dist/agent-src/guidelines/php/naming.md +89 -0
  195. package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  196. package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
  197. package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
  198. package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
  199. package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
  200. package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
  201. package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
  202. package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
  203. package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
  204. package/dist/agent-src/guidelines/php/patterns.md +28 -0
  205. package/dist/agent-src/guidelines/php/performance.md +92 -0
  206. package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
  207. package/dist/agent-src/guidelines/php/resources.md +100 -0
  208. package/dist/agent-src/guidelines/php/security.md +110 -0
  209. package/dist/agent-src/guidelines/php/sql.md +97 -0
  210. package/dist/agent-src/guidelines/php/validations.md +119 -0
  211. package/dist/agent-src/guidelines/php/websocket.md +100 -0
  212. package/dist/agent-src/guidelines/prompt-templates.md +189 -0
  213. package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
  214. package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
  215. package/dist/agent-src/personas/README.md +1 -1
  216. package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
  217. package/dist/agent-src/personas/product-owner.md +1 -1
  218. package/dist/agent-src/rules/active-remediation.md +1 -1
  219. package/dist/agent-src/rules/architecture.md +2 -2
  220. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  221. package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
  222. package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
  223. package/dist/agent-src/rules/code-comment-discipline.md +2 -2
  224. package/dist/agent-src/rules/code-provenance.md +1 -1
  225. package/dist/agent-src/rules/content-quoting-floor.md +1 -1
  226. package/dist/agent-src/rules/context-hygiene.md +5 -5
  227. package/dist/agent-src/rules/cross-source-consistency.md +1 -1
  228. package/dist/agent-src/rules/design-fidelity.md +36 -46
  229. package/dist/agent-src/rules/direct-answers.md +2 -2
  230. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  231. package/dist/agent-src/rules/evaluator-independence.md +1 -1
  232. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  233. package/dist/agent-src/rules/icon-consistency.md +5 -1
  234. package/dist/agent-src/rules/improve-before-implement.md +1 -1
  235. package/dist/agent-src/rules/language-and-tone.md +3 -3
  236. package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
  237. package/dist/agent-src/rules/notes-first-reasoning.md +2 -2
  238. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  239. package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
  240. package/dist/agent-src/rules/role-mode-adherence.md +2 -2
  241. package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
  242. package/dist/agent-src/rules/size-enforcement.md +1 -1
  243. package/dist/agent-src/rules/source-confidentiality.md +2 -2
  244. package/dist/agent-src/rules/think-before-action.md +1 -1
  245. package/dist/agent-src/rules/token-efficiency.md +7 -5
  246. package/dist/agent-src/rules/ui-audit-gate.md +3 -2
  247. package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
  248. package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
  249. package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
  250. package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
  251. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
  252. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  253. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  254. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
  255. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  256. package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
  257. package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
  258. package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
  259. package/dist/agent-src/skills/code-review/SKILL.md +3 -3
  260. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  261. package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
  262. package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
  263. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  264. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
  265. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  266. package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
  267. package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
  268. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  269. package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
  270. package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
  271. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  272. package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
  273. package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
  274. package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
  275. package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
  276. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
  277. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  278. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
  279. package/dist/agent-src/skills/design-review/SKILL.md +4 -4
  280. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
  281. package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
  282. package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
  283. package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
  284. package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
  285. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
  286. package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
  287. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
  288. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
  289. package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
  290. package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
  291. package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
  292. package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
  293. package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
  294. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
  295. package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
  296. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  297. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  298. package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
  299. package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
  300. package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
  301. package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
  302. package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
  303. package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
  304. package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
  305. package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
  306. package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
  307. package/dist/agent-src/skills/iconography/SKILL.md +3 -3
  308. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  309. package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
  310. package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
  311. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
  312. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  313. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
  314. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  315. package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
  316. package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
  317. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  318. package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
  319. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  320. package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
  321. package/dist/agent-src/skills/org-design/SKILL.md +1 -1
  322. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
  323. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  324. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  325. package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
  326. package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
  327. package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
  328. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
  329. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  330. package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
  331. package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
  332. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
  333. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  334. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
  335. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  336. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  337. package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
  338. package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
  339. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  340. package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
  341. package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
  342. package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
  343. package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
  344. package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
  345. package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
  346. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  347. package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
  348. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
  349. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
  350. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
  351. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  352. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
  353. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  354. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +11 -5
  355. package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
  356. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  357. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  358. package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
  359. package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
  360. package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
  361. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  362. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  363. package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
  364. package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
  365. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
  366. package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
  367. package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
  368. package/dist/agent-src/templates/agent-settings.md +6 -6
  369. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  370. package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
  371. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  372. package/dist/agent-src/templates/roadmaps.md +1 -1
  373. package/dist/agent-src/templates/scripts/README.md +2 -2
  374. package/dist/agent-src/user-types/_template/user-type.md +1 -1
  375. package/dist/cli-delegate/check_update_banner.js +12 -1
  376. package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
  377. package/dist/cli-delegate/{chunk-IAI3XL43.js → chunk-3FKR64R5.js} +22 -6
  378. package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
  379. package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
  380. package/dist/cli-delegate/{chunk-KCNTUSPI.js → chunk-AK6HODNQ.js} +4 -4
  381. package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
  382. package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-HZ52BRGG.js} +24 -18
  383. package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
  384. package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
  385. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  386. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  387. package/dist/cli-delegate/cmd_conformance.js +3 -3
  388. package/dist/cli-delegate/cmd_doctor.js +3 -3
  389. package/dist/cli-delegate/cmd_explain.js +2 -2
  390. package/dist/cli-delegate/cmd_export.js +4 -4
  391. package/dist/cli-delegate/cmd_handoff.js +4 -4
  392. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  393. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  394. package/dist/cli-delegate/cmd_migrate.js +2 -2
  395. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  396. package/dist/cli-delegate/cmd_prune.js +4 -4
  397. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  398. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  399. package/dist/cli-delegate/cmd_session_recycle.js +1 -1
  400. package/dist/cli-delegate/cmd_settings_get.js +15 -9
  401. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  402. package/dist/cli-delegate/cmd_settings_set.js +41 -11
  403. package/dist/cli-delegate/cmd_sync.js +4 -4
  404. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  405. package/dist/cli-delegate/cmd_update.js +1 -1
  406. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  407. package/dist/cli-delegate/cmd_validate.js +4 -4
  408. package/dist/cli-delegate/cmd_versions.js +1 -1
  409. package/dist/discovery/deprecation-report.md +1 -1
  410. package/dist/discovery/discovery-manifest.json +22 -75
  411. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  412. package/dist/discovery/discovery-manifest.summary.md +3 -3
  413. package/dist/discovery/dormancy-report.md +1 -1
  414. package/dist/discovery/orphan-report.md +1 -1
  415. package/dist/discovery/packs.json +5 -7
  416. package/dist/discovery/trust-report.md +2 -2
  417. package/dist/discovery/workspaces.json +4 -6
  418. package/dist/hooks/dispatch.js +8607 -8930
  419. package/dist/install/install.mjs +35 -8
  420. package/dist/mcp/registry-manifest.json +3 -3
  421. package/dist/mcp/server.json +2 -2
  422. package/dist/mcp/server.mjs +1433 -1342
  423. package/dist/router.json +1 -1
  424. package/dist/scripts/_lib/agent_settings.js +73 -0
  425. package/dist/scripts/_lib/agent_src.js +20 -0
  426. package/dist/scripts/_lib/guidelines_lane.js +158 -0
  427. package/dist/scripts/condense.js +2 -5
  428. package/dist/server/io/yamlIO.js +125 -17
  429. package/dist/server/schemas/settings.js +18 -4
  430. package/dist/shared/settingsSurface.js +6 -1
  431. package/docs/contracts/settings-classes.md +18 -9
  432. package/docs/guidelines/abstraction-thresholds.md +35 -0
  433. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
  434. package/docs/guidelines/agent-infra/false-green.md +2 -2
  435. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  436. package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
  437. package/docs/guidelines/design-fidelity-mechanics.md +4 -0
  438. package/docs/guidelines/design-fidelity-routing.md +78 -0
  439. package/docs/guidelines/design-reconciliation.md +172 -0
  440. package/docs/guidelines/gtm-handoff.md +2 -2
  441. package/docs/guidelines/wing4-handoff.md +2 -2
  442. package/package.json +7 -3
  443. package/src/config/agent-settings.template.yml +55 -8
  444. package/src/config/ci-local-parity.yml +34 -0
  445. package/src/config/continuity-surface.json +4 -32
  446. package/src/config/gate-coverage.yml +31 -8
  447. package/src/config/gate-reachability-exemptions.json +1 -0
  448. package/src/config/gate-violation-baselines.json +3 -3
  449. package/src/config/hook-token-budget.json +1 -1
  450. package/src/config/host-injection-effect.json +2 -2
  451. package/src/config/pack-size-budget.json +55 -4
  452. package/src/config/platform-anchor.json +47 -0
  453. package/src/config/preamble-payload-budget.json +2 -3
  454. package/src/config/publish-surface.json +4 -2
  455. package/src/config/ratification-policy.json +7 -0
  456. package/src/config/rule-stub-ceilings.json +16 -9
  457. package/src/scripts/_cli/cmd_settings_get.ts +22 -7
  458. package/src/scripts/_lib/agent_settings.ts +85 -0
  459. package/src/scripts/_lib/agent_src.ts +21 -0
  460. package/src/scripts/_lib/artifact_maturity.ts +242 -0
  461. package/src/scripts/_lib/conformance_report.ts +403 -0
  462. package/src/scripts/_lib/continuity_writer.ts +72 -13
  463. package/src/scripts/_lib/design_system_import.ts +20 -0
  464. package/src/scripts/_lib/design_tolerance.ts +281 -0
  465. package/src/scripts/_lib/guidelines_lane.ts +164 -0
  466. package/src/scripts/_lib/obligation_frequency.ts +2 -3
  467. package/src/scripts/_lib/platform_anchor.ts +1053 -0
  468. package/src/scripts/_lib/ratification_artifact.ts +278 -0
  469. package/src/scripts/_lib/security_lint.ts +23 -2
  470. package/src/scripts/_lib/self_repair.ts +21 -0
  471. package/src/scripts/_lib/session_index_trust.ts +42 -1
  472. package/src/scripts/_lib/standing_bound_ratchet.ts +103 -37
  473. package/src/scripts/_lib/tolerance_shadow.ts +177 -0
  474. package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
  475. package/src/scripts/autonomy_friction_traffic.ts +379 -0
  476. package/src/scripts/check_kernel_edit_ratified.ts +462 -0
  477. package/src/scripts/check_loss_class_declared.ts +793 -46
  478. package/src/scripts/check_platform_anchor.ts +390 -0
  479. package/src/scripts/check_preamble_payload_budget.ts +292 -4
  480. package/src/scripts/check_projected_rule_routes.ts +395 -0
  481. package/src/scripts/code_graph/cli.ts +6 -0
  482. package/src/scripts/condense.ts +2 -6
  483. package/src/scripts/generate_host_cost_table.ts +354 -0
  484. package/src/scripts/hook_manifest.json +1 -1
  485. package/src/scripts/hook_manifest.yaml +35 -27
  486. package/src/scripts/hooks/category_a.ts +1 -1
  487. package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
  488. package/src/scripts/hooks/session_eol_hook.ts +68 -154
  489. package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
  490. package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
  491. package/src/scripts/hot_context_hook.ts +41 -401
  492. package/src/scripts/lint_evidence_artifacts.ts +1 -0
  493. package/src/scripts/lint_knowledge_scale.ts +0 -26
  494. package/src/scripts/memory_lookup.ts +9 -9
  495. package/src/scripts/report_standing_payload_by_host.ts +7 -7
  496. package/src/scripts/session_memory_index.ts +5 -0
  497. package/src/scripts/sync_agent_settings.ts +270 -10
  498. package/src/server/io/yamlIO.ts +127 -17
  499. package/src/server/schemas/settings.ts +25 -5
  500. package/src/shared/settingsSurface.ts +13 -2
  501. package/src/templates/compact-instructions.md +8 -3
  502. package/dist/agent-src/commands/chat-history/import.md +0 -170
  503. package/dist/agent-src/commands/chat-history.md +0 -63
@@ -0,0 +1,293 @@
1
+ # Design Fidelity — Mechanics
2
+
3
+ > Surgical-edit discipline, asset & imagery floor, and the failure-mode catalog for the `design-fidelity` rule
4
+
5
+ _Origin: migrated from `src/rules/design-fidelity.md` per the P4 pattern of `road-to-kernel-and-router.md`. The Iron Law, the `design.fidelity_mode` strictness table, and the fire/not-fire scope stay in the rule; this file carries the illustrative depth._
6
+
7
+ ## Data-basis ladder
8
+
9
+ ```
10
+ WHENEVER SOURCE IS REACHABLE, THE SOURCE IS THE DATA BASIS.
11
+ A SCREENSHOT IS VALIDATION, NEVER THE INPUT YOU BUILD FROM,
12
+ WHILE ANY HIGHER RUNG IS REACHABLE.
13
+ ```
14
+
15
+ Four rungs, highest first. Take the highest one you can reach; a lower rung is
16
+ a fallback you name, not a preference you exercise.
17
+
18
+ | # | Rung | What it is | When it is the right rung |
19
+ |---|---|---|---|
20
+ | 1 | **Provided source files** | The artifact itself — an archive, an attached `design.html`, a token sidecar, a repo the user pointed at | Whenever the user handed something over. Read it *before* the first write. |
21
+ | 2 | **Source read through any channel** | The same code reached indirectly — a repository read, or DOM / stylesheets / scripts pulled through the user's own connected browser tools | The artifact is live rather than attached (a URL, a staging page, a preview build) |
22
+ | 3 | **Structured snapshot** | An accessibility tree or equivalent structured dump — text, roles, hierarchy, no pixels | Source is genuinely unreachable, but structure is not |
23
+ | 4 | **Screenshot** | Rendered pixels | Nothing above is reachable, **or** the thing being checked only exists once rendered |
24
+
25
+ **What rung 4 is legitimately for**, and this is not a grudging exception:
26
+ visual validation after building, layout collisions, contrast as actually
27
+ rendered, and content that only exists dynamically. The failure this ladder
28
+ names is not *using* a screenshot — it is using one **as the data basis while
29
+ rung 1 or 2 was sitting right there**, which is how a port ends up with the
30
+ right colours and none of the behaviour.
31
+
32
+ **The ladder governs where data comes from, never whether defects may be
33
+ fixed.** Reading the source and improving it is allowed and often correct;
34
+ reading the source is what makes an improvement a decision rather than a guess.
35
+
36
+ Two consequences worth stating because they are the ones agents get backwards:
37
+
38
+ - **A rendered HTML file is still a code artifact.** Opening it in a browser
39
+ does not demote it to rung 4; the file is still rung 1. What the browser adds
40
+ is validation, not input.
41
+ - **Degrading is honest, silence is not.** When you build from rung 3 or 4, say
42
+ which rung you used and why the higher ones were unreachable. An unscoped
43
+ "matches the design" over a screenshot-derived build is a verdict without
44
+ evidence (`design-review` § verdict scoping).
45
+
46
+ Regression witness: `daf-source-over-screenshot`.
47
+
48
+ ## URL / live-page handover — extraction into files, before the first UI write
49
+
50
+ ```
51
+ A HANDOVER THAT ARRIVES AS A URL IS STILL RUNG 2, NOT RUNG 4.
52
+ EXTRACT THROUGH THE USER'S CONNECTED BROWSER TOOLS INTO FILES
53
+ BEFORE ANY UI WRITE. A SCREENSHOT TAKEN DURING EXTRACTION
54
+ CARRIES QA DUTY ONLY — IT IS NEVER THE THING YOU BUILD FROM.
55
+ ```
56
+
57
+ A published artifact link, a builder's share link, a staging or `localhost`
58
+ page: rung 2 above is reachable, so rung 4 is not the fallback it looks like.
59
+ Extraction lands in the existing `design-system.json` contract under the
60
+ `.claude/design-system/` prefix the rule already routes on — no new artifact
61
+ shape — and the offline `/design-system:import` adapter consumes it. The package
62
+ ships the contract, the adapter and the instructions; it ships no crawler,
63
+ Playwright runtime or font-bundler.
64
+
65
+ Where the extraction goes, what consumes it, the retrieval order that keeps the
66
+ source alive across sessions, the producer sentence, and the honest coverage
67
+ gap: [`design-handover-extraction`](design-handover-extraction.md).
68
+
69
+ ## Adopt the code — re-derivation is a deviation
70
+
71
+ Where the artifact's own markup, CSS, or JS is stack-compatible, **adapting that
72
+ code is the default**. Writing an equivalent from scratch is a **deviation** and
73
+ carries the same obligation as a swapped control: surface it, get confirmation,
74
+ do not just do it.
75
+
76
+ Stack translation is not re-derivation. Porting the artifact's structure into
77
+ Blade, JSX or a template language translates *that* structure — it does not
78
+ license a new one. If your output's element tree cannot be walked next to the
79
+ artifact's, you re-derived.
80
+
81
+ Why this needs saying at all: the visible half of a port (colours, type,
82
+ spacing) is what a reviewer checks, and it survives a from-scratch rewrite. The
83
+ half that does not survive is the behaviour — event handlers, keyframes, ARIA
84
+ wiring, focus order — and its absence is invisible in a screenshot comparison.
85
+ "HTML not adopted, worse markup written from scratch, missing JavaScript" is one
86
+ failure, not three.
87
+
88
+ ### The scope line — where `code-provenance` ends and this begins
89
+
90
+ ```
91
+ A USER-SUPPLIED DESIGN ARTIFACT IS THE USER'S OWN MATERIAL, NOT THIRD-PARTY
92
+ EXTERNAL CODE. ADOPTING IT IS NOT A BORROW.
93
+ THIRD-PARTY CODE THAT MERELY ARRIVES THROUGH A HANDOVER STAYS UNDER
94
+ `code-provenance` IN FULL.
95
+ ```
96
+
97
+ Without this line the two rules contradict each other on the same act:
98
+ [`code-provenance`](../rules/code-provenance.md) opens with `NEVER ADOPT
99
+ EXTERNAL CODE VERBATIM` and routes any conscious borrow through a licence check
100
+ plus a ledger entry, while the duty above says adapt the artifact's code.
101
+ Whichever the agent followed, it would be violating a rule, and no gate can
102
+ arbitrate between two Iron Laws.
103
+
104
+ The resolution weakens neither, and it is not new: it is the carve-out
105
+ [`content-quoting-floor`](../rules/content-quoting-floor.md) already
106
+ makes for user-owned text — *"content the user wrote, pasted, or explicitly
107
+ authorized for verbatim use is not an external source"*. A design artifact the
108
+ user hands over is that same category, in markup.
109
+
110
+ **What stays under `code-provenance` in full**, so the carve-out cannot be read
111
+ as a hole:
112
+
113
+ - A vendored component, a licensed template, or a third-party library that
114
+ happens to be *inside* the handover. Arriving through a design handover
115
+ changes nothing about its licence.
116
+ - Code the artifact itself borrowed from somewhere identifiable.
117
+ - Anything you reach for *beyond* the artifact while implementing it.
118
+
119
+ The discriminator is authorship, not delivery: did the user hand you their own
120
+ material, or did they hand you a container with someone else's material in it?
121
+
122
+ Regression witness: `daf-rederive-is-deviation`.
123
+
124
+ ## Surgical visual edits
125
+
126
+ A request to change one visual thing — a colour, a label, a single element — is
127
+ a **targeted edit**, not a redesign licence. Apply the same
128
+ `minimal-safe-diff` discipline to design work that backend edits have
129
+ always owed.
130
+
131
+ - **Change only the semantic target.** Preserve the surrounding layout,
132
+ spacing, typography, dimensions, content, animation, and interaction states.
133
+ Do not rewrite the component, reflow the section, or "modernise" neighbours
134
+ while you are in there. (fixtures: `daf-edit-preservation`, `daf-unwanted-variations`.)
135
+ - **A broader redesign needs an explicit trigger.** Only phrases like *"new
136
+ direction"*, *"from scratch"*, *"make it feel premium"*, *"rework the flow"*,
137
+ or *"give me variations / options"* license a from-scratch rework. Absent such
138
+ a phrase, a "fix / change / update the X" request is surgical — when unsure
139
+ which, ask (`ask-when-uncertain`). (fixture: `daf-redesign-trigger`.)
140
+ - **Preserve stable anchors.** Where the host exposes DOM/comment metadata, keep
141
+ comment anchors and screen labels intact so the edit stays locatable. Where
142
+ the host has no such surface, preserve stable semantic anchors already present
143
+ in source comments / `data-*` attributes — never strip them, and do not invent
144
+ new ones.
145
+
146
+ ## Asset & imagery discipline
147
+
148
+ Visual artifacts carry **real assets or honest placeholders — never fabricated
149
+ brand evidence**. The design-surface instance of the no-invented-facts floor.
150
+
151
+ Owned-asset paths, the third-party delivery decision this repository pins to
152
+ self-hosting ([`ADR-205`](../decisions/ADR-205-webfont-delivery-ownership.md)),
153
+ the real-imagery-as-proof floor, the iconography floor and the
154
+ no-unrequested-filler clause — each with its `daf-*` fixture:
155
+ [`design-asset-discipline`](design-asset-discipline.md).
156
+
157
+ ## Artefact maturity — the second axis
158
+
159
+ The Iron Law and both discriminator clauses stay in
160
+ [`design-fidelity`](../rules/design-fidelity.md) § Two axes; this is the table.
161
+
162
+ | The artefact declares | The spec is | The spec is NOT |
163
+ |---|---|---|
164
+ | low fidelity — greyscale, box-and-line, placeholder copy | layout · element set · hierarchy · states shown | grays · placeholder text · borders · exact spacing |
165
+ | finished — colour, real copy, real assets | everything visible (the 1:1 floor, unchanged) | — |
166
+
167
+ Grounded in [`wireframe`](../skills/wireframe/SKILL.md) § Gotchas. The near-miss
168
+ class is pinned in `ROUTING_MATRIX`, its rationale beside the assertions in
169
+ `design_fidelity_routing.test.ts`.
170
+
171
+ ## Provided-artifact precedence
172
+
173
+ ```
174
+ PROVIDED ARTIFACT > ANTI-SLOP > HOUSE TASTE
175
+ > ANY GENERATIVE DESIGN-SYSTEM TOOLING, FIRST- OR THIRD-PARTY.
176
+ THE EXEMPTION COVERS ONLY DECISIONS THE ARTIFACT ACTUALLY COVERS.
177
+ IT NEVER COVERS GENERATIVE WORK IN THE SAME RUN.
178
+ ```
179
+
180
+ The anti-slop catalog exists to stop an agent's *first impulse* from becoming
181
+ the design. A handed-over artifact is not a first impulse — it is a decision
182
+ the user already made. Applied to a port, the catalog inverts: it argues the
183
+ agent out of the spec it was told to reproduce.
184
+
185
+ Concretely, a faithful port of a cream/terracotta artifact trips
186
+ `slop-c5-cream-palette`, and the artifact's own copy trips
187
+ `slop-cp1-em-dash`. Both findings are **correct about the pattern and wrong
188
+ about the action**. On a port they are cited as *"matches provided spec"* and
189
+ nothing acts on them.
190
+
191
+ **Scope — three things this does NOT license:**
192
+
193
+ 1. **Decisions the artifact does not cover.** A port usually needs states the
194
+ source never showed (loading, error, empty). Those are generative, and the
195
+ full anti-slop scan applies to them. "The artifact was cream" does not
196
+ exempt an invented empty state from L1 or V1.
197
+ 2. **Silence.** An artifact-covered finding stays in the review output with its
198
+ rule id, marked informational. Suppressing it outright would hide from the
199
+ user that their spec carries a known tell — which they may want to know
200
+ before shipping it.
201
+ 3. **Registered brand tokens.** A supplied artifact outranks house taste, not
202
+ the consumer's own brand (`brand-source-of-truth`). Artifact-vs-brand
203
+ conflicts are surfaced, never merged.
204
+
205
+ ### The precedence chain's fourth member, and why it is not obvious
206
+
207
+ A generative design-system
208
+ skill — this suite's own or a third party's installed beside it — can carry an
209
+ instruction of the shape *"always generate a design system first"*. On a
210
+ greenfield brief that is right. On a **port** it is the same error the anti-slop
211
+ catalog makes: it argues the agent out of a decision the user already made, and
212
+ it does so from a step that runs *before* the artifact is even read, so nothing
213
+ downstream ever gets the chance to override it. A generative step's output may
214
+ inform decisions the artifact leaves open — states it never showed, a breakpoint
215
+ it never specified — and nothing more. It never re-opens a decision the artifact
216
+ carries.
217
+
218
+ This is a precedence clause, not a ban: the generative tooling stays correct
219
+ where it was already correct. What it loses is the authority to run *instead of*
220
+ reading a supplied artifact.
221
+
222
+ **The mechanical half.** A review finding carries `artifact_covered: true`, and
223
+ the polish gate drops those from the round-driving set *before* the ceiling
224
+ check, so a port cannot burn its two rounds on findings it was never allowed to
225
+ act on (`directives/ui/polish.ts`, `partition_artifact_covered`). Marking rather
226
+ than deleting is deliberate: the finding stays visible, only its authority to
227
+ force a round is removed. The burden sits with whoever sets the flag — an
228
+ unmarked finding is treated as actionable, so the default failure direction is
229
+ "we asked" rather than "we silently kept it".
230
+
231
+ Regression witness: `daf-slop-vs-provided`.
232
+
233
+ **Why the default is what it is, and why the 2026-07-31 council lock over this
234
+ loop cannot be discharged by measuring it:**
235
+ [`design-reconciliation § The 2026-07-31 lock`](design-reconciliation.md).
236
+
237
+ ## Value-level provenance — the finer grain beside the flag
238
+
239
+ The block above is finding-level and stays the default: `artifact_covered` is a
240
+ boolean on a **finding**, and every consumer of it — `partition_artifact_covered`
241
+ and the ceiling check it feeds — is unchanged by this section.
242
+
243
+ What a per-finding boolean cannot answer is *"where did this `16px` come from"*.
244
+ The flag says a finding is answered by the artifact; it does not say which value
245
+ carried the expectation, so two rows that disagree about the same element look
246
+ identical to a reviewer.
247
+
248
+ `src/scripts/schemas/fidelity-measurement-sheet.schema.json` adds that grain and
249
+ nothing else: each measurement row carries `expectation_source` — a `kind`
250
+ ordered by authority (`provided_artifact` › `design_token` › `brand_token` ›
251
+ `house_heuristic` › `agent_inference`) plus a `ref` naming the token, `file:line`
252
+ or artefact anchor. `agent_inference` is the row a reviewer filters for.
253
+
254
+ Two boundaries, because this is an addition and not a replacement:
255
+
256
+ - **The coarse flag stays the default channel.** A row's optional
257
+ `expectation_source.artifact_covered` mirrors the flag for one value; it never
258
+ substitutes for setting the flag on the finding, and no gate reads it.
259
+ - **The ordering above is a mirror, not a second source of truth.** Precedence
260
+ is decided in the block above; a `kind` that disagreed with it would be a
261
+ defect in the schema, not a competing chain.
262
+
263
+ ## Failure modes
264
+
265
+ - Swapping the prototype's font / typeface because another "reads better".
266
+ - Replacing a specified control (slider, stepper, chip) with a different control.
267
+ - Dropping or adding an element the prototype shows ("+", a send→stop toggle, a warning chip).
268
+ - Restructuring layout or moving sections "because the flow is better".
269
+ - Treating an internal "honesty gate" or "stub" concern as licence to redesign the UI.
270
+ - Re-running a redesign after the user already said "match the prototype".
271
+
272
+ ## How to surface a deviation — do NOT execute it
273
+
274
+ Name what the spec shows, what you would change, and why — as a numbered option
275
+ per `user-interaction`. The user picks. Honesty about **behaviour** (a control
276
+ not yet wired) never licenses changing the **design**: a faithful visual plus a
277
+ labelled "not wired yet" note beats an invented redesign.
278
+
279
+ ## Fixtures
280
+
281
+ Behavioral baseline: the `daf-*` fixtures named above (edit preservation,
282
+ unwanted variations, redesign trigger, missing asset, external asset URL,
283
+ invented screenshot), plus the port family this guideline governs —
284
+ `daf-source-over-screenshot` (data basis), `daf-adhoc-port-coverage` (loss
285
+ reporting outside the engine), `daf-rederive-is-deviation` (adopt the code),
286
+ and `daf-handoff-bundle`, the bundle shape where a token sidecar makes
287
+ "honoured the contract" and "eyeballed the CSS" produce different artefacts.
288
+
289
+ ## See also
290
+
291
+ - `design-fidelity` (rule) — Iron Law + `design.fidelity_mode` strictness table.
292
+ - `brand-source-of-truth` / `brand-consistency` — same precedence shape, for registered brand tokens.
293
+ - [`design-modes.md`](design-modes.md) — brand vs product register discriminator.
@@ -0,0 +1,78 @@
1
+ # Design-fidelity routing mechanics — how the trigger set is authored
2
+
3
+ Split out of [`design-fidelity-mechanics`](design-fidelity-mechanics.md) on
4
+ 2026-09-09 under `check_depth_budget`'s 16,000-character per-file ceiling. It is
5
+ also a genuinely different subject: that guideline is read while PORTING an
6
+ artifact, and this one is read while EDITING the rule's own trigger set — which
7
+ happens rarely, by a maintainer, and never during a port.
8
+
9
+ ## Routing mechanics
10
+
11
+ Migrated out of `design-fidelity.md` on 2026-09-09 under the council verdict on
12
+ `blocker: rule-body-cap` — a semantic migration that frees rule-body lines for
13
+ the operative pointers the same verdict requires, not an arbitrary line cut. The
14
+ rule keeps the obligations; this holds the reasoning behind them.
15
+
16
+ ### The withdrawn builder-URL trigger
17
+
18
+ A page built in Lovable / v0 / bolt and handed over as a share link is a
19
+ finished spec, and `design-fidelity` does not route it. The obvious trigger was
20
+ tried and **withdrawn**: matching is plain lower-cased substring containment, so
21
+ `https://v0.dev/` also fires on `https://v0.dev/docs`, on a pricing page, and on
22
+ a changelog link — it would treat every mention of the tool's own site as a spec
23
+ handover. That is exactly the `claude.ai` failure the capability-URL trigger
24
+ exists to avoid, and by the rule's own standard it is worse than the gap it
25
+ closes. The alternatives are a bare-host keyword (broader still) or guessing
26
+ each vendor's share-path segment, and a trigger built on a guessed path is not
27
+ evidence.
28
+
29
+ **What closes it:** a verified share-path segment per vendor, or a
30
+ handover-word co-occurrence the matcher cannot express today. Until then the
31
+ class needs one word in the prompt, like any other unlisted filename.
32
+ `near-bare-host-mention` in `ROUTING_MATRIX` pins the bare-host direction silent
33
+ so a future attempt cannot reintroduce the broad form unnoticed.
34
+
35
+ ### The trigger set, class by class
36
+
37
+ Phrase-heavy on the German side and on `artifact` deliberately: a bare
38
+ `artifact` keyword fires on *"the CI build artifact is 40 MB"*, which is CI
39
+ vocabulary and not a handover. `ROUTING_MATRIX` pins both halves — every class
40
+ that must route, and every near-miss that must stay silent (fixture
41
+ `daf-port-trigger-de`).
42
+
43
+ Each shipped class carries its own near-miss row, and the pairing is the
44
+ contract rather than a courtesy:
45
+
46
+ | Class | Its near-miss row | The direction that row tests |
47
+ |---|---|---|
48
+ | `phrase: claude.site/artifacts` | `near-claude-ai-chat-link` | a bare `claude.ai` chat link is a conversation reference, not a spec |
49
+ | `path_prefix: .claude/design-system/` | `near-generic-design-system-dir` | a bare `design-system/` is a normal source folder in a large fraction of frontend repos |
50
+ | `file_pattern: *.dc.html` | `near-plain-html-open-file`, `near-dc-in-a-filename` | an ordinary `.html` file in the tree; a filename that merely contains the letters |
51
+ | the withdrawn builder URL | `near-bare-host-mention` | left behind on purpose, so the broad form stays pinned silent |
52
+
53
+ ### Write the near-miss row first — and test the right direction
54
+
55
+ Extending the trigger set without adding a near-miss row is how an over-broad
56
+ trigger lands. The stronger half of the contract is *which* near-miss:
57
+
58
+ **The row must test the direction the NEW trigger opens, not a direction that
59
+ was already closed.** The withdrawn class is the worked example. Its first
60
+ near-miss row tested a protocol-less mention — silent *before* the change, and
61
+ therefore incapable of catching the over-broadness the change introduced. The
62
+ row that would have caught it is `near-builder-host-non-handover-url`, a
63
+ documentation URL on the same host, and it exists only because a review asked
64
+ for it after the trigger had already shipped.
65
+
66
+ Applied on the next trigger to land: `*.dc.html` (the Claude Design canvas
67
+ artboard, which `*design.html` cannot match because it compiles to
68
+ `^(?:.*design\.html)$`) shipped with `near-plain-html-open-file` and
69
+ `near-dc-in-a-filename` written **before** it, both testing the direction it
70
+ opens — an ordinary `.html` file in the tree, and a filename that merely
71
+ contains the letters. Both were confirmed red-then-green against the real
72
+ matcher rather than asserted.
73
+
74
+ ## See also
75
+
76
+ - [`design-fidelity-mechanics`](design-fidelity-mechanics.md) — the porting half.
77
+ - `tests/scripts/design_fidelity_routing.test.ts` — `ROUTING_MATRIX`, which is
78
+ the measurement this file describes rather than a second copy of it.
@@ -0,0 +1,117 @@
1
+ # Design Handover — URL / live-page extraction
2
+
3
+ > Where a URL handover gets extracted to, what consumes it, and in what order it is read back
4
+
5
+ _Split out of [`design-fidelity-mechanics`](design-fidelity-mechanics.md) § URL / live-page handover, which carries the obligation surface and routes here. The split is the per-file depth ceiling doing its job: the mechanics file sat at 14.2k of its 16k budget, and compressing this material to fit would have cost the parts that make it actionable._
6
+
7
+ ```
8
+ A HANDOVER THAT ARRIVES AS A URL IS STILL RUNG 2, NOT RUNG 4.
9
+ EXTRACT THROUGH THE USER'S CONNECTED BROWSER TOOLS INTO FILES
10
+ BEFORE ANY UI WRITE. A SCREENSHOT TAKEN DURING EXTRACTION
11
+ CARRIES QA DUTY ONLY — IT IS NEVER THE THING YOU BUILD FROM.
12
+ ```
13
+
14
+ When the artifact is handed over as a **URL** rather than a file — a published
15
+ artifact link, a builder's share link, a staging or `localhost` page — rung 2 of
16
+ the [data-basis ladder](design-fidelity-mechanics.md#data-basis-ladder) is
17
+ reachable and rung 4 is not the fallback it looks like. Pull the DOM,
18
+ stylesheets, scripts and assets through the browser tools the user has
19
+ connected, and land them as files first.
20
+
21
+ ## Where the extraction lands
22
+
23
+ Into `design-system.json` under `.claude/design-system/` — the `path_prefix` the
24
+ `design-fidelity` rule already routes on. That file is an **existing contract**,
25
+ specified in
26
+ [`design-system-json.md`](../skills/design-system-capture/references/design-system-json.md);
27
+ this guideline defines no format of its own. Raw source files land beside it,
28
+ and screenshots taken while extracting land in a references directory next to
29
+ them.
30
+
31
+ ## What consumes it
32
+
33
+ [`/design-system:import`](../../src/domains/engineering-base/design-system/import/command.md)
34
+ runs the extraction output through the three-lane adapter
35
+ (`native` / `dtcg` / `dembrandt`) into the contract shape, then hands it to
36
+ `design-system-capture`'s per-field import. The adapter is **offline** — it
37
+ reads a file and writes the contract shape; it never fetches, crawls, or
38
+ launches a browser.
39
+
40
+ ## The lock boundary — stated here because this is where an agent would cross it
41
+
42
+ The package ships the contract, the adapter, and the instructions. It does
43
+ **not** ship the crawler, the Playwright runtime, or a font-bundler. Extraction
44
+ runs through the user's own connected tooling, and its output is *observed, not
45
+ authoritative*: every field is confirmed by the human, and a value conflicting
46
+ with a registered brand token is flagged rather than applied
47
+ (`brand-source-of-truth`).
48
+
49
+ ## Retrieval order — so the source survives the session
50
+
51
+ Check in this order and stop at the first hit. The point is that the next
52
+ session reads a file instead of re-screenshotting the same page.
53
+
54
+ | # | Source | Why it ranks here |
55
+ |---|---|---|
56
+ | 1 | The project's own `design-system.json` | Already confirmed by a human in an earlier session — the only rung whose values someone signed off on |
57
+ | 2 | A previous extraction artifact under `.claude/design-system/` | Observed and file-backed; re-reading it costs nothing and re-extracting may drift |
58
+ | 3 | The live page | Authoritative for *today's* page, but only reachable while it is up and the tooling is connected |
59
+
60
+ **Persistence is not restated here.** Skip-if-exists unless explicitly forced,
61
+ and never silently discarding a prior confirmed decision, are owned by
62
+ [`/design-system:generate`](../../src/domains/engineering-base/design-system/generate/command.md)
63
+ — *"never overwrite a confirmed `DESIGN.md`"*, *"Never persist silently."* This
64
+ guideline states the order; that command states what happens on a collision, and
65
+ stating it twice is how the two drift apart.
66
+
67
+ ## The producer sentence
68
+
69
+ The documented easy path is a connected extractor MCP, attached once and reused.
70
+ Where none is available, the manual Chrome-DevTools-MCP channel is the fallback,
71
+ and where neither is reachable the handover degrades to rung 3 or 4 — which the
72
+ ladder requires you to **name**, not to pass off as a source-based build.
73
+
74
+ ## Coverage — stated honestly
75
+
76
+ No fixture scores this class yet. `daf-source-over-screenshot` scores the rung
77
+ choice on an *attached* artifact, not a URL handover.
78
+
79
+ **Its blocking reason changed on 2026-08-23 and the new one is narrower.** It was
80
+ SKIPPED since 2026-08-13 "for want of a page-reaching capture primitive". That
81
+ primitive now exists — `agent-config ui:render`, a Class-A headless capture at
82
+ desktop / 375 px / 320 px, executed against a real fixture. So the fixture is no
83
+ longer blocked on a missing capability; it is **unscored**, pending a live eval
84
+ run that puts an agent through an artifact port and judges the rung it chose.
85
+
86
+ The discipline is unchanged and still binds: claiming a regression witness before
87
+ that run would be the fabrication this package's evidence discipline exists to
88
+ prevent. What moved is which sentence is true — "we cannot measure this" became
89
+ "we have not measured this yet", and those are different claims.
90
+
91
+ ### The skip register — every fixture gated on the same primitive
92
+
93
+ `daf-source-over-screenshot` is no longer the only one, so the reason string is
94
+ recorded once here rather than restated per fixture. Every row below is
95
+ **SKIPPED** with `b-page-capture-primitive` as its reason, and none is silently
96
+ absent:
97
+
98
+ | Fixture | Registered | Reason |
99
+ |---|---|---|
100
+ | `daf-source-over-screenshot` | 2026-08-13 | `b-page-capture-primitive` |
101
+ | `daf-render-absent-scoped` | 2026-08-23 | `b-page-capture-primitive` — its render-dependent assertions only; the static-scope assertions run and pass |
102
+ | `daf-render-absent-control` | 2026-08-23 | `b-page-capture-primitive` — synthesises `render_ok: true` as state rather than rendering, and says so |
103
+
104
+ **Probed, not assumed** (2026-08-23). The `playwright` library resolves in this
105
+ tree, which reads as a capture primitive until you run it: launching chromium
106
+ fails with *"Executable doesn't exist at
107
+ …/chromium_headless_shell-1234/chrome-headless-shell"*. The library is present
108
+ and **no browser binary is installed**, so the primitive is
109
+ `not-available: headless-browser-binary`. Recorded as execution evidence because
110
+ "playwright is in node_modules" is exactly the inference that would have made a
111
+ fabricated witness look justified.
112
+
113
+ ## See also
114
+
115
+ - [`design-fidelity-mechanics`](design-fidelity-mechanics.md) — the data-basis ladder this operationalises, and the adopt-the-code duty that governs what you do with the extracted source.
116
+ - [`design-fidelity`](../rules/design-fidelity.md) — the rule; a provided artifact is the spec.
117
+ - [`design-system-capture`](../skills/design-system-capture/SKILL.md) — the per-field import the adapter hands off to.
@@ -0,0 +1,143 @@
1
+ # Design Modes — Brand vs Product
2
+
3
+ > Reference doc. Pull this when deciding which design skills to prioritize
4
+ > or when the brief is ambiguous about the design register.
5
+
6
+ ## The two registers
7
+
8
+ Every design task operates in one of two registers. Getting the register
9
+ wrong is the root cause of most AI-generated design failures:
10
+
11
+ | | Brand mode | Product mode |
12
+ |---|---|---|
13
+ | **Core thesis** | The impression IS the product | Design serves the task |
14
+ | **Primary failure** | Flatness / genericness — looks like every other AI startup | Strangeness without purpose — "clever" choices that obscure the tool |
15
+ | **The user's question** | "How was this made?" (genuine curiosity) | "Where do I click?" (the tool disappears into the task) |
16
+ | **Key skill cluster** | `brand-identity`, `iconography`, `fe-design § Aesthetic direction`, `design-intelligence` | `accessibility-auditor`, `ui-component-architect`, `fe-design § Table/Form Design` |
17
+ | **Typography strategy** | Distinctive pairing — two contrasting families, deliberate tracking | One reliable family — predictable hierarchy. A default AI font pick (Inter, Roboto, DM Sans, Geist, Space Grotesk, Instrument Serif) is a legitimate product-register choice, and [`design-antipatterns` T7](design-antipatterns.md) scopes itself accordingly — but the register is the reason, so state it: an undeclared Inter is still an undeclared font choice. |
18
+ | **Color strategy** | Brand identity — often unexpected; the palette IS the differentiator | Semantic function — primary/danger/success/neutral; predictable meaning |
19
+ | **Motion strategy** | Expressive — motion reinforces the brand's personality | Utilitarian — motion confirms state changes; nothing decorative |
20
+ | **Spacing strategy** | Breathing room; generous whitespace as a brand signal | Dense/efficient; optimize for information density |
21
+ | **Success criterion** | Originality test: a skeptic can't guess "which AI made this?" | Earned familiarity: the tool disappears; users focus on their task |
22
+
23
+ ## How to determine the register
24
+
25
+ Ask: **What is the output of this UI being used for?**
26
+
27
+ - A consumer-facing surface where the FIRST impression determines whether the
28
+ user trusts/buys → **Brand mode**. The product has 3 seconds; every pixel
29
+ contributes to the brand's identity.
30
+
31
+ - An internal tool, dashboard, admin panel, or workflow-critical surface where
32
+ users return dozens of times per day → **Product mode**. Strangeness wastes
33
+ their time; predictability builds trust.
34
+
35
+ - A marketing landing page → **Brand mode**. It has one job: create desire.
36
+
37
+ - A data entry form → **Product mode**. It has one job: accept correct data.
38
+
39
+ **Ambiguous cases:** many products have both (a brand-heavy landing page +
40
+ a product-mode dashboard). The register applies per-surface, not per-product.
41
+ When unclear: ask — *"Is the user here to be impressed, or to accomplish a
42
+ task?"*
43
+
44
+ ## The second axis — surface job
45
+
46
+ The register answers *how expressive may this be*. It does not answer *what is
47
+ this surface for*, and conflating the two is why a persuade surface inside a
48
+ product repo gets dense, utilitarian defaults. So there are two axes, and they
49
+ are independent.
50
+
51
+ | Surface job | The user's situation | Density | Hierarchy | Expressiveness |
52
+ |---|---|---|---|---|
53
+ | `persuade` | arrived, deciding, will leave in seconds | generous | one dominant claim per viewport | high — this is the job |
54
+ | `operate` | returning, task in mind, wants it done | dense | scannable, predictable, repeated | low — strangeness costs time |
55
+ | `read` | sustained attention on prose or data | measured | typographic, not chrome-led | restrained |
56
+ | `experience` | exploring, no task, willing to be surprised | spacious | narrative, sequential | high, and sequenced |
57
+
58
+ ```
59
+ SURFACE JOB IS PER-SURFACE AND LIVES IN THE SURFACE BRIEF.
60
+ IT IS NEVER READ OFF PRODUCT.md, AND A RUN NEVER WRITES IT THERE.
61
+ ```
62
+
63
+ **Why not in PRODUCT.md.** PRODUCT.md describes the product, and a product has
64
+ many surfaces with different jobs — an investor one-pager and an ops console
65
+ belong to the same product and share no defaults. A run that resolves the job
66
+ from PRODUCT.md flattens the persuade surface into the product register, which
67
+ is the `surface-mode-not-product-mode` near-miss in
68
+ `tests/eval/frontend-corpus/near-miss/`.
69
+
70
+ **Register stays.** The two axes compose: a `persuade` surface in the `brand`
71
+ register and a `persuade` surface in the `product` register are both persuade
72
+ surfaces, and the register decides how far the expressiveness may go.
73
+
74
+ **Quality floors do not vary by either axis.** Density, hierarchy and
75
+ expressiveness defaults move; contrast, minimum font size, line length,
76
+ reduced-motion, heading order and focus visibility do not. A floor that moved
77
+ with the surface job would be a preference wearing a floor's name.
78
+
79
+ The machine-readable form is `surface_mode` in
80
+ [`ui-authority`](../contracts/ui-authority.md), which is also the one place the
81
+ precedence between an explicit instruction, the brief and these defaults is
82
+ written down.
83
+
84
+ ## Brand-mode failure modes
85
+
86
+ - **Genericness:** Choosing the safe AI-slop palette (cream + brass, purple/violet gradient, three equal cards). The product is invisible in its category. Cross-check with `docs/guidelines/design-antipatterns.md` § Color and Visual.
87
+ - **Inconsistency:** Brand direction picked for the hero, abandoned for the body. The page reads as two different products.
88
+ - **Aesthetics-without-function:** Beautiful but confusing navigation, stunning hero with no CTA clarity.
89
+
90
+ ## Product-mode failure modes
91
+
92
+ - **Strangeness-without-purpose:** A clever typographic choice that makes the CTA harder to scan. A gradient background on a data table. An animated page transition in an admin panel.
93
+ - **Premature originality:** Reinventing a standard UI pattern (data table, form validation, dropdown) when the standard is what users expect.
94
+ - **Over-engineering:** Five different card elevations in a dashboard that needs two.
95
+
96
+ ## The AI-slop originality self-test (applies to brand mode primarily)
97
+
98
+ Run BOTH tiers before approving a brand-mode design direction:
99
+
100
+ **Tier 1 — Category test:**
101
+ Would a designer seeing 20 AI-generated [product category] UIs recognize this
102
+ aesthetic as part of that category's default? (e.g., "SaaS → dark mode + purple
103
+ gradient"; "health app → teal + rounded sans serif + white space").
104
+ - If YES: rework the concept. The design is invisible in its category.
105
+ - If NO: proceed to Tier 2.
106
+
107
+ **Tier 2 — Anti-reference test:**
108
+ Given the category AND three explicit aesthetics you've avoided — could a
109
+ skeptic still guess the direction? (e.g., "fintech that's not navy-and-gold,
110
+ not minimal white, not brutalist → everyone picks terminal dark").
111
+ - If YES: dig deeper. "Avoiding the worst cliché" is not differentiation.
112
+ - If NO: the direction is genuinely distinctive.
113
+
114
+ **The bar:** a visitor should ask "how was this made?" not "which AI made this?"
115
+
116
+ ## Routing to skills by mode
117
+
118
+ **Brand mode brief:**
119
+ 1. `design-intelligence` (grounded style/palette/typography selection — run the corpus first)
120
+ 2. `brand-identity` (archetype → token system)
121
+ 3. `iconography` (icon system selection for brand expression)
122
+ 4. `fe-design § Aesthetic direction` (direction → composition → typography → color)
123
+
124
+ **Product mode brief:**
125
+ 1. `existing-ui-audit` (mandatory — inventory first)
126
+ 2. `accessibility-auditor` (WCAG compliance from the start)
127
+ 3. `ui-component-architect` (reuse existing primitives)
128
+ 4. `fe-design § Component Architecture, Form Design, Table Design` (standard patterns)
129
+
130
+ **Both modes:** `design-antipatterns` (always pull), `design-review` (with anti-slop check)
131
+
132
+ **Exploration front-ends (either mode, before committing):**
133
+ `wireframe` (lo-fi structure exploration, disposable greyscale) →
134
+ `design-variations` (3+ substantive hi-fi options, basic→bold, single file
135
+ with tweak controls). Decks are their own medium → `html-deck`
136
+ (fixed-canvas slides), not the responsive-UI routing above.
137
+
138
+ ## See also
139
+
140
+ - `docs/guidelines/design-antipatterns.md` — the slop-tell catalog; brand mode especially needs this
141
+ - `brand-source-of-truth` — when a registered brand profile is present, it governs
142
+ - `brand-consistency` — validates emitted artifacts against the brand profile
143
+ - `design-system-capture` — DESIGN.md/PRODUCT.md capture the mode's decisions for cross-task consistency