@birdapi/velinstyle 1.0.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 (321) hide show
  1. package/README.de.md +87 -158
  2. package/README.md +188 -115
  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-a11y.js +4 -2
  27. package/cli/docgen/extract-attributes.js +126 -10
  28. package/cli/docgen/extract-cli.js +3 -2
  29. package/cli/docgen/extract-components.js +61 -2
  30. package/cli/docgen/extract-utilities.js +10 -10
  31. package/cli/doctor.js +119 -0
  32. package/cli/index.js +535 -46
  33. package/cli/meta.js +84 -1
  34. package/cli/perf-audit.js +15 -2
  35. package/cli/prompt-engine.js +243 -0
  36. package/cli/review.js +268 -0
  37. package/cli/scaffold.js +119 -4
  38. package/cli/scanner-rules-data.js +7 -0
  39. package/cli/scanner.js +357 -4
  40. package/cli/serve.js +81 -0
  41. package/cli/skills.js +223 -0
  42. package/cli/wc-api.js +89 -0
  43. package/cli/workflow.js +42 -0
  44. package/components/index.js +4 -0
  45. package/components/runtime/component-loaders.js +4 -0
  46. package/components/velin-accordion.js +62 -13
  47. package/components/velin-bottom-nav.js +10 -0
  48. package/components/velin-calendar.js +212 -0
  49. package/components/velin-command.js +18 -2
  50. package/components/velin-data-table.js +438 -0
  51. package/components/velin-dialog.js +4 -1
  52. package/components/velin-drawer.js +2 -4
  53. package/components/velin-file-dropzone.js +162 -0
  54. package/components/velin-form-summary.js +348 -0
  55. package/components/velin-icon.js +22 -1
  56. package/components/velin-lightbox.js +5 -3
  57. package/components/velin-modal.js +2 -4
  58. package/components/velin-search.js +1 -1
  59. package/components/velin-sheet.js +2 -4
  60. package/core/a11y/component-contracts.json +35 -1
  61. package/core/highlight/languages/go.js +28 -0
  62. package/core/highlight/languages/python.js +29 -0
  63. package/core/highlight/languages/rust.js +32 -0
  64. package/core/highlight/languages/yaml.js +23 -0
  65. package/core/highlight/registry.js +13 -2
  66. package/core/meta/build.js +126 -6
  67. package/core/meta/design-constraints/contact.json +9 -0
  68. package/core/meta/design-constraints/faq.json +9 -0
  69. package/core/meta/design-constraints/hero.json +13 -0
  70. package/core/meta/knowledge/components.json +622 -0
  71. package/core/meta/knowledge/tokens.json +282 -0
  72. package/core/meta/pages/registry.json +294 -0
  73. package/core/meta/schema.js +3 -1
  74. package/core/meta/sections/registry.json +185 -0
  75. package/dist/chunks/{attributes-TPANLMLF.js → attributes-A423NX5J.js} +3 -3
  76. package/dist/chunks/{attributes-ADOKLKA7.js → attributes-F6UPIEVP.js} +2 -2
  77. package/dist/chunks/{attributes-STYCS3O5.js → attributes-GLYXGGAL.js} +3 -3
  78. package/dist/chunks/{attributes-5Q2WXGRC.js → attributes-UFTYOSAU.js} +20 -3
  79. package/dist/chunks/attributes-XGLXLR2T.js +391 -0
  80. package/dist/chunks/attributes-YF4NI2QS.js +391 -0
  81. package/dist/chunks/browser-AUABBYUK.js +1544 -0
  82. package/dist/chunks/{chunk-SRL6EWHP.js → chunk-2LSKX57P.js} +13 -11
  83. package/dist/chunks/{chunk-RSMRR27R.js → chunk-2TGCVDUL.js} +11 -9
  84. package/dist/chunks/{chunk-XIET2VSZ.js → chunk-5JWGUAPC.js} +17 -13
  85. package/dist/chunks/chunk-7YSO2OQ2.js +113 -0
  86. package/dist/chunks/{chunk-IEHKRARD.js → chunk-BHR3ZG6U.js} +10 -8
  87. package/dist/chunks/{chunk-J472ERN2.js → chunk-ERF5YVP4.js} +15 -4
  88. package/dist/chunks/{chunk-XYLJ2GCB.js → chunk-JMSIHEYX.js} +55 -7
  89. package/dist/chunks/{chunk-MKZP2TBH.js → chunk-L7ZGUU4D.js} +2 -2
  90. package/dist/chunks/chunk-TUGIPKW5.js +113 -0
  91. package/dist/chunks/go-HZ6XTFCK.js +31 -0
  92. package/dist/chunks/{highlight-GJHHV4KM.js → highlight-IBDX4XWS.js} +1 -1
  93. package/dist/chunks/{highlight-XTHRKBA3.js → highlight-M2ELQNYK.js} +1 -1
  94. package/dist/chunks/python-BMPKDKNO.js +32 -0
  95. package/dist/chunks/runtime-entry.js +1 -1
  96. package/dist/chunks/rust-2BWKI2MN.js +35 -0
  97. package/dist/chunks/{velin-accordion-FBIPAEXG.js → velin-accordion-WSY6BMLA.js} +64 -10
  98. package/dist/chunks/{velin-bottom-nav-7GEMPIM6.js → velin-bottom-nav-5RVRNGIP.js} +25 -0
  99. package/dist/chunks/{velin-bottom-nav-2N2TYWOF.js → velin-bottom-nav-N5F4UO2I.js} +26 -1
  100. package/dist/chunks/velin-calendar-OFE6THUD.js +210 -0
  101. package/dist/chunks/velin-calendar-PGVNJTXK.js +217 -0
  102. package/dist/chunks/velin-calendar-XC7JRDSH.js +217 -0
  103. package/dist/chunks/{velin-code-block-CIAURDRJ.js → velin-code-block-ITCLIC6T.js} +1 -1
  104. package/dist/chunks/{velin-code-block-TSUKPY4C.js → velin-code-block-ZGWG7JI5.js} +12 -3
  105. package/dist/chunks/{velin-combobox-NXS4QB4R.js → velin-combobox-56V2ZWT5.js} +1 -1
  106. package/dist/chunks/{velin-command-ONKO2A3J.js → velin-command-2HO2EKR6.js} +29 -2
  107. package/dist/chunks/{velin-command-TMLSRGIU.js → velin-command-ZJSLPK7B.js} +30 -3
  108. package/dist/chunks/{velin-copy-NYDBOKXT.js → velin-copy-XDQSV2XU.js} +1 -1
  109. package/dist/chunks/{velin-countdown-4ZVDGK4R.js → velin-countdown-V4Z5MA63.js} +1 -1
  110. package/dist/chunks/velin-data-table-KK7IDGTP.js +302 -0
  111. package/dist/chunks/velin-data-table-UVR42UUM.js +372 -0
  112. package/dist/chunks/{velin-dialog-GTTZI564.js → velin-dialog-3YK2RPRV.js} +9 -2
  113. package/dist/chunks/{velin-dialog-ELFOZIXZ.js → velin-dialog-S24KAP4S.js} +3 -1
  114. package/dist/chunks/{velin-drawer-BE6TYN3H.js → velin-drawer-5PNU624J.js} +2 -4
  115. package/dist/chunks/{velin-drawer-DLL2GLT6.js → velin-drawer-CCM6S25D.js} +3 -5
  116. package/dist/chunks/{velin-email-RBX6ZR4S.js → velin-email-TNFONXPW.js} +1 -1
  117. package/dist/chunks/velin-file-dropzone-QRGF2JNA.js +154 -0
  118. package/dist/chunks/velin-file-dropzone-XIZMJ3NB.js +154 -0
  119. package/dist/chunks/velin-form-summary-XRQ7COQH.js +273 -0
  120. package/dist/chunks/{velin-icon-7M76DOPB.js → velin-icon-A6NCXGUK.js} +59 -17
  121. package/dist/chunks/{velin-icon-ZTSKUOVN.js → velin-icon-EC4B5XCM.js} +18 -5
  122. package/dist/chunks/{velin-lightbox-6E7CAATP.js → velin-lightbox-FFK4TUUP.js} +7 -6
  123. package/dist/chunks/{velin-lightbox-I75U6JF4.js → velin-lightbox-P725FLTY.js} +15 -5
  124. package/dist/chunks/{velin-menubar-J66JXRWW.js → velin-menubar-6I2LM5HL.js} +1 -1
  125. package/dist/chunks/{velin-modal-5HYNNNUI.js → velin-modal-ICTMGRSU.js} +7 -8
  126. package/dist/chunks/{velin-modal-AEOTZ67O.js → velin-modal-JBNODH7D.js} +2 -4
  127. package/dist/chunks/{velin-popover-T72HK3DF.js → velin-popover-WZG2GHBL.js} +25 -4
  128. package/dist/chunks/{velin-rating-N4DI2XNL.js → velin-rating-QBBYRRBU.js} +1 -1
  129. package/dist/chunks/{velin-search-7B4KJ6TX.js → velin-search-B3L6J2RP.js} +2 -2
  130. package/dist/chunks/{velin-search-2XRQFBCS.js → velin-search-L3UG6NDQ.js} +5 -4
  131. package/dist/chunks/{velin-secure-field-6PV7RZDJ.js → velin-secure-field-DGYMP7OK.js} +1 -1
  132. package/dist/chunks/{velin-segmented-control-GYD5BIXQ.js → velin-segmented-control-P74GJPAR.js} +1 -1
  133. package/dist/chunks/{velin-sheet-R2Y67X6H.js → velin-sheet-M5GZZD7G.js} +2 -4
  134. package/dist/chunks/{velin-sheet-OUK6572T.js → velin-sheet-X7RXIWKV.js} +3 -5
  135. package/dist/chunks/{velin-stepper-X54WGHDG.js → velin-stepper-4YQJUHPC.js} +12 -5
  136. package/dist/chunks/{velin-toast-OMMOA2DK.js → velin-toast-UG5LWTG2.js} +5 -1
  137. package/dist/chunks/{velin-tooltip-BDHGRTQB.js → velin-tooltip-ZDH5SDLU.js} +1 -1
  138. package/dist/chunks/yaml-O67LEQYT.js +26 -0
  139. package/dist/llms.txt +29 -7
  140. package/dist/search-index.json +182 -10
  141. package/dist/velin-agent.json +3997 -26
  142. package/dist/velinstyle-components.iife.js +1952 -287
  143. package/dist/velinstyle-components.js +1956 -287
  144. package/dist/velinstyle-components.min.js +267 -119
  145. package/dist/velinstyle.css +381 -67
  146. package/dist/velinstyle.d.ts +4 -0
  147. package/dist/velinstyle.min.css +1 -1
  148. package/package.json +26 -6
  149. package/packages/skill-engine/README.md +24 -0
  150. package/packages/skill-engine/package.json +7 -0
  151. package/packages/skill-engine/src/catalog.js +29 -0
  152. package/packages/skill-engine/src/index.js +5 -0
  153. package/packages/skill-engine/src/install.js +69 -0
  154. package/packages/skill-engine/src/registry.js +27 -0
  155. package/packages/skill-engine/src/resolve.js +68 -0
  156. package/packages/skill-engine/src/validate.js +40 -0
  157. package/packages/velinstyle-skills/README.md +6 -0
  158. package/packages/velinstyle-skills/adapter.json +8 -0
  159. package/packages/velinstyle-skills/bundles/landing-starter.bundle.yaml +12 -0
  160. package/packages/velinstyle-skills/bundles/review-suite.bundle.yaml +11 -0
  161. package/packages/velinstyle-skills/catalog.json +1004 -0
  162. package/packages/velinstyle-skills/graphs/component-ship.graph.yaml +14 -0
  163. package/packages/velinstyle-skills/graphs/landingpage.graph.yaml +21 -0
  164. package/packages/velinstyle-skills/graphs/release-gate.graph.yaml +15 -0
  165. package/packages/velinstyle-skills/index.js +22 -0
  166. package/packages/velinstyle-skills/package.json +7 -0
  167. package/packages/velinstyle-skills/packs/accessibility.pack.yaml +9 -0
  168. package/packages/velinstyle-skills/packs/design.pack.yaml +10 -0
  169. package/packages/velinstyle-skills/packs/documentation.pack.yaml +8 -0
  170. package/packages/velinstyle-skills/packs/enterprise.pack.yaml +10 -0
  171. package/packages/velinstyle-skills/packs/frontend.pack.yaml +10 -0
  172. package/packages/velinstyle-skills/packs/review.pack.yaml +9 -0
  173. package/packages/velinstyle-skills/projects/admin-panel.project.yaml +12 -0
  174. package/packages/velinstyle-skills/projects/blog.project.yaml +11 -0
  175. package/packages/velinstyle-skills/projects/documentation-portal.project.yaml +13 -0
  176. package/packages/velinstyle-skills/projects/ecommerce-shop.project.yaml +12 -0
  177. package/packages/velinstyle-skills/projects/landing-page.project.yaml +12 -0
  178. package/packages/velinstyle-skills/projects/laravel-dashboard.project.yaml +12 -0
  179. package/packages/velinstyle-skills/projects/marketing-website.project.yaml +14 -0
  180. package/packages/velinstyle-skills/projects/portfolio.project.yaml +12 -0
  181. package/packages/velinstyle-skills/registry.json +142 -0
  182. package/packages/velinstyle-skills/scripts/generate-assets.mjs +163 -0
  183. package/packages/velinstyle-skills/skills/velin-a11y-focus-keyboard/SKILL.md +57 -0
  184. package/packages/velinstyle-skills/skills/velin-a11y-page-checklist/SKILL.md +57 -0
  185. package/packages/velinstyle-skills/skills/velin-a11y-scan-fix/SKILL.md +57 -0
  186. package/packages/velinstyle-skills/skills/velin-ai-agent-briefing/SKILL.md +57 -0
  187. package/packages/velinstyle-skills/skills/velin-ai-plan-scaffold-review/SKILL.md +57 -0
  188. package/packages/velinstyle-skills/skills/velin-ai-skill-authoring/SKILL.md +57 -0
  189. package/packages/velinstyle-skills/skills/velin-components-accessibility-map/SKILL.md +57 -0
  190. package/packages/velinstyle-skills/skills/velin-components-api-contract/SKILL.md +57 -0
  191. package/packages/velinstyle-skills/skills/velin-components-recipe/SKILL.md +57 -0
  192. package/packages/velinstyle-skills/skills/velin-components-select-compose/SKILL.md +57 -0
  193. package/packages/velinstyle-skills/skills/velin-design-hero-compose/SKILL.md +57 -0
  194. package/packages/velinstyle-skills/skills/velin-design-section-rhythm/SKILL.md +57 -0
  195. package/packages/velinstyle-skills/skills/velin-design-surface-roles/SKILL.md +57 -0
  196. package/packages/velinstyle-skills/skills/velin-dev-component-wire/SKILL.md +57 -0
  197. package/packages/velinstyle-skills/skills/velin-dev-page-scaffold/SKILL.md +57 -0
  198. package/packages/velinstyle-skills/skills/velin-dev-plan-first/SKILL.md +57 -0
  199. package/packages/velinstyle-skills/skills/velin-docs-component-guide/SKILL.md +57 -0
  200. package/packages/velinstyle-skills/skills/velin-docs-generate-api/SKILL.md +57 -0
  201. package/packages/velinstyle-skills/skills/velin-dx-doctor-setup/SKILL.md +57 -0
  202. package/packages/velinstyle-skills/skills/velin-dx-project-init/SKILL.md +57 -0
  203. package/packages/velinstyle-skills/skills/velin-migration-legacy-wc/SKILL.md +57 -0
  204. package/packages/velinstyle-skills/skills/velin-migration-prefix-classes/SKILL.md +57 -0
  205. package/packages/velinstyle-skills/skills/velin-motion-reduced-safe/SKILL.md +57 -0
  206. package/packages/velinstyle-skills/skills/velin-motion-reveal-feedback/SKILL.md +57 -0
  207. package/packages/velinstyle-skills/skills/velin-perf-audit-fix/SKILL.md +57 -0
  208. package/packages/velinstyle-skills/skills/velin-perf-runtime-tree-shake/SKILL.md +57 -0
  209. package/packages/velinstyle-skills/skills/velin-release-changelog-sync/SKILL.md +57 -0
  210. package/packages/velinstyle-skills/skills/velin-release-meta-rebuild/SKILL.md +57 -0
  211. package/packages/velinstyle-skills/skills/velin-review-conversion-hero/SKILL.md +57 -0
  212. package/packages/velinstyle-skills/skills/velin-review-page-gate/SKILL.md +57 -0
  213. package/packages/velinstyle-skills/skills/velin-review-seo-meta/SKILL.md +57 -0
  214. package/packages/velinstyle-skills/skills/velin-security-sanitize-html/SKILL.md +57 -0
  215. package/packages/velinstyle-skills/skills/velin-security-scan-pii/SKILL.md +57 -0
  216. package/packages/velinstyle-skills/skills/velin-testing-a11y-suite/SKILL.md +57 -0
  217. package/packages/velinstyle-skills/skills/velin-testing-visual-smoke/SKILL.md +57 -0
  218. package/packages/velinstyle-skills/skills/velin-themes-apply-token/SKILL.md +57 -0
  219. package/packages/velinstyle-skills/skills/velin-themes-contrast-check/SKILL.md +57 -0
  220. package/packages/velinstyle-skills/skills/velin-utilities-layout-apply/SKILL.md +57 -0
  221. package/packages/velinstyle-skills/skills/velin-utilities-prefix-fix/SKILL.md +57 -0
  222. package/packages/velinstyle-skills/skills/velin-utilities-token-map/SKILL.md +57 -0
  223. package/packages/velinstyle-skills/templates/admin-panel.template.yaml +12 -0
  224. package/packages/velinstyle-skills/templates/blog.template.yaml +12 -0
  225. package/packages/velinstyle-skills/templates/documentation-portal.template.yaml +12 -0
  226. package/packages/velinstyle-skills/templates/ecommerce-shop.template.yaml +13 -0
  227. package/packages/velinstyle-skills/templates/landing-page.template.yaml +12 -0
  228. package/packages/velinstyle-skills/templates/laravel-dashboard.template.yaml +11 -0
  229. package/packages/velinstyle-skills/templates/marketing-website.template.yaml +13 -0
  230. package/packages/velinstyle-skills/templates/portfolio.template.yaml +12 -0
  231. package/schemas/component-knowledge.schema.json +33 -0
  232. package/schemas/design-constraint.schema.json +15 -0
  233. package/schemas/design-intelligence.schema.json +19 -0
  234. package/schemas/design-rule.schema.json +19 -0
  235. package/schemas/page-template.schema.json +24 -0
  236. package/schemas/review-report.schema.json +36 -0
  237. package/schemas/section.schema.json +22 -0
  238. package/schemas/skill-bundle.schema.json +15 -0
  239. package/schemas/skill-graph.schema.json +25 -0
  240. package/schemas/skill-pack.schema.json +14 -0
  241. package/schemas/skill-project.schema.json +16 -0
  242. package/schemas/skill-record.schema.json +27 -0
  243. package/schemas/skill-registry.schema.json +17 -0
  244. package/schemas/skill-template.schema.json +17 -0
  245. package/schemas/token-graph.schema.json +27 -0
  246. package/schemas/utility.schema.json +166 -0
  247. package/src/base/wc-placeholder.css +7 -0
  248. package/src/components/alert.css +22 -1
  249. package/src/components/calendar-dropzone.css +5 -0
  250. package/src/components/data-table.css +93 -0
  251. package/src/components/form-validation.css +40 -0
  252. package/src/layout/app-shell.css +33 -0
  253. package/src/tokens/shadow.css +13 -0
  254. package/src/utilities/border.css +2 -0
  255. package/src/utilities/display.css +1 -24
  256. package/src/utilities/responsive.css +16 -1
  257. package/src/utilities/spacing.css +32 -0
  258. package/src/velinstyle.css +3 -0
  259. package/dist/chunks/attributes-3BZLI7XF.js +0 -364
  260. package/dist/chunks/attributes-4N5JP4CG.js +0 -364
  261. package/dist/chunks/attributes-AIR7SVLK.js +0 -364
  262. package/dist/chunks/attributes-BGRN5XZO.js +0 -364
  263. package/dist/chunks/attributes-BVSQAYLR.js +0 -364
  264. package/dist/chunks/attributes-CDYFUY7Y.js +0 -364
  265. package/dist/chunks/attributes-JMYJZBPE.js +0 -364
  266. package/dist/chunks/attributes-R5JY3X4O.js +0 -374
  267. package/dist/chunks/attributes-TNSPQTHX.js +0 -374
  268. package/dist/chunks/chunk-2354NEBP.js +0 -109
  269. package/dist/chunks/chunk-2VNA7G7S.js +0 -109
  270. package/dist/chunks/chunk-AQLRJSGG.js +0 -109
  271. package/dist/chunks/chunk-EWPSDMQT.js +0 -109
  272. package/dist/chunks/chunk-LA7264K4.js +0 -85
  273. package/dist/chunks/chunk-QTJJ3DPO.js +0 -109
  274. package/dist/chunks/chunk-RZQVWFHW.js +0 -109
  275. package/dist/chunks/chunk-U4XHMZ7D.js +0 -109
  276. package/dist/chunks/chunk-V5YIUA6G.js +0 -109
  277. package/dist/chunks/chunk-ZPSPKUYD.js +0 -109
  278. package/dist/chunks/velin-bottom-nav-N3DFQR66.js +0 -86
  279. package/dist/chunks/velin-carousel-Y5VCOABZ.js +0 -213
  280. package/dist/chunks/velin-code-block-ASUBTAQV.js +0 -119
  281. package/dist/chunks/velin-code-block-Y6CM726Q.js +0 -119
  282. package/dist/chunks/velin-combobox-2KDTCQ7N.js +0 -155
  283. package/dist/chunks/velin-command-M7RNHUPR.js +0 -136
  284. package/dist/chunks/velin-copy-T5KDTDXP.js +0 -81
  285. package/dist/chunks/velin-countdown-5XSTN3BH.js +0 -101
  286. package/dist/chunks/velin-counter-ISCTEAHI.js +0 -118
  287. package/dist/chunks/velin-dialog-D2GUHSCD.js +0 -144
  288. package/dist/chunks/velin-dialog-IJLFDXAJ.js +0 -144
  289. package/dist/chunks/velin-dialog-TNS3WXMB.js +0 -144
  290. package/dist/chunks/velin-drawer-MJS6WCF7.js +0 -130
  291. package/dist/chunks/velin-email-N5B5ZYTE.js +0 -90
  292. package/dist/chunks/velin-icon-KZO3IEHG.js +0 -164
  293. package/dist/chunks/velin-lightbox-QOTB4PRL.js +0 -140
  294. package/dist/chunks/velin-lightbox-UCD6N7HF.js +0 -140
  295. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +0 -67
  296. package/dist/chunks/velin-menubar-SFEXJE56.js +0 -86
  297. package/dist/chunks/velin-modal-2HOBXE6F.js +0 -176
  298. package/dist/chunks/velin-modal-GLI2XZZB.js +0 -176
  299. package/dist/chunks/velin-popover-EXINRIGJ.js +0 -145
  300. package/dist/chunks/velin-popover-OXX7MRZ6.js +0 -145
  301. package/dist/chunks/velin-popover-YKCCROJG.js +0 -145
  302. package/dist/chunks/velin-rating-XRQJV4LO.js +0 -91
  303. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +0 -58
  304. package/dist/chunks/velin-search-4YHJWYSS.js +0 -556
  305. package/dist/chunks/velin-search-LWHY23Q5.js +0 -474
  306. package/dist/chunks/velin-secure-field-H7FSBUJW.js +0 -95
  307. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +0 -109
  308. package/dist/chunks/velin-sheet-3OGI4HD7.js +0 -119
  309. package/dist/chunks/velin-sparkline-GVEANJVW.js +0 -184
  310. package/dist/chunks/velin-sparkline-KDA3GQAN.js +0 -162
  311. package/dist/chunks/velin-stepper-2ZIHLKGM.js +0 -141
  312. package/dist/chunks/velin-stepper-FYEUEWE6.js +0 -141
  313. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +0 -133
  314. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +0 -285
  315. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +0 -285
  316. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +0 -291
  317. package/dist/chunks/velin-toast-RCZ4CSUC.js +0 -109
  318. package/dist/chunks/velin-toast-WEUBTJG6.js +0 -109
  319. package/dist/chunks/velin-tooltip-664IOHZA.js +0 -112
  320. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +0 -103
  321. 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-05-29T12:13:11.252Z",
