@qijenchen/design-system 0.1.0-beta.93 → 0.1.0-beta.96

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 (578) hide show
  1. package/AGENTS.md +6 -208
  2. package/CLAUDE.md +2 -23
  3. package/dist/components/Calendar/calendar.d.ts.map +1 -1
  4. package/dist/components/Calendar/calendar.js +47 -23
  5. package/dist/components/Calendar/calendar.js.map +1 -1
  6. package/dist/components/DataTable/cell-registry.d.ts.map +1 -1
  7. package/dist/components/DataTable/cell-registry.js +1 -5
  8. package/dist/components/DataTable/cell-registry.js.map +1 -1
  9. package/dist/components/DataTable/data-table-filter-value-picker.js +4 -0
  10. package/dist/components/DataTable/data-table-filter-value-picker.js.map +1 -1
  11. package/dist/components/DataTable/data-table.d.ts.map +1 -1
  12. package/dist/components/DataTable/data-table.js +3 -2
  13. package/dist/components/DataTable/data-table.js.map +1 -1
  14. package/dist/components/DataTable/filter-tree.js +6 -0
  15. package/dist/components/DataTable/filter-tree.js.map +1 -1
  16. package/dist/components/DatePicker/date-picker.d.ts.map +1 -1
  17. package/dist/components/DatePicker/date-picker.js +183 -156
  18. package/dist/components/DatePicker/date-picker.js.map +1 -1
  19. package/dist/components/Dialog/dialog.d.ts.map +1 -1
  20. package/dist/components/Dialog/dialog.js +4 -2
  21. package/dist/components/Dialog/dialog.js.map +1 -1
  22. package/dist/components/Field/field-context.d.ts +12 -0
  23. package/dist/components/Field/field-context.d.ts.map +1 -1
  24. package/dist/components/Field/field-context.js +10 -1
  25. package/dist/components/Field/field-context.js.map +1 -1
  26. package/dist/components/Field/field-wrapper.d.ts.map +1 -1
  27. package/dist/components/Field/field-wrapper.js +7 -1
  28. package/dist/components/Field/field-wrapper.js.map +1 -1
  29. package/dist/components/Field/field.d.ts.map +1 -1
  30. package/dist/components/Field/field.js +11 -2
  31. package/dist/components/Field/field.js.map +1 -1
  32. package/dist/components/InlineEdit/inline-edit.d.ts +5 -0
  33. package/dist/components/InlineEdit/inline-edit.d.ts.map +1 -1
  34. package/dist/components/InlineEdit/inline-edit.js +65 -33
  35. package/dist/components/InlineEdit/inline-edit.js.map +1 -1
  36. package/dist/components/Input/input.d.ts.map +1 -1
  37. package/dist/components/Input/input.js +3 -2
  38. package/dist/components/Input/input.js.map +1 -1
  39. package/dist/components/LinkInput/link-input.d.ts.map +1 -1
  40. package/dist/components/LinkInput/link-input.js +2 -1
  41. package/dist/components/LinkInput/link-input.js.map +1 -1
  42. package/dist/components/Popover/popover.d.ts.map +1 -1
  43. package/dist/components/Popover/popover.js +4 -2
  44. package/dist/components/Popover/popover.js.map +1 -1
  45. package/dist/components/Select/select.d.ts.map +1 -1
  46. package/dist/components/Select/select.js +59 -37
  47. package/dist/components/Select/select.js.map +1 -1
  48. package/dist/components/Textarea/textarea.d.ts +11 -0
  49. package/dist/components/Textarea/textarea.d.ts.map +1 -1
  50. package/dist/components/Textarea/textarea.js +22 -5
  51. package/dist/components/Textarea/textarea.js.map +1 -1
  52. package/dist/components/TimePicker/time-picker.d.ts.map +1 -1
  53. package/dist/components/TimePicker/time-picker.js +4 -3
  54. package/dist/components/TimePicker/time-picker.js.map +1 -1
  55. package/dist/patterns/element-anatomy/item-anatomy.d.ts +9 -0
  56. package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -1
  57. package/dist/patterns/element-anatomy/item-anatomy.js +71 -27
  58. package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -1
  59. package/ds-canonical/adapters/claude/agents/README.md +58 -0
  60. package/ds-canonical/adapters/claude/agents/canonical-reviewer.md +14 -0
  61. package/ds-canonical/adapters/claude-root-instructions.md +24 -0
  62. package/ds-canonical/adapters/claude-settings-base.json +172 -0
  63. package/ds-canonical/commands/README.md +8 -13
  64. package/ds-canonical/commands/gov-status.md +5 -75
  65. package/ds-canonical/fork/AGENTS.md +116 -213
  66. package/ds-canonical/fork/CLAUDE.md +54 -0
  67. package/ds-canonical/fork/codex/agents/skills/bug-fix-rhythm/SKILL.md +207 -0
  68. package/ds-canonical/fork/codex/agents/skills/code-quality-audit/SKILL.md +71 -0
  69. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/SKILL.md +244 -0
  70. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/flow-diagram.md +180 -0
  71. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/handoff-template.md +177 -0
  72. package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  73. package/ds-canonical/fork/codex/agents/skills/independent-review/SKILL.md +29 -19
  74. package/ds-canonical/fork/codex/agents/skills/independent-review/agents/openai.yaml +4 -0
  75. package/ds-canonical/fork/codex/agents/skills/independent-review/references/evidence-contract.md +24 -0
  76. package/ds-canonical/fork/codex/agents/skills/performance-audit/SKILL.md +114 -0
  77. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/SKILL.md +244 -0
  78. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/audit-checks.md +250 -0
  79. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/common-misuses.md +329 -0
  80. package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/report-template.md +163 -0
  81. package/ds-canonical/fork/codex/agents/skills/propose-options/SKILL.md +190 -0
  82. package/ds-canonical/fork/codex/agents/skills/prototype/SKILL.md +246 -0
  83. package/ds-canonical/fork/codex/agents/skills/prototype/references/audit-checks.md +39 -0
  84. package/ds-canonical/fork/codex/agents/skills/prototype/references/benchmark-sources.md +94 -0
  85. package/ds-canonical/fork/codex/agents/skills/prototype/references/checkpoints.md +200 -0
  86. package/ds-canonical/fork/codex/agents/skills/prototype/references/evaluation-matrix.md +142 -0
  87. package/ds-canonical/fork/codex/agents/skills/prototype/references/ooux-template.md +198 -0
  88. package/ds-canonical/fork/codex/agents/skills/prototype/references/proposal-template.md +230 -0
  89. package/ds-canonical/fork/codex/agents/skills/scan-similar-bugs/SKILL.md +212 -0
  90. package/ds-canonical/fork/codex/agents/skills/ux-audit/SKILL.md +135 -0
  91. package/ds-canonical/fork/codex/agents/skills/visual-audit/SKILL.md +259 -0
  92. package/ds-canonical/fork/codex/agents/skills/visual-audit/output/.gitkeep +0 -0
  93. package/ds-canonical/fork/codex/agents/skills/visual-audit/references/audit-architecture.md +101 -0
  94. package/ds-canonical/fork/codex/agents/skills/visual-audit/references/visual-checklist.md +297 -0
  95. package/ds-canonical/fork/codex/agents/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  96. package/ds-canonical/fork/codex/hooks.json +44 -3
  97. package/ds-canonical/fork/common/closed-tool-execution.mjs +1001 -0
  98. package/ds-canonical/fork/common/instruction.md +116 -0
  99. package/ds-canonical/fork/consumer/governance-check.mjs +3059 -0
  100. package/ds-canonical/fork/consumer/lib/closed-tool-execution.mjs +1001 -0
  101. package/ds-canonical/fork/consumer/lock.json +189 -0
  102. package/ds-canonical/fork/consumer/lock.schema.json +338 -0
  103. package/ds-canonical/fork/consumer/managed-files/0235cf6b3fd402a3717881dc205b5bf77aed7632e7d7d6f1811a40e3033bd816.blob +145 -0
  104. package/ds-canonical/fork/consumer/managed-files/145aab4b4fc470fc9ba7679b4a1d87d4f6a6d604940bd40f8d675c8af696498f.blob +47 -0
  105. package/ds-canonical/fork/consumer/managed-files/189e551431181e4a88783c02130d2787b801ef731c86e35bcde89a7313aa020e.blob +149 -0
  106. package/ds-canonical/fork/consumer/managed-files/24ad71c8613ddcf6fd23818cb3bb477a1fb6d83af4550b0bad43099813088686.blob +28 -0
  107. package/ds-canonical/fork/consumer/managed-files/2d1ef5617a5ce3c39ad9aae1c42af7d199f9270c0a0ccb490b63d62dbc6913db.blob +1001 -0
  108. package/ds-canonical/fork/consumer/managed-files/3625e02235cf166a50649a4d704cfb68fead69d0e168c481df013ebae9f6be25.blob +1412 -0
  109. package/ds-canonical/fork/consumer/managed-files/3ddedc67b464bdfe3dde9803a2d917920c96d633678b802eee638a44cd47366a.blob +8 -0
  110. package/ds-canonical/fork/consumer/managed-files/423729840acdd43c812f17c245b871716c6b60f76e4d3e94864d0e34a815bf8d.blob +348 -0
  111. package/ds-canonical/fork/consumer/managed-files/46f10bc55cdfdf834d0749eebff42ea0bb8576f361b36d2b6ba1851354c50150.blob +464 -0
  112. package/ds-canonical/fork/consumer/managed-files/475fba657eaeb8abd88f60635f3eadab27a9d0d3114ba4fffc65f43a2a0fe6e2.blob +124 -0
  113. package/ds-canonical/fork/consumer/managed-files/61c6aca6d7f04bedbf556eaa9d3043681fe48cbe0e93a8ccb1d69a7c5e23fdcf.blob +113 -0
  114. package/ds-canonical/fork/consumer/managed-files/63061e05969667005020166ea2ae7df3c96663f7a928e7dd3eebc1471022df56.blob +2398 -0
  115. package/ds-canonical/fork/consumer/managed-files/65410b66e8799a560e07b71779c186fed2a0ef50575ac44745df7a0938a9c2b4.blob +317 -0
  116. package/ds-canonical/fork/consumer/managed-files/6929a3c8bb4d69c507720b4754aeb339c6cbb8ff655e0a381d76606d64695e38.blob +393 -0
  117. package/ds-canonical/fork/consumer/managed-files/6b746628ac11fcccbe277ef6fea94cc2a7b90ea2822e83536eae80d5ee4b3fa5.blob +167 -0
  118. package/ds-canonical/fork/consumer/managed-files/76d485470d30ff014afacf7ce643763de9f4f956d9fc8128dbc1814774cf2e63.blob +671 -0
  119. package/ds-canonical/fork/consumer/managed-files/77e06f62670dfee01e9b5e8b0f8dad085ce711d75538c1fb0679d9818acaca82.blob +424 -0
  120. package/ds-canonical/fork/consumer/managed-files/7937321877e5c34c27dae36c0d507d21cd42fa3f46a8f11a284b8b4a52b6faa4.blob +84 -0
  121. package/ds-canonical/fork/consumer/managed-files/794bb911ba8ebef58ab0d44a55b9968a19d2c62bcfb310b1ee3a84166f087f21.blob +880 -0
  122. package/ds-canonical/fork/consumer/managed-files/7b17835d0ceb17cdcdcaf930540a3e5d0943a34a747ac43c12ca8cd485c11581.blob +44 -0
  123. package/ds-canonical/fork/consumer/managed-files/7eb6cc60abfdabaf6617c336058fad1454ccde08889295767bfd9b7fd153cc6e.blob +778 -0
  124. package/ds-canonical/fork/consumer/managed-files/81037efa5b3b9f4a875704005fb268acdc9233bb901f44902e4e37e1da92b8e3.blob +46 -0
  125. package/ds-canonical/fork/consumer/managed-files/884721550b56308812b20917adac7a12f36fdb4ecda6b02460a7f5a219c0c966.blob +78 -0
  126. package/ds-canonical/fork/consumer/managed-files/91f414b9462ddc1e4be1d4c6ca4ac7a7340a6eec9e98ee109cbc049d3b354b6a.blob +36 -0
  127. package/ds-canonical/fork/consumer/managed-files/92e4828cdcb96ff0d01daa16f6885f24045a8e72820665650f2a1890dc3a446c.blob +121 -0
  128. package/ds-canonical/fork/consumer/managed-files/93a89f16f6717d1e4e4e27ec20ef916e3355c7aa890ca74cd9b12db30d8a899f.blob +43 -0
  129. package/ds-canonical/fork/consumer/managed-files/974521d6b8fe796ea4c58b3c78b0c2b8a1be262b97100d77aaf4cc9c7724bcab.blob +45 -0
  130. package/ds-canonical/fork/consumer/managed-files/9791c85388d2e2e2bd564e2550fadc3351c4c960a47ce838098afcba7544eb90.blob +959 -0
  131. package/ds-canonical/fork/consumer/managed-files/a448d2222133335c30e6fda5116e26a40db3283a19d62ccc0663c30d272262a7.blob +174 -0
  132. package/ds-canonical/fork/consumer/managed-files/ab072e7f2eca51f0e18a5e18c4b333260ee5d219a12cc6df5bb2d683f0b2734d.blob +2636 -0
  133. package/ds-canonical/fork/consumer/managed-files/bc44cabad181f766611dab6a8f52d81100afadd50ac59799015e8ba7bf46d9eb.blob +596 -0
  134. package/ds-canonical/fork/consumer/managed-files/c4aa767f11714467de0038a2149cf78074baddc17fc6a9e074b6aed7544c6f3c.blob +80 -0
  135. package/ds-canonical/fork/consumer/managed-files/c893e9b734b162f4c631fef871128c16a9ab565f796a0e76d7f320f821f220f5.blob +41 -0
  136. package/ds-canonical/fork/consumer/managed-files/cd9c61f8ff24fb9bcc3663e346e2cfa419cfb84e02aae18d3dc66dd192681696.blob +9 -0
  137. package/ds-canonical/fork/consumer/managed-files/da2ad2737315d25a5300905ddefd62f1695056a8a1af155c5b34170ad9923bce.blob +38 -0
  138. package/ds-canonical/fork/consumer/managed-files/e1b11160d6c4043002d2cbff6d9a4ae551698a96137773c4244dadfac152fcb0.blob +222 -0
  139. package/ds-canonical/fork/consumer/managed-files/e26057408661597aac4a57cdf7e30e2f9d0afb1b9a2dbbb692c3805cd9028ca5.blob +250 -0
  140. package/ds-canonical/fork/consumer/managed-files/e68ae1915965d8e17d4b2441c00c2b97fe062ea308ae8535c9eebb2fc16fa245.blob +20 -0
  141. package/ds-canonical/fork/consumer/managed-files/e71c65f45c6af7ce12b6b3c0d8028f185da5b719e2050c9b2a6b243d41ae4878.blob +182 -0
  142. package/ds-canonical/fork/consumer/managed-files/e813096d69c49812e40e00be9ac8fa14d77f0ec1f97ab4c45cb096b3bedd35de.blob +3 -0
  143. package/ds-canonical/fork/consumer/managed-files/e930ebca6fd8eeb30802aac0930efae7bcc44cc0996f24de07c11ca6a081fedf.blob +277 -0
  144. package/ds-canonical/fork/consumer/managed-files/ea94e914d5c8acb84ad7660e5bda0f01b6ccc8cf96b0f6b1ce048f8938d0f5b5.blob +47 -0
  145. package/ds-canonical/fork/consumer/managed-files/f4db6e616d5229aa7e700c6a3ace022cb9d90baae74e38ca65fce617f18e0d9b.blob +110 -0
  146. package/ds-canonical/fork/consumer/managed-files/faa128c26102415dc5345e68698efbbd28a395c35ee278dceae044cf430692b2.blob +11 -0
  147. package/ds-canonical/fork/governance.lock +1552 -103
  148. package/ds-canonical/fork/hooks/_log-fire.sh +109 -12
  149. package/ds-canonical/fork/hooks/block_prototype_imports.py +148 -29
  150. package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +23 -12
  151. package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +116 -65
  152. package/ds-canonical/fork/hooks/check_consumer_code_quality.sh +140 -0
  153. package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +84 -30
  154. package/ds-canonical/fork/hooks/check_dynamic_tailwind_class.sh +16 -6
  155. package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +65 -21
  156. package/ds-canonical/fork/hooks/check_field_family_invariants.sh +90 -24
  157. package/ds-canonical/fork/hooks/check_fork_product_quality.sh +8 -6
  158. package/ds-canonical/fork/hooks/check_item_list_gap.sh +4 -2
  159. package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +31 -13
  160. package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +220 -95
  161. package/ds-canonical/fork/hooks/check_pattern_invariants.sh +73 -14
  162. package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +23 -12
  163. package/ds-canonical/fork/hooks/check_story_determinism.sh +1 -1
  164. package/ds-canonical/fork/hooks/check_story_invariants.sh +342 -61
  165. package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
  166. package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
  167. package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +105 -22
  168. package/ds-canonical/fork/hooks/lib/_hook_integrity.sh +158 -0
  169. package/ds-canonical/fork/hooks/lib/_provider_paths.sh +162 -0
  170. package/ds-canonical/fork/launchers/approval-evidence.mjs +1131 -0
  171. package/ds-canonical/fork/launchers/authority-decision-evidence.mjs +413 -0
  172. package/ds-canonical/fork/launchers/canonical-order.mjs +8 -0
  173. package/ds-canonical/fork/launchers/fork-governance-dispatcher.sh +139 -29
  174. package/ds-canonical/fork/launchers/format-provider-hook-output.mjs +25 -0
  175. package/ds-canonical/fork/launchers/independent-review.mjs +490 -0
  176. package/ds-canonical/fork/launchers/inject_fork_governance_preamble.sh +88 -43
  177. package/ds-canonical/fork/launchers/normalize-provider-event.mjs +355 -0
  178. package/ds-canonical/fork/launchers/product-hook-dispatch-runtime.mjs +1067 -0
  179. package/ds-canonical/fork/launchers/provider-hook-normalization.mjs +1646 -0
  180. package/ds-canonical/fork/launchers/provider-hook-output-transport.mjs +525 -0
  181. package/ds-canonical/fork/launchers/settings-hooks.json +30 -53
  182. package/ds-canonical/fork/manifest.json +1881 -23
  183. package/ds-canonical/fork/providers/claude/hook-config.json +333 -0
  184. package/ds-canonical/fork/providers/claude/instruction.md +54 -0
  185. package/ds-canonical/fork/providers/claude/skills/bug-fix-rhythm/SKILL.md +207 -0
  186. package/ds-canonical/fork/providers/claude/skills/code-quality-audit/SKILL.md +71 -0
  187. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/SKILL.md +244 -0
  188. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/flow-diagram.md +180 -0
  189. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/handoff-template.md +177 -0
  190. package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  191. package/ds-canonical/fork/providers/claude/skills/independent-review/SKILL.md +43 -0
  192. package/ds-canonical/fork/providers/claude/skills/independent-review/agents/openai.yaml +4 -0
  193. package/ds-canonical/fork/providers/claude/skills/independent-review/references/evidence-contract.md +24 -0
  194. package/ds-canonical/fork/providers/claude/skills/performance-audit/SKILL.md +114 -0
  195. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/SKILL.md +244 -0
  196. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/audit-checks.md +250 -0
  197. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/common-misuses.md +329 -0
  198. package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/report-template.md +163 -0
  199. package/ds-canonical/fork/providers/claude/skills/propose-options/SKILL.md +190 -0
  200. package/ds-canonical/fork/providers/claude/skills/prototype/SKILL.md +246 -0
  201. package/ds-canonical/fork/providers/claude/skills/prototype/references/audit-checks.md +39 -0
  202. package/ds-canonical/fork/providers/claude/skills/prototype/references/benchmark-sources.md +94 -0
  203. package/ds-canonical/fork/providers/claude/skills/prototype/references/checkpoints.md +200 -0
  204. package/ds-canonical/fork/providers/claude/skills/prototype/references/evaluation-matrix.md +142 -0
  205. package/ds-canonical/fork/providers/claude/skills/prototype/references/ooux-template.md +198 -0
  206. package/ds-canonical/fork/providers/claude/skills/prototype/references/proposal-template.md +230 -0
  207. package/ds-canonical/fork/providers/claude/skills/scan-similar-bugs/SKILL.md +212 -0
  208. package/ds-canonical/fork/providers/claude/skills/ux-audit/SKILL.md +135 -0
  209. package/ds-canonical/fork/providers/claude/skills/visual-audit/SKILL.md +259 -0
  210. package/ds-canonical/fork/providers/claude/skills/visual-audit/output/.gitkeep +0 -0
  211. package/ds-canonical/fork/providers/claude/skills/visual-audit/references/audit-architecture.md +101 -0
  212. package/ds-canonical/fork/providers/claude/skills/visual-audit/references/visual-checklist.md +297 -0
  213. package/ds-canonical/fork/providers/claude/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  214. package/ds-canonical/fork/providers/codex/hook-config.json +57 -0
  215. package/ds-canonical/fork/providers/codex/skills/bug-fix-rhythm/SKILL.md +207 -0
  216. package/ds-canonical/fork/providers/codex/skills/code-quality-audit/SKILL.md +71 -0
  217. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/SKILL.md +244 -0
  218. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/flow-diagram.md +180 -0
  219. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/handoff-template.md +177 -0
  220. package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  221. package/ds-canonical/fork/providers/codex/skills/independent-review/SKILL.md +43 -0
  222. package/ds-canonical/fork/providers/codex/skills/independent-review/agents/openai.yaml +4 -0
  223. package/ds-canonical/fork/providers/codex/skills/independent-review/references/evidence-contract.md +24 -0
  224. package/ds-canonical/fork/providers/codex/skills/performance-audit/SKILL.md +114 -0
  225. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/SKILL.md +244 -0
  226. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/audit-checks.md +250 -0
  227. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/common-misuses.md +329 -0
  228. package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/report-template.md +163 -0
  229. package/ds-canonical/fork/providers/codex/skills/propose-options/SKILL.md +190 -0
  230. package/ds-canonical/fork/providers/codex/skills/prototype/SKILL.md +246 -0
  231. package/ds-canonical/fork/providers/codex/skills/prototype/references/audit-checks.md +39 -0
  232. package/ds-canonical/fork/providers/codex/skills/prototype/references/benchmark-sources.md +94 -0
  233. package/ds-canonical/fork/providers/codex/skills/prototype/references/checkpoints.md +200 -0
  234. package/ds-canonical/fork/providers/codex/skills/prototype/references/evaluation-matrix.md +142 -0
  235. package/ds-canonical/fork/providers/codex/skills/prototype/references/ooux-template.md +198 -0
  236. package/ds-canonical/fork/providers/codex/skills/prototype/references/proposal-template.md +230 -0
  237. package/ds-canonical/fork/providers/codex/skills/scan-similar-bugs/SKILL.md +212 -0
  238. package/ds-canonical/fork/providers/codex/skills/ux-audit/SKILL.md +135 -0
  239. package/ds-canonical/fork/providers/codex/skills/visual-audit/SKILL.md +259 -0
  240. package/ds-canonical/fork/providers/codex/skills/visual-audit/output/.gitkeep +0 -0
  241. package/ds-canonical/fork/providers/codex/skills/visual-audit/references/audit-architecture.md +101 -0
  242. package/ds-canonical/fork/providers/codex/skills/visual-audit/references/visual-checklist.md +297 -0
  243. package/ds-canonical/fork/providers/codex/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  244. package/ds-canonical/fork/references/story-baseline-registry.json +117 -0
  245. package/ds-canonical/fork/references/story-baseline-registry.schema.json +145 -0
  246. package/ds-canonical/fork/references/utility-registry.json +377 -0
  247. package/ds-canonical/fork/references/utility-registry.schema.json +373 -0
  248. package/ds-canonical/fork/review/canonical-order.mjs +8 -0
  249. package/ds-canonical/fork/review/provider-review-binding.mjs +2377 -0
  250. package/ds-canonical/fork/skills/bug-fix-rhythm/SKILL.md +19 -12
  251. package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +19 -15
  252. package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +17 -11
  253. package/ds-canonical/fork/skills/independent-review/SKILL.md +37 -0
  254. package/ds-canonical/fork/skills/independent-review/agents/openai.yaml +4 -0
  255. package/ds-canonical/fork/skills/independent-review/references/evidence-contract.md +24 -0
  256. package/ds-canonical/fork/skills/performance-audit/SKILL.md +11 -8
  257. package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +31 -21
  258. package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +9 -5
  259. package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +30 -26
  260. package/ds-canonical/fork/skills/propose-options/SKILL.md +6 -4
  261. package/ds-canonical/fork/skills/prototype/SKILL.md +21 -21
  262. package/ds-canonical/fork/skills/prototype/references/audit-checks.md +7 -6
  263. package/ds-canonical/fork/skills/prototype/references/checkpoints.md +26 -17
  264. package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +2 -1
  265. package/ds-canonical/fork/skills/prototype/references/ooux-template.md +1 -1
  266. package/ds-canonical/fork/skills/prototype/references/proposal-template.md +6 -5
  267. package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +28 -27
  268. package/ds-canonical/fork/skills/ux-audit/SKILL.md +8 -5
  269. package/ds-canonical/fork/skills/visual-audit/SKILL.md +37 -43
  270. package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +15 -15
  271. package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +6 -6
  272. package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +2 -2
  273. package/ds-canonical/hooks/README.md +37 -23
  274. package/ds-canonical/hooks/_log-fire.sh +109 -12
  275. package/ds-canonical/hooks/auto_regen_ds_barrel.sh +52 -20
  276. package/ds-canonical/hooks/block_prototype_imports.py +148 -29
  277. package/ds-canonical/hooks/check_audit_post_report_validator.sh +76 -66
  278. package/ds-canonical/hooks/check_audit_sample_escape.sh +4 -4
  279. package/ds-canonical/hooks/check_benchmark_citation.sh +3 -3
  280. package/ds-canonical/hooks/check_canonical_propagation.sh +81 -22
  281. package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +22 -11
  282. package/ds-canonical/hooks/check_codex_brief_invariants.sh +100 -56
  283. package/ds-canonical/hooks/check_codex_collab_5step.sh +31 -25
  284. package/ds-canonical/hooks/check_consumer_app_invariants.sh +116 -65
  285. package/ds-canonical/hooks/check_consumer_code_quality.sh +140 -0
  286. package/ds-canonical/hooks/check_datatable_invariants.sh +103 -25
  287. package/ds-canonical/hooks/check_dim_count_drift.sh +5 -4
  288. package/ds-canonical/hooks/check_ds_anchor_preflight.sh +83 -29
  289. package/ds-canonical/hooks/check_dynamic_tailwind_class.sh +16 -6
  290. package/ds-canonical/hooks/check_escape_marker_abuse.sh +65 -21
  291. package/ds-canonical/hooks/check_field_controls_contracts.sh +10 -8
  292. package/ds-canonical/hooks/check_field_family_invariants.sh +90 -24
  293. package/ds-canonical/hooks/check_file_size_budget.sh +32 -14
  294. package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +60 -21
  295. package/ds-canonical/hooks/check_item_list_gap.sh +4 -2
  296. package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +31 -13
  297. package/ds-canonical/hooks/check_main_branch_workbench.sh +27 -68
  298. package/ds-canonical/hooks/check_naming_and_abstraction.sh +20 -9
  299. package/ds-canonical/hooks/check_opacity_token_usage.sh +220 -95
  300. package/ds-canonical/hooks/check_orphan_ds_css.sh +48 -18
  301. package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +29 -11
  302. package/ds-canonical/hooks/check_pattern_invariants.sh +73 -14
  303. package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +4 -4
  304. package/ds-canonical/hooks/check_pixel_quantified_audit.sh +3 -2
  305. package/ds-canonical/hooks/check_plugin_fork_health.sh +151 -41
  306. package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +5 -109
  307. package/ds-canonical/hooks/check_propose_discipline.sh +116 -29
  308. package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +6 -4
  309. package/ds-canonical/hooks/check_propose_without_benchmark.sh +10 -6
  310. package/ds-canonical/hooks/check_select_all_canonical.sh +1 -1
  311. package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +22 -11
  312. package/ds-canonical/hooks/check_solo_workflow.sh +117 -186
  313. package/ds-canonical/hooks/check_spec_class_drift.sh +33 -19
  314. package/ds-canonical/hooks/check_ssot_header_declaration.sh +6 -5
  315. package/ds-canonical/hooks/check_story_determinism.sh +1 -1
  316. package/ds-canonical/hooks/check_story_invariants.sh +526 -213
  317. package/ds-canonical/hooks/check_storybook_addon_packaging.sh +65 -15
  318. package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +137 -67
  319. package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
  320. package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
  321. package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +15 -12
  322. package/ds-canonical/hooks/chrome_header_dispatcher.sh +75 -26
  323. package/ds-canonical/hooks/enforce_home_charter.sh +29 -8
  324. package/ds-canonical/hooks/governance_control_plane.sh +15 -0
  325. package/ds-canonical/hooks/inject_deploy_url_after_push.sh +105 -22
  326. package/ds-canonical/hooks/inject_pending_self_audit.sh +27 -24
  327. package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +77 -29
  328. package/ds-canonical/hooks/lib/_approval_re.sh +5 -6
  329. package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +66 -20
  330. package/ds-canonical/hooks/lib/_code_quality.sh +9 -9
  331. package/ds-canonical/hooks/lib/_cva_default_sync.sh +11 -13
  332. package/ds-canonical/hooks/lib/_governance_coverage_check.sh +48 -21
  333. package/ds-canonical/hooks/lib/_hardcoded_strings.sh +13 -10
  334. package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +68 -48
  335. package/ds-canonical/hooks/lib/_hook_integrity.sh +158 -0
  336. package/ds-canonical/hooks/lib/_layout_space_canonical.sh +5 -5
  337. package/ds-canonical/hooks/lib/_overlay_handcraft.sh +21 -23
  338. package/ds-canonical/hooks/lib/_person_data_richness.sh +5 -5
  339. package/ds-canonical/hooks/lib/_provider_paths.sh +162 -0
  340. package/ds-canonical/hooks/lib/_story_compile_drift.sh +5 -5
  341. package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +247 -27
  342. package/ds-canonical/hooks/lib/_token_hygiene.sh +39 -22
  343. package/ds-canonical/hooks/lib/approval-evidence.mjs +1131 -0
  344. package/ds-canonical/hooks/lib/audit-report-validator.mjs +118 -0
  345. package/ds-canonical/hooks/lib/provider-marker-regex.mjs +23 -0
  346. package/ds-canonical/hooks/lib/tsx-governance-analysis.mjs +410 -0
  347. package/ds-canonical/hooks/log_governance_fires.sh +45 -13
  348. package/ds-canonical/hooks/log_skill_invokes.sh +8 -7
  349. package/ds-canonical/hooks/post_edit_dispatcher.sh +106 -28
  350. package/ds-canonical/hooks/registrations.json +488 -0
  351. package/ds-canonical/hooks/registrations.schema.json +58 -0
  352. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh +1 -1
  353. package/ds-canonical/hooks/retired/check_governance_compliance.sh +1 -1
  354. package/ds-canonical/hooks/session_start_governance_check.sh +109 -78
  355. package/ds-canonical/hooks/stop_audit_content_quality.sh +20 -0
  356. package/ds-canonical/hooks/stop_extract_canonical_rules.sh +20 -0
  357. package/ds-canonical/hooks/stop_passive_logging.sh +133 -59
  358. package/ds-canonical/hooks/stop_self_audit.sh +349 -210
  359. package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v1.jsonl +3 -0
  360. package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v2.jsonl +3 -0
  361. package/ds-canonical/hooks/tests/registration-output-contracts.mjs +151 -0
  362. package/ds-canonical/hooks/tests/run-all.sh +35 -5
  363. package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +48 -4
  364. package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +157 -9
  365. package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +265 -127
  366. package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +119 -12
  367. package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +0 -0
  368. package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +0 -0
  369. package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +56 -5
  370. package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +6 -6
  371. package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +193 -100
  372. package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +143 -17
  373. package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +49 -5
  374. package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +128 -0
  375. package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +2 -2
  376. package/ds-canonical/hooks/tests/test_check_consumer_code_quality.sh +64 -0
  377. package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +2 -2
  378. package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +2 -2
  379. package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +2 -2
  380. package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +26 -8
  381. package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +126 -12
  382. package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +13 -8
  383. package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +53 -7
  384. package/ds-canonical/hooks/tests/test_check_dynamic_tailwind_class.sh +3 -3
  385. package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +17 -7
  386. package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +72 -16
  387. package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +67 -5
  388. package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +107 -4
  389. package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +25 -15
  390. package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +177 -67
  391. package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +7 -7
  392. package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +2 -2
  393. package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +45 -110
  394. package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +19 -2
  395. package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +114 -8
  396. package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +38 -22
  397. package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +2 -2
  398. package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +68 -6
  399. package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +53 -0
  400. package/ds-canonical/hooks/tests/test_check_post_main_ssot_propagate.sh +37 -0
  401. package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +2 -2
  402. package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +59 -0
  403. package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +7 -5
  404. package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +5 -5
  405. package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +45 -0
  406. package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +5 -5
  407. package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +183 -105
  408. package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +35 -7
  409. package/ds-canonical/hooks/tests/{test_check_story_anatomy.sh.broken → test_check_story_anatomy.sh} +73 -4
  410. package/ds-canonical/hooks/tests/{test_check_story_category.sh.broken → test_check_story_category.sh} +82 -2
  411. package/ds-canonical/hooks/tests/test_check_story_determinism.sh +39 -0
  412. package/ds-canonical/hooks/tests/test_check_story_invariants.sh +559 -43
  413. package/ds-canonical/hooks/tests/{test_check_story_name_jargon.sh.broken → test_check_story_name_jargon.sh} +22 -1
  414. package/ds-canonical/hooks/tests/test_check_storybook_addon_packaging.sh +79 -0
  415. package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +2 -2
  416. package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +546 -28
  417. package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +180 -98
  418. package/ds-canonical/hooks/tests/test_check_tabs_content_chrome_body_double_gap.sh +3 -3
  419. package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +2 -2
  420. package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +63 -15
  421. package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +12 -6
  422. package/ds-canonical/hooks/tests/test_chrome_header_dispatcher.sh +125 -0
  423. package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +57 -3
  424. package/ds-canonical/hooks/tests/test_governance_control_plane.sh +66 -0
  425. package/ds-canonical/hooks/tests/test_governance_coverage_check.sh +88 -0
  426. package/ds-canonical/hooks/tests/test_hook_integrity_classification.sh +217 -0
  427. package/ds-canonical/hooks/tests/test_inject_deploy_url_after_push.sh +85 -2
  428. package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +116 -11
  429. package/ds-canonical/hooks/tests/test_log_governance_fires.sh +117 -1
  430. package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +74 -5
  431. package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +234 -77
  432. package/ds-canonical/hooks/tests/test_provider_peer_symmetry.sh +76 -0
  433. package/ds-canonical/hooks/tests/test_registration_output_contracts.sh +20 -0
  434. package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +130 -18
  435. package/ds-canonical/hooks/tests/test_stop_audit_content_quality.sh +75 -0
  436. package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +101 -23
  437. package/ds-canonical/hooks/tests/test_stop_extract_canonical_rules.sh +75 -0
  438. package/ds-canonical/hooks/tests/{test_stop_governance_drift_check.sh.broken → test_stop_governance_drift_check.sh} +22 -12
  439. package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +102 -1
  440. package/ds-canonical/hooks/tests/test_stop_repository_command_context.sh +38 -0
  441. package/ds-canonical/hooks/tests/test_stop_self_audit.sh +363 -9
  442. package/ds-canonical/references/README.md +8 -8
  443. package/ds-canonical/references/audit-coverage-vs-24-checklist.md +4 -4
  444. package/ds-canonical/references/build-ui-canonicals.md +3 -3
  445. package/ds-canonical/references/certified-surfaces.md +46 -15
  446. package/ds-canonical/references/cva-patterns.md +2 -2
  447. package/ds-canonical/references/failure-class-registry.json +3 -2
  448. package/ds-canonical/references/governance-audit-coverage.md +8 -8
  449. package/ds-canonical/references/naming-conventions.md +1 -1
  450. package/ds-canonical/references/preflight-gate-baseline.json +210 -3
  451. package/ds-canonical/references/principle-dim-map.json +15 -9
  452. package/ds-canonical/references/props-naming.md +1 -1
  453. package/ds-canonical/references/scenario-definition.md +33 -30
  454. package/ds-canonical/references/spec-rules.md +1 -1
  455. package/ds-canonical/references/ssot-consultation.md +3 -3
  456. package/ds-canonical/references/ssot-index.md +1 -1
  457. package/ds-canonical/references/story-baseline-registry.json +9 -6
  458. package/ds-canonical/references/story-baseline-registry.schema.json +145 -0
  459. package/ds-canonical/references/structural-token-retention.md +1 -1
  460. package/ds-canonical/references/tailwind-gotchas.md +2 -2
  461. package/ds-canonical/references/ui-dev-rules.md +1 -1
  462. package/ds-canonical/rules/README.md +14 -9
  463. package/ds-canonical/rules/meta-patterns.md +13 -13
  464. package/ds-canonical/rules/self-verify.md +12 -7
  465. package/ds-canonical/rules/spec-rules.md +1 -1
  466. package/ds-canonical/rules/ui-development.md +5 -5
  467. package/ds-canonical/skills/README.md +27 -15
  468. package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +14 -7
  469. package/ds-canonical/skills/canonical-reviewer/SKILL.md +29 -0
  470. package/ds-canonical/skills/code-quality-audit/SKILL.md +11 -7
  471. package/ds-canonical/skills/codex-collab/SKILL.md +19 -238
  472. package/ds-canonical/skills/codex-collab/references/brief-template.md +37 -47
  473. package/ds-canonical/skills/codex-collab/references/transport.md +38 -57
  474. package/ds-canonical/skills/codify-corrections/SKILL.md +32 -31
  475. package/ds-canonical/skills/codify-principle/SKILL.md +33 -32
  476. package/ds-canonical/skills/component-quality-gate/SKILL.md +13 -13
  477. package/ds-canonical/skills/component-quality-gate/references/checklist.md +7 -7
  478. package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +28 -229
  479. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +36 -131
  480. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +33 -187
  481. package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +22 -24
  482. package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +15 -79
  483. package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +24 -23
  484. package/ds-canonical/skills/delivery-handoff/SKILL.md +14 -8
  485. package/ds-canonical/skills/design-system-audit/SKILL.md +63 -62
  486. package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +86 -77
  487. package/ds-canonical/skills/design-system-audit/references/checkpoints.md +59 -50
  488. package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +8 -8
  489. package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +37 -32
  490. package/ds-canonical/skills/design-system-audit/references/rule-placement.md +39 -38
  491. package/ds-canonical/skills/ensure-canonical/SKILL.md +36 -34
  492. package/ds-canonical/skills/governance-health/SKILL.md +26 -22
  493. package/ds-canonical/skills/governance-status/SKILL.md +30 -0
  494. package/ds-canonical/skills/independent-review/SKILL.md +37 -0
  495. package/ds-canonical/skills/independent-review/agents/openai.yaml +4 -0
  496. package/ds-canonical/skills/independent-review/references/evidence-contract.md +24 -0
  497. package/ds-canonical/skills/knowledge-prune/SKILL.md +45 -52
  498. package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +10 -7
  499. package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +6 -6
  500. package/ds-canonical/skills/new-component/SKILL.md +18 -12
  501. package/ds-canonical/skills/new-component/references/new-component-checklist.md +7 -6
  502. package/ds-canonical/skills/performance-audit/SKILL.md +13 -10
  503. package/ds-canonical/skills/product-ui-audit/SKILL.md +27 -17
  504. package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +7 -4
  505. package/ds-canonical/skills/product-ui-audit/references/report-template.md +30 -26
  506. package/ds-canonical/skills/propose-options/SKILL.md +1 -1
  507. package/ds-canonical/skills/prototype/SKILL.md +19 -21
  508. package/ds-canonical/skills/prototype/references/audit-checks.md +6 -5
  509. package/ds-canonical/skills/prototype/references/checkpoints.md +26 -17
  510. package/ds-canonical/skills/prototype/references/ooux-template.md +1 -1
  511. package/ds-canonical/skills/prototype/references/proposal-template.md +4 -4
  512. package/ds-canonical/skills/scan-similar-bugs/SKILL.md +22 -21
  513. package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +21 -20
  514. package/ds-canonical/skills/story-writing/SKILL.md +12 -12
  515. package/ds-canonical/skills/story-writing/references/anatomy-standard.md +1 -1
  516. package/ds-canonical/skills/story-writing/references/category-templates.md +5 -5
  517. package/ds-canonical/skills/ux-audit/SKILL.md +12 -9
  518. package/ds-canonical/skills/visual-audit/SKILL.md +41 -47
  519. package/ds-canonical/skills/visual-audit/references/audit-architecture.md +7 -7
  520. package/ds-canonical/skills/visual-audit/references/visual-checklist.md +12 -12
  521. package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +3 -3
  522. package/ds-canonical/templates/_README.md +6 -7
  523. package/ds-canonical/templates/consumer-governance.md +78 -0
  524. package/ds-canonical/templates/dashboard-app.tsx +3 -1
  525. package/ds-canonical/templates/product-launchers/fork-governance-dispatcher.sh +154 -0
  526. package/ds-canonical/templates/product-launchers/format-provider-hook-output.mjs +25 -0
  527. package/ds-canonical/templates/product-launchers/independent-review.mjs +490 -0
  528. package/ds-canonical/templates/product-launchers/inject_fork_governance_preamble.sh +99 -0
  529. package/ds-canonical/templates/product-launchers/normalize-provider-event.mjs +355 -0
  530. package/ds-canonical/templates/product-launchers/product-hook-dispatch-runtime.mjs +1067 -0
  531. package/ds-canonical/templates/product-provider-wiring.json +80 -0
  532. package/ds-canonical/templates/product-provider-wiring.schema.json +151 -0
  533. package/llms-full.txt +6 -6
  534. package/llms.txt +2 -2
  535. package/package.json +15 -4
  536. package/src/components/Accordion/accordion.principles.stories.tsx +16 -26
  537. package/src/components/Accordion/accordion.stories.tsx +22 -40
  538. package/src/components/Calendar/calendar.spec.md +1 -1
  539. package/src/components/Calendar/calendar.tsx +59 -25
  540. package/src/components/DataTable/cell-registry.tsx +3 -7
  541. package/src/components/DataTable/data-table.spec.md +1 -0
  542. package/src/components/DataTable/data-table.tsx +9 -2
  543. package/src/components/DatePicker/date-picker.spec.md +1 -1
  544. package/src/components/DatePicker/date-picker.tsx +203 -147
  545. package/src/components/Dialog/dialog.spec.md +1 -1
  546. package/src/components/Dialog/dialog.tsx +8 -2
  547. package/src/components/Field/field-context.ts +25 -1
  548. package/src/components/Field/field-wrapper.tsx +7 -1
  549. package/src/components/Field/field.spec.md +7 -0
  550. package/src/components/Field/field.tsx +13 -2
  551. package/src/components/InlineEdit/inline-edit.spec.md +12 -0
  552. package/src/components/InlineEdit/inline-edit.stories.tsx +28 -17
  553. package/src/components/InlineEdit/inline-edit.tsx +94 -31
  554. package/src/components/Input/input.tsx +7 -2
  555. package/src/components/LinkInput/link-input.spec.md +1 -1
  556. package/src/components/LinkInput/link-input.tsx +5 -1
  557. package/src/components/Popover/popover.tsx +7 -2
  558. package/src/components/Select/select.principles.stories.tsx +4 -3
  559. package/src/components/Select/select.stories.tsx +7 -6
  560. package/src/components/Select/select.tsx +61 -29
  561. package/src/components/Textarea/textarea.spec.md +10 -1
  562. package/src/components/Textarea/textarea.tsx +38 -5
  563. package/src/components/TimePicker/time-picker.tsx +11 -5
  564. package/src/components/Tooltip/tooltip.spec.md +6 -0
  565. package/src/patterns/element-anatomy/item-anatomy.spec.md +8 -1
  566. package/src/patterns/element-anatomy/item-anatomy.tsx +111 -30
  567. package/src/patterns/element-anatomy/truncated-text.spec.md +13 -2
  568. package/src/tokens/uiSize/uiSize.css +11 -0
  569. package/src/tokens/uiSize/uiSize.spec.md +1 -0
  570. package/src/tokens/utility-registry.json +119 -4
  571. package/src/tokens/utility-registry.schema.json +373 -0
  572. package/tools/README.md +9 -0
  573. package/tools/codemods/cli.mjs +93 -0
  574. package/tools/codemods/index.mjs +582 -0
  575. package/tools/shared/safe-filesystem.mjs +371 -0
  576. package/tools/visual-baseline/cli.mjs +97 -0
  577. package/tools/visual-baseline/index.mjs +522 -0
  578. /package/dist/{react-day-picker.css → index.css} +0 -0
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "$schema": "./utility-registry.schema.json",
3
+ "schemaVersion": 1,
3
4
  "_meta": {
4
5
  "purpose": "Single SSOT for Tailwind utility allow/block — extracted from typography/radius/opacity/elevation/color spec.md 禁止 lists. Hook reads this(not grep spec.md)to enforce token-first discipline. New token additions or removals → update here first, spec.md cite registry.",
5
6
  "owner": "packages/design-system/src/tokens/utility-registry.json",
6
7
  "consumed_by": [
7
- ".claude/hooks/check_opacity_token_usage.sh",
8
- ".claude/skills/design-system-audit/references/audit-prompts.md Dim 5",
9
- ".claude/hooks/lib/_token_hygiene.sh"
8
+ "packages/design-system/ds-canonical/hooks/check_opacity_token_usage.sh",
9
+ "packages/design-system/ds-canonical/skills/design-system-audit/references/audit-prompts.md#Dim-5",
10
+ "packages/design-system/ds-canonical/hooks/lib/_token_hygiene.sh",
11
+ "packages/design-system/ds-canonical/hooks/check_consumer_code_quality.sh"
10
12
  ],
13
+ "provider_view_policy": ".claude/.agents/.codex projections are generated discovery adapters only; they are never registry owners or edit targets.",
11
14
  "spec_sources": [
12
15
  "packages/design-system/src/tokens/typography/typography.spec.md L118-156",
13
16
  "packages/design-system/src/tokens/radius/radius.spec.md L57-71",
@@ -66,6 +69,116 @@
66
69
  }
67
70
  }
