@birdapi/velinstyle 1.1.0 → 1.2.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 (308) hide show
  1. package/README.de.md +87 -162
  2. package/README.md +188 -119
  3. package/cli/blueprint.js +98 -5
  4. package/cli/blueprints/app-chrome.html +18 -0
  5. package/cli/blueprints/benefits-grid.html +9 -0
  6. package/cli/blueprints/bottom-nav-mobile.html +2 -1
  7. package/cli/blueprints/cookie-consent.html +1 -1
  8. package/cli/blueprints/cta-band.html +6 -0
  9. package/cli/blueprints/faq-section.html +18 -0
  10. package/cli/blueprints/filter-bar.html +4 -4
  11. package/cli/blueprints/form-contact.html +6 -5
  12. package/cli/blueprints/hero-section.html +3 -3
  13. package/cli/blueprints/notification-center.html +1 -1
  14. package/cli/blueprints/onboarding.html +2 -1
  15. package/cli/blueprints/ops-console.html +29 -0
  16. package/cli/blueprints/pricing-band.html +37 -0
  17. package/cli/blueprints/process-steps.html +10 -0
  18. package/cli/blueprints/services-grid.html +9 -0
  19. package/cli/blueprints/settings-panel.html +8 -6
  20. package/cli/blueprints/split-hero.html +25 -0
  21. package/cli/blueprints/testimonials.html +8 -0
  22. package/cli/blueprints/trust-bar.html +10 -0
  23. package/cli/cli-manifest.json +81 -17
  24. package/cli/contrast-utils.js +97 -0
  25. package/cli/create.js +370 -0
  26. package/cli/docgen/extract-attributes.js +126 -10
  27. package/cli/docgen/extract-cli.js +3 -2
  28. package/cli/docgen/extract-components.js +61 -2
  29. package/cli/docgen/extract-utilities.js +10 -10
  30. package/cli/doctor.js +119 -0
  31. package/cli/index.js +531 -44
  32. package/cli/meta.js +84 -1
  33. package/cli/perf-audit.js +15 -2
  34. package/cli/prompt-engine.js +243 -0
  35. package/cli/review.js +268 -0
  36. package/cli/scaffold.js +119 -4
  37. package/cli/scanner-rules-data.js +7 -0
  38. package/cli/scanner.js +357 -4
  39. package/cli/serve.js +81 -0
  40. package/cli/skills.js +223 -0
  41. package/cli/wc-api.js +89 -0
  42. package/cli/workflow.js +42 -0
  43. package/components/index.js +2 -0
  44. package/components/runtime/component-loaders.js +2 -0
  45. package/components/velin-accordion.js +62 -13
  46. package/components/velin-bottom-nav.js +10 -0
  47. package/components/velin-calendar.js +212 -0
  48. package/components/velin-command.js +18 -2
  49. package/components/velin-data-table.js +78 -1
  50. package/components/velin-dialog.js +4 -1
  51. package/components/velin-drawer.js +2 -4
  52. package/components/velin-file-dropzone.js +162 -0
  53. package/components/velin-icon.js +22 -1
  54. package/components/velin-lightbox.js +5 -3
  55. package/components/velin-modal.js +2 -4
  56. package/components/velin-search.js +1 -1
  57. package/components/velin-sheet.js +2 -4
  58. package/core/a11y/component-contracts.json +20 -3
  59. package/core/meta/build.js +125 -5
  60. package/core/meta/design-constraints/contact.json +9 -0
  61. package/core/meta/design-constraints/faq.json +9 -0
  62. package/core/meta/design-constraints/hero.json +13 -0
  63. package/core/meta/knowledge/components.json +622 -0
  64. package/core/meta/knowledge/tokens.json +282 -0
  65. package/core/meta/pages/registry.json +294 -0
  66. package/core/meta/schema.js +3 -1
  67. package/core/meta/sections/registry.json +185 -0
  68. package/dist/chunks/{attributes-STYCS3O5.js → attributes-A423NX5J.js} +3 -3
  69. package/dist/chunks/{attributes-353XDOAX.js → attributes-F6UPIEVP.js} +1 -1
  70. package/dist/chunks/{attributes-ADOKLKA7.js → attributes-GLYXGGAL.js} +3 -3
  71. package/dist/chunks/{attributes-TPANLMLF.js → attributes-UFTYOSAU.js} +3 -3
  72. package/dist/chunks/attributes-XGLXLR2T.js +391 -0
  73. package/dist/chunks/attributes-YF4NI2QS.js +391 -0
  74. package/dist/chunks/browser-AUABBYUK.js +1544 -0
  75. package/dist/chunks/{chunk-RSMRR27R.js → chunk-2LSKX57P.js} +12 -10
  76. package/dist/chunks/{chunk-IEHKRARD.js → chunk-2TGCVDUL.js} +11 -9
  77. package/dist/chunks/{chunk-SRL6EWHP.js → chunk-5JWGUAPC.js} +17 -13
  78. package/dist/chunks/chunk-7YSO2OQ2.js +113 -0
  79. package/dist/chunks/{chunk-QVHYL3R4.js → chunk-BHR3ZG6U.js} +6 -6
  80. package/dist/chunks/{chunk-J472ERN2.js → chunk-JMSIHEYX.js} +15 -4
  81. package/dist/chunks/{chunk-MKZP2TBH.js → chunk-L7ZGUU4D.js} +2 -2
  82. package/dist/chunks/chunk-TUGIPKW5.js +113 -0
  83. package/dist/chunks/{highlight-GJHHV4KM.js → highlight-M2ELQNYK.js} +1 -1
  84. package/dist/chunks/runtime-entry.js +1 -1
  85. package/dist/chunks/{velin-accordion-FBIPAEXG.js → velin-accordion-WSY6BMLA.js} +64 -10
  86. package/dist/chunks/{velin-bottom-nav-7GEMPIM6.js → velin-bottom-nav-5RVRNGIP.js} +25 -0
  87. package/dist/chunks/{velin-bottom-nav-N3DFQR66.js → velin-bottom-nav-N5F4UO2I.js} +26 -1
  88. package/dist/chunks/velin-calendar-OFE6THUD.js +210 -0
  89. package/dist/chunks/velin-calendar-PGVNJTXK.js +217 -0
  90. package/dist/chunks/velin-calendar-XC7JRDSH.js +217 -0
  91. package/dist/chunks/{velin-code-block-CIAURDRJ.js → velin-code-block-ZGWG7JI5.js} +1 -1
  92. package/dist/chunks/{velin-combobox-NXS4QB4R.js → velin-combobox-56V2ZWT5.js} +1 -1
  93. package/dist/chunks/{velin-command-ONKO2A3J.js → velin-command-2HO2EKR6.js} +29 -2
  94. package/dist/chunks/{velin-command-TMLSRGIU.js → velin-command-ZJSLPK7B.js} +30 -3
  95. package/dist/chunks/{velin-copy-NYDBOKXT.js → velin-copy-XDQSV2XU.js} +1 -1
  96. package/dist/chunks/{velin-countdown-4ZVDGK4R.js → velin-countdown-V4Z5MA63.js} +1 -1
  97. package/dist/chunks/velin-data-table-UVR42UUM.js +372 -0
  98. package/dist/chunks/{velin-dialog-GTTZI564.js → velin-dialog-3YK2RPRV.js} +9 -2
  99. package/dist/chunks/{velin-dialog-ELFOZIXZ.js → velin-dialog-S24KAP4S.js} +3 -1
  100. package/dist/chunks/{velin-drawer-BE6TYN3H.js → velin-drawer-5PNU624J.js} +2 -4
  101. package/dist/chunks/{velin-drawer-DLL2GLT6.js → velin-drawer-CCM6S25D.js} +3 -5
  102. package/dist/chunks/{velin-email-RBX6ZR4S.js → velin-email-TNFONXPW.js} +1 -1
  103. package/dist/chunks/velin-file-dropzone-QRGF2JNA.js +154 -0
  104. package/dist/chunks/velin-file-dropzone-XIZMJ3NB.js +154 -0
  105. package/dist/chunks/{velin-icon-7M76DOPB.js → velin-icon-A6NCXGUK.js} +59 -17
  106. package/dist/chunks/{velin-icon-ZTSKUOVN.js → velin-icon-EC4B5XCM.js} +18 -5
  107. package/dist/chunks/{velin-lightbox-6E7CAATP.js → velin-lightbox-FFK4TUUP.js} +7 -6
  108. package/dist/chunks/{velin-lightbox-NXA3U2FM.js → velin-lightbox-P725FLTY.js} +5 -4
  109. package/dist/chunks/{velin-menubar-J66JXRWW.js → velin-menubar-6I2LM5HL.js} +1 -1
  110. package/dist/chunks/{velin-modal-5HYNNNUI.js → velin-modal-ICTMGRSU.js} +7 -8
  111. package/dist/chunks/{velin-modal-AEOTZ67O.js → velin-modal-JBNODH7D.js} +2 -4
  112. package/dist/chunks/{velin-popover-T72HK3DF.js → velin-popover-WZG2GHBL.js} +25 -4
  113. package/dist/chunks/{velin-rating-N4DI2XNL.js → velin-rating-QBBYRRBU.js} +1 -1
  114. package/dist/chunks/{velin-search-7B4KJ6TX.js → velin-search-B3L6J2RP.js} +2 -2
  115. package/dist/chunks/{velin-search-2XRQFBCS.js → velin-search-L3UG6NDQ.js} +5 -4
  116. package/dist/chunks/{velin-secure-field-6PV7RZDJ.js → velin-secure-field-DGYMP7OK.js} +1 -1
  117. package/dist/chunks/{velin-segmented-control-GYD5BIXQ.js → velin-segmented-control-P74GJPAR.js} +1 -1
  118. package/dist/chunks/{velin-sheet-R2Y67X6H.js → velin-sheet-M5GZZD7G.js} +2 -4
  119. package/dist/chunks/{velin-sheet-OUK6572T.js → velin-sheet-X7RXIWKV.js} +3 -5
  120. package/dist/chunks/{velin-stepper-X54WGHDG.js → velin-stepper-4YQJUHPC.js} +12 -5
  121. package/dist/chunks/{velin-toast-OMMOA2DK.js → velin-toast-UG5LWTG2.js} +5 -1
  122. package/dist/chunks/{velin-tooltip-BDHGRTQB.js → velin-tooltip-ZDH5SDLU.js} +1 -1
  123. package/dist/llms.txt +29 -7
  124. package/dist/search-index.json +156 -10
  125. package/dist/velin-agent.json +3973 -28
  126. package/dist/velinstyle-components.iife.js +1211 -284
  127. package/dist/velinstyle-components.js +1213 -284
  128. package/dist/velinstyle-components.min.js +266 -118
  129. package/dist/velinstyle.css +252 -67
  130. package/dist/velinstyle.d.ts +2 -0
  131. package/dist/velinstyle.min.css +1 -1
  132. package/package.json +20 -6
  133. package/packages/skill-engine/README.md +24 -0
  134. package/packages/skill-engine/package.json +7 -0
  135. package/packages/skill-engine/src/catalog.js +29 -0
  136. package/packages/skill-engine/src/index.js +5 -0
  137. package/packages/skill-engine/src/install.js +69 -0
  138. package/packages/skill-engine/src/registry.js +27 -0
  139. package/packages/skill-engine/src/resolve.js +68 -0
  140. package/packages/skill-engine/src/validate.js +40 -0
  141. package/packages/velinstyle-skills/README.md +6 -0
  142. package/packages/velinstyle-skills/adapter.json +8 -0
  143. package/packages/velinstyle-skills/bundles/landing-starter.bundle.yaml +12 -0
  144. package/packages/velinstyle-skills/bundles/review-suite.bundle.yaml +11 -0
  145. package/packages/velinstyle-skills/catalog.json +1004 -0
  146. package/packages/velinstyle-skills/graphs/component-ship.graph.yaml +14 -0
  147. package/packages/velinstyle-skills/graphs/landingpage.graph.yaml +21 -0
  148. package/packages/velinstyle-skills/graphs/release-gate.graph.yaml +15 -0
  149. package/packages/velinstyle-skills/index.js +22 -0
  150. package/packages/velinstyle-skills/package.json +7 -0
  151. package/packages/velinstyle-skills/packs/accessibility.pack.yaml +9 -0
  152. package/packages/velinstyle-skills/packs/design.pack.yaml +10 -0
  153. package/packages/velinstyle-skills/packs/documentation.pack.yaml +8 -0
  154. package/packages/velinstyle-skills/packs/enterprise.pack.yaml +10 -0
  155. package/packages/velinstyle-skills/packs/frontend.pack.yaml +10 -0
  156. package/packages/velinstyle-skills/packs/review.pack.yaml +9 -0
  157. package/packages/velinstyle-skills/projects/admin-panel.project.yaml +12 -0
  158. package/packages/velinstyle-skills/projects/blog.project.yaml +11 -0
  159. package/packages/velinstyle-skills/projects/documentation-portal.project.yaml +13 -0
  160. package/packages/velinstyle-skills/projects/ecommerce-shop.project.yaml +12 -0
  161. package/packages/velinstyle-skills/projects/landing-page.project.yaml +12 -0
  162. package/packages/velinstyle-skills/projects/laravel-dashboard.project.yaml +12 -0
  163. package/packages/velinstyle-skills/projects/marketing-website.project.yaml +14 -0
  164. package/packages/velinstyle-skills/projects/portfolio.project.yaml +12 -0
  165. package/packages/velinstyle-skills/registry.json +142 -0
  166. package/packages/velinstyle-skills/scripts/generate-assets.mjs +163 -0
  167. package/packages/velinstyle-skills/skills/velin-a11y-focus-keyboard/SKILL.md +57 -0
  168. package/packages/velinstyle-skills/skills/velin-a11y-page-checklist/SKILL.md +57 -0
  169. package/packages/velinstyle-skills/skills/velin-a11y-scan-fix/SKILL.md +57 -0
  170. package/packages/velinstyle-skills/skills/velin-ai-agent-briefing/SKILL.md +57 -0
  171. package/packages/velinstyle-skills/skills/velin-ai-plan-scaffold-review/SKILL.md +57 -0
  172. package/packages/velinstyle-skills/skills/velin-ai-skill-authoring/SKILL.md +57 -0
  173. package/packages/velinstyle-skills/skills/velin-components-accessibility-map/SKILL.md +57 -0
  174. package/packages/velinstyle-skills/skills/velin-components-api-contract/SKILL.md +57 -0
  175. package/packages/velinstyle-skills/skills/velin-components-recipe/SKILL.md +57 -0
  176. package/packages/velinstyle-skills/skills/velin-components-select-compose/SKILL.md +57 -0
  177. package/packages/velinstyle-skills/skills/velin-design-hero-compose/SKILL.md +57 -0
  178. package/packages/velinstyle-skills/skills/velin-design-section-rhythm/SKILL.md +57 -0
  179. package/packages/velinstyle-skills/skills/velin-design-surface-roles/SKILL.md +57 -0
  180. package/packages/velinstyle-skills/skills/velin-dev-component-wire/SKILL.md +57 -0
  181. package/packages/velinstyle-skills/skills/velin-dev-page-scaffold/SKILL.md +57 -0
  182. package/packages/velinstyle-skills/skills/velin-dev-plan-first/SKILL.md +57 -0
  183. package/packages/velinstyle-skills/skills/velin-docs-component-guide/SKILL.md +57 -0
  184. package/packages/velinstyle-skills/skills/velin-docs-generate-api/SKILL.md +57 -0
  185. package/packages/velinstyle-skills/skills/velin-dx-doctor-setup/SKILL.md +57 -0
  186. package/packages/velinstyle-skills/skills/velin-dx-project-init/SKILL.md +57 -0
  187. package/packages/velinstyle-skills/skills/velin-migration-legacy-wc/SKILL.md +57 -0
  188. package/packages/velinstyle-skills/skills/velin-migration-prefix-classes/SKILL.md +57 -0
  189. package/packages/velinstyle-skills/skills/velin-motion-reduced-safe/SKILL.md +57 -0
  190. package/packages/velinstyle-skills/skills/velin-motion-reveal-feedback/SKILL.md +57 -0
  191. package/packages/velinstyle-skills/skills/velin-perf-audit-fix/SKILL.md +57 -0
  192. package/packages/velinstyle-skills/skills/velin-perf-runtime-tree-shake/SKILL.md +57 -0
  193. package/packages/velinstyle-skills/skills/velin-release-changelog-sync/SKILL.md +57 -0
  194. package/packages/velinstyle-skills/skills/velin-release-meta-rebuild/SKILL.md +57 -0
  195. package/packages/velinstyle-skills/skills/velin-review-conversion-hero/SKILL.md +57 -0
  196. package/packages/velinstyle-skills/skills/velin-review-page-gate/SKILL.md +57 -0
  197. package/packages/velinstyle-skills/skills/velin-review-seo-meta/SKILL.md +57 -0
  198. package/packages/velinstyle-skills/skills/velin-security-sanitize-html/SKILL.md +57 -0
  199. package/packages/velinstyle-skills/skills/velin-security-scan-pii/SKILL.md +57 -0
  200. package/packages/velinstyle-skills/skills/velin-testing-a11y-suite/SKILL.md +57 -0
  201. package/packages/velinstyle-skills/skills/velin-testing-visual-smoke/SKILL.md +57 -0
  202. package/packages/velinstyle-skills/skills/velin-themes-apply-token/SKILL.md +57 -0
  203. package/packages/velinstyle-skills/skills/velin-themes-contrast-check/SKILL.md +57 -0
  204. package/packages/velinstyle-skills/skills/velin-utilities-layout-apply/SKILL.md +57 -0
  205. package/packages/velinstyle-skills/skills/velin-utilities-prefix-fix/SKILL.md +57 -0
  206. package/packages/velinstyle-skills/skills/velin-utilities-token-map/SKILL.md +57 -0
  207. package/packages/velinstyle-skills/templates/admin-panel.template.yaml +12 -0
  208. package/packages/velinstyle-skills/templates/blog.template.yaml +12 -0
  209. package/packages/velinstyle-skills/templates/documentation-portal.template.yaml +12 -0
  210. package/packages/velinstyle-skills/templates/ecommerce-shop.template.yaml +13 -0
  211. package/packages/velinstyle-skills/templates/landing-page.template.yaml +12 -0
  212. package/packages/velinstyle-skills/templates/laravel-dashboard.template.yaml +11 -0
  213. package/packages/velinstyle-skills/templates/marketing-website.template.yaml +13 -0
  214. package/packages/velinstyle-skills/templates/portfolio.template.yaml +12 -0
  215. package/schemas/component-knowledge.schema.json +33 -0
  216. package/schemas/design-constraint.schema.json +15 -0
  217. package/schemas/design-intelligence.schema.json +19 -0
  218. package/schemas/design-rule.schema.json +19 -0
  219. package/schemas/page-template.schema.json +24 -0
  220. package/schemas/review-report.schema.json +36 -0
  221. package/schemas/section.schema.json +22 -0
  222. package/schemas/skill-bundle.schema.json +15 -0
  223. package/schemas/skill-graph.schema.json +25 -0
  224. package/schemas/skill-pack.schema.json +14 -0
  225. package/schemas/skill-project.schema.json +16 -0
  226. package/schemas/skill-record.schema.json +27 -0
  227. package/schemas/skill-registry.schema.json +17 -0
  228. package/schemas/skill-template.schema.json +17 -0
  229. package/schemas/token-graph.schema.json +27 -0
  230. package/schemas/utility.schema.json +166 -0
  231. package/src/components/alert.css +22 -1
  232. package/src/components/calendar-dropzone.css +5 -0
  233. package/src/layout/app-shell.css +33 -0
  234. package/src/tokens/shadow.css +13 -0
  235. package/src/utilities/border.css +2 -0
  236. package/src/utilities/display.css +1 -24
  237. package/src/utilities/responsive.css +16 -1
  238. package/src/utilities/spacing.css +32 -0
  239. package/src/velinstyle.css +2 -0
  240. package/dist/chunks/attributes-3BZLI7XF.js +0 -364
  241. package/dist/chunks/attributes-4N5JP4CG.js +0 -364
  242. package/dist/chunks/attributes-5Q2WXGRC.js +0 -374
  243. package/dist/chunks/attributes-AIR7SVLK.js +0 -364
  244. package/dist/chunks/attributes-BGRN5XZO.js +0 -364
  245. package/dist/chunks/attributes-BVSQAYLR.js +0 -364
  246. package/dist/chunks/attributes-CDYFUY7Y.js +0 -364
  247. package/dist/chunks/attributes-JMYJZBPE.js +0 -364
  248. package/dist/chunks/attributes-R5JY3X4O.js +0 -374
  249. package/dist/chunks/attributes-TNSPQTHX.js +0 -374
  250. package/dist/chunks/chunk-2354NEBP.js +0 -109
  251. package/dist/chunks/chunk-2VNA7G7S.js +0 -109
  252. package/dist/chunks/chunk-AQLRJSGG.js +0 -109
  253. package/dist/chunks/chunk-EWPSDMQT.js +0 -109
  254. package/dist/chunks/chunk-LA7264K4.js +0 -85
  255. package/dist/chunks/chunk-QTJJ3DPO.js +0 -109
  256. package/dist/chunks/chunk-RZQVWFHW.js +0 -109
  257. package/dist/chunks/chunk-U4XHMZ7D.js +0 -109
  258. package/dist/chunks/chunk-V5YIUA6G.js +0 -109
  259. package/dist/chunks/chunk-XIET2VSZ.js +0 -109
  260. package/dist/chunks/chunk-XYLJ2GCB.js +0 -205
  261. package/dist/chunks/chunk-ZPSPKUYD.js +0 -109
  262. package/dist/chunks/highlight-XTHRKBA3.js +0 -37
  263. package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +0 -86
  264. package/dist/chunks/velin-carousel-Y5VCOABZ.js +0 -213
  265. package/dist/chunks/velin-code-block-ASUBTAQV.js +0 -119
  266. package/dist/chunks/velin-code-block-TSUKPY4C.js +0 -123
  267. package/dist/chunks/velin-code-block-Y6CM726Q.js +0 -119
  268. package/dist/chunks/velin-combobox-2KDTCQ7N.js +0 -155
  269. package/dist/chunks/velin-command-M7RNHUPR.js +0 -136
  270. package/dist/chunks/velin-copy-T5KDTDXP.js +0 -81
  271. package/dist/chunks/velin-countdown-5XSTN3BH.js +0 -101
  272. package/dist/chunks/velin-counter-ISCTEAHI.js +0 -118
  273. package/dist/chunks/velin-dialog-D2GUHSCD.js +0 -144
  274. package/dist/chunks/velin-dialog-IJLFDXAJ.js +0 -144
  275. package/dist/chunks/velin-dialog-TNS3WXMB.js +0 -144
  276. package/dist/chunks/velin-drawer-MJS6WCF7.js +0 -130
  277. package/dist/chunks/velin-email-N5B5ZYTE.js +0 -90
  278. package/dist/chunks/velin-icon-KZO3IEHG.js +0 -164
  279. package/dist/chunks/velin-lightbox-I75U6JF4.js +0 -140
  280. package/dist/chunks/velin-lightbox-QOTB4PRL.js +0 -140
  281. package/dist/chunks/velin-lightbox-UCD6N7HF.js +0 -140
  282. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +0 -67
  283. package/dist/chunks/velin-menubar-SFEXJE56.js +0 -86
  284. package/dist/chunks/velin-modal-2HOBXE6F.js +0 -176
  285. package/dist/chunks/velin-modal-GLI2XZZB.js +0 -176
  286. package/dist/chunks/velin-popover-EXINRIGJ.js +0 -145
  287. package/dist/chunks/velin-popover-OXX7MRZ6.js +0 -145
  288. package/dist/chunks/velin-popover-YKCCROJG.js +0 -145
  289. package/dist/chunks/velin-rating-XRQJV4LO.js +0 -91
  290. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +0 -58
  291. package/dist/chunks/velin-search-4YHJWYSS.js +0 -556
  292. package/dist/chunks/velin-search-LWHY23Q5.js +0 -474
  293. package/dist/chunks/velin-secure-field-H7FSBUJW.js +0 -95
  294. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +0 -109
  295. package/dist/chunks/velin-sheet-3OGI4HD7.js +0 -119
  296. package/dist/chunks/velin-sparkline-GVEANJVW.js +0 -184
  297. package/dist/chunks/velin-sparkline-KDA3GQAN.js +0 -162
  298. package/dist/chunks/velin-stepper-2ZIHLKGM.js +0 -141
  299. package/dist/chunks/velin-stepper-FYEUEWE6.js +0 -141
  300. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +0 -133
  301. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +0 -285
  302. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +0 -285
  303. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +0 -291
  304. package/dist/chunks/velin-toast-RCZ4CSUC.js +0 -109
  305. package/dist/chunks/velin-toast-WEUBTJG6.js +0 -109
  306. package/dist/chunks/velin-tooltip-664IOHZA.js +0 -112
  307. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +0 -103
  308. package/dist/chunks/worker-client-R6DBYPFT.js +0 -46
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "mime": "application/vnd.velinstyle.meta+json",
4
- "generatedAt": "2026-07-27T10:53:24.534Z",
4
+ "generatedAt": "2026-08-01T07:28:51.397Z",
5
5
  "framework": {
6
6
  "name": "@birdapi/velinstyle",
7
- "version": "1.1.0",
7
+ "version": "1.2.0",
8
8
  "homepage": "https://velinstyle.info",
9
9
  "repository": "https://github.com/SkyliteDesign/velinstyle.git",
10
- "tagline": "VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components."
10
+ "tagline": "VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.",
11
+ "pipeline": "Core Foundation → Design System → Knowledge Graph → Prompt Engine → Review Engine → AI Metadata"
11
12
  },
