@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,6 +1,6 @@
1
1
  {
2
2
  "wcagLevel": "AAA",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "components": {
5
5
  "velin-accordion": {
6
6
  "status": "pass",
@@ -74,6 +74,32 @@
74
74
  "keyboard": "N/A",
75
75
  "reducedMotion": true
76
76
  },
77
+ "velin-data-table": {
78
+ "status": "pass",
79
+ "roles": ["button"],
80
+ "keyboard": "Sort buttons; editable cells: Enter/F2 edit, Escape cancel; pagination",
81
+ "liveRegion": "polite",
82
+ "reducedMotion": true,
83
+ "requiredAttributes": [],
84
+ "notes": "Enhances a light-DOM table. Optional editable attribute or data-editable cells for inline edit (velin-data-table-edit). No virtualization in v1."
85
+ },
86
+ "velin-calendar": {
87
+ "status": "pass",
88
+ "roles": ["group", "grid", "button"],
89
+ "keyboard": "Arrows, Home/End, PageUp/Down, Enter/Space",
90
+ "reducedMotion": true,
91
+ "requiredAttributes": [],
92
+ "notes": "Month calendar. value ISO date; velin-change event. Optional min/max."
93
+ },
94
+ "velin-file-dropzone": {
95
+ "status": "pass",
96
+ "roles": ["group"],
97
+ "keyboard": "Browse button + native file input",
98
+ "liveRegion": "polite",
99
+ "reducedMotion": true,
100
+ "requiredAttributes": [],
101
+ "notes": "Client-side dropzone. Events velin-files / velin-error. Does not upload to a server."
102
+ },
77
103
  "velin-dialog": {
78
104
  "status": "pass",
79
105
  "roles": ["dialog"],
@@ -97,6 +123,14 @@
97
123
  "roles": ["button"],
98
124
  "requiredAttributes": ["aria-label"]
99
125
  },
126
+ "velin-form-summary": {
127
+ "status": "pass",
128
+ "roles": ["alert", "link"],
129
+ "keyboard": "Summary links move focus to the offending field",
130
+ "liveRegion": "assertive",
131
+ "requiredAttributes": [],
132
+ "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."
133
+ },
100
134
  "velin-icon": {
101
135
  "status": "pass",
102
136
  "roles": ["img", "presentation"],
@@ -0,0 +1,28 @@
1
+ /** @import { LexerFn } from '../types.js' */
2
+ import { tokenize } from './_utils.js';
3
+
4
+ const RULES = [
5
+ { type: 'comment', re: /\/\/[^\n]*/y },
6
+ { type: 'comment', re: /\/\*[\s\S]*?\*\//y },
7
+ // Raw strings may span lines.
8
+ { type: 'string', re: /`[^`]*`/y },
9
+ { type: 'string', re: /"(?:\\.|[^"\\\n])*"/y },
10
+ { type: 'string', re: /'(?:\\.|[^'\\\n])*'/y },
11
+ { type: 'number', re: /\b0[xX][\da-fA-F_]+\b|\b\d[\d_]*(?:\.[\d_]*)?(?:[eE][+-]?\d+)?i?\b/y },
12
+ {
13
+ type: 'keyword',
14
+ re: /\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go|goto|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/y,
15
+ },
16
+ {
17
+ type: 'builtin',
18
+ re: /\b(?:append|bool|byte|cap|clear|close|complex|complex64|complex128|copy|delete|error|float32|float64|imag|int|int8|int16|int32|int64|len|make|max|min|new|nil|panic|print|println|real|recover|rune|string|true|false|iota|uint|uint8|uint16|uint32|uint64|uintptr|any)\b/y,
19
+ },
20
+ { type: 'operator', re: /:=|\.\.\.|&&|\|\||<-|\+\+|--|<<=?|>>=?|&\^=?|[-+*/%&|^<>!=]=?|~/y },
21
+ { type: 'punctuation', re: /[[\]{}(),;:.]/y },
22
+ { type: 'identifier', re: /\b[A-Za-z_]\w*\b/y },
23
+ ];
24
+
25
+ /** @type {LexerFn} */
26
+ export default function lexGo(code) {
27
+ return tokenize(code, RULES);
28
+ }
@@ -0,0 +1,29 @@
1
+ /** @import { LexerFn } from '../types.js' */
2
+ import { tokenize } from './_utils.js';
3
+
4
+ const RULES = [
5
+ { type: 'comment', re: /#[^\n]*/y },
6
+ // Triple-quoted strings first so the single-quote rules cannot split them.
7
+ { type: 'string', re: /[rbfu]{0,2}"""[\s\S]*?"""/y },
8
+ { type: 'string', re: /[rbfu]{0,2}'''[\s\S]*?'''/y },
9
+ { type: 'string', re: /[rbfu]{0,2}"(?:\\.|[^"\\\n])*"/y },
10
+ { type: 'string', re: /[rbfu]{0,2}'(?:\\.|[^'\\\n])*'/y },
11
+ { type: 'number', re: /\b0[xX][\da-fA-F_]+\b|\b\d[\d_]*(?:\.[\d_]+)?(?:[eE][+-]?\d+)?j?\b/y },
12
+ {
13
+ type: 'keyword',
14
+ re: /\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|raise|return|try|while|with|yield)\b/y,
15
+ },
16
+ {
17
+ type: 'builtin',
18
+ re: /\b(?:None|True|False|self|cls|abs|all|any|bool|bytes|dict|dir|enumerate|filter|float|format|frozenset|getattr|hasattr|int|isinstance|issubclass|iter|len|list|map|max|min|next|object|open|print|range|repr|reversed|round|set|setattr|sorted|str|sum|super|tuple|type|zip)\b/y,
19
+ },
20
+ // Multi-character operators first so `->` is not split into `-` and `>`.
21
+ { type: 'operator', re: /->|:=|\*\*=?|\/\/=?|<<=?|>>=?|[-+*/%&|^~<>!=]=?/y },
22
+ { type: 'punctuation', re: /[[\]{}(),:;.@]/y },
23
+ { type: 'identifier', re: /\b[A-Za-z_]\w*\b/y },
24
+ ];
25
+
26
+ /** @type {LexerFn} */
27
+ export default function lexPython(code) {
28
+ return tokenize(code, RULES);
29
+ }
@@ -0,0 +1,32 @@
1
+ /** @import { LexerFn } from '../types.js' */
2
+ import { tokenize } from './_utils.js';
3
+
4
+ const RULES = [
5
+ { type: 'comment', re: /\/\/\/?[^\n]*/y },
6
+ { type: 'comment', re: /\/\*[\s\S]*?\*\//y },
7
+ // Raw strings close on the same number of hashes they opened with.
8
+ { type: 'string', re: /b?r(#*)"[\s\S]*?"\1/y },
9
+ { type: 'string', re: /b?"(?:\\.|[^"\\])*"/y },
10
+ { type: 'string', re: /b?'(?:\\.|[^'\\])'/y },
11
+ // Attributes such as #[derive(Debug)] read as annotations.
12
+ { type: 'builtin', re: /#!?\[[^\]]*\]/y },
13
+ { type: 'number', re: /\b0[xXbo][\da-fA-F_]+\b|\b\d[\d_]*(?:\.[\d_]+)?(?:[eE][+-]?\d+)?(?:[iuf](?:8|16|32|64|128|size))?\b/y },
14
+ {
15
+ type: 'keyword',
16
+ re: /\b(?:as|async|await|break|const|continue|crate|dyn|else|enum|extern|fn|for|if|impl|in|let|loop|match|mod|move|mut|pub|ref|return|self|Self|static|struct|super|trait|type|unsafe|use|where|while)\b/y,
17
+ },
18
+ {
19
+ type: 'builtin',
20
+ re: /\b(?:bool|char|f32|f64|i8|i16|i32|i64|i128|isize|str|u8|u16|u32|u64|u128|usize|String|Vec|Option|Result|Some|None|Ok|Err|Box|Rc|Arc|true|false)\b/y,
21
+ },
22
+ // Lifetimes such as 'a must not be read as an unterminated char literal.
23
+ { type: 'operator', re: /'[a-z_]\w*\b/y },
24
+ { type: 'operator', re: /=>|->|::|\.\.=?|&&|\|\||<<=?|>>=?|[-+*/%&|^<>!=]=?|[?@]/y },
25
+ { type: 'punctuation', re: /[[\]{}(),;:.#]/y },
26
+ { type: 'identifier', re: /\b[A-Za-z_]\w*!?\b/y },
27
+ ];
28
+
29
+ /** @type {LexerFn} */
30
+ export default function lexRust(code) {
31
+ return tokenize(code, RULES);
32
+ }
@@ -0,0 +1,23 @@
1
+ /** @import { LexerFn } from '../types.js' */
2
+ import { tokenize } from './_utils.js';
3
+
4
+ const RULES = [
5
+ { type: 'comment', re: /#[^\n]*/y },
6
+ // Document markers and block scalar indicators.
7
+ { type: 'punctuation', re: /^(?:---|\.\.\.)$/my },
8
+ { type: 'string', re: /"(?:\\.|[^"\\])*"/y },
9
+ { type: 'string', re: /'(?:''|[^'])*'/y },
10
+ // Keys are the primary structure in YAML, so they get the attr-name colour.
11
+ { type: 'attr-name', re: /^[ \t]*-?[ \t]*[\w.$-]+(?=[ \t]*:(?:[ \t]|$))/my },
12
+ { type: 'punctuation', re: /^[ \t]*-(?=[ \t]|$)/my },
13
+ { type: 'keyword', re: /\b(?:true|false|null|yes|no|on|off|~)\b/yi },
14
+ { type: 'number', re: /\b-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/y },
15
+ // Anchors, aliases, tags and block scalar headers.
16
+ { type: 'operator', re: /[&*]\w+|![\w/!-]*|[|>][+-]?\d*(?=\s*$)/my },
17
+ { type: 'punctuation', re: /[:,[\]{}]/y },
18
+ ];
19
+
20
+ /** @type {LexerFn} */
21
+ export default function lexYaml(code) {
22
+ return tokenize(code, RULES);
23
+ }
@@ -28,6 +28,14 @@ const LAZY_LOADERS = {
28
28
  console: () => import('./languages/plain.js'),
29
29
  php: () => import('./languages/php.js'),
30
30
  blade: () => import('./languages/blade.js'),
31
+ python: () => import('./languages/python.js'),
32
+ py: () => import('./languages/python.js'),
33
+ yaml: () => import('./languages/yaml.js'),
34
+ yml: () => import('./languages/yaml.js'),
35
+ go: () => import('./languages/go.js'),
36
+ golang: () => import('./languages/go.js'),
37
+ rust: () => import('./languages/rust.js'),
38
+ rs: () => import('./languages/rust.js'),
31
39
  };
32
40
 
33
41
  /** @param {string} name */
@@ -49,11 +57,14 @@ export function normalizeLanguage(name) {
49
57
  md: 'markdown',
50
58
  plaintext: 'text',
51
59
  'plain-text': 'text',
52
- yml: 'text',
53
- yaml: 'text',
60
+ yml: 'yaml',
54
61
  toml: 'text',
55
62
  ini: 'text',
56
63
  php8: 'php',
64
+ py: 'python',
65
+ python3: 'python',
66
+ golang: 'go',
67
+ rs: 'rust',
57
68
  };
58
69
  return map[n] || n;
59
70
  }
@@ -85,7 +85,7 @@ export function buildPageMeta(html, sourcePath = '', pkgRoot = '.') {
85
85
  : 'page';
86
86
 
87
87
  return {
88
- version: readPackageMeta(pkgRoot).version || '0.9.0',
88
+ version: readPackageMeta(pkgRoot).version || '0.0.0',
89
89
  mime: VELIN_META_MIME,
90
90
  page: {
91
91
  intent,
@@ -164,6 +164,35 @@ export async function buildAgentBundle(options) {
164
164
  }
165
165
  }
166
166
 
167
+ const readJsonSafe = (rel) => {
168
+ const p = join(pkgRoot, rel);
169
+ if (!existsSync(p)) return null;
170
+ try {
171
+ return JSON.parse(readFileSync(p, 'utf-8'));
172
+ } catch {
173
+ return null;
174
+ }
175
+ };
176
+
177
+ const knowledgeComponents = readJsonSafe('core/meta/knowledge/components.json');
178
+ const knowledgeTokens = readJsonSafe('core/meta/knowledge/tokens.json');
179
+ const pageRegistry = readJsonSafe('core/meta/pages/registry.json');
180
+ const sectionRegistry = readJsonSafe('core/meta/sections/registry.json');
181
+ const skillsRegistry = readJsonSafe('packages/velinstyle-skills/registry.json');
182
+ const skillsCatalog = readJsonSafe('packages/velinstyle-skills/catalog.json');
183
+
184
+ const constraintDir = join(pkgRoot, 'core', 'meta', 'design-constraints');
185
+ const designConstraints = [];
186
+ if (existsSync(constraintDir)) {
187
+ for (const file of readdirSync(constraintDir).filter((f) => f.endsWith('.json'))) {
188
+ try {
189
+ designConstraints.push(JSON.parse(readFileSync(join(constraintDir, file), 'utf-8')));
190
+ } catch {
191
+ /* skip bad files */
192
+ }
193
+ }
194
+ }
195
+
167
196
  const bundle = {
168
197
  schemaVersion: VELIN_AGENT_SCHEMA_VERSION,
169
198
  mime: VELIN_META_MIME,
@@ -174,7 +203,8 @@ export async function buildAgentBundle(options) {
174
203
  homepage: pkg.homepage,
175
204
  repository: pkg.repository,
176
205
  tagline:
177
- 'VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components.',
206
+ 'VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.',
207
+ pipeline: 'Core Foundation → Design System → Knowledge Graph → Prompt Engine → Review Engine → AI Metadata',
178
208
  },
179
209
  packageExports: pkg.exports,
180
210
  release: {
@@ -185,6 +215,7 @@ export async function buildAgentBundle(options) {
185
215
  migration: [
186
216
  'Replace velin-tooltip-wc / velin-stepper-wc with velin-tooltip / velin-stepper.',
187
217
  'Point AI tools at velin-agent.json or docs/llms.txt for framework context.',
218
+ 'Prefer velinstyle scaffold / plan for page generation (plan → render → review).',
188
219
  ],
189
220
  },
190
221
  components: {
@@ -195,10 +226,73 @@ export async function buildAgentBundle(options) {
195
226
  legacyAliases,
196
227
  helpers,
197
228
  },
229
+ knowledgeGraph: {
230
+ components: knowledgeComponents?.components || [],
231
+ componentCount: knowledgeComponents?.components?.length || 0,
232
+ tokens: knowledgeTokens,
233
+ pages: pageRegistry?.pages || [],
234
+ pageCount: pageRegistry?.pages?.length || 0,
235
+ sections: sectionRegistry?.sections || [],
236
+ sectionCount: sectionRegistry?.sections?.length || 0,
237
+ designConstraints,
238
+ schemas: [
239
+ 'schemas/component-knowledge.schema.json',
240
+ 'schemas/design-intelligence.schema.json',
241
+ 'schemas/design-constraint.schema.json',
242
+ 'schemas/page-template.schema.json',
243
+ 'schemas/section.schema.json',
244
+ 'schemas/review-report.schema.json',
245
+ 'schemas/token-graph.schema.json',
246
+ 'schemas/design-rule.schema.json',
247
+ 'schemas/skill-record.schema.json',
248
+ 'schemas/skill-registry.schema.json',
249
+ 'schemas/skill-pack.schema.json',
250
+ 'schemas/skill-graph.schema.json',
251
+ 'schemas/skill-bundle.schema.json',
252
+ 'schemas/skill-template.schema.json',
253
+ 'schemas/skill-project.schema.json',
254
+ ],
255
+ },
256
+ skills: {
257
+ count: skillsCatalog?.totals?.skills || skillsRegistry?.skills?.length || 0,
258
+ categories: [...new Set((skillsRegistry?.skills || []).map((item) => item.category))].sort(),
259
+ capabilities: [...new Set((skillsRegistry?.skills || []).flatMap((item) => item.capabilities || []))].sort(),
260
+ items: (skillsRegistry?.skills || []).map((item) => ({
261
+ id: item.id,
262
+ category: item.category,
263
+ priority: item.priority,
264
+ status: item.status,
265
+ confidence: item.confidence,
266
+ capabilities: item.capabilities || [],
267
+ })),
268
+ },
269
+ skillPacks: skillsRegistry?.packs || [],
270
+ workflowGraphs: (skillsRegistry?.workflowGraphs || []).map((graph) => ({
271
+ id: graph.id,
272
+ name: graph.name,
273
+ entry: graph.entry,
274
+ nodeCount: Object.keys(graph.nodes || {}).length,
275
+ edgeCount: (graph.edges || []).length,
276
+ })),
277
+ bundles: skillsRegistry?.bundles || [],
278
+ templates: skillsRegistry?.templates || [],
279
+ projectSkills: skillsRegistry?.projects || [],
198
280
  attributes: { names: attributes, count: attributes.length },
199
281
  cli: { commands: cliCommands },
200
282
  tooling: {
201
- categories: ['scan', 'prefix', 'scaffold', 'layout', 'perf', 'tokens', 'docs', 'search', 'meta'],
283
+ categories: [
284
+ 'scan',
285
+ 'prefix',
286
+ 'scaffold',
287
+ 'plan',
288
+ 'review',
289
+ 'layout',
290
+ 'perf',
291
+ 'tokens',
292
+ 'docs',
293
+ 'search',
294
+ 'meta',
295
+ ],
202
296
  scannerRuleCount,
203
297
  },
204
298
  a11y: {
@@ -216,11 +310,17 @@ export async function buildAgentBundle(options) {
216
310
  generated: 'docs/generated/',
217
311
  guides: {
218
312
  velinMeta: 'docs/guides/velin-meta.html',
313
+ aiSkills: 'docs/guides/ai-skills.html',
219
314
  velinSearch: 'docs/guides/velin-search.html',
220
315
  syntaxHighlight: 'docs/guides/syntax-highlight.html',
221
316
  promptScaffolding: 'docs/guides/prompt-scaffolding.html',
222
317
  apiReference: 'docs/guides/api-reference.html',
223
318
  },
319
+ strategy: {
320
+ note: 'Maintainer strategy/ADR docs are not published (monorepo interne_docs/strategy).',
321
+ northStar: 'VELINSTYLE_2030.md',
322
+ architecture: 'ARCHITECTURE.md',
323
+ },
224
324
  agentFiles: {
225
325
  json: 'dist/velin-agent.json',
226
326
  llmsTxt: 'dist/llms.txt',
@@ -240,7 +340,7 @@ export async function buildAgentBundle(options) {
240
340
  export function buildLlmsTxt(bundle, baseUrl = 'https://velinstyle.info') {
241
341
  const tagline =
242
342
  bundle.framework.tagline ||
243
- 'VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components.';
343
+ 'VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.';
244
344
  const lines = [
245
345
  `# VelinStyle ${bundle.framework.version}`,
246
346
  '',
@@ -251,19 +351,34 @@ export function buildLlmsTxt(bundle, baseUrl = 'https://velinstyle.info') {
251
351
  '## Framework',
252
352
  `- npm: ${bundle.framework.name}`,
253
353
  `- ${tagline}`,
354
+ `- Pipeline: ${bundle.framework.pipeline || 'Core → Design → Knowledge → Prompt → Review → AI Metadata'}`,
355
+ `- Maturity: CSS/Web Components/runtime = stable; plan/review, knowledge graph, page/section registry, agent metadata = beta/foundation (seed, expanding); Studio + Utility Engine generator = planned`,
254
356
  `- Components: ${bundle.components.count} canonical Web Components (\`velin-*\`); ${bundle.components.loaderCount ?? bundle.components.count} lazy-loader entries`,
357
+ `- Knowledge graph: ${bundle.knowledgeGraph?.componentCount ?? 0} component nodes, ${bundle.knowledgeGraph?.pageCount ?? 0} page types, ${bundle.knowledgeGraph?.sectionCount ?? 0} sections, ${bundle.knowledgeGraph?.designConstraints?.length ?? 0} design constraint packs`,
255
358
  `- HTML attributes: ${bundle.attributes.count} \`velin-*\` bridges`,
256
- `- CLI: velinstyle (scan, scaffold, docs generate, search index, meta)`,
359
+ `- CLI: velinstyle (scan, scaffold, plan, review, docs generate, search index, meta)`,
360
+ '',
361
+ '## Agent briefing',
362
+ '- Treat plan/review/knowledge graph as beta foundation — usable, not a finished AI design system.',
363
+ '- Build pages with plan-first flow: analyze prompt → page registry → sections → design constraints → HTML → review.',
364
+ '- Prefer tokens (`--velin-color-*`, `--velin-space-*`) over raw hex.',
365
+ '- One H1 per page; form fields need labels + `velin-form-summary` when validating.',
366
+ '- Hero: max 2 CTAs; FAQ uses disclosure (`velin-accordion` / details).',
367
+ '- Do not invent non-`velin-*` utility classes.',
368
+ '- Prefer registry-backed skills/workflows (`velinstyle skills ...`, `velinstyle workflow ...`) before ad-hoc orchestration.',
257
369
  '',
258
370
  '## Conventions',
259
371
  ...bundle.conventions.map((c) => `- ${c}`),
260
372
  '',
261
373
  '## Key guides',
262
374
  `- [Velin-Meta](${baseUrl}/docs/guides/velin-meta.html)`,
375
+ `- [AI Skills](${baseUrl}/docs/guides/ai-skills.html)`,
263
376
  `- [VelinSearch](${baseUrl}/docs/guides/velin-search.html)`,
264
377
  `- [Syntax highlighting](${baseUrl}/docs/guides/syntax-highlight.html)`,
265
378
  `- [Prompt scaffolding](${baseUrl}/docs/guides/prompt-scaffolding.html)`,
266
379
  `- [API reference (generated)](${baseUrl}/docs/guides/api-reference.html)`,
380
+ `- North star: VELINSTYLE_2030.md`,
381
+ `- Architecture: ARCHITECTURE.md`,
267
382
  '',
268
383
  '## Generated reference',
269
384
  `- [Components index](${baseUrl}/docs/generated/components/)`,
@@ -273,9 +388,14 @@ export function buildLlmsTxt(bundle, baseUrl = 'https://velinstyle.info') {
273
388
  '',
274
389
  '## Usage for agents',
275
390
  '```',
391
+ 'npx velinstyle plan "Steuerberater Landingpage mit Kontaktformular"',
392
+ 'npx velinstyle scaffold "Steuerberater Landingpage mit Kontaktformular" -o out.html --json',
393
+ 'npx velinstyle review out.html --json',
276
394
  'npx velinstyle meta',
277
395
  'npx velinstyle docs generate',
278
- 'npx velinstyle search index',
396
+ 'npx velinstyle skills list --capability review',
397
+ 'npx velinstyle skills install frontend',
398
+ 'npx velinstyle workflow landingpage --json',
279
399
  '```',
280
400
  '',
281
401
  ];
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "contact",
3
+ "target": "section:contact",
4
+ "rules": [
5
+ { "id": "contact-labels", "scope": "section", "section": "contact", "rule": "Visible labels on all fields", "severity": "error" },
6
+ { "id": "contact-summary", "scope": "section", "section": "contact", "rule": "Include velin-form-summary for errors", "severity": "error" },
7
+ { "id": "contact-submit", "scope": "section", "section": "contact", "rule": "Single primary submit button", "severity": "warning" }
8
+ ]
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "faq",
3
+ "target": "section:faq",
4
+ "rules": [
5
+ { "id": "faq-questions", "scope": "section", "section": "faq", "rule": "Entries must be clear interrogatives", "severity": "error" },
6
+ { "id": "faq-pattern", "scope": "section", "section": "faq", "rule": "Use accordion/disclosure, not long marketing paragraphs", "severity": "error" },
7
+ { "id": "faq-count", "scope": "section", "section": "faq", "rule": "Prefer 5–8 high-intent FAQs", "severity": "info" }
8
+ ]
9
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "hero",
3
+ "target": "section:hero",
4
+ "rules": [
5
+ { "id": "hero-headline-lines", "scope": "section", "section": "hero", "rule": "Headline max 2 lines on desktop", "severity": "error" },
6
+ { "id": "hero-cta-max", "scope": "section", "section": "hero", "rule": "Maximum 2 CTAs", "severity": "error" },
7
+ { "id": "hero-image-side", "scope": "section", "section": "hero", "rule": "Image left OR right, not competing dual heroes", "severity": "warning" },
8
+ { "id": "hero-padding", "scope": "section", "section": "hero", "rule": "Section padding by breakpoint", "breakpoints": { "mobile": "var(--velin-space-8)", "tablet": "var(--velin-space-10)", "desktop": "var(--velin-space-12)" }, "severity": "warning" },
9
+ { "id": "hero-contrast", "scope": "section", "section": "hero", "rule": "Text/surface pairs must meet contrast contract", "severity": "error" },
10
+ { "id": "hero-motion", "scope": "section", "section": "hero", "rule": "Animation only when motion-safe", "severity": "warning" },
11
+ { "id": "hero-container", "scope": "section", "section": "hero", "rule": "Content inside documented container width", "severity": "warning" }
12
+ ]
13
+ }