4
+ "generatedAt": "2026-08-01T07:28:51.397Z",
5
5
  "framework": {
6
6
  "name": "@birdapi/velinstyle",
7
- "version": "1.0.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",
@@ -47,10 +51,13 @@
47
51
  "velin-copy",
48
52
  "velin-countdown",
49
53
  "velin-counter",
54
+ "velin-data-table",
50
55
  "velin-dialog",
51
56
  "velin-drawer",
52
57
  "velin-dropdown",
53
58
  "velin-email",
59
+ "velin-file-dropzone",
60
+ "velin-form-summary",
54
61
  "velin-icon",
55
62
  "velin-lightbox",
56
63
  "velin-live-dot",
@@ -73,11 +80,12 @@
73
80
  "velin-toast",
74
81
  "velin-tooltip"
75
82
  ],
76
- "count": 36,
83
+ "count": 40,
77
84
  "loaderTags": [
78
85
  "velin-accordion",
79
86
  "velin-announcer",
80
87
  "velin-bottom-nav",
88
+ "velin-calendar",
81
89
  "velin-carousel",
82
90
  "velin-code-block",
83
91
  "velin-collapse",
@@ -86,10 +94,13 @@
86
94
  "velin-copy",
87
95
  "velin-countdown",
88
96
  "velin-counter",
97
+ "velin-data-table",
89
98
  "velin-dialog",
90
99
  "velin-drawer",
91
100
  "velin-dropdown",
92
101
  "velin-email",
102
+ "velin-file-dropzone",
103
+ "velin-form-summary",
93
104
  "velin-icon",
94
105
  "velin-lightbox",
95
106
  "velin-live-dot",
@@ -114,7 +125,7 @@
114
125
  "velin-tooltip",
115
126
  "velin-tooltip-wc"
116
127
  ],