12
13
  "packageExports": [
13
14
  ".",
@@ -22,7 +23,8 @@
22
23
  "./attributes",
23
24
  "./highlight",
24
25
  "./meta",
25
- "./a11y"
26
+ "./a11y",
27
+ "./skills-registry"
26
28
  ],
27
29
  "release": {
28
30
  "breaking": [
@@ -31,7 +33,8 @@
31
33
  ],
32
34
  "migration": [
33
35
  "Replace velin-tooltip-wc / velin-stepper-wc with velin-tooltip / velin-stepper.",
34
- "Point AI tools at velin-agent.json or docs/llms.txt for framework context."
36
+ "Point AI tools at velin-agent.json or docs/llms.txt for framework context.",
37
+ "Prefer velinstyle scaffold / plan for page generation (plan → render → review)."
35
38
  ]
36
39
  },
37
40
  "components": {
@@ -39,6 +42,7 @@
39
42
  "velin-accordion",
40
43
  "velin-announcer",
41
44
  "velin-bottom-nav",
45
+ "velin-calendar",
42
46
  "velin-carousel",
43
47
  "velin-code-block",
44
48
  "velin-collapse",
@@ -52,6 +56,7 @@
52
56
  "velin-drawer",
53
57
  "velin-dropdown",
54
58
  "velin-email",
59
+ "velin-file-dropzone",
55
60
  "velin-form-summary",
56
61
  "velin-icon",
57
62
  "velin-lightbox",
@@ -75,11 +80,12 @@
75
80
  "velin-toast",
76
81
  "velin-tooltip"
77
82
  ],
78
- "count": 38,
83
+ "count": 40,
79
84
  "loaderTags": [
80
85
  "velin-accordion",
81
86
  "velin-announcer",
82
87
  "velin-bottom-nav",
88
+ "velin-calendar",
83
89
  "velin-carousel",
84
90
  "velin-code-block",
85
91
  "velin-collapse",
@@ -93,6 +99,7 @@
93
99
  "velin-drawer",
94
100
  "velin-dropdown",
95
101
  "velin-email",
102
+ "velin-file-dropzone",
96
103
  "velin-form-summary",
97
104
  "velin-icon",
98
105
  "velin-lightbox",
@@ -118,7 +125,7 @@
118
125
  "velin-tooltip",
119
126
  "velin-tooltip-wc"
120
127
  ],
121
- "loaderCount": 40,
128
+ "loaderCount": 42,
122
129
  "legacyAliases": [
123
130
  "velin-stepper-wc",
124
131
  "velin-tooltip-wc"
@@ -129,6 +136,3785 @@
129
136
  "velin-reveal"
130
137
  ]
131
138
  },