68
71
  },
72
+ "enforcement": {
73
+ "schemaVersion": 1,
74
+ "engine": "utility-registry-rules-v1",
75
+ "block": [
76
+ {
77
+ "id": "typography-size",
78
+ "label": "typography size",
79
+ "tokenListPointer": "/typography/block/size_raw"
80
+ },
81
+ {
82
+ "id": "typography-weight",
83
+ "label": "typography weight",
84
+ "tokenListPointer": "/typography/block/weight_raw"
85
+ },
86
+ {
87
+ "id": "typography-leading-numeric",
88
+ "label": "leading numeric",
89
+ "pattern": "(?<![A-Za-z0-9_-])leading-[0-9]+(?:\\.[0-9]+)?(?![A-Za-z0-9_-])"
90
+ },
91
+ {
92
+ "id": "typography-tracking",
93
+ "label": "tracking raw",
94
+ "tokenListPointer": "/typography/block/tracking_raw"
95
+ },
96
+ {
97
+ "id": "typography-inline-style",
98
+ "label": "typography inline style",
99
+ "pattern": "style\\s*=\\s*\\{\\{[^}]*\\b(?:fontSize|lineHeight)\\s*:"
100
+ },
101
+ {
102
+ "id": "radius-out-of-range",
103
+ "label": "radius out-of-range",
104
+ "tokenListPointer": "/radius/block/out_of_range"
105
+ },
106
+ {
107
+ "id": "radius-ambiguous-default",
108
+ "label": "radius ambiguous default",
109
+ "tokenListPointer": "/radius/block/ambiguous_default"
110
+ },
111
+ {
112
+ "id": "radius-arbitrary-examples",
113
+ "label": "radius arbitrary",
114
+ "tokenListPointer": "/radius/block/arbitrary_value"
115
+ },
116
+ {
117
+ "id": "radius-arbitrary",
118
+ "label": "radius arbitrary",
119
+ "pattern": "(?<![A-Za-z0-9_-])rounded(?:-(?:t|b|l|r|tl|tr|bl|br|s|e|ss|se|es|ee))?-\\[[^\\]\\r\\n]+\\](?![A-Za-z0-9_-])",
120
+ "excludeTokenListPointer": "/radius/allow"
121
+ },
122
+ {
123
+ "id": "radius-inline-style",
124
+ "label": "radius inline style",
125
+ "pattern": "style\\s*=\\s*\\{\\{[^}]*\\bborderRadius\\s*:"
126
+ },
127
+ {
128
+ "id": "opacity-numeric-tier",
129
+ "label": "opacity",
130
+ "tokenListPointer": "/opacity/block/numeric_tier"
131
+ },
132
+ {
133
+ "id": "opacity-numeric",
134
+ "label": "opacity",
135
+ "pattern": "(?<![A-Za-z0-9_-])opacity-[0-9]+(?![A-Za-z0-9_-])",
136
+ "excludeTokenListPointer": "/opacity/allow"
137
+ },
138
+ {
139
+ "id": "opacity-arbitrary",
140
+ "label": "opacity arbitrary",
141
+ "pattern": "(?<![A-Za-z0-9_-])opacity-\\[[^\\]\\r\\n]+\\](?![A-Za-z0-9_-])"
142
+ },
143
+ {
144
+ "id": "elevation-tailwind-size",
145
+ "label": "elevation size",
146
+ "tokenListPointer": "/elevation/block/tailwind_size"
147
+ },
148
+ {
149
+ "id": "shadcn-color-alias",
150
+ "label": "shadcn alias",
151
+ "tokenListPointer": "/shadcn_alias/block/color_alias"
152
+ },
153
+ {
154
+ "id": "primitive-color-examples",
155
+ "label": "primitive color as utility",
156
+ "tokenListPointer": "/primitive_color_as_utility/block/primitive_class"
157
+ },
158
+ {
159
+ "id": "primitive-color-family",
160
+ "label": "primitive color as utility",
161
+ "pattern": "(?<![A-Za-z0-9_-])(?:bg|text|border)-(?:neutral|blue|red|green|yellow|orange|purple|pink|cyan|teal|deep-orange|deep-purple|light-blue|light-green|lime|amber|indigo|brown|gray)-[0-9]+(?![A-Za-z0-9_-])"
162
+ },
163
+ {
164
+ "id": "phantom-state-suffix",
165
+ "label": "phantom state suffix(silent no-op)",
166
+ "pattern": "(?<![A-Za-z0-9_-])(?:(?:hover|active|focus):)?(?:bg|text|border|ring)-[a-z][a-z-]*-(?:hovered|actived|focussed|pressed)(?![A-Za-z0-9_-])"
167
+ }
168
+ ],
169
+ "warn": [
170
+ {
171
+ "id": "spacing-micro-gap",
172
+ "label": "micro gap <4px",
173
+ "tokenListPointer": "/spacing/warn/micro_gap"
174
+ },
175
+ {
176
+ "id": "sizing-fraction-width",
177
+ "label": "fraction width",
178
+ "tokenListPointer": "/sizing/warn/fraction"
179
+ }
180
+ ]
181
+ },
69
182
  "typography": {
70
183
  "allow": [
71
184
  "text-h1",
@@ -138,7 +251,9 @@
138
251
  "rounded-2xl",
139
252
  "rounded-3xl"
140
253
  ],
141
- "ambiguous_default": "rounded(use rounded-md explicit)",
254
+ "ambiguous_default": [
255
+ "rounded"
256
+ ],
142
257
  "arbitrary_value": [
143
258
  "rounded-[6px]",
144
259
  "rounded-[var(--radius-md)]"
@@ -0,0 +1,373 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://qijenchen.dev/schemas/design-system/utility-registry-v1.json",
4
+ "title": "Design-system utility policy registry",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "$schema",
9
+ "schemaVersion",
10
+ "_meta",
11
+ "enforcement",
12
+ "typography",
13
+ "radius",
14
+ "opacity",
15
+ "elevation",
16
+ "spacing",
17
+ "sizing",
18
+ "shadcn_alias",
19
+ "primitive_color_as_utility"
20
+ ],
21
+ "properties": {
22
+ "$schema": { "const": "./utility-registry.schema.json" },
23
+ "schemaVersion": { "const": 1 },
24
+ "_meta": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": [
28
+ "purpose",
29
+ "owner",
30
+ "consumed_by",
31
+ "provider_view_policy",
32
+ "spec_sources",
33
+ "rationale",
34
+ "exceptions"
35
+ ],
36
+ "properties": {
37
+ "purpose": { "$ref": "#/$defs/nonEmptyString" },
38
+ "owner": {
39
+ "const": "packages/design-system/src/tokens/utility-registry.json"
40
+ },
41
+ "consumed_by": {
42
+ "type": "array",
43
+ "minItems": 1,
44
+ "uniqueItems": true,
45
+ "items": { "$ref": "#/$defs/canonicalReference" }
46
+ },
47
+ "provider_view_policy": { "$ref": "#/$defs/nonEmptyString" },
48
+ "spec_sources": {
49
+ "type": "array",
50
+ "minItems": 1,
51
+ "uniqueItems": true,
52
+ "items": { "$ref": "#/$defs/nonEmptyString" }
53
+ },
54
+ "rationale": { "$ref": "#/$defs/nonEmptyString" },
55
+ "exceptions": {
56
+ "type": "object",
57
+ "additionalProperties": false,
58
+ "required": [
59
+ "_added",
60
+ "anatomy_stories_inspector",
61
+ "token_stories_section_label",
62
+ "principles_stories_codepre",
63
+ "icon_as_text_and_numeric_in_circle"
64
+ ],
65
+ "properties": {
66
+ "_added": { "$ref": "#/$defs/nonEmptyString" },
67
+ "anatomy_stories_inspector": {
68
+ "allOf": [
69
+ { "$ref": "#/$defs/exceptionBase" },
70
+ {
71
+ "type": "object",
72
+ "additionalProperties": false,
73
+ "required": ["scope", "allowed_utilities", "rationale", "audit_dim_53_fix"],
74
+ "properties": {
75
+ "scope": { "$ref": "#/$defs/nonEmptyString" },
76
+ "allowed_utilities": { "$ref": "#/$defs/tokenArray" },
77
+ "rationale": { "$ref": "#/$defs/nonEmptyString" },
78
+ "audit_dim_53_fix": { "$ref": "#/$defs/nonEmptyString" }
79
+ }
80
+ }
81
+ ]
82
+ },
83
+ "token_stories_section_label": { "$ref": "#/$defs/standardException" },
84
+ "principles_stories_codepre": { "$ref": "#/$defs/standardException" },
85
+ "icon_as_text_and_numeric_in_circle": {
86
+ "type": "object",
87
+ "additionalProperties": false,
88
+ "required": [
89
+ "scope",
90
+ "allowed_utilities",
91
+ "rule_one_liner",
92
+ "rationale",
93
+ "current_consumers",
94
+ "non_goal"
95
+ ],
96
+ "properties": {
97
+ "scope": { "$ref": "#/$defs/nonEmptyString" },
98
+ "allowed_utilities": { "$ref": "#/$defs/tokenArray" },
99
+ "rule_one_liner": { "$ref": "#/$defs/nonEmptyString" },
100
+ "rationale": { "$ref": "#/$defs/nonEmptyString" },
101
+ "current_consumers": {
102
+ "type": "array",
103
+ "minItems": 1,
104
+ "uniqueItems": true,
105
+ "items": { "$ref": "#/$defs/nonEmptyString" }
106
+ },
107
+ "non_goal": { "$ref": "#/$defs/nonEmptyString" }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ },
114
+ "enforcement": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": ["schemaVersion", "engine", "block", "warn"],
118
+ "properties": {
119
+ "schemaVersion": { "const": 1 },
120
+ "engine": { "const": "utility-registry-rules-v1" },
121
+ "block": {
122
+ "type": "array",
123
+ "minItems": 18,
124
+ "maxItems": 18,
125
+ "items": { "$ref": "#/$defs/enforcementRule" }
126
+ },
127
+ "warn": {
128
+ "type": "array",
129
+ "minItems": 2,
130
+ "maxItems": 2,
131
+ "items": { "$ref": "#/$defs/enforcementRule" }
132
+ }
133
+ }
134
+ },
135
+ "typography": {
136
+ "type": "object",
137
+ "additionalProperties": false,
138
+ "required": ["allow", "block"],
139
+ "properties": {
140
+ "allow": { "$ref": "#/$defs/tokenArray" },
141
+ "block": {
142
+ "type": "object",
143
+ "additionalProperties": false,
144
+ "required": [
145
+ "size_raw",
146
+ "weight_raw",
147
+ "leading_numeric",
148
+ "tracking_raw",
149
+ "tracking_raw_rationale",
150
+ "inline_style",
151
+ "rationale_path"
152
+ ],
153
+ "properties": {
154
+ "size_raw": { "$ref": "#/$defs/tokenArray" },
155
+ "weight_raw": { "$ref": "#/$defs/tokenArray" },
156
+ "leading_numeric": { "$ref": "#/$defs/nonEmptyString" },
157
+ "tracking_raw": { "$ref": "#/$defs/tokenArray" },
158
+ "tracking_raw_rationale": { "$ref": "#/$defs/nonEmptyString" },
159
+ "inline_style": { "$ref": "#/$defs/nonEmptyString" },
160
+ "rationale_path": { "$ref": "#/$defs/nonEmptyString" }
161
+ }
162
+ }
163
+ }
164
+ },
165
+ "radius": {
166
+ "type": "object",
167
+ "additionalProperties": false,
168
+ "required": ["allow", "allow_note", "block"],
169
+ "properties": {
170
+ "allow": { "$ref": "#/$defs/tokenArray" },
171
+ "allow_note": { "$ref": "#/$defs/nonEmptyString" },
172
+ "block": {
173
+ "type": "object",
174
+ "additionalProperties": false,
175
+ "required": [
176
+ "out_of_range",
177
+ "ambiguous_default",
178
+ "arbitrary_value",
179
+ "inline_style",
180
+ "rationale_path"
181
+ ],
182
+ "properties": {
183
+ "out_of_range": { "$ref": "#/$defs/tokenArray" },
184
+ "ambiguous_default": { "$ref": "#/$defs/tokenArray" },
185
+ "arbitrary_value": { "$ref": "#/$defs/tokenArray" },
186
+ "inline_style": { "$ref": "#/$defs/nonEmptyString" },
187
+ "rationale_path": { "$ref": "#/$defs/nonEmptyString" }
188
+ }
189
+ }
190
+ }
191
+ },
192
+ "opacity": {
193
+ "type": "object",
194
+ "additionalProperties": false,
195
+ "required": ["allow", "block"],
196
+ "properties": {
197
+ "allow": { "$ref": "#/$defs/tokenArray" },
198
+ "block": {
199
+ "type": "object",
200
+ "additionalProperties": false,
201
+ "required": ["numeric_tier", "arbitrary_value", "rationale_path", "philosophy"],
202
+ "properties": {
203
+ "numeric_tier": { "$ref": "#/$defs/tokenArray" },
204
+ "arbitrary_value": { "$ref": "#/$defs/nonEmptyString" },
205
+ "rationale_path": { "$ref": "#/$defs/nonEmptyString" },
206
+ "philosophy": { "$ref": "#/$defs/nonEmptyString" }
207
+ }
208
+ }
209
+ }
210
+ },
211
+ "elevation": {
212
+ "type": "object",
213
+ "additionalProperties": false,
214
+ "required": ["allow", "block"],
215
+ "properties": {
216
+ "allow": { "$ref": "#/$defs/tokenArray" },
217
+ "block": {
218
+ "type": "object",
219
+ "additionalProperties": false,
220
+ "required": ["tailwind_size", "rationale_path", "philosophy"],
221
+ "properties": {
222
+ "tailwind_size": { "$ref": "#/$defs/tokenArray" },
223
+ "rationale_path": { "$ref": "#/$defs/nonEmptyString" },
224
+ "philosophy": { "$ref": "#/$defs/nonEmptyString" }
225
+ }
226
+ }
227
+ }
228
+ },
229
+ "spacing": {
230
+ "type": "object",
231
+ "additionalProperties": false,
232
+ "required": ["allow_canonical", "warn"],
233
+ "properties": {
234
+ "allow_canonical": { "$ref": "#/$defs/nonEmptyString" },
235
+ "warn": {
236
+ "type": "object",
237
+ "additionalProperties": false,
238
+ "required": ["micro_gap", "rationale"],
239
+ "properties": {
240
+ "micro_gap": { "$ref": "#/$defs/tokenArray" },
241
+ "rationale": { "$ref": "#/$defs/nonEmptyString" }
242
+ }
243
+ }
244
+ }
245
+ },
246
+ "sizing": {
247
+ "type": "object",
248
+ "additionalProperties": false,
249
+ "required": ["warn"],
250
+ "properties": {
251
+ "warn": {
252
+ "type": "object",
253
+ "additionalProperties": false,
254
+ "required": ["fraction", "rationale"],
255
+ "properties": {
256
+ "fraction": { "$ref": "#/$defs/tokenArray" },
257
+ "rationale": { "$ref": "#/$defs/nonEmptyString" }
258
+ }
259
+ }
260
+ }
261
+ },
262
+ "shadcn_alias": {
263
+ "type": "object",
264
+ "additionalProperties": false,
265
+ "required": ["block"],
266
+ "properties": {
267
+ "block": {
268
+ "type": "object",
269
+ "additionalProperties": false,
270
+ "required": ["color_alias", "rationale", "rationale_path"],
271
+ "properties": {
272
+ "color_alias": { "$ref": "#/$defs/tokenArray" },
273
+ "rationale": { "$ref": "#/$defs/nonEmptyString" },
274
+ "rationale_path": { "$ref": "#/$defs/nonEmptyString" }
275
+ }
276
+ }
277
+ }
278
+ },
279
+ "primitive_color_as_utility": {
280
+ "type": "object",
281
+ "additionalProperties": false,
282
+ "required": ["block"],
283
+ "properties": {
284
+ "block": {
285
+ "type": "object",
286
+ "additionalProperties": false,
287
+ "required": ["primitive_class", "rationale"],
288
+ "properties": {
289
+ "primitive_class": { "$ref": "#/$defs/tokenArray" },
290
+ "rationale": { "$ref": "#/$defs/nonEmptyString" }
291
+ }
292
+ }
293
+ }
294
+ }
295
+ },
296
+ "$defs": {
297
+ "nonEmptyString": {
298
+ "type": "string",
299
+ "minLength": 1,
300
+ "pattern": "^[^\\u0000-\\u001F\\u007F]+$"
301
+ },
302
+ "canonicalReference": {
303
+ "type": "string",
304
+ "minLength": 1,
305
+ "pattern": "^(?!\\.claude(?:/|$)|\\.agents(?:/|$)|\\.codex(?:/|$))(?!/)(?!.*(?:^|/)\\.\\.?/)(?!.*\\\\)[A-Za-z0-9_.@/#-]+(?: [A-Za-z0-9_.@/#()-]+)*$"
306
+ },
307
+ "tokenArray": {
308
+ "type": "array",
309
+ "minItems": 1,
310
+ "uniqueItems": true,
311
+ "items": {
312
+ "type": "string",
313
+ "minLength": 1,
314
+ "pattern": "^[^\\s\\u0000-\\u001F\\u007F]+$"
315
+ }
316
+ },
317
+ "exceptionBase": {
318
+ "type": "object"
319
+ },
320
+ "standardException": {
321
+ "type": "object",
322
+ "additionalProperties": false,
323
+ "required": ["scope", "allowed_utilities", "rationale"],
324
+ "properties": {
325
+ "scope": { "$ref": "#/$defs/nonEmptyString" },
326
+ "allowed_utilities": { "$ref": "#/$defs/tokenArray" },
327
+ "rationale": { "$ref": "#/$defs/nonEmptyString" }
328
+ }
329
+ },
330
+ "enforcementRule": {
331
+ "oneOf": [
332
+ {
333
+ "type": "object",
334
+ "additionalProperties": false,
335
+ "required": ["id", "label", "tokenListPointer"],
336
+ "properties": {
337
+ "id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
338
+ "label": { "$ref": "#/$defs/nonEmptyString" },
339
+ "tokenListPointer": {
340
+ "enum": [
341
+ "/typography/block/size_raw",
342
+ "/typography/block/weight_raw",
343
+ "/typography/block/tracking_raw",
344
+ "/radius/block/out_of_range",
345
+ "/radius/block/ambiguous_default",
346
+ "/radius/block/arbitrary_value",
347
+ "/opacity/block/numeric_tier",
348
+ "/elevation/block/tailwind_size",
349
+ "/shadcn_alias/block/color_alias",
350
+ "/primitive_color_as_utility/block/primitive_class",
351
+ "/spacing/warn/micro_gap",
352
+ "/sizing/warn/fraction"
353
+ ]
354
+ }
355
+ }
356
+ },
357
+ {
358
+ "type": "object",
359
+ "additionalProperties": false,
360
+ "required": ["id", "label", "pattern"],
361
+ "properties": {
362
+ "id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
363
+ "label": { "$ref": "#/$defs/nonEmptyString" },
364
+ "pattern": { "$ref": "#/$defs/nonEmptyString" },
365
+ "excludeTokenListPointer": {
366
+ "enum": ["/radius/allow", "/opacity/allow"]
367
+ }
368
+ }
369
+ }
370
+ ]
371
+ }
372
+ }
373
+ }
@@ -0,0 +1,9 @@
1
+ # Design-system migration tools
2
+
3
+ This directory is shipped inside `@qijenchen/design-system`; it is the provider-neutral runtime for versioned API codemods and reviewed visual-baseline updates. Claude, Codex, hosted environments, and future models call the same package binaries and therefore do not own parallel migration logic.
4
+
5
+ - `codemods/`: exact TypeScript AST binding, versioned migration plans, manual blockers, digest-bound check/apply, and rollback-safe pathname publication.
6
+ - `visual-baseline/`: full PNG decode/CRC validation, content-addressed image statements, signed human or activated managed-broker review, and `apply-reviewed` without Git mutation.
7
+ - `shared/`: no-link path validation and the common exclusive transaction/rollback primitive.
8
+
9
+ The transaction claim is limited to cooperating writers that honor the same lock plus observed per-file pathname CAS. These tools do not claim parent-directory-swap resistance, storage power-loss durability, or protection from a non-cooperative writer that retains an old open file descriptor.
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync, realpathSync } from 'node:fs'
3
+ import { relative, resolve, sep } from 'node:path'
4
+ import { fileURLToPath } from 'node:url'
5
+ import {
6
+ BETA_84_MIGRATION_ID,
7
+ applyCodemodProposal,
8
+ checkCodemodProposal,
9
+ planCodemod,
10
+ } from './index.mjs'
11
+ import { canonicalJson, writeAtomicFile } from '../shared/safe-filesystem.mjs'
12
+
13
+ function fail(message) {
14
+ throw new Error(`design-system codemod CLI blocked:${message}`)
15
+ }
16
+
17
+ function parse(argv) {
18
+ const [migrationId, command, ...tokens] = argv
19
+ if (migrationId !== BETA_84_MIGRATION_ID) fail(`first argument must be ${BETA_84_MIGRATION_ID}`)
20
+ if (!['plan', 'check', 'apply'].includes(command)) fail('command must be plan, check, or apply')
21
+ const options = { migrationId, command, root: '.', sources: [], output: null, proposal: null, expectedDigest: null }
22
+ for (let index = 0; index < tokens.length; index += 1) {
23
+ const token = tokens[index]
24
+ const next = () => {
25
+ const value = tokens[++index]
26
+ if (!value || value.startsWith('--')) fail(`${token} requires a value`)
27
+ return value
28
+ }
29
+ if (token === '--root') options.root = next()
30
+ else if (token === '--source') options.sources.push(next())
31
+ else if (token === '--output') options.output = next()
32
+ else if (token === '--proposal') options.proposal = next()
33
+ else if (token === '--expected-proposal-digest') options.expectedDigest = next()
34
+ else fail(`unknown option:${token}`)
35
+ }
36
+ return options
37
+ }
38
+
39
+ function relativeOutput(root, value) {
40
+ const absoluteRoot = resolve(root)
41
+ const absolute = resolve(absoluteRoot, value)
42
+ const path = relative(absoluteRoot, absolute)
43
+ if (!path || path === '..' || path.startsWith(`..${sep}`)) fail('output must be a file below --root')
44
+ return path.split(sep).join('/')
45
+ }
46
+
47
+ function readProposal(root, value) {
48
+ if (!value) fail('--proposal is required')
49
+ const absolute = resolve(root, value)
50
+ let proposal
51
+ try { proposal = JSON.parse(readFileSync(absolute, 'utf8')) } catch (error) { fail(`proposal is unavailable or invalid JSON:${error.message}`) }
52
+ return proposal
53
+ }
54
+
55
+ export function runCodemodCli(argv = process.argv.slice(2)) {
56
+ const options = parse(argv)
57
+ if (options.command === 'plan') {
58
+ if (options.proposal || options.expectedDigest) fail('plan does not accept apply/check evidence options')
59
+ const proposal = planCodemod({ repoRoot: options.root, sourceRoots: options.sources.length ? options.sources : ['.'] })
60
+ const body = Buffer.from(canonicalJson(proposal))
61
+ if (options.output) writeAtomicFile(resolve(options.root), relativeOutput(options.root, options.output), body, 'codemod proposal', fail)
62
+ else process.stdout.write(body)
63
+ if (proposal.blockers.length) {
64
+ process.stderr.write(`codemod blocked: ${proposal.blockers.length} manual blocker(s); proposal ${proposal.proposalDigest}\n`)
65
+ return 2
66
+ }
67
+ if (options.output) process.stdout.write(`${canonicalJson({ proposalDigest: proposal.proposalDigest, files: proposal.files.length, output: options.output })}`)
68
+ return 0
69
+ }
70
+ if (options.sources.length || options.output) fail(`${options.command} does not accept --source or --output`)
71
+ const proposal = readProposal(options.root, options.proposal)
72
+ const result = options.command === 'check'
73
+ ? checkCodemodProposal({ repoRoot: options.root, proposal })
74
+ : applyCodemodProposal({ repoRoot: options.root, proposal, expectedProposalDigest: options.expectedDigest })
75
+ process.stdout.write(canonicalJson(result))
76
+ return 0
77
+ }
78
+
79
+ function isMainModule(argvPath = process.argv[1]) {
80
+ if (!argvPath) return false
81
+ try {
82
+ return realpathSync(argvPath) === realpathSync(fileURLToPath(import.meta.url))
83
+ } catch {
84
+ return resolve(argvPath) === resolve(fileURLToPath(import.meta.url))
85
+ }
86
+ }
87
+
88
+ if (isMainModule()) {
89
+ try { process.exitCode = runCodemodCli() } catch (error) {
90
+ console.error(error.message)
91
+ process.exitCode = 1
92
+ }
93
+ }