117
- "loaderCount": 38,
128
+ "loaderCount": 42,
118
129
  "legacyAliases": [
119
130
  "velin-stepper-wc",
120
131
  "velin-tooltip-wc"
@@ -125,6 +136,3785 @@
125
136
  "velin-reveal"
126
137
  ]
127
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
+ ],
128
3918
  "attributes": {
129
3919
  "names": [
130
3920
  "velin-accordion",
@@ -161,15 +3951,20 @@
161
3951
  "commands": [
162
3952
  {
163
3953
  "name": "init",
164
- "summary": "Create velinstyle.config.js",
3954
+ "summary": "Create velinstyle.config.js, optional vendor copy, and starter HTML with reveal/sprite defaults",
165
3955
  "flags": [],
166
3956
  "example": "velinstyle init"
167
3957
  },
168
3958
  {
169
3959
  "name": "build",
170
3960
  "summary": "Build custom CSS with selected layers from config",
171
- "flags": [],
172
- "example": "velinstyle build"
3961
+ "flags": [
3962
+ "--output",
3963
+ "-o",
3964
+ "--minify",
3965
+ "--preset"
3966
+ ],
3967
+ "example": "velinstyle build --preset lite -o ./lite.css"
173
3968
  },
174
3969
  {
175
3970
  "name": "themes",
@@ -200,7 +3995,7 @@
200
3995
  },
201
3996
  {
202
3997
  "name": "scan",
203
- "summary": "Security, accessibility, CSS, and PII scanner",
3998
+ "summary": "Security, accessibility, CSS, and PII scanner (directory or single file)",
204
3999
  "flags": [
205
4000
  "--format",
206
4001
  "--severity",
@@ -209,7 +4004,7 @@
209
4004
  "--fix-dry-run",
210
4005
  "--fix-lang"
211
4006
  ],
212
- "example": "velinstyle scan . --only pii --fix-dry-run"
4007
+ "example": "velinstyle scan index.html"
213
4008
  },
214
4009
  {
215
4010
  "name": "prefix",
@@ -223,19 +4018,59 @@
223
4018
  },
224
4019
  {
225
4020
  "name": "blueprint",
226
- "summary": "Print HTML blueprint snippets",
4021
+ "summary": "Print HTML blueprint snippets; --strict fails on classes missing from CSS",
227
4022
  "flags": [
228
4023
  "--output",
229
- "-o"
4024
+ "-o",
4025
+ "--strict"
230
4026
  ],
231
4027
  "subcommands": [
232
4028
  "list"
233
4029
  ],
234
- "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"
235
4070
  },
236
4071
  {
237
4072
  "name": "scaffold",
238
- "summary": "Generate layout HTML from natural language prompt",
4073
+ "summary": "Plan-first page HTML or recipe fragment from natural language",
239
4074
  "flags": [
240
4075
  "--output",
241
4076
  "-o",
@@ -244,7 +4079,36 @@
244
4079
  "subcommands": [
245
4080
  "list-intents"
246
4081
  ],
247
- "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"
248
4112
  },
249
4113
  {
250
4114
  "name": "layout",
@@ -263,7 +4127,7 @@
263
4127
  },
264
4128
  {
265
4129
  "name": "perf",
266
- "summary": "Performance audit for images and scripts",
4130
+ "summary": "Performance audit for images and scripts (directory or .html file)",
267
4131
  "flags": [
268
4132
  "--json",
269
4133
  "--write",
@@ -274,7 +4138,7 @@
274
4138
  "suggest",
275
4139
  "fix"
276
4140
  ],
277
- "example": "velinstyle perf audit samples/"
4141
+ "example": "velinstyle perf audit index.html"
278
4142
  },
279
4143
  {
280
4144
  "name": "tokens",
@@ -292,7 +4156,7 @@
292
4156
  },
293
4157
  {
294
4158
  "name": "docs",
295
- "summary": "Generate developer reference Markdown",
4159
+ "summary": "Generate developer reference Markdown (alias: documentation)",
296
4160
  "flags": [
297
4161
  "--scope",
298
4162
  "--out"
@@ -304,17 +4168,69 @@
304
4168
  },
305
4169
  {
306
4170
  "name": "meta",
307
- "summary": "Build Velin-Meta agent bundle (velin-agent.json, llms.txt)",
4171
+ "summary": "Build Velin-Meta agent bundle; page --write merges curated goals/intent",
308
4172
  "flags": [
309
4173
  "--out",
310
4174
  "--llms-out",
311
4175
  "--base-url",
312
- "--no-llms"
4176
+ "--no-llms",
4177
+ "--write"
313
4178
  ],
314
4179
  "subcommands": [
315
4180
  "page"
316
4181
  ],
317
- "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"
318
4234
  }
319
4235
  ]
320
4236
  },
@@ -323,6 +4239,8 @@
323
4239
  "scan",
324
4240
  "prefix",
325
4241
  "scaffold",
4242
+ "plan",
4243
+ "review",
326
4244
  "layout",
327
4245
  "perf",
328
4246
  "tokens",
@@ -330,7 +4248,7 @@
330
4248
  "search",
331
4249
  "meta"
332
4250
  ],
333
- "scannerRuleCount": 37
4251
+ "scannerRuleCount": 44
334
4252
  },
335
4253
  "a11y": {
336
4254
  "wcagLevel": "AAA",
@@ -439,6 +4357,40 @@
439
4357
  "keyboard": "N/A",
440
4358
  "reducedMotion": true
441
4359
  },
4360
+ "velin-data-table": {
4361
+ "status": "pass",
4362
+ "roles": [
4363
+ "button"
4364
+ ],
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",
4389
+ "liveRegion": "polite",
4390
+ "reducedMotion": true,
4391
+ "requiredAttributes": [],
4392
+ "notes": "Client-side dropzone. Events velin-files / velin-error. Does not upload to a server."
4393
+ },
442
4394
  "velin-dialog": {
443
4395
  "status": "pass",
444
4396
  "roles": [
@@ -473,6 +4425,17 @@
473
4425
  "aria-label"
474
4426
  ]
475
4427
  },
4428
+ "velin-form-summary": {
4429
+ "status": "pass",
4430
+ "roles": [
4431
+ "alert",
4432
+ "link"
4433
+ ],
4434
+ "keyboard": "Summary links move focus to the offending field",
4435
+ "liveRegion": "assertive",
4436
+ "requiredAttributes": [],
4437
+ "notes": "Disables native validation bubbles and renders a focusable role=alert summary. Sets aria-invalid and wires aria-describedby to per-field messages (WCAG 3.3.1, 3.3.3, 4.1.2). Field errors clear as soon as the field becomes valid."
4438
+ },
476
4439
  "velin-icon": {
477
4440
  "status": "pass",
478
4441
  "roles": [
@@ -657,27 +4620,35 @@
657
4620
  },
658
4621
  "searchIndex": {
659
4622
  "path": "dist/search-index.json",
660
- "entryCount": 137
4623
+ "entryCount": 151
661
4624
  },
662
4625
  "documentation": {
663
4626
  "generated": "docs/generated/",
664
4627
  "guides": {
665
4628
  "velinMeta": "docs/guides/velin-meta.html",
4629
+ "aiSkills": "docs/guides/ai-skills.html",
666
4630
  "velinSearch": "docs/guides/velin-search.html",
667
4631
  "syntaxHighlight": "docs/guides/syntax-highlight.html",
668
4632
  "promptScaffolding": "docs/guides/prompt-scaffolding.html",
669
4633
  "apiReference": "docs/guides/api-reference.html"
670
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
+ },
671
4640
  "agentFiles": {
672
4641
  "json": "dist/velin-agent.json",
673
4642
  "llmsTxt": "dist/llms.txt"
674
4643
  }
675
4644
  },
676
4645
  "conventions": [
677
- "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.",
678
4647
  "Use only velin-* utility classes and documented Web Components.",
679
4648
  "Prefer data-velin-theme on <html> for theme switching.",
680
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.",
681
4652
  "Do not put secrets, API keys, or raw emails in velin-meta or page meta.",
682
4653
  "Resolve doc links against docs root (/docs/), not the current page folder."
683
4654
  ]