139
+ "knowledgeGraph": {
140
+ "components": [
141
+ {
142
+ "id": "css-button",
143
+ "kind": "css-component",
144
+ "classPrefix": "velin-btn",
145
+ "category": "actions",
146
+ "subcategory": "button",
147
+ "purpose": "Primary interactive control for actions and form submit.",
148
+ "family": "actions",
149
+ "maturity": "core",
150
+ "recommendedPages": [
151
+ "landing",
152
+ "saas",
153
+ "dashboard",
154
+ "shop"
155
+ ],
156
+ "recommendedSections": [
157
+ "hero",
158
+ "cta",
159
+ "contact",
160
+ "pricing"
161
+ ],
162
+ "compatibleWith": [
163
+ "css-card",
164
+ "css-input",
165
+ "velin-form-summary"
166
+ ],
167
+ "incompatibleWith": [],
168
+ "accessibility": {
169
+ "role": "native button/link",
170
+ "keyboard": "Enter/Space on button"
171
+ },
172
+ "seo": {
173
+ "impact": "low",
174
+ "notes": "CTA copy affects conversion, not crawl structure"
175
+ },
176
+ "performance": {
177
+ "cost": "css-only"
178
+ },
179
+ "variants": [
180
+ "primary",
181
+ "secondary",
182
+ "ghost",
183
+ "danger",
184
+ "sm",
185
+ "lg"
186
+ ],
187
+ "density": [
188
+ "comfortable",
189
+ "default",
190
+ "compact"
191
+ ],
192
+ "themeSupport": [
193
+ "light",
194
+ "dark",
195
+ "system"
196
+ ],
197
+ "motion": {
198
+ "hover": true,
199
+ "reducedMotionSafe": true
200
+ },
201
+ "examples": [
202
+ "<button class=\"velin-btn velin-btn--primary\">Save</button>"
203
+ ],
204
+ "promptKeywords": [
205
+ "button",
206
+ "cta",
207
+ "call to action",
208
+ "submit"
209
+ ],
210
+ "designIntelligence": {
211
+ "visualWeight": 4,
212
+ "importance": "primary",
213
+ "hierarchy": "action",
214
+ "spacingRules": [
215
+ "pair with gap-3 or gap-4 in CTA groups"
216
+ ],
217
+ "typographyRules": [
218
+ "label ≤ 3 words preferred"
219
+ ],
220
+ "animationRules": [
221
+ "no infinite pulse on primary CTA"
222
+ ],
223
+ "colorRules": [
224
+ "primary uses --velin-color-primary + on-primary text"
225
+ ],
226
+ "eyeFlow": "place primary CTA after supporting copy",
227
+ "compositionRules": [
228
+ "max 2 CTAs in hero"
229
+ ],
230
+ "commonMistakes": [
231
+ "three equal CTAs",
232
+ "low contrast ghost on muted"
233
+ ],
234
+ "bestPractices": [
235
+ "one primary + optional secondary"
236
+ ]
237
+ }
238
+ },
239
+ {
240
+ "id": "css-card",
241
+ "kind": "css-component",
242
+ "classPrefix": "velin-card",
243
+ "category": "content",
244
+ "subcategory": "card",
245
+ "purpose": "Grouped content surface for features, services, pricing tiers.",
246
+ "family": "surfaces",
247
+ "maturity": "core",
248
+ "recommendedPages": [
249
+ "landing",
250
+ "saas",
251
+ "agency",
252
+ "portfolio"
253
+ ],
254
+ "recommendedSections": [
255
+ "services",
256
+ "benefits",
257
+ "pricing"
258
+ ],
259
+ "compatibleWith": [
260
+ "css-button",
261
+ "css-badge",
262
+ "velin-icon"
263
+ ],
264
+ "incompatibleWith": [],
265
+ "accessibility": {
266
+ "notes": "Heading inside card; don't nest interactive without care"
267
+ },
268
+ "seo": {
269
+ "impact": "medium",
270
+ "notes": "Card headings help section semantics"
271
+ },
272
+ "performance": {
273
+ "cost": "css-only"
274
+ },
275
+ "variants": [
276
+ "raised",
277
+ "bordered"
278
+ ],
279
+ "density": [
280
+ "comfortable",
281
+ "default",
282
+ "compact"
283
+ ],
284
+ "themeSupport": [
285
+ "light",
286
+ "dark"
287
+ ],
288
+ "motion": {
289
+ "reducedMotionSafe": true
290
+ },
291
+ "examples": [
292
+ "<article class=\"velin-card\">…</article>"
293
+ ],
294
+ "promptKeywords": [
295
+ "card",
296
+ "feature",
297
+ "service",
298
+ "tile"
299
+ ],
300
+ "designIntelligence": {
301
+ "visualWeight": 3,
302
+ "importance": "secondary",
303
+ "hierarchy": "section-item",
304
+ "spacingRules": [
305
+ "grid gap-4 or gap-6"
306
+ ],
307
+ "typographyRules": [
308
+ "H3 title + short body"
309
+ ],
310
+ "animationRules": [
311
+ "optional entrance; respect reduced motion"
312
+ ],
313
+ "colorRules": [
314
+ "raised surface + text tokens"
315
+ ],
316
+ "eyeFlow": "scan titles across grid first",
317
+ "compositionRules": [
318
+ "2–4 columns desktop; 1 mobile"
319
+ ],
320
+ "commonMistakes": [
321
+ "uneven card heights with sparse content",
322
+ "too many cards above fold"
323
+ ],
324
+ "bestPractices": [
325
+ "equal structure: icon, title, text, optional link"
326
+ ]
327
+ }
328
+ },
329
+ {
330
+ "id": "css-input",
331
+ "kind": "css-component",
332
+ "classPrefix": "velin-input",
333
+ "category": "forms",
334
+ "subcategory": "field",
335
+ "purpose": "Text entry fields with labels for forms.",
336
+ "family": "forms",
337
+ "maturity": "core",
338
+ "recommendedPages": [
339
+ "landing",
340
+ "saas",
341
+ "dashboard",
342
+ "shop"
343
+ ],
344
+ "recommendedSections": [
345
+ "contact",
346
+ "login"
347
+ ],
348
+ "compatibleWith": [
349
+ "velin-form-summary",
350
+ "css-button"
351
+ ],
352
+ "incompatibleWith": [],
353
+ "accessibility": {
354
+ "notes": "Visible label required; wire aria-invalid via form-summary"
355
+ },
356
+ "seo": {
357
+ "impact": "low"
358
+ },
359
+ "performance": {
360
+ "cost": "css-only"
361
+ },
362
+ "variants": [
363
+ "default",
364
+ "invalid"
365
+ ],
366
+ "density": [
367
+ "default",
368
+ "compact",
369
+ "data-dense"
370
+ ],
371
+ "themeSupport": [
372
+ "light",
373
+ "dark"
374
+ ],
375
+ "motion": {},
376
+ "examples": [
377
+ "<label>Name<input class=\"velin-input\"></label>"
378
+ ],
379
+ "promptKeywords": [
380
+ "input",
381
+ "form field",
382
+ "text field"
383
+ ],
384
+ "designIntelligence": {
385
+ "visualWeight": 2,
386
+ "importance": "primary",
387
+ "hierarchy": "form-control",
388
+ "spacingRules": [
389
+ "stack fields with gap-4"
390
+ ],
391
+ "typographyRules": [
392
+ "label above field"
393
+ ],
394
+ "animationRules": [],
395
+ "colorRules": [
396
+ "invalid uses danger tokens"
397
+ ],
398
+ "eyeFlow": "label → field → help → errors summary",
399
+ "compositionRules": [
400
+ "group related fields"
401
+ ],
402
+ "commonMistakes": [
403
+ "placeholder-only labels"
404
+ ],
405
+ "bestPractices": [
406
+ "pair with velin-form-summary"
407
+ ]
408
+ }
409
+ },
410
+ {
411
+ "id": "css-alert",
412
+ "kind": "css-component",
413
+ "classPrefix": "velin-alert",
414
+ "category": "feedback",
415
+ "subcategory": "alert",
416
+ "purpose": "Inline status messages.",
417
+ "family": "feedback",
418
+ "maturity": "core",
419
+ "recommendedPages": [
420
+ "dashboard",
421
+ "saas",
422
+ "docs"
423
+ ],
424
+ "recommendedSections": [
425
+ "contact",
426
+ "onboarding"
427
+ ],
428
+ "compatibleWith": [
429
+ "velin-form-summary"
430
+ ],
431
+ "incompatibleWith": [],
432
+ "accessibility": {
433
+ "role": "status/alert depending on urgency"
434
+ },
435
+ "seo": {
436
+ "impact": "none"
437
+ },
438
+ "performance": {
439
+ "cost": "css-only"
440
+ },
441
+ "variants": [
442
+ "info",
443
+ "success",
444
+ "warning",
445
+ "danger"
446
+ ],
447
+ "density": [
448
+ "default",
449
+ "compact"
450
+ ],
451
+ "themeSupport": [
452
+ "light",
453
+ "dark"
454
+ ],
455
+ "motion": {},
456
+ "examples": [
457
+ "<div class=\"velin-alert velin-alert--info\">…</div>"
458
+ ],
459
+ "promptKeywords": [
460
+ "alert",
461
+ "banner",
462
+ "notice"
463
+ ],
464
+ "designIntelligence": {
465
+ "visualWeight": 3,
466
+ "importance": "secondary",
467
+ "hierarchy": "feedback",
468
+ "spacingRules": [
469
+ "margin-block before forms"
470
+ ],
471
+ "typographyRules": [
472
+ "concise message"
473
+ ],
474
+ "animationRules": [],
475
+ "colorRules": [
476
+ "semantic status tokens"
477
+ ],
478
+ "eyeFlow": "near the related control",
479
+ "compositionRules": [
480
+ "one alert per concern"
481
+ ],
482
+ "commonMistakes": [
483
+ "using alert for marketing hero"
484
+ ],
485
+ "bestPractices": [
486
+ "pair with actionable next step"
487
+ ]
488
+ }
489
+ },
490
+ {
491
+ "id": "css-nav",
492
+ "kind": "css-component",
493
+ "classPrefix": "velin-nav",
494
+ "category": "navigation",
495
+ "subcategory": "nav",
496
+ "purpose": "Site or app navigation chrome.",
497
+ "family": "navigation",
498
+ "maturity": "core",
499
+ "recommendedPages": [
500
+ "landing",
501
+ "corporate",
502
+ "docs",
503
+ "dashboard"
504
+ ],
505
+ "recommendedSections": [
506
+ "navbar"
507
+ ],
508
+ "compatibleWith": [
509
+ "velin-theme-toggle",
510
+ "velin-search"
511
+ ],
512
+ "incompatibleWith": [],
513
+ "accessibility": {
514
+ "notes": "Landmark nav; skip link on pages"
515
+ },
516
+ "seo": {
517
+ "impact": "high",
518
+ "notes": "Primary internal links"
519
+ },
520
+ "performance": {
521
+ "cost": "css-only"
522
+ },
523
+ "variants": [
524
+ "header",
525
+ "pills"
526
+ ],
527
+ "density": [
528
+ "comfortable",
529
+ "default",
530
+ "compact"
531
+ ],
532
+ "themeSupport": [
533
+ "light",
534
+ "dark"
535
+ ],
536
+ "motion": {},
537
+ "examples": [
538
+ "<nav class=\"velin-nav\">…</nav>"
539
+ ],
540
+ "promptKeywords": [
541
+ "navbar",
542
+ "navigation",
543
+ "header menu"
544
+ ],
545
+ "designIntelligence": {
546
+ "visualWeight": 3,
547
+ "importance": "primary",
548
+ "hierarchy": "chrome",
549
+ "spacingRules": [
550
+ "sticky optional; padding-inline token"
551
+ ],
552
+ "typographyRules": [
553
+ "short labels"
554
+ ],
555
+ "animationRules": [],
556
+ "colorRules": [
557
+ "base or raised surface"
558
+ ],
559
+ "eyeFlow": "logo → links → CTA",
560
+ "compositionRules": [
561
+ "one primary nav CTA max"
562
+ ],
563
+ "commonMistakes": [
564
+ "too many top-level items"
565
+ ],
566
+ "bestPractices": [
567
+ "5–7 primary links"
568
+ ]
569
+ }
570
+ },
571
+ {
572
+ "id": "velin-modal",
573
+ "kind": "web-component",
574
+ "tag": "velin-modal",
575
+ "category": "overlays",
576
+ "subcategory": "modal",
577
+ "purpose": "Blocking dialog overlay for focused tasks.",
578
+ "family": "overlays",
579
+ "maturity": "core",
580
+ "recommendedPages": [
581
+ "saas",
582
+ "dashboard",
583
+ "shop"
584
+ ],
585
+ "recommendedSections": [],
586
+ "compatibleWith": [
587
+ "css-button",
588
+ "velin-form-summary"
589
+ ],
590
+ "incompatibleWith": [
591
+ "velin-drawer",
592
+ "velin-sheet"
593
+ ],
594
+ "accessibility": {
595
+ "focusTrap": true,
596
+ "escapeCloses": true,
597
+ "inertBackground": true
598
+ },
599
+ "seo": {
600
+ "impact": "none",
601
+ "notes": "Do not put primary SEO content only in modal"
602
+ },
603
+ "performance": {
604
+ "cost": "lazy-ok"
605
+ },
606
+ "variants": [
607
+ "open"
608
+ ],
609
+ "density": [
610
+ "default"
611
+ ],
612
+ "themeSupport": [
613
+ "light",
614
+ "dark"
615
+ ],
616
+ "motion": {
617
+ "reducedMotionSafe": true
618
+ },
619
+ "examples": [
620
+ "<velin-modal><h2 slot=\"title\">…</h2></velin-modal>"
621
+ ],
622
+ "promptKeywords": [
623
+ "modal",
624
+ "dialog overlay",
625
+ "popup"
626
+ ],
627
+ "designIntelligence": {
628
+ "visualWeight": 5,
629
+ "importance": "primary",
630
+ "hierarchy": "overlay",
631
+ "spacingRules": [
632
+ "comfortable body padding"
633
+ ],
634
+ "typographyRules": [
635
+ "clear title"
636
+ ],
637
+ "animationRules": [
638
+ "short open/close; respect reduced motion"
639
+ ],
640
+ "colorRules": [
641
+ "overlay surface + dimmed backdrop"
642
+ ],
643
+ "eyeFlow": "title → body → actions",
644
+ "compositionRules": [
645
+ "prefer modal for blocking confirmations"
646
+ ],
647
+ "commonMistakes": [
648
+ "stacking multiple modals",
649
+ "missing close affordance"
650
+ ],
651
+ "bestPractices": [
652
+ "use focus-manager lifecycle"
653
+ ]
654
+ },
655
+ "api": {
656
+ "events": [
657
+ "velin-close"
658
+ ],
659
+ "methods": [
660
+ "open",
661
+ "close"
662
+ ]
663
+ }
664
+ },
665
+ {
666
+ "id": "velin-dialog",
667
+ "kind": "web-component",
668
+ "tag": "velin-dialog",
669
+ "category": "overlays",
670
+ "subcategory": "dialog",
671
+ "purpose": "Native dialog-based prompts and confirms.",
672
+ "family": "overlays",
673
+ "maturity": "core",
674
+ "recommendedPages": [
675
+ "saas",
676
+ "dashboard"
677
+ ],
678
+ "recommendedSections": [],
679
+ "compatibleWith": [
680
+ "css-button"
681
+ ],
682
+ "incompatibleWith": [],
683
+ "accessibility": {
684
+ "nativeDialog": true
685
+ },
686
+ "seo": {
687
+ "impact": "none"
688
+ },
689
+ "performance": {
690
+ "cost": "lazy-ok"
691
+ },
692
+ "variants": [],
693
+ "density": [
694
+ "default"
695
+ ],
696
+ "themeSupport": [
697
+ "light",
698
+ "dark"
699
+ ],
700
+ "motion": {},
701
+ "examples": [
702
+ "<velin-dialog></velin-dialog>"
703
+ ],
704
+ "promptKeywords": [
705
+ "confirm dialog",
706
+ "prompt dialog"
707
+ ],
708
+ "designIntelligence": {
709
+ "visualWeight": 5,
710
+ "importance": "primary",
711
+ "hierarchy": "overlay",
712
+ "spacingRules": [],
713
+ "typographyRules": [],
714
+ "animationRules": [],
715
+ "colorRules": [],
716
+ "eyeFlow": "message → actions",
717
+ "compositionRules": [
718
+ "use for confirm/prompt; modal for richer layouts"
719
+ ],
720
+ "commonMistakes": [
721
+ "listening only to deprecated velin-dialog-close"
722
+ ],
723
+ "bestPractices": [
724
+ "listen to velin-close"
725
+ ]
726
+ },
727
+ "api": {
728
+ "events": [
729
+ "velin-close",
730
+ "velin-dialog-close"
731
+ ]
732
+ }
733
+ },
734
+ {
735
+ "id": "velin-accordion",
736
+ "kind": "web-component",
737
+ "tag": "velin-accordion",
738
+ "category": "disclosure",
739
+ "subcategory": "accordion",
740
+ "purpose": "FAQ and progressive disclosure of related panels.",
741
+ "family": "disclosure",
742
+ "maturity": "core",
743
+ "recommendedPages": [
744
+ "landing",
745
+ "docs",
746
+ "saas",
747
+ "lawyer",
748
+ "healthcare"
749
+ ],
750
+ "recommendedSections": [
751
+ "faq"
752
+ ],
753
+ "compatibleWith": [
754
+ "css-card"
755
+ ],
756
+ "incompatibleWith": [],
757
+ "accessibility": {
758
+ "keyboard": "arrow keys / enter within pattern"
759
+ },
760
+ "seo": {
761
+ "impact": "medium",
762
+ "notes": "Keep question text in light DOM when possible"
763
+ },
764
+ "performance": {
765
+ "cost": "lazy-ok"
766
+ },
767
+ "variants": [],
768
+ "density": [
769
+ "comfortable",
770
+ "default"
771
+ ],
772
+ "themeSupport": [
773
+ "light",
774
+ "dark"
775
+ ],
776
+ "motion": {
777
+ "reducedMotionSafe": true
778
+ },
779
+ "examples": [
780
+ "<velin-accordion>…</velin-accordion>"
781
+ ],
782
+ "promptKeywords": [
783
+ "faq",
784
+ "accordion",
785
+ "disclosure"
786
+ ],
787
+ "designIntelligence": {
788
+ "visualWeight": 2,
789
+ "importance": "secondary",
790
+ "hierarchy": "section-body",
791
+ "spacingRules": [
792
+ "stack items tightly"
793
+ ],
794
+ "typographyRules": [
795
+ "questions as clear interrogatives"
796
+ ],
797
+ "animationRules": [
798
+ "expand/collapse brief"
799
+ ],
800
+ "colorRules": [
801
+ "base/raised"
802
+ ],
803
+ "eyeFlow": "scan questions vertically",
804
+ "compositionRules": [
805
+ "use in FAQ section after social proof"
806
+ ],
807
+ "commonMistakes": [
808
+ "marketing paragraphs as 'questions'"
809
+ ],
810
+ "bestPractices": [
811
+ "5–8 high-intent FAQs"
812
+ ]
813
+ }
814
+ },
815
+ {
816
+ "id": "velin-form-summary",
817
+ "kind": "web-component",
818
+ "tag": "velin-form-summary",
819
+ "category": "forms",
820
+ "subcategory": "validation",
821
+ "purpose": "Accessible error summary for forms.",
822
+ "family": "forms",
823
+ "maturity": "core",
824
+ "recommendedPages": [
825
+ "landing",
826
+ "saas",
827
+ "shop"
828
+ ],
829
+ "recommendedSections": [
830
+ "contact"
831
+ ],
832
+ "compatibleWith": [
833
+ "css-input",
834
+ "css-button"
835
+ ],
836
+ "incompatibleWith": [],
837
+ "accessibility": {
838
+ "role": "alert",
839
+ "wcag": [
840
+ "3.3.1",
841
+ "3.3.3"
842
+ ]
843
+ },
844
+ "seo": {
845
+ "impact": "none"
846
+ },
847
+ "performance": {
848
+ "cost": "lazy-ok"
849
+ },
850
+ "variants": [],
851
+ "density": [
852
+ "default"
853
+ ],
854
+ "themeSupport": [
855
+ "light",
856
+ "dark"
857
+ ],
858
+ "motion": {},
859
+ "examples": [
860
+ "<velin-form-summary></velin-form-summary>"
861
+ ],
862
+ "promptKeywords": [
863
+ "form errors",
864
+ "validation summary",
865
+ "contact form"
866
+ ],
867
+ "designIntelligence": {
868
+ "visualWeight": 4,
869
+ "importance": "primary",
870
+ "hierarchy": "form-feedback",
871
+ "spacingRules": [
872
+ "place before fields or at top of form"
873
+ ],
874
+ "typographyRules": [
875
+ "list each invalid field"
876
+ ],
877
+ "animationRules": [],
878
+ "colorRules": [
879
+ "danger tokens"
880
+ ],
881
+ "eyeFlow": "summary → first invalid field",
882
+ "compositionRules": [
883
+ "required on contact/checkout forms"
884
+ ],
885
+ "commonMistakes": [
886
+ "native-only bubbles without summary"
887
+ ],
888
+ "bestPractices": [
889
+ "wire aria-invalid via component"
890
+ ]
891
+ }
892
+ },
893
+ {
894
+ "id": "velin-theme-toggle",
895
+ "kind": "web-component",
896
+ "tag": "velin-theme-toggle",
897
+ "category": "theming",
898
+ "subcategory": "toggle",
899
+ "purpose": "Switch light/dark theme via data-velin-theme.",
900
+ "family": "theming",
901
+ "maturity": "core",
902
+ "recommendedPages": [
903
+ "docs",
904
+ "saas",
905
+ "dashboard"
906
+ ],
907
+ "recommendedSections": [
908
+ "navbar"
909
+ ],
910
+ "compatibleWith": [
911
+ "css-nav"
912
+ ],
913
+ "incompatibleWith": [],
914
+ "accessibility": {
915
+ "notes": "Accessible name for toggle"
916
+ },
917
+ "seo": {
918
+ "impact": "none"
919
+ },
920
+ "performance": {
921
+ "cost": "lazy-ok"
922
+ },
923
+ "variants": [],
924
+ "density": [
925
+ "default",
926
+ "compact"
927
+ ],
928
+ "themeSupport": [
929
+ "light",
930
+ "dark",
931
+ "system"
932
+ ],
933
+ "motion": {},
934
+ "examples": [
935
+ "<velin-theme-toggle></velin-theme-toggle>"
936
+ ],
937
+ "promptKeywords": [
938
+ "dark mode",
939
+ "theme toggle"
940
+ ],
941
+ "designIntelligence": {
942
+ "visualWeight": 1,
943
+ "importance": "tertiary",
944
+ "hierarchy": "chrome",
945
+ "spacingRules": [],
946
+ "typographyRules": [],
947
+ "animationRules": [],
948
+ "colorRules": [],
949
+ "eyeFlow": "corner of header",
950
+ "compositionRules": [
951
+ "header actions cluster"
952
+ ],
953
+ "commonMistakes": [
954
+ "forcing dark without attribute contract"
955
+ ],
956
+ "bestPractices": [
957
+ "follow ADR 0011 precedence"
958
+ ]
959
+ }
960
+ },
961
+ {
962
+ "id": "velin-data-table",
963
+ "kind": "web-component",
964
+ "tag": "velin-data-table",
965
+ "category": "data",
966
+ "subcategory": "table",
967
+ "purpose": "Progressive enhancement for sortable, filterable, paginated tables.",
968
+ "family": "data-display",
969
+ "maturity": "core",
970
+ "recommendedPages": [
971
+ "dashboard",
972
+ "crm",
973
+ "erp",
974
+ "docs"
975
+ ],
976
+ "recommendedSections": [
977
+ "navbar"
978
+ ],
979
+ "compatibleWith": [
980
+ "css-input",
981
+ "css-badge",
982
+ "velin-form-summary"
983
+ ],
984
+ "incompatibleWith": [],
985
+ "accessibility": {
986
+ "notes": "Requires caption/aria-label; aria-sort on headers"
987
+ },
988
+ "seo": {
989
+ "impact": "low",
990
+ "notes": "Often noindex app surfaces"
991
+ },
992
+ "performance": {
993
+ "cost": "dom-rows"
994
+ },
995
+ "variants": [
996
+ "sortable",
997
+ "filterable",
998
+ "paginated"
999
+ ],
1000
+ "density": [
1001
+ "default",
1002
+ "compact",
1003
+ "data-dense"
1004
+ ],
1005
+ "themeSupport": [
1006
+ "light",
1007
+ "dark"
1008
+ ],
1009
+ "motion": {
1010
+ "reducedMotionSafe": true
1011
+ },
1012
+ "examples": [
1013
+ "<velin-data-table><table>…</table></velin-data-table>"
1014
+ ],
1015
+ "promptKeywords": [
1016
+ "data table",
1017
+ "sortable table",
1018
+ "filter table"
1019
+ ],
1020
+ "designIntelligence": {
1021
+ "visualWeight": 4,
1022
+ "importance": "primary",
1023
+ "hierarchy": "main",
1024
+ "spacingRules": [
1025
+ "full-bleed in content column"
1026
+ ],
1027
+ "typographyRules": [
1028
+ "tabular nums for numeric columns"
1029
+ ],
1030
+ "animationRules": [],
1031
+ "colorRules": [
1032
+ "zebra optional via tokens"
1033
+ ],
1034
+ "eyeFlow": "toolbar → headers → rows",
1035
+ "compositionRules": [
1036
+ "pair filter input above table"
1037
+ ],
1038
+ "commonMistakes": [
1039
+ "missing caption",
1040
+ "icon-only sort without name"
1041
+ ],
1042
+ "bestPractices": [
1043
+ "announce sort/filter changes"
1044
+ ]
1045
+ }
1046
+ },
1047
+ {
1048
+ "id": "velin-search",
1049
+ "kind": "web-component",
1050
+ "tag": "velin-search",
1051
+ "category": "navigation",
1052
+ "subcategory": "search",
1053
+ "purpose": "Documentation and site search against a JSON index.",
1054
+ "family": "navigation",
1055
+ "maturity": "core",
1056
+ "recommendedPages": [
1057
+ "docs",
1058
+ "saas",
1059
+ "corporate"
1060
+ ],
1061
+ "recommendedSections": [
1062
+ "navbar"
1063
+ ],
1064
+ "compatibleWith": [
1065
+ "css-nav",
1066
+ "velin-theme-toggle"
1067
+ ],
1068
+ "incompatibleWith": [],
1069
+ "accessibility": {
1070
+ "notes": "Combobox pattern; keyboard results"
1071
+ },
1072
+ "seo": {
1073
+ "impact": "low"
1074
+ },
1075
+ "performance": {
1076
+ "cost": "index-load"
1077
+ },
1078
+ "variants": [],
1079
+ "density": [
1080
+ "default",
1081
+ "compact"
1082
+ ],
1083
+ "themeSupport": [
1084
+ "light",
1085
+ "dark"
1086
+ ],
1087
+ "motion": {},
1088
+ "examples": [
1089
+ "<velin-search index-url=\"/dist/search-index.json\"></velin-search>"
1090
+ ],
1091
+ "promptKeywords": [
1092
+ "search",
1093
+ "docs search",
1094
+ "site search"
1095
+ ],
1096
+ "designIntelligence": {
1097
+ "visualWeight": 2,
1098
+ "importance": "secondary",
1099
+ "hierarchy": "chrome",
1100
+ "spacingRules": [
1101
+ "header cluster"
1102
+ ],
1103
+ "typographyRules": [],
1104
+ "animationRules": [],
1105
+ "colorRules": [
1106
+ "surface raised for results"
1107
+ ],
1108
+ "eyeFlow": "header center/right",
1109
+ "compositionRules": [
1110
+ "one search per chrome"
1111
+ ],
1112
+ "commonMistakes": [
1113
+ "blocking main thread with huge index"
1114
+ ],
1115
+ "bestPractices": [
1116
+ "relative URLs in index"
1117
+ ]
1118
+ }
1119
+ },
1120
+ {
1121
+ "id": "css-badge",
1122
+ "kind": "css-component",
1123
+ "classPrefix": "velin-badge",
1124
+ "category": "feedback",
1125
+ "subcategory": "badge",
1126
+ "purpose": "Compact status and count labels.",
1127
+ "family": "feedback",
1128
+ "maturity": "core",
1129
+ "recommendedPages": [
1130
+ "dashboard",
1131
+ "saas",
1132
+ "shop"
1133
+ ],
1134
+ "recommendedSections": [
1135
+ "services",
1136
+ "pricing",
1137
+ "navbar"
1138
+ ],
1139
+ "compatibleWith": [
1140
+ "css-card",
1141
+ "css-nav",
1142
+ "css-button"
1143
+ ],
1144
+ "incompatibleWith": [],
1145
+ "accessibility": {
1146
+ "notes": "Do not rely on color alone"
1147
+ },
1148
+ "seo": {
1149
+ "impact": "none"
1150
+ },
1151
+ "performance": {
1152
+ "cost": "css-only"
1153
+ },
1154
+ "variants": [
1155
+ "success",
1156
+ "warning",
1157
+ "danger",
1158
+ "info"
1159
+ ],
1160
+ "density": [
1161
+ "default",
1162
+ "compact"
1163
+ ],
1164
+ "themeSupport": [
1165
+ "light",
1166
+ "dark"
1167
+ ],
1168
+ "motion": {},
1169
+ "examples": [
1170
+ "<span class=\"velin-badge\">New</span>"
1171
+ ],
1172
+ "promptKeywords": [
1173
+ "badge",
1174
+ "status label",
1175
+ "pill"
1176
+ ],
1177
+ "designIntelligence": {
1178
+ "visualWeight": 1,
1179
+ "importance": "tertiary",
1180
+ "hierarchy": "meta",
1181
+ "spacingRules": [
1182
+ "inline with title"
1183
+ ],
1184
+ "typographyRules": [
1185
+ "short labels"
1186
+ ],
1187
+ "animationRules": [],
1188
+ "colorRules": [
1189
+ "semantic tokens"
1190
+ ],
1191
+ "eyeFlow": "adjacent to title",
1192
+ "compositionRules": [
1193
+ "one badge cluster per card"
1194
+ ],
1195
+ "commonMistakes": [
1196
+ "color-only meaning"
1197
+ ],
1198
+ "bestPractices": [
1199
+ "pair with text"
1200
+ ]
1201
+ }
1202
+ },
1203
+ {
1204
+ "id": "velin-drawer",
1205
+ "kind": "web-component",
1206
+ "tag": "velin-drawer",
1207
+ "category": "overlays",
1208
+ "subcategory": "drawer",
1209
+ "purpose": "Side panel overlay for navigation or secondary tasks without blocking the whole viewport like a modal.",
1210
+ "family": "overlays",
1211
+ "maturity": "core",
1212
+ "recommendedPages": [
1213
+ "dashboard",
1214
+ "saas",
1215
+ "docs",
1216
+ "shop"
1217
+ ],
1218
+ "recommendedSections": [
1219
+ "navbar"
1220
+ ],
1221
+ "compatibleWith": [
1222
+ "css-nav",
1223
+ "css-button",
1224
+ "velin-form-summary"
1225
+ ],
1226
+ "incompatibleWith": [
1227
+ "velin-modal",
1228
+ "velin-sheet"
1229
+ ],
1230
+ "accessibility": {
1231
+ "focusTrap": true,
1232
+ "escapeCloses": true,
1233
+ "inertBackground": true
1234
+ },
1235
+ "seo": {
1236
+ "impact": "none"
1237
+ },
1238
+ "performance": {
1239
+ "cost": "lazy-ok"
1240
+ },
1241
+ "variants": [
1242
+ "start",
1243
+ "end"
1244
+ ],
1245
+ "density": [
1246
+ "default",
1247
+ "compact"
1248
+ ],
1249
+ "themeSupport": [
1250
+ "light",
1251
+ "dark"
1252
+ ],
1253
+ "motion": {
1254
+ "reducedMotionSafe": true
1255
+ },
1256
+ "examples": [
1257
+ "<velin-drawer></velin-drawer>"
1258
+ ],
1259
+ "promptKeywords": [
1260
+ "drawer",
1261
+ "side panel",
1262
+ "sidebar overlay"
1263
+ ],
1264
+ "designIntelligence": {
1265
+ "visualWeight": 4,
1266
+ "importance": "secondary",
1267
+ "hierarchy": "overlay",
1268
+ "spacingRules": [
1269
+ "comfortable body padding"
1270
+ ],
1271
+ "typographyRules": [
1272
+ "clear title"
1273
+ ],
1274
+ "animationRules": [
1275
+ "slide in/out; respect reduced motion"
1276
+ ],
1277
+ "colorRules": [
1278
+ "overlay surface + dimmed backdrop"
1279
+ ],
1280
+ "eyeFlow": "title → body → actions",
1281
+ "compositionRules": [
1282
+ "prefer drawer for filters/nav; modal for blocking confirms"
1283
+ ],
1284
+ "commonMistakes": [
1285
+ "using drawer and modal interchangeably"
1286
+ ],
1287
+ "bestPractices": [
1288
+ "use focus-manager lifecycle"
1289
+ ]
1290
+ },
1291
+ "api": {
1292
+ "events": [
1293
+ "velin-close"
1294
+ ],
1295
+ "methods": [
1296
+ "open",
1297
+ "close"
1298
+ ]
1299
+ }
1300
+ },
1301
+ {
1302
+ "id": "velin-sheet",
1303
+ "kind": "web-component",
1304
+ "tag": "velin-sheet",
1305
+ "category": "overlays",
1306
+ "subcategory": "sheet",
1307
+ "purpose": "Bottom or edge sheet for mobile-first actions and pickers.",
1308
+ "family": "overlays",
1309
+ "maturity": "core",
1310
+ "recommendedPages": [
1311
+ "shop",
1312
+ "saas",
1313
+ "dashboard",
1314
+ "event"
1315
+ ],
1316
+ "recommendedSections": [],
1317
+ "compatibleWith": [
1318
+ "css-button",
1319
+ "velin-form-summary"
1320
+ ],
1321
+ "incompatibleWith": [
1322
+ "velin-modal",
1323
+ "velin-drawer"
1324
+ ],
1325
+ "accessibility": {
1326
+ "focusTrap": true,
1327
+ "escapeCloses": true,
1328
+ "inertBackground": true
1329
+ },
1330
+ "seo": {
1331
+ "impact": "none"
1332
+ },
1333
+ "performance": {
1334
+ "cost": "lazy-ok"
1335
+ },
1336
+ "variants": [
1337
+ "bottom"
1338
+ ],
1339
+ "density": [
1340
+ "default",
1341
+ "compact"
1342
+ ],
1343
+ "themeSupport": [
1344
+ "light",
1345
+ "dark"
1346
+ ],
1347
+ "motion": {
1348
+ "reducedMotionSafe": true
1349
+ },
1350
+ "examples": [
1351
+ "<velin-sheet></velin-sheet>"
1352
+ ],
1353
+ "promptKeywords": [
1354
+ "sheet",
1355
+ "bottom sheet",
1356
+ "action sheet"
1357
+ ],
1358
+ "designIntelligence": {
1359
+ "visualWeight": 4,
1360
+ "importance": "secondary",
1361
+ "hierarchy": "overlay",
1362
+ "spacingRules": [
1363
+ "thumb-friendly action spacing"
1364
+ ],
1365
+ "typographyRules": [
1366
+ "short action labels"
1367
+ ],
1368
+ "animationRules": [
1369
+ "slide from edge; reduced-motion safe"
1370
+ ],
1371
+ "colorRules": [
1372
+ "raised overlay surface"
1373
+ ],
1374
+ "eyeFlow": "handle/title → actions",
1375
+ "compositionRules": [
1376
+ "prefer sheet on small viewports for actions"
1377
+ ],
1378
+ "commonMistakes": [
1379
+ "tiny hit targets",
1380
+ "missing dismiss control"
1381
+ ],
1382
+ "bestPractices": [
1383
+ "use focus-manager lifecycle"
1384
+ ]
1385
+ },
1386
+ "api": {
1387
+ "events": [
1388
+ "velin-close"
1389
+ ],
1390
+ "methods": [
1391
+ "open",
1392
+ "close"
1393
+ ]
1394
+ }
1395
+ },
1396
+ {
1397
+ "id": "velin-lightbox",
1398
+ "kind": "web-component",
1399
+ "tag": "velin-lightbox",
1400
+ "category": "overlays",
1401
+ "subcategory": "lightbox",
1402
+ "purpose": "Media-focused overlay for images and galleries.",
1403
+ "family": "overlays",
1404
+ "maturity": "advanced",
1405
+ "recommendedPages": [
1406
+ "portfolio",
1407
+ "shop",
1408
+ "agency",
1409
+ "event"
1410
+ ],
1411
+ "recommendedSections": [
1412
+ "services",
1413
+ "gallery"
1414
+ ],
1415
+ "compatibleWith": [
1416
+ "css-card",
1417
+ "css-button"
1418
+ ],
1419
+ "incompatibleWith": [],
1420
+ "accessibility": {
1421
+ "focusTrap": true,
1422
+ "escapeCloses": true,
1423
+ "inertBackground": true
1424
+ },
1425
+ "seo": {
1426
+ "impact": "low",
1427
+ "notes": "Keep meaningful alt text in light DOM when possible"
1428
+ },
1429
+ "performance": {
1430
+ "cost": "lazy-ok"
1431
+ },
1432
+ "variants": [],
1433
+ "density": [
1434
+ "default"
1435
+ ],
1436
+ "themeSupport": [
1437
+ "light",
1438
+ "dark"
1439
+ ],
1440
+ "motion": {
1441
+ "reducedMotionSafe": true
1442
+ },
1443
+ "examples": [
1444
+ "<velin-lightbox></velin-lightbox>"
1445
+ ],
1446
+ "promptKeywords": [
1447
+ "lightbox",
1448
+ "image gallery overlay",
1449
+ "media viewer"
1450
+ ],
1451
+ "designIntelligence": {
1452
+ "visualWeight": 5,
1453
+ "importance": "primary",
1454
+ "hierarchy": "overlay",
1455
+ "spacingRules": [],
1456
+ "typographyRules": [
1457
+ "captions concise"
1458
+ ],
1459
+ "animationRules": [
1460
+ "fade/zoom brief"
1461
+ ],
1462
+ "colorRules": [
1463
+ "dark dim backdrop"
1464
+ ],
1465
+ "eyeFlow": "media → caption → close",
1466
+ "compositionRules": [
1467
+ "use for media, not forms"
1468
+ ],
1469
+ "commonMistakes": [
1470
+ "forms inside lightbox",
1471
+ "missing close"
1472
+ ],
1473
+ "bestPractices": [
1474
+ "use focus-manager lifecycle"
1475
+ ]
1476
+ },
1477
+ "api": {
1478
+ "events": [
1479
+ "velin-close"
1480
+ ],
1481
+ "methods": [
1482
+ "open",
1483
+ "close"
1484
+ ]
1485
+ }
1486
+ },
1487
+ {
1488
+ "id": "velin-toast",
1489
+ "kind": "web-component",
1490
+ "tag": "velin-toast",
1491
+ "category": "feedback",
1492
+ "subcategory": "toast",
1493
+ "purpose": "Transient status messages that do not block the page.",
1494
+ "family": "feedback",
1495
+ "maturity": "core",
1496
+ "recommendedPages": [
1497
+ "saas",
1498
+ "dashboard",
1499
+ "shop"
1500
+ ],
1501
+ "recommendedSections": [],
1502
+ "compatibleWith": [
1503
+ "css-button",
1504
+ "css-alert"
1505
+ ],
1506
+ "incompatibleWith": [],
1507
+ "accessibility": {
1508
+ "role": "status",
1509
+ "notes": "Prefer polite live region; do not replace form-summary"
1510
+ },
1511
+ "seo": {
1512
+ "impact": "none"
1513
+ },
1514
+ "performance": {
1515
+ "cost": "lazy-ok"
1516
+ },
1517
+ "variants": [
1518
+ "success",
1519
+ "warning",
1520
+ "danger",
1521
+ "info"
1522
+ ],
1523
+ "density": [
1524
+ "default",
1525
+ "compact"
1526
+ ],
1527
+ "themeSupport": [
1528
+ "light",
1529
+ "dark"
1530
+ ],
1531
+ "motion": {
1532
+ "reducedMotionSafe": true
1533
+ },
1534
+ "examples": [
1535
+ "<velin-toast></velin-toast>"
1536
+ ],
1537
+ "promptKeywords": [
1538
+ "toast",
1539
+ "snackbar",
1540
+ "notification"
1541
+ ],
1542
+ "designIntelligence": {
1543
+ "visualWeight": 3,
1544
+ "importance": "secondary",
1545
+ "hierarchy": "feedback",
1546
+ "spacingRules": [
1547
+ "stack toasts with gap-2"
1548
+ ],
1549
+ "typographyRules": [
1550
+ "one short sentence"
1551
+ ],
1552
+ "animationRules": [
1553
+ "brief enter/exit"
1554
+ ],
1555
+ "colorRules": [
1556
+ "semantic status tokens"
1557
+ ],
1558
+ "eyeFlow": "corner/edge of viewport",
1559
+ "compositionRules": [
1560
+ "use for transient status; form errors use form-summary"
1561
+ ],
1562
+ "commonMistakes": [
1563
+ "toasts for persistent form errors"
1564
+ ],
1565
+ "bestPractices": [
1566
+ "auto-dismiss with pause on focus/hover"
1567
+ ]
1568
+ }
1569
+ }
1570
+ ],
1571
+ "componentCount": 17,
1572
+ "tokens": {
1573
+ "version": 1,
1574
+ "tokens": [
1575
+ {
1576
+ "name": "color-text",
1577
+ "layer": "semantic",
1578
+ "usage": "text",
1579
+ "cssVariable": "--velin-color-text",
1580
+ "pairsWith": [
1581
+ "color-surface",
1582
+ "color-surface-dim"
1583
+ ],
1584
+ "contrastTarget": "aaa",
1585
+ "surfaceRole": "base",
1586
+ "description": "Primary body text on base/raised surfaces."
1587
+ },
1588
+ {
1589
+ "name": "color-text-muted",
1590
+ "layer": "semantic",
1591
+ "usage": "text-muted",
1592
+ "cssVariable": "--velin-color-text-muted",
1593
+ "pairsWith": [
1594
+ "color-surface",
1595
+ "color-surface-dim"
1596
+ ],
1597
+ "contrastTarget": "aa",
1598
+ "surfaceRole": "muted",
1599
+ "description": "Secondary text; verify contrast on muted surfaces."
1600
+ },
1601
+ {
1602
+ "name": "color-surface",
1603
+ "layer": "semantic",
1604
+ "usage": "background",
1605
+ "cssVariable": "--velin-color-surface",
1606
+ "pairsWith": [
1607
+ "color-text"
1608
+ ],
1609
+ "contrastTarget": "aaa",
1610
+ "surfaceRole": "raised",
1611
+ "description": "Raised panel background."
1612
+ },
1613
+ {
1614
+ "name": "color-surface-dim",
1615
+ "layer": "semantic",
1616
+ "usage": "background",
1617
+ "cssVariable": "--velin-color-surface-dim",
1618
+ "pairsWith": [
1619
+ "color-text"
1620
+ ],
1621
+ "contrastTarget": "aaa",
1622
+ "surfaceRole": "base",
1623
+ "description": "Dimmer page/canvas background behind raised surfaces."
1624
+ },
1625
+ {
1626
+ "name": "color-primary",
1627
+ "layer": "semantic",
1628
+ "usage": "accent",
1629
+ "cssVariable": "--velin-color-primary",
1630
+ "pairsWith": [
1631
+ "color-on-primary"
1632
+ ],
1633
+ "contrastTarget": "aaa",
1634
+ "surfaceRole": "accent",
1635
+ "description": "Brand accent for primary CTAs."
1636
+ },
1637
+ {
1638
+ "name": "color-on-primary",
1639
+ "layer": "semantic",
1640
+ "usage": "text-on-accent",
1641
+ "cssVariable": "--velin-color-on-primary",
1642
+ "pairsWith": [
1643
+ "color-primary"
1644
+ ],
1645
+ "contrastTarget": "aaa",
1646
+ "surfaceRole": "accent",
1647
+ "description": "Text/icon color on primary accent."
1648
+ },
1649
+ {
1650
+ "name": "color-border",
1651
+ "layer": "semantic",
1652
+ "usage": "border",
1653
+ "cssVariable": "--velin-color-border",
1654
+ "pairsWith": [
1655
+ "color-surface"
1656
+ ],
1657
+ "contrastTarget": "aa",
1658
+ "surfaceRole": "base",
1659
+ "description": "Default border on cards, inputs, and dividers."
1660
+ },
1661
+ {
1662
+ "name": "color-danger",
1663
+ "layer": "semantic",
1664
+ "usage": "status-danger",
1665
+ "cssVariable": "--velin-color-danger",
1666
+ "pairsWith": [
1667
+ "color-on-danger"
1668
+ ],
1669
+ "contrastTarget": "aaa",
1670
+ "surfaceRole": "accent",
1671
+ "description": "Danger/error accent for validation and destructive actions."
1672
+ },
1673
+ {
1674
+ "name": "color-on-danger",
1675
+ "layer": "semantic",
1676
+ "usage": "text-on-danger",
1677
+ "cssVariable": "--velin-color-on-danger",
1678
+ "pairsWith": [
1679
+ "color-danger"
1680
+ ],
1681
+ "contrastTarget": "aaa",
1682
+ "surfaceRole": "accent",
1683
+ "description": "Text/icon on danger accent."
1684
+ },
1685
+ {
1686
+ "name": "space-4",
1687
+ "layer": "core",
1688
+ "usage": "spacing",
1689
+ "cssVariable": "--velin-space-4",
1690
+ "pairsWith": [],
1691
+ "contrastTarget": "none",
1692
+ "description": "Default control/stack gap."
1693
+ },
1694
+ {
1695
+ "name": "space-8",
1696
+ "layer": "core",
1697
+ "usage": "spacing",
1698
+ "cssVariable": "--velin-space-8",
1699
+ "pairsWith": [],
1700
+ "contrastTarget": "none",
1701
+ "description": "Mobile section padding band."
1702
+ },
1703
+ {
1704
+ "name": "space-10",
1705
+ "layer": "core",
1706
+ "usage": "spacing",
1707
+ "cssVariable": "--velin-space-10",
1708
+ "pairsWith": [],
1709
+ "contrastTarget": "none",
1710
+ "description": "Tablet section padding band (hero constraint)."
1711
+ },
1712
+ {
1713
+ "name": "space-12",
1714
+ "layer": "core",
1715
+ "usage": "spacing",
1716
+ "cssVariable": "--velin-space-12",
1717
+ "pairsWith": [],
1718
+ "contrastTarget": "none",
1719
+ "description": "Desktop section padding band."
1720
+ },
1721
+ {
1722
+ "name": "shadow-md",
1723
+ "layer": "semantic",
1724
+ "usage": "elevation",
1725
+ "cssVariable": "--velin-shadow-md",
1726
+ "pairsWith": [
1727
+ "color-surface"
1728
+ ],
1729
+ "contrastTarget": "none",
1730
+ "surfaceRole": "raised",
1731
+ "description": "Medium elevation; dark parity via ADR 0011."
1732
+ }
1733
+ ]
1734
+ },
1735
+ "pages": [
1736
+ {
1737
+ "id": "landing",
1738
+ "name": "Landing",
1739
+ "audience": "prospects",
1740
+ "businessType": "general",
1741
+ "pageGoal": "explain offer and convert",
1742
+ "conversionGoal": "lead or signup",
1743
+ "requiredSections": [
1744
+ "hero",
1745
+ "benefits",
1746
+ "services",
1747
+ "testimonials",
1748
+ "faq",
1749
+ "cta",
1750
+ "footer"
1751
+ ],
1752
+ "optionalSections": [
1753
+ "trust-bar",
1754
+ "process",
1755
+ "pricing"
1756
+ ],
1757
+ "forbiddenSections": [],
1758
+ "seoIntent": "brand + primary offer",
1759
+ "accessibilityRisks": [
1760
+ "hero contrast",
1761
+ "form labels"
1762
+ ],
1763
+ "defaultTone": "clear-confident",
1764
+ "recommendedComponents": [
1765
+ "css-button",
1766
+ "css-card",
1767
+ "velin-accordion",
1768
+ "velin-form-summary"
1769
+ ],
1770
+ "designConstraintIds": [
1771
+ "hero",
1772
+ "faq",
1773
+ "contact"
1774
+ ],
1775
+ "promptKeywords": [
1776
+ "landing page",
1777
+ "homepage",
1778
+ "marketing site"
1779
+ ]
1780
+ },
1781
+ {
1782
+ "id": "corporate",
1783
+ "name": "Corporate",
1784
+ "audience": "stakeholders",
1785
+ "businessType": "corporate",
1786
+ "pageGoal": "trust and company overview",
1787
+ "conversionGoal": "contact",
1788
+ "requiredSections": [
1789
+ "hero",
1790
+ "benefits",
1791
+ "process",
1792
+ "testimonials",
1793
+ "cta",
1794
+ "footer"
1795
+ ],
1796
+ "optionalSections": [
1797
+ "services",
1798
+ "faq"
1799
+ ],
1800
+ "forbiddenSections": [],
1801
+ "seoIntent": "company entity",
1802
+ "accessibilityRisks": [
1803
+ "long pages without landmarks"
1804
+ ],
1805
+ "defaultTone": "formal",
1806
+ "recommendedComponents": [
1807
+ "css-nav",
1808
+ "css-card",
1809
+ "css-button"
1810
+ ],
1811
+ "designConstraintIds": [
1812
+ "hero"
1813
+ ],
1814
+ "promptKeywords": [
1815
+ "corporate",
1816
+ "company",
1817
+ "about"
1818
+ ]
1819
+ },
1820
+ {
1821
+ "id": "lawyer",
1822
+ "name": "Lawyer / Professional services",
1823
+ "audience": "clients seeking counsel",
1824
+ "businessType": "professional-services",
1825
+ "pageGoal": "credibility + consultation booking",
1826
+ "conversionGoal": "contact form",
1827
+ "requiredSections": [
1828
+ "hero",
1829
+ "trust-bar",
1830
+ "services",
1831
+ "process",
1832
+ "testimonials",
1833
+ "faq",
1834
+ "contact",
1835
+ "footer"
1836
+ ],
1837
+ "optionalSections": [
1838
+ "benefits",
1839
+ "pricing",
1840
+ "cta"
1841
+ ],
1842
+ "forbiddenSections": [],
1843
+ "seoIntent": "local professional services",
1844
+ "accessibilityRisks": [
1845
+ "form validation",
1846
+ "contrast on dark heroes"
1847
+ ],
1848
+ "defaultTone": "trustworthy-calm",
1849
+ "recommendedComponents": [
1850
+ "css-card",
1851
+ "css-button",
1852
+ "velin-accordion",
1853
+ "velin-form-summary",
1854
+ "css-input"
1855
+ ],
1856
+ "designConstraintIds": [
1857
+ "hero",
1858
+ "faq",
1859
+ "contact"
1860
+ ],
1861
+ "promptKeywords": [
1862
+ "steuerberater",
1863
+ "lawyer",
1864
+ "attorney",
1865
+ "kanzlei",
1866
+ "tax advisor",
1867
+ "professional services"
1868
+ ]
1869
+ },
1870
+ {
1871
+ "id": "healthcare",
1872
+ "name": "Healthcare",
1873
+ "audience": "patients",
1874
+ "businessType": "healthcare",
1875
+ "pageGoal": "services + appointment",
1876
+ "conversionGoal": "book / contact",
1877
+ "requiredSections": [
1878
+ "hero",
1879
+ "services",
1880
+ "process",
1881
+ "testimonials",
1882
+ "faq",
1883
+ "contact",
1884
+ "footer"
1885
+ ],
1886
+ "optionalSections": [
1887
+ "trust-bar",
1888
+ "benefits"
1889
+ ],
1890
+ "forbiddenSections": [],
1891
+ "seoIntent": "clinic / practice",
1892
+ "accessibilityRisks": [
1893
+ "reading level",
1894
+ "form a11y"
1895
+ ],
1896
+ "defaultTone": "reassuring",
1897
+ "recommendedComponents": [
1898
+ "css-card",
1899
+ "velin-accordion",
1900
+ "velin-form-summary"
1901
+ ],
1902
+ "designConstraintIds": [
1903
+ "hero",
1904
+ "faq",
1905
+ "contact"
1906
+ ],
1907
+ "promptKeywords": [
1908
+ "clinic",
1909
+ "doctor",
1910
+ "healthcare",
1911
+ "praxis"
1912
+ ]
1913
+ },
1914
+ {
1915
+ "id": "restaurant",
1916
+ "name": "Restaurant",
1917
+ "audience": "diners",
1918
+ "businessType": "hospitality",
1919
+ "pageGoal": "menu interest + reservation",
1920
+ "conversionGoal": "reserve",
1921
+ "requiredSections": [
1922
+ "hero",
1923
+ "services",
1924
+ "testimonials",
1925
+ "cta",
1926
+ "footer"
1927
+ ],
1928
+ "optionalSections": [
1929
+ "process",
1930
+ "faq",
1931
+ "trust-bar"
1932
+ ],
1933
+ "forbiddenSections": [],
1934
+ "seoIntent": "local restaurant",
1935
+ "accessibilityRisks": [
1936
+ "image-heavy pages"
1937
+ ],
1938
+ "defaultTone": "inviting",
1939
+ "recommendedComponents": [
1940
+ "css-card",
1941
+ "css-button"
1942
+ ],
1943
+ "designConstraintIds": [
1944
+ "hero"
1945
+ ],
1946
+ "promptKeywords": [
1947
+ "restaurant",
1948
+ "cafe",
1949
+ "menu"
1950
+ ]
1951
+ },
1952
+ {
1953
+ "id": "portfolio",
1954
+ "name": "Portfolio",
1955
+ "audience": "clients/hiring",
1956
+ "businessType": "creative",
1957
+ "pageGoal": "showcase work",
1958
+ "conversionGoal": "contact",
1959
+ "requiredSections": [
1960
+ "hero",
1961
+ "services",
1962
+ "testimonials",
1963
+ "cta",
1964
+ "footer"
1965
+ ],
1966
+ "optionalSections": [
1967
+ "process",
1968
+ "faq"
1969
+ ],
1970
+ "forbiddenSections": [],
1971
+ "seoIntent": "personal brand",
1972
+ "accessibilityRisks": [
1973
+ "image alts"
1974
+ ],
1975
+ "defaultTone": "expressive",
1976
+ "recommendedComponents": [
1977
+ "css-card",
1978
+ "css-button"
1979
+ ],
1980
+ "designConstraintIds": [
1981
+ "hero"
1982
+ ],
1983
+ "promptKeywords": [
1984
+ "portfolio",
1985
+ "designer",
1986
+ "photographer"
1987
+ ]
1988
+ },
1989
+ {
1990
+ "id": "agency",
1991
+ "name": "Agency",
1992
+ "audience": "business buyers",
1993
+ "businessType": "agency",
1994
+ "pageGoal": "capabilities + leads",
1995
+ "conversionGoal": "contact",
1996
+ "requiredSections": [
1997
+ "hero",
1998
+ "benefits",
1999
+ "services",
2000
+ "process",
2001
+ "testimonials",
2002
+ "cta",
2003
+ "footer"
2004
+ ],
2005
+ "optionalSections": [
2006
+ "pricing",
2007
+ "faq"
2008
+ ],
2009
+ "forbiddenSections": [],
2010
+ "seoIntent": "agency services",
2011
+ "accessibilityRisks": [
2012
+ "busy layouts"
2013
+ ],
2014
+ "defaultTone": "confident",
2015
+ "recommendedComponents": [
2016
+ "css-card",
2017
+ "css-button",
2018
+ "velin-accordion"
2019
+ ],
2020
+ "designConstraintIds": [
2021
+ "hero",
2022
+ "faq"
2023
+ ],
2024
+ "promptKeywords": [
2025
+ "agency",
2026
+ "marketing agency",
2027
+ "studio"
2028
+ ]
2029
+ },
2030
+ {
2031
+ "id": "saas",
2032
+ "name": "SaaS",
2033
+ "audience": "buyers/users",
2034
+ "businessType": "saas",
2035
+ "pageGoal": "product value + signup",
2036
+ "conversionGoal": "trial/signup",
2037
+ "requiredSections": [
2038
+ "hero",
2039
+ "benefits",
2040
+ "services",
2041
+ "pricing",
2042
+ "testimonials",
2043
+ "faq",
2044
+ "cta",
2045
+ "footer"
2046
+ ],
2047
+ "optionalSections": [
2048
+ "trust-bar",
2049
+ "process"
2050
+ ],
2051
+ "forbiddenSections": [],
2052
+ "seoIntent": "product category",
2053
+ "accessibilityRisks": [
2054
+ "pricing tables",
2055
+ "modals"
2056
+ ],
2057
+ "defaultTone": "product-led",
2058
+ "recommendedComponents": [
2059
+ "css-card",
2060
+ "css-button",
2061
+ "velin-accordion",
2062
+ "velin-modal"
2063
+ ],
2064
+ "designConstraintIds": [
2065
+ "hero",
2066
+ "faq"
2067
+ ],
2068
+ "promptKeywords": [
2069
+ "saas",
2070
+ "software",
2071
+ "app landing"
2072
+ ]
2073
+ },
2074
+ {
2075
+ "id": "docs",
2076
+ "name": "Docs",
2077
+ "audience": "developers",
2078
+ "businessType": "documentation",
2079
+ "pageGoal": "teach and reference",
2080
+ "conversionGoal": "task completion",
2081
+ "requiredSections": [
2082
+ "navbar",
2083
+ "hero",
2084
+ "footer"
2085
+ ],
2086
+ "optionalSections": [
2087
+ "faq"
2088
+ ],
2089
+ "forbiddenSections": [
2090
+ "pricing"
2091
+ ],
2092
+ "seoIntent": "technical documentation",
2093
+ "accessibilityRisks": [
2094
+ "skip links",
2095
+ "code contrast"
2096
+ ],
2097
+ "defaultTone": "technical",
2098
+ "recommendedComponents": [
2099
+ "css-nav",
2100
+ "velin-theme-toggle",
2101
+ "velin-search"
2102
+ ],
2103
+ "designConstraintIds": [],
2104
+ "promptKeywords": [
2105
+ "documentation",
2106
+ "docs site",
2107
+ "api docs"
2108
+ ]
2109
+ },
2110
+ {
2111
+ "id": "dashboard",
2112
+ "name": "Dashboard",
2113
+ "audience": "operators",
2114
+ "businessType": "app-shell",
2115
+ "pageGoal": "monitor and act",
2116
+ "conversionGoal": "task completion",
2117
+ "requiredSections": [
2118
+ "navbar",
2119
+ "footer"
2120
+ ],
2121
+ "optionalSections": [],
2122
+ "forbiddenSections": [
2123
+ "pricing",
2124
+ "testimonials"
2125
+ ],
2126
+ "seoIntent": "often noindex",
2127
+ "accessibilityRisks": [
2128
+ "dense tables",
2129
+ "live regions"
2130
+ ],
2131
+ "defaultTone": "utilitarian",
2132
+ "recommendedComponents": [
2133
+ "css-nav",
2134
+ "velin-data-table",
2135
+ "css-alert"
2136
+ ],
2137
+ "designConstraintIds": [],
2138
+ "promptKeywords": [
2139
+ "dashboard",
2140
+ "admin",
2141
+ "app shell"
2142
+ ]
2143
+ },
2144
+ {
2145
+ "id": "crm",
2146
+ "name": "CRM",
2147
+ "audience": "sales ops",
2148
+ "businessType": "crm",
2149
+ "pageGoal": "manage relationships",
2150
+ "conversionGoal": "task completion",
2151
+ "requiredSections": [
2152
+ "navbar"
2153
+ ],
2154
+ "optionalSections": [],
2155
+ "forbiddenSections": [
2156
+ "testimonials"
2157
+ ],
2158
+ "seoIntent": "app",
2159
+ "accessibilityRisks": [
2160
+ "data-dense UI"
2161
+ ],
2162
+ "defaultTone": "utilitarian",
2163
+ "recommendedComponents": [
2164
+ "velin-data-table",
2165
+ "css-input",
2166
+ "velin-form-summary"
2167
+ ],
2168
+ "designConstraintIds": [],
2169
+ "promptKeywords": [
2170
+ "crm",
2171
+ "contacts",
2172
+ "pipeline"
2173
+ ]
2174
+ },
2175
+ {
2176
+ "id": "erp",
2177
+ "name": "ERP",
2178
+ "audience": "internal ops",
2179
+ "businessType": "erp",
2180
+ "pageGoal": "operational workflows",
2181
+ "conversionGoal": "task completion",
2182
+ "requiredSections": [
2183
+ "navbar"
2184
+ ],
2185
+ "optionalSections": [],
2186
+ "forbiddenSections": [
2187
+ "pricing",
2188
+ "testimonials"
2189
+ ],
2190
+ "seoIntent": "app",
2191
+ "accessibilityRisks": [
2192
+ "complex forms"
2193
+ ],
2194
+ "defaultTone": "utilitarian",
2195
+ "recommendedComponents": [
2196
+ "velin-data-table",
2197
+ "css-input",
2198
+ "velin-dialog"
2199
+ ],
2200
+ "designConstraintIds": [],
2201
+ "promptKeywords": [
2202
+ "erp",
2203
+ "inventory",
2204
+ "operations"
2205
+ ]
2206
+ },
2207
+ {
2208
+ "id": "blog",
2209
+ "name": "Blog",
2210
+ "audience": "readers",
2211
+ "businessType": "content",
2212
+ "pageGoal": "inform and retain",
2213
+ "conversionGoal": "newsletter/contact",
2214
+ "requiredSections": [
2215
+ "navbar",
2216
+ "hero",
2217
+ "footer"
2218
+ ],
2219
+ "optionalSections": [
2220
+ "cta",
2221
+ "faq"
2222
+ ],
2223
+ "forbiddenSections": [],
2224
+ "seoIntent": "articles",
2225
+ "accessibilityRisks": [
2226
+ "reading length"
2227
+ ],
2228
+ "defaultTone": "editorial",
2229
+ "recommendedComponents": [
2230
+ "css-nav",
2231
+ "css-card"
2232
+ ],
2233
+ "designConstraintIds": [
2234
+ "hero"
2235
+ ],
2236
+ "promptKeywords": [
2237
+ "blog",
2238
+ "articles",
2239
+ "magazine"
2240
+ ]
2241
+ },
2242
+ {
2243
+ "id": "shop",
2244
+ "name": "Shop",
2245
+ "audience": "buyers",
2246
+ "businessType": "ecommerce",
2247
+ "pageGoal": "browse and purchase",
2248
+ "conversionGoal": "checkout",
2249
+ "requiredSections": [
2250
+ "navbar",
2251
+ "hero",
2252
+ "services",
2253
+ "cta",
2254
+ "footer"
2255
+ ],
2256
+ "optionalSections": [
2257
+ "testimonials",
2258
+ "faq",
2259
+ "trust-bar"
2260
+ ],
2261
+ "forbiddenSections": [],
2262
+ "seoIntent": "products",
2263
+ "accessibilityRisks": [
2264
+ "product cards",
2265
+ "filters"
2266
+ ],
2267
+ "defaultTone": "commercial",
2268
+ "recommendedComponents": [
2269
+ "css-card",
2270
+ "css-button",
2271
+ "velin-form-summary"
2272
+ ],
2273
+ "designConstraintIds": [
2274
+ "hero"
2275
+ ],
2276
+ "promptKeywords": [
2277
+ "shop",
2278
+ "store",
2279
+ "ecommerce"
2280
+ ]
2281
+ },
2282
+ {
2283
+ "id": "event",
2284
+ "name": "Event",
2285
+ "audience": "attendees",
2286
+ "businessType": "event",
2287
+ "pageGoal": "inform and register",
2288
+ "conversionGoal": "registration",
2289
+ "requiredSections": [
2290
+ "hero",
2291
+ "benefits",
2292
+ "process",
2293
+ "faq",
2294
+ "cta",
2295
+ "footer"
2296
+ ],
2297
+ "optionalSections": [
2298
+ "testimonials",
2299
+ "pricing"
2300
+ ],
2301
+ "forbiddenSections": [],
2302
+ "seoIntent": "event entity",
2303
+ "accessibilityRisks": [
2304
+ "countdown motion"
2305
+ ],
2306
+ "defaultTone": "exciting-clear",
2307
+ "recommendedComponents": [
2308
+ "css-button",
2309
+ "css-card",
2310
+ "velin-accordion"
2311
+ ],
2312
+ "designConstraintIds": [
2313
+ "hero",
2314
+ "faq"
2315
+ ],
2316
+ "promptKeywords": [
2317
+ "event",
2318
+ "conference",
2319
+ "meetup"
2320
+ ]
2321
+ },
2322
+ {
2323
+ "id": "course",
2324
+ "name": "Course",
2325
+ "audience": "learners",
2326
+ "businessType": "education",
2327
+ "pageGoal": "curriculum + enroll",
2328
+ "conversionGoal": "enroll",
2329
+ "requiredSections": [
2330
+ "hero",
2331
+ "benefits",
2332
+ "process",
2333
+ "pricing",
2334
+ "faq",
2335
+ "cta",
2336
+ "footer"
2337
+ ],
2338
+ "optionalSections": [
2339
+ "testimonials"
2340
+ ],
2341
+ "forbiddenSections": [],
2342
+ "seoIntent": "course offering",
2343
+ "accessibilityRisks": [
2344
+ "long outlines"
2345
+ ],
2346
+ "defaultTone": "instructive",
2347
+ "recommendedComponents": [
2348
+ "css-card",
2349
+ "velin-accordion",
2350
+ "css-button"
2351
+ ],
2352
+ "designConstraintIds": [
2353
+ "hero",
2354
+ "faq"
2355
+ ],
2356
+ "promptKeywords": [
2357
+ "course",
2358
+ "training",
2359
+ "workshop"
2360
+ ]
2361
+ },
2362
+ {
2363
+ "id": "community",
2364
+ "name": "Community",
2365
+ "audience": "members",
2366
+ "businessType": "community",
2367
+ "pageGoal": "belonging + join",
2368
+ "conversionGoal": "join",
2369
+ "requiredSections": [
2370
+ "hero",
2371
+ "benefits",
2372
+ "testimonials",
2373
+ "faq",
2374
+ "cta",
2375
+ "footer"
2376
+ ],
2377
+ "optionalSections": [
2378
+ "services",
2379
+ "process"
2380
+ ],
2381
+ "forbiddenSections": [],
2382
+ "seoIntent": "community brand",
2383
+ "accessibilityRisks": [
2384
+ "user content"
2385
+ ],
2386
+ "defaultTone": "welcoming",
2387
+ "recommendedComponents": [
2388
+ "css-card",
2389
+ "css-button",
2390
+ "velin-accordion"
2391
+ ],
2392
+ "designConstraintIds": [
2393
+ "hero",
2394
+ "faq"
2395
+ ],
2396
+ "promptKeywords": [
2397
+ "community",
2398
+ "forum",
2399
+ "membership"
2400
+ ]
2401
+ }
2402
+ ],
2403
+ "pageCount": 17,
2404
+ "sections": [
2405
+ {
2406
+ "id": "hero",
2407
+ "role": "hero",
2408
+ "blueprintFile": "hero-section.html",
2409
+ "inputs": [
2410
+ "title",
2411
+ "subtitle",
2412
+ "cta",
2413
+ "brand"
2414
+ ],
2415
+ "requiredContent": [
2416
+ "headline",
2417
+ "primaryCta"
2418
+ ],
2419
+ "optionalContent": [
2420
+ "image",
2421
+ "secondaryCta"
2422
+ ],
2423
+ "designRules": [
2424
+ "hero-headline-lines",
2425
+ "hero-cta-max",
2426
+ "hero-contrast"
2427
+ ],
2428
+ "a11yRules": [
2429
+ "one h1",
2430
+ "cta is real button/link"
2431
+ ],
2432
+ "seoRules": [
2433
+ "h1 matches primary intent"
2434
+ ],
2435
+ "compatiblePrev": [],
2436
+ "compatibleNext": [
2437
+ "trust-bar",
2438
+ "benefits",
2439
+ "services"
2440
+ ],
2441
+ "examplePrompts": [
2442
+ "modern hero with two CTAs"
2443
+ ],
2444
+ "commonMistakes": [
2445
+ "three CTAs",
2446
+ "headline longer than two lines"
2447
+ ]
2448
+ },
2449
+ {
2450
+ "id": "trust-bar",
2451
+ "role": "trust-bar",
2452
+ "blueprintFile": "trust-bar.html",
2453
+ "inputs": [
2454
+ "logos",
2455
+ "claim"
2456
+ ],
2457
+ "requiredContent": [
2458
+ "trustItems"
2459
+ ],
2460
+ "optionalContent": [
2461
+ "claim"
2462
+ ],
2463
+ "designRules": [],
2464
+ "a11yRules": [
2465
+ "alt text for logos"
2466
+ ],
2467
+ "seoRules": [],
2468
+ "compatiblePrev": [
2469
+ "hero"
2470
+ ],
2471
+ "compatibleNext": [
2472
+ "benefits",
2473
+ "services"
2474
+ ],
2475
+ "examplePrompts": [
2476
+ "trusted by brands bar"
2477
+ ],
2478
+ "commonMistakes": [
2479
+ "low-contrast logos"
2480
+ ]
2481
+ },
2482
+ {
2483
+ "id": "benefits",
2484
+ "role": "benefits",
2485
+ "blueprintFile": "benefits-grid.html",
2486
+ "inputs": [
2487
+ "items"
2488
+ ],
2489
+ "requiredContent": [
2490
+ "benefitItems"
2491
+ ],
2492
+ "optionalContent": [],
2493
+ "designRules": [],
2494
+ "a11yRules": [
2495
+ "headings per benefit"
2496
+ ],
2497
+ "seoRules": [],
2498
+ "compatiblePrev": [
2499
+ "hero",
2500
+ "trust-bar"
2501
+ ],
2502
+ "compatibleNext": [
2503
+ "services",
2504
+ "process"
2505
+ ],
2506
+ "examplePrompts": [
2507
+ "three benefits"
2508
+ ],
2509
+ "commonMistakes": [
2510
+ "walls of text"
2511
+ ]
2512
+ },
2513
+ {
2514
+ "id": "services",
2515
+ "role": "services",
2516
+ "blueprintFile": "services-grid.html",
2517
+ "inputs": [
2518
+ "items"
2519
+ ],
2520
+ "requiredContent": [
2521
+ "serviceItems"
2522
+ ],
2523
+ "optionalContent": [],
2524
+ "designRules": [],
2525
+ "a11yRules": [
2526
+ "card titles as headings"
2527
+ ],
2528
+ "seoRules": [
2529
+ "service names as keywords"
2530
+ ],
2531
+ "compatiblePrev": [
2532
+ "benefits",
2533
+ "trust-bar",
2534
+ "hero"
2535
+ ],
2536
+ "compatibleNext": [
2537
+ "process",
2538
+ "testimonials",
2539
+ "pricing"
2540
+ ],
2541
+ "examplePrompts": [
2542
+ "services grid for tax advisor"
2543
+ ],
2544
+ "commonMistakes": [
2545
+ "vague service titles"
2546
+ ]
2547
+ },
2548
+ {
2549
+ "id": "process",
2550
+ "role": "process",
2551
+ "blueprintFile": "process-steps.html",
2552
+ "inputs": [
2553
+ "steps"
2554
+ ],
2555
+ "requiredContent": [
2556
+ "steps"
2557
+ ],
2558
+ "optionalContent": [],
2559
+ "designRules": [],
2560
+ "a11yRules": [
2561
+ "ordered list semantics"
2562
+ ],
2563
+ "seoRules": [],
2564
+ "compatiblePrev": [
2565
+ "services",
2566
+ "benefits"
2567
+ ],
2568
+ "compatibleNext": [
2569
+ "testimonials",
2570
+ "pricing",
2571
+ "faq"
2572
+ ],
2573
+ "examplePrompts": [
2574
+ "how it works in 4 steps"
2575
+ ],
2576
+ "commonMistakes": [
2577
+ "more than 6 steps"
2578
+ ]
2579
+ },
2580
+ {
2581
+ "id": "testimonials",
2582
+ "role": "testimonials",
2583
+ "blueprintFile": "testimonials.html",
2584
+ "inputs": [
2585
+ "quotes"
2586
+ ],
2587
+ "requiredContent": [
2588
+ "quotes"
2589
+ ],
2590
+ "optionalContent": [
2591
+ "avatars"
2592
+ ],
2593
+ "designRules": [],
2594
+ "a11yRules": [
2595
+ "cite attribution"
2596
+ ],
2597
+ "seoRules": [],
2598
+ "compatiblePrev": [
2599
+ "services",
2600
+ "process"
2601
+ ],
2602
+ "compatibleNext": [
2603
+ "pricing",
2604
+ "faq",
2605
+ "contact"
2606
+ ],
2607
+ "examplePrompts": [
2608
+ "client testimonials"
2609
+ ],
2610
+ "commonMistakes": [
2611
+ "anonymous quotes only"
2612
+ ]
2613
+ },
2614
+ {
2615
+ "id": "pricing",
2616
+ "role": "pricing",
2617
+ "blueprintFile": "pricing-table.html",
2618
+ "inputs": [
2619
+ "plans"
2620
+ ],
2621
+ "requiredContent": [
2622
+ "plans"
2623
+ ],
2624
+ "optionalContent": [],
2625
+ "designRules": [],
2626
+ "a11yRules": [
2627
+ "table or card semantics clear"
2628
+ ],
2629
+ "seoRules": [],
2630
+ "compatiblePrev": [
2631
+ "services",
2632
+ "testimonials"
2633
+ ],
2634
+ "compatibleNext": [
2635
+ "faq",
2636
+ "cta"
2637
+ ],
2638
+ "examplePrompts": [
2639
+ "three pricing tiers"
2640
+ ],
2641
+ "commonMistakes": [
2642
+ "unclear currency"
2643
+ ]
2644
+ },
2645
+ {
2646
+ "id": "faq",
2647
+ "role": "faq",
2648
+ "blueprintFile": "faq-section.html",
2649
+ "inputs": [
2650
+ "items"
2651
+ ],
2652
+ "requiredContent": [
2653
+ "questions"
2654
+ ],
2655
+ "optionalContent": [],
2656
+ "designRules": [
2657
+ "faq-questions",
2658
+ "faq-pattern"
2659
+ ],
2660
+ "a11yRules": [
2661
+ "accordion keyboard support"
2662
+ ],
2663
+ "seoRules": [
2664
+ "FAQPage-ready question text"
2665
+ ],
2666
+ "compatiblePrev": [
2667
+ "testimonials",
2668
+ "pricing",
2669
+ "process"
2670
+ ],
2671
+ "compatibleNext": [
2672
+ "contact",
2673
+ "cta",
2674
+ "footer"
2675
+ ],
2676
+ "examplePrompts": [
2677
+ "FAQ with accordion"
2678
+ ],
2679
+ "commonMistakes": [
2680
+ "non-questions as titles"
2681
+ ]
2682
+ },
2683
+ {
2684
+ "id": "contact",
2685
+ "role": "contact",
2686
+ "blueprintFile": "form-contact.html",
2687
+ "inputs": [
2688
+ "fields"
2689
+ ],
2690
+ "requiredContent": [
2691
+ "name",
2692
+ "email",
2693
+ "message"
2694
+ ],
2695
+ "optionalContent": [
2696
+ "phone"
2697
+ ],
2698
+ "designRules": [
2699
+ "contact-labels",
2700
+ "contact-summary"
2701
+ ],
2702
+ "a11yRules": [
2703
+ "labels",
2704
+ "form-summary"
2705
+ ],
2706
+ "seoRules": [],
2707
+ "compatiblePrev": [
2708
+ "faq",
2709
+ "testimonials"
2710
+ ],
2711
+ "compatibleNext": [
2712
+ "footer",
2713
+ "cta"
2714
+ ],
2715
+ "examplePrompts": [
2716
+ "contact form with validation summary"
2717
+ ],
2718
+ "commonMistakes": [
2719
+ "placeholder-only labels"
2720
+ ]
2721
+ },
2722
+ {
2723
+ "id": "cta",
2724
+ "role": "cta",
2725
+ "blueprintFile": "cta-band.html",
2726
+ "inputs": [
2727
+ "title",
2728
+ "cta"
2729
+ ],
2730
+ "requiredContent": [
2731
+ "headline",
2732
+ "primaryCta"
2733
+ ],
2734
+ "optionalContent": [
2735
+ "secondaryCta"
2736
+ ],
2737
+ "designRules": [
2738
+ "hero-cta-max"
2739
+ ],
2740
+ "a11yRules": [
2741
+ "button semantics"
2742
+ ],
2743
+ "seoRules": [],
2744
+ "compatiblePrev": [
2745
+ "faq",
2746
+ "pricing",
2747
+ "testimonials"
2748
+ ],
2749
+ "compatibleNext": [
2750
+ "footer"
2751
+ ],
2752
+ "examplePrompts": [
2753
+ "final CTA band"
2754
+ ],
2755
+ "commonMistakes": [
2756
+ "competing CTAs"
2757
+ ]
2758
+ },
2759
+ {
2760
+ "id": "footer",
2761
+ "role": "footer",
2762
+ "blueprintFile": "footer-simple.html",
2763
+ "inputs": [
2764
+ "brand",
2765
+ "links"
2766
+ ],
2767
+ "requiredContent": [
2768
+ "brand"
2769
+ ],
2770
+ "optionalContent": [
2771
+ "legal",
2772
+ "social"
2773
+ ],
2774
+ "designRules": [],
2775
+ "a11yRules": [
2776
+ "contentinfo landmark"
2777
+ ],
2778
+ "seoRules": [
2779
+ "legal links"
2780
+ ],
2781
+ "compatiblePrev": [
2782
+ "cta",
2783
+ "contact",
2784
+ "faq"
2785
+ ],
2786
+ "compatibleNext": [],
2787
+ "examplePrompts": [
2788
+ "site footer"
2789
+ ],
2790
+ "commonMistakes": [
2791
+ "missing legal links on regulated niches"
2792
+ ]
2793
+ },
2794
+ {
2795
+ "id": "navbar",
2796
+ "role": "navbar",
2797
+ "blueprintFile": "navbar-header.html",
2798
+ "inputs": [
2799
+ "brand",
2800
+ "links"
2801
+ ],
2802
+ "requiredContent": [
2803
+ "brand"
2804
+ ],
2805
+ "optionalContent": [
2806
+ "cta",
2807
+ "search"
2808
+ ],
2809
+ "designRules": [],
2810
+ "a11yRules": [
2811
+ "nav landmark"
2812
+ ],
2813
+ "seoRules": [
2814
+ "internal links"
2815
+ ],
2816
+ "compatiblePrev": [],
2817
+ "compatibleNext": [
2818
+ "hero"
2819
+ ],
2820
+ "examplePrompts": [
2821
+ "marketing navbar"
2822
+ ],
2823
+ "commonMistakes": [
2824
+ "too many links"
2825
+ ]
2826
+ }
2827
+ ],
2828
+ "sectionCount": 12,
2829
+ "designConstraints": [
2830
+ {
2831
+ "id": "contact",
2832
+ "target": "section:contact",
2833
+ "rules": [
2834
+ {
2835
+ "id": "contact-labels",
2836
+ "scope": "section",
2837
+ "section": "contact",
2838
+ "rule": "Visible labels on all fields",
2839
+ "severity": "error"
2840
+ },
2841
+ {
2842
+ "id": "contact-summary",
2843
+ "scope": "section",
2844
+ "section": "contact",
2845
+ "rule": "Include velin-form-summary for errors",
2846
+ "severity": "error"
2847
+ },
2848
+ {
2849
+ "id": "contact-submit",
2850
+ "scope": "section",
2851
+ "section": "contact",
2852
+ "rule": "Single primary submit button",
2853
+ "severity": "warning"
2854
+ }
2855
+ ]
2856
+ },
2857
+ {
2858
+ "id": "faq",
2859
+ "target": "section:faq",
2860
+ "rules": [
2861
+ {
2862
+ "id": "faq-questions",
2863
+ "scope": "section",
2864
+ "section": "faq",
2865
+ "rule": "Entries must be clear interrogatives",
2866
+ "severity": "error"
2867
+ },
2868
+ {
2869
+ "id": "faq-pattern",
2870
+ "scope": "section",
2871
+ "section": "faq",
2872
+ "rule": "Use accordion/disclosure, not long marketing paragraphs",
2873
+ "severity": "error"
2874
+ },
2875
+ {
2876
+ "id": "faq-count",
2877
+ "scope": "section",
2878
+ "section": "faq",
2879
+ "rule": "Prefer 5–8 high-intent FAQs",
2880
+ "severity": "info"
2881
+ }
2882
+ ]
2883
+ },
2884
+ {
2885
+ "id": "hero",
2886
+ "target": "section:hero",
2887
+ "rules": [
2888
+ {
2889
+ "id": "hero-headline-lines",
2890
+ "scope": "section",
2891
+ "section": "hero",
2892
+ "rule": "Headline max 2 lines on desktop",
2893
+ "severity": "error"
2894
+ },
2895
+ {
2896
+ "id": "hero-cta-max",
2897
+ "scope": "section",
2898
+ "section": "hero",
2899
+ "rule": "Maximum 2 CTAs",
2900
+ "severity": "error"
2901
+ },
2902
+ {
2903
+ "id": "hero-image-side",
2904
+ "scope": "section",
2905
+ "section": "hero",
2906
+ "rule": "Image left OR right, not competing dual heroes",
2907
+ "severity": "warning"
2908
+ },
2909
+ {
2910
+ "id": "hero-padding",
2911
+ "scope": "section",
2912
+ "section": "hero",
2913
+ "rule": "Section padding by breakpoint",
2914
+ "breakpoints": {
2915
+ "mobile": "var(--velin-space-8)",
2916
+ "tablet": "var(--velin-space-10)",
2917
+ "desktop": "var(--velin-space-12)"
2918
+ },
2919
+ "severity": "warning"
2920
+ },
2921
+ {
2922
+ "id": "hero-contrast",
2923
+ "scope": "section",
2924
+ "section": "hero",
2925
+ "rule": "Text/surface pairs must meet contrast contract",
2926
+ "severity": "error"
2927
+ },
2928
+ {
2929
+ "id": "hero-motion",
2930
+ "scope": "section",
2931
+ "section": "hero",
2932
+ "rule": "Animation only when motion-safe",
2933
+ "severity": "warning"
2934
+ },
2935
+ {
2936
+ "id": "hero-container",
2937
+ "scope": "section",
2938
+ "section": "hero",
2939
+ "rule": "Content inside documented container width",
2940
+ "severity": "warning"
2941
+ }
2942
+ ]
2943
+ }
2944
+ ],
2945
+ "schemas": [
2946
+ "schemas/component-knowledge.schema.json",
2947
+ "schemas/design-intelligence.schema.json",
2948
+ "schemas/design-constraint.schema.json",
2949
+ "schemas/page-template.schema.json",
2950
+ "schemas/section.schema.json",
2951
+ "schemas/review-report.schema.json",
2952
+ "schemas/token-graph.schema.json",
2953
+ "schemas/design-rule.schema.json",
2954
+ "schemas/skill-record.schema.json",
2955
+ "schemas/skill-registry.schema.json",
2956
+ "schemas/skill-pack.schema.json",
2957
+ "schemas/skill-graph.schema.json",
2958
+ "schemas/skill-bundle.schema.json",
2959
+ "schemas/skill-template.schema.json",
2960
+ "schemas/skill-project.schema.json"
2961
+ ]
2962
+ },
2963
+ "skills": {
2964
+ "count": 40,
2965
+ "categories": [
2966
+ "accessibility",
2967
+ "ai-workflows",
2968
+ "components",
2969
+ "design",
2970
+ "developer-experience",
2971
+ "development",
2972
+ "documentation",
2973
+ "migration",
2974
+ "motion",
2975
+ "performance",
2976
+ "release",
2977
+ "review",
2978
+ "security",
2979
+ "testing",
2980
+ "themes",
2981
+ "utilities"
2982
+ ],
2983
+ "capabilities": [
2984
+ "accessibility",
2985
+ "ai-orchestration",
2986
+ "build",
2987
+ "documentation",
2988
+ "dx",
2989
+ "migrate",
2990
+ "motion",
2991
+ "performance",
2992
+ "release",
2993
+ "review",
2994
+ "security",
2995
+ "seo",
2996
+ "test",
2997
+ "theme"
2998
+ ],
2999
+ "items": [
3000
+ {
3001
+ "id": "velin-design-hero-compose",
3002
+ "category": "design",
3003
+ "priority": "core",
3004
+ "status": "beta",
3005
+ "confidence": "high",
3006
+ "capabilities": [
3007
+ "build",
3008
+ "review"
3009
+ ]
3010
+ },
3011
+ {
3012
+ "id": "velin-design-section-rhythm",
3013
+ "category": "design",
3014
+ "priority": "recommended",
3015
+ "status": "beta",
3016
+ "confidence": "high",
3017
+ "capabilities": [
3018
+ "build"
3019
+ ]
3020
+ },
3021
+ {
3022
+ "id": "velin-design-surface-roles",
3023
+ "category": "design",
3024
+ "priority": "recommended",
3025
+ "status": "beta",
3026
+ "confidence": "medium",
3027
+ "capabilities": [
3028
+ "build",
3029
+ "theme"
3030
+ ]
3031
+ },
3032
+ {
3033
+ "id": "velin-dev-plan-first",
3034
+ "category": "development",
3035
+ "priority": "core",
3036
+ "status": "stable",
3037
+ "confidence": "high",
3038
+ "capabilities": [
3039
+ "ai-orchestration",
3040
+ "build"
3041
+ ]
3042
+ },
3043
+ {
3044
+ "id": "velin-dev-page-scaffold",
3045
+ "category": "development",
3046
+ "priority": "core",
3047
+ "status": "beta",
3048
+ "confidence": "high",
3049
+ "capabilities": [
3050
+ "build"
3051
+ ]
3052
+ },
3053
+ {
3054
+ "id": "velin-dev-component-wire",
3055
+ "category": "development",
3056
+ "priority": "recommended",
3057
+ "status": "beta",
3058
+ "confidence": "medium",
3059
+ "capabilities": [
3060
+ "build"
3061
+ ]
3062
+ },
3063
+ {
3064
+ "id": "velin-components-select-compose",
3065
+ "category": "components",
3066
+ "priority": "core",
3067
+ "status": "stable",
3068
+ "confidence": "high",
3069
+ "capabilities": [
3070
+ "build"
3071
+ ]
3072
+ },
3073
+ {
3074
+ "id": "velin-components-api-contract",
3075
+ "category": "components",
3076
+ "priority": "recommended",
3077
+ "status": "beta",
3078
+ "confidence": "high",
3079
+ "capabilities": [
3080
+ "documentation",
3081
+ "review"
3082
+ ]
3083
+ },
3084
+ {
3085
+ "id": "velin-components-recipe",
3086
+ "category": "components",
3087
+ "priority": "recommended",
3088
+ "status": "beta",
3089
+ "confidence": "medium",
3090
+ "capabilities": [
3091
+ "build",
3092
+ "documentation"
3093
+ ]
3094
+ },
3095
+ {
3096
+ "id": "velin-components-accessibility-map",
3097
+ "category": "components",
3098
+ "priority": "advanced",
3099
+ "status": "beta",
3100
+ "confidence": "medium",
3101
+ "capabilities": [
3102
+ "accessibility",
3103
+ "documentation"
3104
+ ]
3105
+ },
3106
+ {
3107
+ "id": "velin-utilities-layout-apply",
3108
+ "category": "utilities",
3109
+ "priority": "core",
3110
+ "status": "stable",
3111
+ "confidence": "high",
3112
+ "capabilities": [
3113
+ "build"
3114
+ ]
3115
+ },
3116
+ {
3117
+ "id": "velin-utilities-prefix-fix",
3118
+ "category": "utilities",
3119
+ "priority": "recommended",
3120
+ "status": "stable",
3121
+ "confidence": "high",
3122
+ "capabilities": [
3123
+ "migrate"
3124
+ ]
3125
+ },
3126
+ {
3127
+ "id": "velin-utilities-token-map",
3128
+ "category": "utilities",
3129
+ "priority": "advanced",
3130
+ "status": "beta",
3131
+ "confidence": "medium",
3132
+ "capabilities": [
3133
+ "theme",
3134
+ "documentation"
3135
+ ]
3136
+ },
3137
+ {
3138
+ "id": "velin-themes-apply-token",
3139
+ "category": "themes",
3140
+ "priority": "core",
3141
+ "status": "stable",
3142
+ "confidence": "high",
3143
+ "capabilities": [
3144
+ "theme",
3145
+ "build"
3146
+ ]
3147
+ },
3148
+ {
3149
+ "id": "velin-themes-contrast-check",
3150
+ "category": "themes",
3151
+ "priority": "recommended",
3152
+ "status": "beta",
3153
+ "confidence": "high",
3154
+ "capabilities": [
3155
+ "accessibility",
3156
+ "theme",
3157
+ "review"
3158
+ ]
3159
+ },
3160
+ {
3161
+ "id": "velin-motion-reduced-safe",
3162
+ "category": "motion",
3163
+ "priority": "core",
3164
+ "status": "stable",
3165
+ "confidence": "high",
3166
+ "capabilities": [
3167
+ "motion",
3168
+ "accessibility"
3169
+ ]
3170
+ },
3171
+ {
3172
+ "id": "velin-motion-reveal-feedback",
3173
+ "category": "motion",
3174
+ "priority": "recommended",
3175
+ "status": "beta",
3176
+ "confidence": "medium",
3177
+ "capabilities": [
3178
+ "motion",
3179
+ "build"
3180
+ ]
3181
+ },
3182
+ {
3183
+ "id": "velin-a11y-page-checklist",
3184
+ "category": "accessibility",
3185
+ "priority": "core",
3186
+ "status": "stable",
3187
+ "confidence": "high",
3188
+ "capabilities": [
3189
+ "accessibility",
3190
+ "review"
3191
+ ]
3192
+ },
3193
+ {
3194
+ "id": "velin-a11y-scan-fix",
3195
+ "category": "accessibility",
3196
+ "priority": "core",
3197
+ "status": "stable",
3198
+ "confidence": "high",
3199
+ "capabilities": [
3200
+ "accessibility",
3201
+ "review"
3202
+ ]
3203
+ },
3204
+ {
3205
+ "id": "velin-a11y-focus-keyboard",
3206
+ "category": "accessibility",
3207
+ "priority": "recommended",
3208
+ "status": "beta",
3209
+ "confidence": "high",
3210
+ "capabilities": [
3211
+ "accessibility",
3212
+ "test"
3213
+ ]
3214
+ },
3215
+ {
3216
+ "id": "velin-testing-a11y-suite",
3217
+ "category": "testing",
3218
+ "priority": "recommended",
3219
+ "status": "stable",
3220
+ "confidence": "high",
3221
+ "capabilities": [
3222
+ "test",
3223
+ "accessibility"
3224
+ ]
3225
+ },
3226
+ {
3227
+ "id": "velin-testing-visual-smoke",
3228
+ "category": "testing",
3229
+ "priority": "advanced",
3230
+ "status": "beta",
3231
+ "confidence": "medium",
3232
+ "capabilities": [
3233
+ "test",
3234
+ "review"
3235
+ ]
3236
+ },
3237
+ {
3238
+ "id": "velin-review-page-gate",
3239
+ "category": "review",
3240
+ "priority": "core",
3241
+ "status": "stable",
3242
+ "confidence": "high",
3243
+ "capabilities": [
3244
+ "review"
3245
+ ]
3246
+ },
3247
+ {
3248
+ "id": "velin-review-conversion-hero",
3249
+ "category": "review",
3250
+ "priority": "recommended",
3251
+ "status": "beta",
3252
+ "confidence": "medium",
3253
+ "capabilities": [
3254
+ "review",
3255
+ "seo"
3256
+ ]
3257
+ },
3258
+ {
3259
+ "id": "velin-review-seo-meta",
3260
+ "category": "review",
3261
+ "priority": "recommended",
3262
+ "status": "stable",
3263
+ "confidence": "high",
3264
+ "capabilities": [
3265
+ "review",
3266
+ "seo"
3267
+ ]
3268
+ },
3269
+ {
3270
+ "id": "velin-docs-component-guide",
3271
+ "category": "documentation",
3272
+ "priority": "recommended",
3273
+ "status": "beta",
3274
+ "confidence": "high",
3275
+ "capabilities": [
3276
+ "documentation"
3277
+ ]
3278
+ },
3279
+ {
3280
+ "id": "velin-docs-generate-api",
3281
+ "category": "documentation",
3282
+ "priority": "core",
3283
+ "status": "stable",
3284
+ "confidence": "high",
3285
+ "capabilities": [
3286
+ "documentation"
3287
+ ]
3288
+ },
3289
+ {
3290
+ "id": "velin-migration-prefix-classes",
3291
+ "category": "migration",
3292
+ "priority": "core",
3293
+ "status": "stable",
3294
+ "confidence": "high",
3295
+ "capabilities": [
3296
+ "migrate"
3297
+ ]
3298
+ },
3299
+ {
3300
+ "id": "velin-migration-legacy-wc",
3301
+ "category": "migration",
3302
+ "priority": "recommended",
3303
+ "status": "beta",
3304
+ "confidence": "high",
3305
+ "capabilities": [
3306
+ "migrate",
3307
+ "review"
3308
+ ]
3309
+ },
3310
+ {
3311
+ "id": "velin-release-changelog-sync",
3312
+ "category": "release",
3313
+ "priority": "recommended",
3314
+ "status": "stable",
3315
+ "confidence": "high",
3316
+ "capabilities": [
3317
+ "release",
3318
+ "documentation"
3319
+ ]
3320
+ },
3321
+ {
3322
+ "id": "velin-release-meta-rebuild",
3323
+ "category": "release",
3324
+ "priority": "core",
3325
+ "status": "stable",
3326
+ "confidence": "high",
3327
+ "capabilities": [
3328
+ "release",
3329
+ "ai-orchestration"
3330
+ ]
3331
+ },
3332
+ {
3333
+ "id": "velin-dx-project-init",
3334
+ "category": "developer-experience",
3335
+ "priority": "core",
3336
+ "status": "stable",
3337
+ "confidence": "high",
3338
+ "capabilities": [
3339
+ "dx",
3340
+ "build"
3341
+ ]
3342
+ },
3343
+ {
3344
+ "id": "velin-dx-doctor-setup",
3345
+ "category": "developer-experience",
3346
+ "priority": "advanced",
3347
+ "status": "experimental",
3348
+ "confidence": "medium",
3349
+ "capabilities": [
3350
+ "dx",
3351
+ "review"
3352
+ ]
3353
+ },
3354
+ {
3355
+ "id": "velin-perf-audit-fix",
3356
+ "category": "performance",
3357
+ "priority": "recommended",
3358
+ "status": "stable",
3359
+ "confidence": "high",
3360
+ "capabilities": [
3361
+ "performance",
3362
+ "review"
3363
+ ]
3364
+ },
3365
+ {
3366
+ "id": "velin-perf-runtime-tree-shake",
3367
+ "category": "performance",
3368
+ "priority": "advanced",
3369
+ "status": "beta",
3370
+ "confidence": "medium",
3371
+ "capabilities": [
3372
+ "performance",
3373
+ "build"
3374
+ ]
3375
+ },
3376
+ {
3377
+ "id": "velin-security-scan-pii",
3378
+ "category": "security",
3379
+ "priority": "core",
3380
+ "status": "stable",
3381
+ "confidence": "high",
3382
+ "capabilities": [
3383
+ "security",
3384
+ "review"
3385
+ ]
3386
+ },
3387
+ {
3388
+ "id": "velin-security-sanitize-html",
3389
+ "category": "security",
3390
+ "priority": "recommended",
3391
+ "status": "stable",
3392
+ "confidence": "high",
3393
+ "capabilities": [
3394
+ "security",
3395
+ "build"
3396
+ ]
3397
+ },
3398
+ {
3399
+ "id": "velin-ai-agent-briefing",
3400
+ "category": "ai-workflows",
3401
+ "priority": "core",
3402
+ "status": "beta",
3403
+ "confidence": "high",
3404
+ "capabilities": [
3405
+ "ai-orchestration",
3406
+ "documentation"
3407
+ ]
3408
+ },
3409
+ {
3410
+ "id": "velin-ai-plan-scaffold-review",
3411
+ "category": "ai-workflows",
3412
+ "priority": "core",
3413
+ "status": "beta",
3414
+ "confidence": "high",
3415
+ "capabilities": [
3416
+ "ai-orchestration",
3417
+ "build",
3418
+ "review"
3419
+ ]
3420
+ },
3421
+ {
3422
+ "id": "velin-ai-skill-authoring",
3423
+ "category": "ai-workflows",
3424
+ "priority": "advanced",
3425
+ "status": "beta",
3426
+ "confidence": "medium",
3427
+ "capabilities": [
3428
+ "ai-orchestration",
3429
+ "documentation"
3430
+ ]
3431
+ }
3432
+ ]
3433
+ },
3434
+ "skillPacks": [
3435
+ {
3436
+ "id": "frontend",
3437
+ "name": "Frontend Pack",
3438
+ "version": "1.0.0",
3439
+ "priority": "core",
3440
+ "skills": [
3441
+ "velin-dx-project-init",
3442
+ "velin-dev-plan-first",
3443
+ "velin-dev-page-scaffold",
3444
+ "velin-components-select-compose",
3445
+ "velin-utilities-layout-apply"
3446
+ ]
3447
+ },
3448
+ {
3449
+ "id": "design",
3450
+ "name": "Design Pack",
3451
+ "version": "1.0.0",
3452
+ "priority": "recommended",
3453
+ "skills": [
3454
+ "velin-design-hero-compose",
3455
+ "velin-design-section-rhythm",
3456
+ "velin-design-surface-roles",
3457
+ "velin-themes-apply-token",
3458
+ "velin-motion-reduced-safe"
3459
+ ]
3460
+ },
3461
+ {
3462
+ "id": "accessibility",
3463
+ "name": "Accessibility Pack",
3464
+ "version": "1.0.0",
3465
+ "priority": "core",
3466
+ "skills": [
3467
+ "velin-a11y-page-checklist",
3468
+ "velin-a11y-scan-fix",
3469
+ "velin-a11y-focus-keyboard",
3470
+ "velin-testing-a11y-suite"
3471
+ ]
3472
+ },
3473
+ {
3474
+ "id": "documentation",
3475
+ "name": "Documentation Pack",
3476
+ "version": "1.0.0",
3477
+ "priority": "recommended",
3478
+ "skills": [
3479
+ "velin-docs-component-guide",
3480
+ "velin-docs-generate-api",
3481
+ "velin-release-changelog-sync"
3482
+ ]
3483
+ },
3484
+ {
3485
+ "id": "review",
3486
+ "name": "Review Pack",
3487
+ "version": "1.0.0",
3488
+ "priority": "core",
3489
+ "skills": [
3490
+ "velin-review-page-gate",
3491
+ "velin-review-conversion-hero",
3492
+ "velin-review-seo-meta",
3493
+ "velin-security-scan-pii"
3494
+ ]
3495
+ },
3496
+ {
3497
+ "id": "enterprise",
3498
+ "name": "Enterprise Pack",
3499
+ "version": "1.0.0",
3500
+ "priority": "advanced",
3501
+ "skills": [
3502
+ "velin-security-scan-pii",
3503
+ "velin-security-sanitize-html",
3504
+ "velin-perf-audit-fix",
3505
+ "velin-migration-prefix-classes",
3506
+ "velin-release-meta-rebuild"
3507
+ ]
3508
+ }
3509
+ ],
3510
+ "workflowGraphs": [
3511
+ {
3512
+ "id": "landingpage",
3513
+ "name": "Landing Page Workflow",
3514
+ "entry": "plan",
3515
+ "nodeCount": 8,
3516
+ "edgeCount": 8
3517
+ },
3518
+ {
3519
+ "id": "component-ship",
3520
+ "name": "Component Ship Workflow",
3521
+ "entry": "select",
3522
+ "nodeCount": 5,
3523
+ "edgeCount": 4
3524
+ },
3525
+ {
3526
+ "id": "release-gate",
3527
+ "name": "Release Gate Workflow",
3528
+ "entry": "review",
3529
+ "nodeCount": 5,
3530
+ "edgeCount": 5
3531
+ }
3532
+ ],
3533
+ "bundles": [
3534
+ {
3535
+ "id": "landing-starter",
3536
+ "origin": "official",
3537
+ "packs": [
3538
+ "frontend",
3539
+ "design",
3540
+ "review"
3541
+ ],
3542
+ "graphs": [
3543
+ "landingpage"
3544
+ ],
3545
+ "templates": [
3546
+ "landing-page"
3547
+ ],
3548
+ "docs": [
3549
+ "docs/guides/ai-skills.html"
3550
+ ]
3551
+ },
3552
+ {
3553
+ "id": "review-suite",
3554
+ "origin": "official",
3555
+ "packs": [
3556
+ "accessibility",
3557
+ "review"
3558
+ ],
3559
+ "graphs": [
3560
+ "release-gate"
3561
+ ],
3562
+ "templates": [],
3563
+ "docs": [
3564
+ "docs/guides/ai-skills.html"
3565
+ ]
3566
+ }
3567
+ ],
3568
+ "templates": [
3569
+ {
3570
+ "id": "landing-page",
3571
+ "workflowGraph": "landingpage",
3572
+ "packs": [
3573
+ "frontend",
3574
+ "design"
3575
+ ],
3576
+ "theme": "default",
3577
+ "demo": "samples/landing.html",
3578
+ "docs": [
3579
+ "docs/guides/prompt-scaffolding.html",
3580
+ "docs/guides/landing-15-min.html"
3581
+ ],
3582
+ "starterFiles": [
3583
+ "templates/vite-velinstyle/index.html"
3584
+ ],
3585
+ "defaults": {
3586
+ "pageIntent": "marketing-landing",
3587
+ "sections": [
3588
+ "hero",
3589
+ "features",
3590
+ "faq",
3591
+ "contact"
3592
+ ]
3593
+ }
3594
+ },
3595
+ {
3596
+ "id": "marketing-website",
3597
+ "workflowGraph": "landingpage",
3598
+ "packs": [
3599
+ "frontend",
3600
+ "design",
3601
+ "review"
3602
+ ],
3603
+ "theme": "default",
3604
+ "demo": "samples/landing.html",
3605
+ "docs": [
3606
+ "docs/guides/prompt-scaffolding.html",
3607
+ "docs/guides/landing-15-min.html"
3608
+ ],
3609
+ "starterFiles": [
3610
+ "templates/vite-velinstyle/index.html"
3611
+ ],
3612
+ "defaults": {
3613
+ "pageIntent": "marketing-site",
3614
+ "sections": [
3615
+ "hero",
3616
+ "benefits",
3617
+ "proof",
3618
+ "faq",
3619
+ "contact"
3620
+ ]
3621
+ }
3622
+ },
3623
+ {
3624
+ "id": "documentation-portal",
3625
+ "workflowGraph": "component-ship",
3626
+ "packs": [
3627
+ "documentation",
3628
+ "review"
3629
+ ],
3630
+ "theme": "default",
3631
+ "demo": "docs/index.html",
3632
+ "docs": [
3633
+ "docs/guides/ai-skills.html",
3634
+ "docs/guides/prompt-scaffolding.html"
3635
+ ],
3636
+ "starterFiles": [
3637
+ "templates/vite-velinstyle/index.html"
3638
+ ],
3639
+ "defaults": {
3640
+ "pageIntent": "docs-portal",
3641
+ "sections": [
3642
+ "hero",
3643
+ "toc",
3644
+ "examples",
3645
+ "faq"
3646
+ ]
3647
+ }
3648
+ },
3649
+ {
3650
+ "id": "admin-panel",
3651
+ "workflowGraph": "release-gate",
3652
+ "packs": [
3653
+ "enterprise",
3654
+ "review"
3655
+ ],
3656
+ "theme": "midnight",
3657
+ "demo": "samples/dashboard.html",
3658
+ "docs": [
3659
+ "docs/guides/ai-skills.html",
3660
+ "docs/guides/prompt-scaffolding.html"
3661
+ ],
3662
+ "starterFiles": [
3663
+ "templates/vite-velinstyle/index.html"
3664
+ ],
3665
+ "defaults": {
3666
+ "pageIntent": "admin-panel",
3667
+ "sections": [
3668
+ "kpis",
3669
+ "table",
3670
+ "forms"
3671
+ ]
3672
+ }
3673
+ },
3674
+ {
3675
+ "id": "blog",
3676
+ "workflowGraph": "landingpage",
3677
+ "packs": [
3678
+ "frontend",
3679
+ "review"
3680
+ ],
3681
+ "theme": "default",
3682
+ "demo": "samples/blog.html",
3683
+ "docs": [
3684
+ "docs/guides/ai-skills.html",
3685
+ "docs/guides/prompt-scaffolding.html"
3686
+ ],
3687
+ "starterFiles": [
3688
+ "templates/vite-velinstyle/index.html"
3689
+ ],
3690
+ "defaults": {
3691
+ "pageIntent": "blog",
3692
+ "sections": [
3693
+ "hero",
3694
+ "posts",
3695
+ "faq",
3696
+ "contact"
3697
+ ]
3698
+ }
3699
+ },
3700
+ {
3701
+ "id": "ecommerce-shop",
3702
+ "workflowGraph": "landingpage",
3703
+ "packs": [
3704
+ "frontend",
3705
+ "review",
3706
+ "enterprise"
3707
+ ],
3708
+ "theme": "default",
3709
+ "demo": "samples/ecommerce.html",
3710
+ "docs": [
3711
+ "docs/guides/ecommerce.html",
3712
+ "docs/guides/prompt-scaffolding.html"
3713
+ ],
3714
+ "starterFiles": [
3715
+ "templates/vite-velinstyle/index.html"
3716
+ ],
3717
+ "defaults": {
3718
+ "pageIntent": "shop",
3719
+ "sections": [
3720
+ "hero",
3721
+ "products",
3722
+ "proof",
3723
+ "faq"
3724
+ ]
3725
+ }
3726
+ },
3727
+ {
3728
+ "id": "portfolio",
3729
+ "workflowGraph": "landingpage",
3730
+ "packs": [
3731
+ "design",
3732
+ "frontend"
3733
+ ],
3734
+ "theme": "soft",
3735
+ "demo": "samples/portfolio.html",
3736
+ "docs": [
3737
+ "docs/guides/ai-skills.html",
3738
+ "docs/guides/prompt-scaffolding.html"
3739
+ ],
3740
+ "starterFiles": [
3741
+ "templates/vite-velinstyle/index.html"
3742
+ ],
3743
+ "defaults": {
3744
+ "pageIntent": "portfolio",
3745
+ "sections": [
3746
+ "hero",
3747
+ "projects",
3748
+ "about",
3749
+ "contact"
3750
+ ]
3751
+ }
3752
+ },
3753
+ {
3754
+ "id": "laravel-dashboard",
3755
+ "workflowGraph": "release-gate",
3756
+ "packs": [
3757
+ "enterprise",
3758
+ "frontend"
3759
+ ],
3760
+ "theme": "midnight",
3761
+ "demo": "samples/dashboard.html",
3762
+ "docs": [
3763
+ "docs/guides/laravel.html"
3764
+ ],
3765
+ "starterFiles": [
3766
+ "templates/vite-velinstyle/index.html"
3767
+ ],
3768
+ "defaults": {
3769
+ "pageIntent": "dashboard",
3770
+ "sections": [
3771
+ "kpis",
3772
+ "table",
3773
+ "forms"
3774
+ ]
3775
+ }
3776
+ }
3777
+ ],
3778
+ "projectSkills": [
3779
+ {
3780
+ "id": "marketing-website",
3781
+ "name": "Marketing Website",
3782
+ "priority": "recommended",
3783
+ "workflowGraph": "landingpage",
3784
+ "packs": [
3785
+ "frontend",
3786
+ "design",
3787
+ "review"
3788
+ ],
3789
+ "skills": [
3790
+ "velin-ai-plan-scaffold-review",
3791
+ "velin-review-conversion-hero"
3792
+ ],
3793
+ "optimizedFor": [
3794
+ "cursor",
3795
+ "claude-code"
3796
+ ]
3797
+ },
3798
+ {
3799
+ "id": "documentation-portal",
3800
+ "name": "Documentation Portal",
3801
+ "priority": "recommended",
3802
+ "workflowGraph": "component-ship",
3803
+ "packs": [
3804
+ "documentation",
3805
+ "review"
3806
+ ],
3807
+ "skills": [
3808
+ "velin-docs-generate-api",
3809
+ "velin-ai-agent-briefing"
3810
+ ],
3811
+ "optimizedFor": [
3812
+ "cursor",
3813
+ "vscode"
3814
+ ]
3815
+ },
3816
+ {
3817
+ "id": "admin-panel",
3818
+ "name": "Admin Panel",
3819
+ "priority": "recommended",
3820
+ "workflowGraph": "release-gate",
3821
+ "packs": [
3822
+ "enterprise",
3823
+ "review"
3824
+ ],
3825
+ "skills": [
3826
+ "velin-perf-audit-fix",
3827
+ "velin-security-scan-pii"
3828
+ ],
3829
+ "optimizedFor": [
3830
+ "cursor"
3831
+ ]
3832
+ },
3833
+ {
3834
+ "id": "landing-page",
3835
+ "name": "Landing Page",
3836
+ "priority": "core",
3837
+ "workflowGraph": "landingpage",
3838
+ "packs": [
3839
+ "frontend",
3840
+ "design"
3841
+ ],
3842
+ "skills": [
3843
+ "velin-review-conversion-hero"
3844
+ ],
3845
+ "optimizedFor": [
3846
+ "cursor",
3847
+ "windsurf"
3848
+ ]
3849
+ },
3850
+ {
3851
+ "id": "blog",
3852
+ "name": "Blog",
3853
+ "priority": "recommended",
3854
+ "workflowGraph": "landingpage",
3855
+ "packs": [
3856
+ "frontend",
3857
+ "review"
3858
+ ],
3859
+ "skills": [
3860
+ "velin-review-seo-meta"
3861
+ ],
3862
+ "optimizedFor": [
3863
+ "cursor"
3864
+ ]
3865
+ },
3866
+ {
3867
+ "id": "ecommerce-shop",
3868
+ "name": "E-Commerce Shop",
3869
+ "priority": "advanced",
3870
+ "workflowGraph": "landingpage",
3871
+ "packs": [
3872
+ "enterprise",
3873
+ "review"
3874
+ ],
3875
+ "skills": [
3876
+ "velin-security-sanitize-html",
3877
+ "velin-review-conversion-hero"
3878
+ ],
3879
+ "optimizedFor": [
3880
+ "cursor"
3881
+ ]
3882
+ },
3883
+ {
3884
+ "id": "portfolio",
3885
+ "name": "Portfolio",
3886
+ "priority": "recommended",
3887
+ "workflowGraph": "landingpage",
3888
+ "packs": [
3889
+ "design",
3890
+ "frontend"
3891
+ ],
3892
+ "skills": [
3893
+ "velin-motion-reveal-feedback"
3894
+ ],
3895
+ "optimizedFor": [
3896
+ "cursor",
3897
+ "vscode"
3898
+ ]
3899
+ },
3900
+ {
3901
+ "id": "laravel-dashboard",
3902
+ "name": "Laravel Dashboard",
3903
+ "priority": "advanced",
3904
+ "workflowGraph": "release-gate",
3905
+ "packs": [
3906
+ "enterprise",
3907
+ "frontend"
3908
+ ],
3909
+ "skills": [
3910
+ "velin-dx-project-init"
3911
+ ],
3912
+ "optimizedFor": [
3913
+ "cursor",
3914
+ "claude-code"
3915
+ ]
3916
+ }
3917
+ ],
132
3918
  "attributes": {
133
3919
  "names": [
134
3920
  "velin-accordion",
@@ -165,15 +3951,20 @@
165
3951
  "commands": [
166
3952
  {
167
3953
  "name": "init",
168
- "summary": "Create velinstyle.config.js",
3954
+ "summary": "Create velinstyle.config.js, optional vendor copy, and starter HTML with reveal/sprite defaults",
169
3955
  "flags": [],
170
3956
  "example": "velinstyle init"
171
3957
  },
172
3958
  {
173
3959
  "name": "build",
174
3960
  "summary": "Build custom CSS with selected layers from config",
175
- "flags": [],
176
- "example": "velinstyle build"
3961
+ "flags": [
3962
+ "--output",
3963
+ "-o",
3964
+ "--minify",
3965
+ "--preset"
3966
+ ],
3967
+ "example": "velinstyle build --preset lite -o ./lite.css"
177
3968
  },
178
3969
  {
179
3970
  "name": "themes",
@@ -204,7 +3995,7 @@
204
3995
  },
205
3996
  {
206
3997
  "name": "scan",
207
- "summary": "Security, accessibility, CSS, and PII scanner",
3998
+ "summary": "Security, accessibility, CSS, and PII scanner (directory or single file)",
208
3999
  "flags": [
209
4000
  "--format",
210
4001
  "--severity",
@@ -213,7 +4004,7 @@
213
4004
  "--fix-dry-run",
214
4005
  "--fix-lang"
215
4006
  ],
216
- "example": "velinstyle scan . --only pii --fix-dry-run"
4007
+ "example": "velinstyle scan index.html"
217
4008
  },
218
4009
  {
219
4010
  "name": "prefix",
@@ -227,19 +4018,59 @@
227
4018
  },
228
4019
  {
229
4020
  "name": "blueprint",
230
- "summary": "Print HTML blueprint snippets",
4021
+ "summary": "Print HTML blueprint snippets; --strict fails on classes missing from CSS",
231
4022
  "flags": [
232
4023
  "--output",
233
- "-o"
4024
+ "-o",
4025
+ "--strict"
234
4026
  ],
235
4027
  "subcommands": [
236
4028
  "list"
237
4029
  ],
238
- "example": "velinstyle blueprint modal -o snippet.html"
4030
+ "example": "velinstyle blueprint modal -o snippet.html --strict"
4031
+ },
4032
+ {
4033
+ "name": "create",
4034
+ "summary": "Scaffold a runnable project: landing | dashboard | docs | auth",
4035
+ "flags": [
4036
+ "--theme",
4037
+ "--no-copy"
4038
+ ],
4039
+ "subcommands": [
4040
+ "landing",
4041
+ "dashboard",
4042
+ "docs",
4043
+ "auth"
4044
+ ],
4045
+ "example": "velinstyle create landing ./my-site --theme earth"
4046
+ },
4047
+ {
4048
+ "name": "serve",
4049
+ "summary": "Serve a directory over HTTP (default port 4173)",
4050
+ "flags": [
4051
+ "--port"
4052
+ ],
4053
+ "example": "velinstyle serve . --port 4173"
4054
+ },
4055
+ {
4056
+ "name": "doctor",
4057
+ "summary": "Check dist assets, themes, config, icons, and Windows ESM import hints",
4058
+ "flags": [],
4059
+ "example": "velinstyle doctor"
4060
+ },
4061
+ {
4062
+ "name": "check",
4063
+ "summary": "Aggregate gate: doctor + blueprint --strict + scan + review (alias: validate)",
4064
+ "flags": [
4065
+ "--json",
4066
+ "--sarif",
4067
+ "--profile"
4068
+ ],
4069
+ "example": "velinstyle check . --profile marketing"
239
4070
  },
240
4071
  {
241
4072
  "name": "scaffold",
242
- "summary": "Generate layout HTML from natural language prompt",
4073
+ "summary": "Plan-first page HTML or recipe fragment from natural language",
243
4074
  "flags": [
244
4075
  "--output",
245
4076
  "-o",
@@ -248,7 +4079,36 @@
248
4079
  "subcommands": [
249
4080
  "list-intents"
250
4081
  ],
251
- "example": "velinstyle scaffold \"dashboard with sidebar\""
4082
+ "example": "velinstyle scaffold \"Steuerberater Landingpage mit Kontakt\""
4083
+ },
4084
+ {
4085
+ "name": "plan",
4086
+ "summary": "Emit page plan JSON from a prompt (no HTML)",
4087
+ "flags": [
4088
+ "--output",
4089
+ "-o",
4090
+ "--json"
4091
+ ],
4092
+ "example": "velinstyle plan \"SaaS landing with pricing\""
4093
+ },
4094
+ {
4095
+ "name": "review",
4096
+ "summary": "Design / a11y / SEO / performance / conversion review gate",
4097
+ "flags": [
4098
+ "--json",
4099
+ "--prompt",
4100
+ "--profile"
4101
+ ],
4102
+ "example": "velinstyle review out.html --profile marketing"
4103
+ },
4104
+ {
4105
+ "name": "wc",
4106
+ "summary": "Inspect Web Component APIs from source",
4107
+ "flags": [],
4108
+ "subcommands": [
4109
+ "api"
4110
+ ],
4111
+ "example": "velinstyle wc api velin-toast"
252
4112
  },
253
4113
  {
254
4114
  "name": "layout",
@@ -267,7 +4127,7 @@
267
4127
  },
268
4128
  {
269
4129
  "name": "perf",
270
- "summary": "Performance audit for images and scripts",
4130
+ "summary": "Performance audit for images and scripts (directory or .html file)",
271
4131
  "flags": [
272
4132
  "--json",
273
4133
  "--write",
@@ -278,7 +4138,7 @@
278
4138
  "suggest",
279
4139
  "fix"
280
4140
  ],
281
- "example": "velinstyle perf audit samples/"
4141
+ "example": "velinstyle perf audit index.html"
282
4142
  },
283
4143
  {
284
4144
  "name": "tokens",
@@ -296,7 +4156,7 @@
296
4156
  },
297
4157
  {
298
4158
  "name": "docs",
299
- "summary": "Generate developer reference Markdown",
4159
+ "summary": "Generate developer reference Markdown (alias: documentation)",
300
4160
  "flags": [
301
4161
  "--scope",
302
4162
  "--out"
@@ -308,17 +4168,69 @@
308
4168
  },
309
4169
  {
310
4170
  "name": "meta",
311
- "summary": "Build Velin-Meta agent bundle (velin-agent.json, llms.txt)",
4171
+ "summary": "Build Velin-Meta agent bundle; page --write merges curated goals/intent",
312
4172
  "flags": [
313
4173
  "--out",
314
4174
  "--llms-out",
315
4175
  "--base-url",
316
- "--no-llms"
4176
+ "--no-llms",
4177
+ "--write"
317
4178
  ],
318
4179
  "subcommands": [
319
4180
  "page"
320
4181
  ],
321
- "example": "velinstyle meta"
4182
+ "example": "velinstyle meta page index.html --write"
4183
+ },
4184
+ {
4185
+ "name": "search",
4186
+ "summary": "Build JSON search index for VelinSearch",
4187
+ "flags": [
4188
+ "--out",
4189
+ "--extra-html"
4190
+ ],
4191
+ "subcommands": [
4192
+ "index"
4193
+ ],
4194
+ "example": "velinstyle search index --out dist/search-index.json"
4195
+ },
4196
+ {
4197
+ "name": "skills",
4198
+ "summary": "Registry-first AI skill catalog and install runner",
4199
+ "flags": [
4200
+ "--capability",
4201
+ "--status",
4202
+ "--priority",
4203
+ "--origin",
4204
+ "--category",
4205
+ "--target",
4206
+ "--no-deps",
4207
+ "--json",
4208
+ "--human"
4209
+ ],
4210
+ "subcommands": [
4211
+ "list",
4212
+ "show",
4213
+ "install",
4214
+ "run",
4215
+ "validate",
4216
+ "doctor",
4217
+ "packs",
4218
+ "bundles",
4219
+ "templates",
4220
+ "projects",
4221
+ "graphs"
4222
+ ],
4223
+ "example": "velinstyle skills show scaffold.landing --human"
4224
+ },
4225
+ {
4226
+ "name": "workflow",
4227
+ "summary": "Resolve workflow graph or project workflow steps",
4228
+ "flags": [
4229
+ "--json",
4230
+ "--dry-run",
4231
+ "--step"
4232
+ ],
4233
+ "example": "velinstyle workflow landingpage --json"
322
4234
  }
323
4235
  ]
324
4236
  },
@@ -327,6 +4239,8 @@
327
4239
  "scan",
328
4240
  "prefix",
329
4241
  "scaffold",
4242
+ "plan",
4243
+ "review",
330
4244
  "layout",
331
4245
  "perf",
332
4246
  "tokens",
@@ -334,7 +4248,7 @@
334
4248
  "search",
335
4249
  "meta"
336
4250
  ],
337
- "scannerRuleCount": 37
4251
+ "scannerRuleCount": 44
338
4252
  },
339
4253
  "a11y": {
340
4254
  "wcagLevel": "AAA",
@@ -448,11 +4362,34 @@
448
4362
  "roles": [
449
4363
  "button"
450
4364
  ],
451
- "keyboard": "Native buttons for column sort and pagination",
4365
+ "keyboard": "Sort buttons; editable cells: Enter/F2 edit, Escape cancel; pagination",
4366
+ "liveRegion": "polite",
4367
+ "reducedMotion": true,
4368
+ "requiredAttributes": [],
4369
+ "notes": "Enhances a light-DOM table. Optional editable attribute or data-editable cells for inline edit (velin-data-table-edit). No virtualization in v1."
4370
+ },
4371
+ "velin-calendar": {
4372
+ "status": "pass",
4373
+ "roles": [
4374
+ "group",
4375
+ "grid",
4376
+ "button"
4377
+ ],
4378
+ "keyboard": "Arrows, Home/End, PageUp/Down, Enter/Space",
4379
+ "reducedMotion": true,
4380
+ "requiredAttributes": [],
4381
+ "notes": "Month calendar. value ISO date; velin-change event. Optional min/max."
4382
+ },
4383
+ "velin-file-dropzone": {
4384
+ "status": "pass",
4385
+ "roles": [
4386
+ "group"
4387
+ ],
4388
+ "keyboard": "Browse button + native file input",
452
4389
  "liveRegion": "polite",
453
4390
  "reducedMotion": true,
454
4391
  "requiredAttributes": [],
455
- "notes": "Enhances a light-DOM table. Sort state exposed via aria-sort; sort triggers are real buttons. Needs a caption, aria-label, or label attribute (warns otherwise). Filtered and off-page rows use hidden so they leave the a11y tree; sort, filter and page changes are announced."
4392
+ "notes": "Client-side dropzone. Events velin-files / velin-error. Does not upload to a server."
456
4393
  },
457
4394
  "velin-dialog": {
458
4395
  "status": "pass",
@@ -683,27 +4620,35 @@
683
4620
  },
684
4621
  "searchIndex": {
685
4622
  "path": "dist/search-index.json",
686
- "entryCount": 139
4623
+ "entryCount": 151
687
4624
  },
688
4625
  "documentation": {
689
4626
  "generated": "docs/generated/",
690
4627
  "guides": {
691
4628
  "velinMeta": "docs/guides/velin-meta.html",
4629
+ "aiSkills": "docs/guides/ai-skills.html",
692
4630
  "velinSearch": "docs/guides/velin-search.html",
693
4631
  "syntaxHighlight": "docs/guides/syntax-highlight.html",
694
4632
  "promptScaffolding": "docs/guides/prompt-scaffolding.html",
695
4633
  "apiReference": "docs/guides/api-reference.html"
696
4634
  },
4635
+ "strategy": {
4636
+ "note": "Maintainer strategy/ADR docs are not published (monorepo interne_docs/strategy).",
4637
+ "northStar": "VELINSTYLE_2030.md",
4638
+ "architecture": "ARCHITECTURE.md"
4639
+ },
697
4640
  "agentFiles": {
698
4641
  "json": "dist/velin-agent.json",
699
4642
  "llmsTxt": "dist/llms.txt"
700
4643
  }
701
4644
  },
702
4645
  "conventions": [
703
- "Positioning: VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components — not a JS-only library or a utility-only CSS kit.",
4646
+ "Positioning: VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components — not a JS-only library or a utility-only CSS kit.",
704
4647
  "Use only velin-* utility classes and documented Web Components.",
705
4648
  "Prefer data-velin-theme on <html> for theme switching.",
706
4649
  "Run velinstyle scan on generated HTML before shipping.",
4650
+ "Prefer registry-first skills (`velinstyle skills`) and workflow graphs (`velinstyle workflow`) before inventing custom pipelines.",
4651
+ "Honor skill status, confidence, compatibility, and onlyIf predicates when automating.",
707
4652
  "Do not put secrets, API keys, or raw emails in velin-meta or page meta.",
708
4653
  "Resolve doc links against docs root (/docs/), not the current page folder."
709
4654
  ]