@jini-ai/agent-plugins 0.6.16 → 0.6.19

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 (335) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/NOTICE +14 -0
  3. package/README.md +35 -14
  4. package/charts-echarts/plugin.json +39 -0
  5. package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
  6. package/charts-recharts/plugin.json +32 -0
  7. package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
  8. package/cloudflare/NOTES.md +16 -0
  9. package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
  10. package/cloudflare/lib/api.mjs +96 -0
  11. package/cloudflare/lib/assets.mjs +65 -0
  12. package/cloudflare/lib/dns.mjs +32 -0
  13. package/cloudflare/lib/domain-inventory.mjs +61 -0
  14. package/cloudflare/lib/domain-status.mjs +48 -0
  15. package/cloudflare/lib/domains.mjs +95 -0
  16. package/cloudflare/lib/forms.mjs +254 -0
  17. package/cloudflare/lib/pages-upload.mjs +51 -0
  18. package/cloudflare/lib/target.mjs +165 -0
  19. package/cloudflare/lib/workers-upload.mjs +48 -0
  20. package/cloudflare/lib/zones.mjs +25 -0
  21. package/cloudflare/mcp.json +4 -0
  22. package/cloudflare/plugin.json +96 -0
  23. package/cloudflare/skills/cloudflare/SKILL.md +57 -0
  24. package/cloudflare/skills/cloudflare/references/domains.md +31 -0
  25. package/cloudflare/skills/cloudflare/references/pages.md +18 -0
  26. package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
  27. package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
  28. package/cloudflare/skills/cloudflare/references/workers.md +42 -0
  29. package/cloudflare/targets/cloudflare-pages.mjs +12 -0
  30. package/cloudflare/targets/cloudflare-workers.mjs +17 -0
  31. package/cloudflare/tovu-consent.json +6 -0
  32. package/cloudflare/tovu-deploy-targets.json +630 -0
  33. package/cloudflare/tovu-form-destinations.json +12 -0
  34. package/cloudflare/worker/forms-receiver.mjs +249 -0
  35. package/composio/mcp.json +10 -0
  36. package/composio/plugin.json +68 -0
  37. package/composio/skills/composio/SKILL.md +85 -0
  38. package/dist/core/identity-namespace.d.ts +12 -0
  39. package/dist/core/identity-namespace.js +20 -0
  40. package/dist/folder-zip-node.js +29 -7
  41. package/dist/lifecycle/bundled-digests.js +4 -3
  42. package/dist/lifecycle/install.d.ts +7 -0
  43. package/dist/lifecycle/install.js +45 -3
  44. package/dist/lifecycle/manifest.d.ts +2 -2
  45. package/dist/lifecycle/manifest.js +5 -3
  46. package/dist/lifecycle/node.js +2 -0
  47. package/dist/lifecycle/persistent-state.js +1 -1
  48. package/dist/lifecycle/ports.d.ts +8 -0
  49. package/dist/lifecycle/seed-bundled.js +4 -1
  50. package/dist/manifest.d.ts +1 -1
  51. package/dist/manifest.js +3 -2
  52. package/fly/deploy-configs/fly.mjs +115 -0
  53. package/fly/deploy-ops/fly.mjs +102 -0
  54. package/fly/mcp.json +4 -0
  55. package/fly/plugin.json +81 -0
  56. package/fly/scripts/render-deploy-workflow.mjs +150 -0
  57. package/fly/skills/fly/SKILL.md +43 -0
  58. package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
  59. package/fly/skills/fly/references/fly.template.toml +81 -0
  60. package/fly/tovu-credential-schemes.json +11 -0
  61. package/fly/tovu-deploy-configs.json +21 -0
  62. package/fly/tovu-deploy-ops.json +14 -0
  63. package/github/deploy-ops/github-actions.mjs +164 -0
  64. package/github/deployments/github.mjs +415 -0
  65. package/github/mcp.json +4 -0
  66. package/github/plugin.json +105 -0
  67. package/github/skills/github/SKILL.md +249 -0
  68. package/github/skills/github/references/actions.md +224 -0
  69. package/github/skills/github/references/auth-and-tokens.md +140 -0
  70. package/github/skills/github/references/repo-files.md +135 -0
  71. package/github/skills/github/references/site-backup.md +159 -0
  72. package/github/skills/github/references/source-control.md +123 -0
  73. package/github/source-control/backup-push.mjs +242 -0
  74. package/github/source-control/commit-site.mjs +459 -0
  75. package/github/source-control/github.mjs +93 -0
  76. package/github/source-control/write-files.mjs +468 -0
  77. package/github/tovu-deploy-ops.json +13 -0
  78. package/github/tovu-source-control.json +117 -0
  79. package/github-pages/NOTES.md +19 -0
  80. package/github-pages/mcp.json +4 -0
  81. package/github-pages/plugin.json +48 -0
  82. package/github-pages/skills/github-pages/SKILL.md +44 -0
  83. package/github-pages/targets/github-pages.mjs +543 -0
  84. package/github-pages/tovu-deploy-targets.json +327 -0
  85. package/google-login/exports/google-g.svg +1 -0
  86. package/google-login/exports/sign-in-button.css +68 -0
  87. package/google-login/exports/sign-in-button.html +4 -0
  88. package/google-login/mcp.json +4 -0
  89. package/google-login/plugin.json +59 -0
  90. package/google-login/skills/google-login/SKILL.md +96 -0
  91. package/google-login/tovu-login-providers.json +21 -0
  92. package/google-workspace/README.md +132 -0
  93. package/google-workspace/form-destinations/README.md +87 -0
  94. package/google-workspace/form-destinations/dedupe.mjs +43 -0
  95. package/google-workspace/form-destinations/delivery-result.mjs +69 -0
  96. package/google-workspace/form-destinations/mapping.mjs +152 -0
  97. package/google-workspace/form-destinations/sheets.mjs +202 -0
  98. package/google-workspace/lib/auth.mjs +81 -0
  99. package/google-workspace/lib/drive-files.mjs +54 -0
  100. package/google-workspace/lib/form-destination-settings.mjs +72 -0
  101. package/google-workspace/lib/http.mjs +168 -0
  102. package/google-workspace/lib/picker-flow.mjs +171 -0
  103. package/google-workspace/lib/picker-selection.mjs +107 -0
  104. package/google-workspace/lib/product-state.mjs +93 -0
  105. package/google-workspace/lib/request-policy.mjs +163 -0
  106. package/google-workspace/lib/sheets-a1.mjs +79 -0
  107. package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
  108. package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
  109. package/google-workspace/lib/sheets-client.mjs +286 -0
  110. package/google-workspace/lib/surface-actions.mjs +107 -0
  111. package/google-workspace/mcp.json +4 -0
  112. package/google-workspace/plugin.json +77 -0
  113. package/google-workspace/products.json +12 -0
  114. package/google-workspace/skills/google-workspace/SKILL.md +82 -0
  115. package/google-workspace/skills/google-workspace/references/connection.md +102 -0
  116. package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
  117. package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
  118. package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
  119. package/google-workspace/tools/account-info.mjs +18 -0
  120. package/google-workspace/tools/sheets/README.md +54 -0
  121. package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
  122. package/google-workspace/tools/sheets/copy.mjs +23 -0
  123. package/google-workspace/tools/sheets/create.mjs +35 -0
  124. package/google-workspace/tools/sheets/find-replace.mjs +38 -0
  125. package/google-workspace/tools/sheets/find.mjs +52 -0
  126. package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
  127. package/google-workspace/tools/sheets/get.mjs +22 -0
  128. package/google-workspace/tools/sheets/values-append.mjs +27 -0
  129. package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
  130. package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
  131. package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
  132. package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
  133. package/google-workspace/tools/sheets/values-clear.mjs +20 -0
  134. package/google-workspace/tools/sheets/values-get.mjs +21 -0
  135. package/google-workspace/tools/sheets/values-update.mjs +26 -0
  136. package/google-workspace/tools/sheets-admin/README.md +45 -0
  137. package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
  138. package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
  139. package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
  140. package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
  141. package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
  142. package/google-workspace/tools/sheets-admin/format.mjs +70 -0
  143. package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
  144. package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
  145. package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
  146. package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
  147. package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
  148. package/google-workspace/tovu-admin-surfaces.json +63 -0
  149. package/google-workspace/tovu-agent-tools.json +1178 -0
  150. package/google-workspace/tovu-connections.json +35 -0
  151. package/google-workspace/tovu-form-destinations.json +10 -0
  152. package/google-workspace/ui/README.md +73 -0
  153. package/google-workspace/ui/connection-panel.handler.mjs +167 -0
  154. package/google-workspace/ui/connection-panel.html +17 -0
  155. package/google-workspace/ui/connection-panel.mjs +189 -0
  156. package/google-workspace/ui/connection-view.mjs +120 -0
  157. package/google-workspace/ui/destination-panel.handler.mjs +106 -0
  158. package/google-workspace/ui/destination-panel.html +17 -0
  159. package/google-workspace/ui/destination-panel.mjs +150 -0
  160. package/google-workspace/ui/dom.mjs +140 -0
  161. package/google-workspace/ui/panel.css +170 -0
  162. package/google-workspace/ui/picker-flow.mjs +87 -0
  163. package/google-workspace/ui/picker-view.mjs +44 -0
  164. package/google-workspace/ui/picker.handler.mjs +56 -0
  165. package/google-workspace/ui/picker.html +17 -0
  166. package/google-workspace/ui/picker.mjs +88 -0
  167. package/google-workspace/ui/surface-client.mjs +227 -0
  168. package/higgsfield-media/mcp.json +9 -0
  169. package/higgsfield-media/plugin.json +109 -0
  170. package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
  171. package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
  172. package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
  173. package/jev/mcp.json +4 -0
  174. package/jev/plugin.json +44 -0
  175. package/jev/skills/jev/SKILL.md +308 -0
  176. package/jev/skills/jev/references/cookbooks.md +197 -0
  177. package/jev/skills/jev/references/jaggedness.md +135 -0
  178. package/jev/skills/jev/references/javascript-sdk.md +146 -0
  179. package/jev/skills/jev/references/patterns.md +123 -0
  180. package/jev/skills/jev/references/primitives-reference.md +187 -0
  181. package/langfuse/plugin.json +22 -0
  182. package/meilisearch/mcp.json +4 -0
  183. package/meilisearch/plugin.json +54 -0
  184. package/meilisearch/providers/meilisearch.mjs +651 -0
  185. package/meilisearch/skills/meilisearch/SKILL.md +43 -0
  186. package/meilisearch/tovu-search-providers.json +10 -0
  187. package/netlify/NOTES.md +13 -0
  188. package/netlify/mcp.json +4 -0
  189. package/netlify/plugin.json +47 -0
  190. package/netlify/skills/netlify/SKILL.md +39 -0
  191. package/netlify/targets/netlify.mjs +384 -0
  192. package/netlify/tovu-consent.json +6 -0
  193. package/netlify/tovu-deploy-targets.json +163 -0
  194. package/opentelemetry/mcp.json +4 -0
  195. package/opentelemetry/plugin.json +52 -0
  196. package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
  197. package/package.json +161 -6
  198. package/posthog/mcp.json +4 -0
  199. package/posthog/plugin.json +46 -0
  200. package/posthog/skills/posthog/SKILL.md +36 -0
  201. package/railway/deploy-configs/railway.mjs +135 -0
  202. package/railway/deploy-ops/railway.mjs +167 -0
  203. package/railway/mcp.json +4 -0
  204. package/railway/plugin.json +45 -0
  205. package/railway/skills/railway/SKILL.md +66 -0
  206. package/railway/tovu-deploy-configs.json +16 -0
  207. package/railway/tovu-deploy-ops.json +11 -0
  208. package/render/deploy-configs/render.mjs +141 -0
  209. package/render/deploy-ops/render.mjs +152 -0
  210. package/render/mcp.json +4 -0
  211. package/render/plugin.json +47 -0
  212. package/render/skills/render/SKILL.md +63 -0
  213. package/render/tovu-deploy-configs.json +16 -0
  214. package/render/tovu-deploy-ops.json +11 -0
  215. package/resend/NOTES.md +52 -0
  216. package/resend/adapters/resend.mjs +161 -0
  217. package/resend/lib/domains.mjs +137 -0
  218. package/resend/lib/errors.mjs +25 -0
  219. package/resend/lib/feedback.mjs +118 -0
  220. package/resend/mcp.json +13 -0
  221. package/resend/plugin.json +192 -0
  222. package/resend/skills/resend/SKILL.md +107 -0
  223. package/resend/tovu-mail-adapters.json +22 -0
  224. package/s3-compatible/NOTES.md +11 -0
  225. package/s3-compatible/mcp.json +4 -0
  226. package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
  227. package/s3-compatible/plugin.json +56 -0
  228. package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
  229. package/s3-compatible/targets/s3-compatible.mjs +1054 -0
  230. package/s3-compatible/tovu-deploy-targets.json +432 -0
  231. package/s3-compatible/tovu-object-stores.json +29 -0
  232. package/sentry/mcp.json +4 -0
  233. package/sentry/plugin.json +49 -0
  234. package/sentry/skills/sentry/SKILL.md +34 -0
  235. package/shopify/mcp.json +4 -0
  236. package/shopify/plugin.json +22 -0
  237. package/shopify/skills/shopify/SKILL.md +103 -0
  238. package/shopify/skills/shopify/references/catalog-sync.md +74 -0
  239. package/shopify/skills/shopify/references/domains.md +26 -0
  240. package/shopify/skills/shopify/references/live-storefront.md +34 -0
  241. package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
  242. package/site-compliance/mcp.json +4 -0
  243. package/site-compliance/plugin.json +34 -0
  244. package/site-compliance/skills/site-compliance/SKILL.md +220 -0
  245. package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
  246. package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
  247. package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
  248. package/site-import/mcp.json +4 -0
  249. package/site-import/plugin.json +41 -0
  250. package/site-import/skills/site-import/SKILL.md +232 -0
  251. package/site-import/skills/site-import/references/content-mapping.md +166 -0
  252. package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
  253. package/site-import/skills/site-import/references/theme-extraction.md +34 -0
  254. package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  255. package/slide-design/mcp.json +4 -0
  256. package/slide-design/plugin.json +26 -0
  257. package/slide-design/skills/slide-design/SKILL.md +103 -0
  258. package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
  259. package/slide-design/skills/slide-design/references/html-deck.md +175 -0
  260. package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
  261. package/slide-design/skills/slide-design/references/review.md +93 -0
  262. package/slide-design/skills/slide-design/references/storyline.md +118 -0
  263. package/stripe/plugin.json +22 -0
  264. package/supabase/mcp.json +26 -0
  265. package/supabase/plugin.json +78 -0
  266. package/supabase/skills/supabase/SKILL.md +169 -0
  267. package/supabase/skills/supabase/references/failure-modes.md +101 -0
  268. package/ui-ux-design/CHANGELOG.md +28 -0
  269. package/ui-ux-design/LICENSE +201 -0
  270. package/ui-ux-design/NOTICE +14 -0
  271. package/ui-ux-design/README.md +62 -0
  272. package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  273. package/ui-ux-design/mcp.json +4 -0
  274. package/ui-ux-design/plugin.json +26 -0
  275. package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
  276. package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
  277. package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
  278. package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
  279. package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
  280. package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
  281. package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
  282. package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
  283. package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
  284. package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
  285. package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
  286. package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
  287. package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
  288. package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
  289. package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
  290. package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
  291. package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
  292. package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
  293. package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
  294. package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  295. package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
  296. package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  297. package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
  298. package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
  299. package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
  300. package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
  301. package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  302. package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
  303. package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
  304. package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
  305. package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
  306. package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
  307. package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
  308. package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
  309. package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
  310. package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
  311. package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
  312. package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
  313. package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
  314. package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
  315. package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
  316. package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
  317. package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
  318. package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
  319. package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
  320. package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
  321. package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
  322. package/vercel/NOTES.md +23 -0
  323. package/vercel/mcp.json +4 -0
  324. package/vercel/object-stores/vercel-blob.mjs +147 -0
  325. package/vercel/plugin.json +47 -0
  326. package/vercel/skills/vercel/SKILL.md +48 -0
  327. package/vercel/targets/vercel.mjs +586 -0
  328. package/vercel/tovu-consent.json +6 -0
  329. package/vercel/tovu-deploy-targets.json +219 -0
  330. package/vercel/tovu-object-stores.json +10 -0
  331. package/wordpress/NOTES.md +33 -0
  332. package/wordpress/plugin.json +30 -0
  333. package/wordpress/skills/wordpress/SKILL.md +43 -0
  334. package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
  335. package/wordpress/skills/wordpress/references/subdomain.md +66 -0
@@ -0,0 +1,145 @@
1
+ # Foundations
2
+
3
+ Use this reference when creating or extending the visual system for a product or feature.
4
+
5
+ This file owns the token, layout, and visual-system contract. `ui-loop.md` owns the
6
+ resulting page/screen quality review; do not treat this reference's decisions or
7
+ anti-patterns as a substitute completion checklist.
8
+
9
+ ## Goals
10
+
11
+ - Define a stable visual foundation before designing individual screens.
12
+ - Give Programmer a constrained, reusable system instead of one-off styling decisions.
13
+ - Preserve existing product patterns unless the user explicitly wants a new direction.
14
+
15
+ ## Required Decisions
16
+
17
+ 1. Visual direction
18
+ 2. Color and semantic token system
19
+ 3. Typography hierarchy
20
+ 4. Spacing scale
21
+ 5. Layout/container/grid rules
22
+ 6. Breakpoint behavior
23
+ 7. Elevation, border, radius, and motion primitives
24
+
25
+ ## Minimum Foundation Contract
26
+
27
+ ### Visual Direction
28
+
29
+ Define:
30
+
31
+ - product character in 3-5 adjectives
32
+ - intended level of formality
33
+ - density target: compact, balanced, spacious
34
+ - contrast profile: restrained, moderate, bold
35
+ - reuse vs reinvention decision
36
+
37
+ If working within an existing system, document continuation rules instead of inventing a new style.
38
+
39
+ ### Token Categories
40
+
41
+ Create or extend tokens for:
42
+
43
+ - surface/background
44
+ - text/foreground
45
+ - border/separator
46
+ - interactive/brand
47
+ - success/warning/error/info
48
+ - focus ring
49
+ - shadow/elevation
50
+ - radius
51
+ - spacing
52
+ - typography
53
+ - motion duration/easing
54
+
55
+ Prefer semantic names over raw color names.
56
+
57
+ ### Typography
58
+
59
+ Define:
60
+
61
+ - display or hero style if needed
62
+ - heading scale
63
+ - body sizes
64
+ - caption/supporting text
65
+ - monospace usage if relevant
66
+ - line-height and weight rules
67
+
68
+ ### Spacing
69
+
70
+ Use a consistent scale. Typical safe pattern:
71
+
72
+ - `4, 8, 12, 16, 24, 32, 48, 64`
73
+
74
+ Apply the same scale to:
75
+
76
+ - margins
77
+ - padding
78
+ - grid gaps
79
+ - section rhythm
80
+ - component spacing
81
+
82
+ ### Layout
83
+
84
+ Define:
85
+
86
+ - max content widths
87
+ - section padding rules
88
+ - grid column behavior
89
+ - stack behavior on narrow screens
90
+ - sticky or persistent UI elements if any
91
+
92
+ Default to mobile-first.
93
+
94
+ ### Breakpoints
95
+
96
+ Document behavior at:
97
+
98
+ - mobile
99
+ - tablet
100
+ - desktop
101
+ - large desktop if relevant
102
+
103
+ Describe behavior, not just widths:
104
+
105
+ - navigation changes
106
+ - card/list reflow
107
+ - sidebar collapse/expand
108
+ - media cropping
109
+ - density and spacing adjustments
110
+
111
+ ## Theming
112
+
113
+ Do not require multiple themes by default.
114
+
115
+ If theming is in scope, define:
116
+
117
+ - what tokens change
118
+ - contrast rules
119
+ - image/media treatment changes
120
+ - persistence behavior
121
+
122
+ Do not add a theme toggle only because it is possible.
123
+
124
+ ## Anti-Patterns
125
+
126
+ - hardcoded one-off colors across components
127
+ - spacing chosen ad hoc per screen
128
+ - headings without a system
129
+ - desktop-first layout that collapses poorly on mobile
130
+ - decorative motion without purpose
131
+ - dark mode or theme switching as mandatory default
132
+
133
+ ## Reference-Specific Output
134
+
135
+ Record the applicable foundation decisions in the authorized design artifact or
136
+ living visual `design.md`:
137
+
138
+ - visual direction named
139
+ - semantic token groups defined
140
+ - typography hierarchy defined
141
+ - spacing scale defined
142
+ - breakpoints documented
143
+ - layout rules documented
144
+ - motion/elevation basics documented
145
+ - assumptions and constraints explicitly noted
@@ -0,0 +1,57 @@
1
+ # Inclusive AI Imagery
2
+
3
+ Use this reference only when image or video generation is part of the design task.
4
+
5
+ ## Core Rule
6
+
7
+ Identity is not a decorative adjective. Generated imagery must avoid stereotype defaults, tokenism, and incoherent cultural details.
8
+
9
+ ## Prompt Structure
10
+
11
+ Build prompts in layers:
12
+
13
+ 1. subject
14
+ 2. action or pose
15
+ 3. environment and geographic/cultural context
16
+ 4. lighting and camera treatment
17
+ 5. style or medium
18
+ 6. explicit negative constraints
19
+
20
+ ## Inclusive Representation Constraints
21
+
22
+ Specify when relevant:
23
+
24
+ - distinct faces, body types, ages, and attire
25
+ - authentic geography and architecture
26
+ - accurate cultural clothing or symbols
27
+ - realistic lighting for different skin tones
28
+ - mobility aids and assistive devices with physical realism
29
+
30
+ ## Negative Prompt Themes
31
+
32
+ Block:
33
+
34
+ - clone faces
35
+ - gibberish text or fake signage
36
+ - exoticized or sensationalized framing
37
+ - oversized symbolic props replacing the human subject
38
+ - malformed hands, limbs, or devices
39
+ - futuristic or stock-photo tropes unless intentionally requested
40
+
41
+ ## Review Checklist
42
+
43
+ Before approving generated imagery, check:
44
+
45
+ - is the subject depicted with dignity and agency
46
+ - does the environment fit the claimed context
47
+ - are there stereotype shortcuts
48
+ - do multiple people look meaningfully distinct
49
+ - is any text, signage, or symbolism coherent
50
+ - do clothing, hair, and movement obey physical reality
51
+
52
+ ## Anti-Patterns
53
+
54
+ - "diverse team" prompts with no specificity
55
+ - relying on ethnicity descriptors without contextual realism
56
+ - using image prompts as a substitute for real brand/art direction
57
+ - importing imagery guidance into tasks that only need UI design
@@ -0,0 +1,104 @@
1
+ # Kole Jain UI/UX Concepts Notes
2
+
3
+ Source context: extracted from the user-provided transcript `Every UIUX Concept Explained in Under 10 Minutes.txt`, attributed to Kole Jain.
4
+
5
+ ## Core Thesis
6
+
7
+ Good UI/UX makes behavior legible without explanation. Interfaces should communicate relationship, importance, state, affordance, and feedback through visual structure: signifiers, hierarchy, whitespace, typography, color, depth, icons, component states, and micro-interactions.
8
+
9
+ ## Signifiers And Affordances
10
+
11
+ - Use visible cues to show what an element is, what it can do, and what state it is in.
12
+ - Examples: active nav highlights, selected containers, disabled opacity, button press states, hover states, focus states, and tooltips.
13
+ - A user should often understand interaction rules before reading instructions.
14
+ - Treat missing state feedback as a UX bug, not just a polish gap.
15
+
16
+ ## Hierarchy
17
+
18
+ - Use size, position, color, imagery, and contrast to tell users what matters first.
19
+ - Put the most important information near the top or in the strongest visual position.
20
+ - Use images when they materially improve scanning or recognition.
21
+ - Make high-value facts visually distinct: for example, price, status, active item, or primary action.
22
+ - Use icons and visual relationships to reduce unnecessary labels when the meaning is clear.
23
+
24
+ ## Layout, Whitespace, And Grids
25
+
26
+ - Treat column grids and spacing systems as guidelines, not hard laws.
27
+ - Use grids most strictly for structured repeated content such as galleries, blogs, lists, and responsive card layouts.
28
+ - For custom landing pages, prioritize breathing room and visual composition over forcing every element into a rigid grid.
29
+ - Use whitespace to group related elements and separate unrelated elements.
30
+ - A 4-point grid can work well because values split cleanly and keep spacing consistent.
31
+ - Keep spacing intentional even when it is not mathematically rigid.
32
+
33
+ ## Typography
34
+
35
+ - Most UI is text, so typography carries a large part of the design.
36
+ - One strong sans-serif family is often enough for product UI.
37
+ - Tighten large heading letter spacing slightly and use compact heading line height, roughly 110-120%, when it improves polish and readability.
38
+ - Landing pages can use a broader type range, but keep the number of font sizes limited.
39
+ - Dense dashboards and app screens usually need a tighter type range; large display sizes often become impractical.
40
+ - Spend less time hunting fonts for product UI and more time making hierarchy, spacing, and states work.
41
+
42
+ ## Color
43
+
44
+ - Start with one primary brand color and derive lighter backgrounds or darker text treatments from it.
45
+ - Build toward a color ramp when the interface needs chips, states, charts, and repeated semantic uses.
46
+ - Use semantic colors for meaning: danger, warning, success, trust, focus, urgency, or newness.
47
+ - In dark mode, reduce harsh borders and create depth by making foreground surfaces slightly lighter than the background.
48
+ - Dim overly bright chips or accents in dark mode and preserve hierarchy with adjusted saturation, brightness, and text contrast.
49
+
50
+ ## Depth And Shadows
51
+
52
+ - In light mode, use shadows to separate layers, but keep them subtle.
53
+ - Reduce shadow opacity and increase blur when shadows feel too harsh.
54
+ - Cards generally need lighter shadows than popovers or surfaces that sit above other content.
55
+ - Use inner and outer shadows when a tactile raised control is appropriate.
56
+ - If the shadow is the first thing the user notices, it is too strong.
57
+
58
+ ## Icons And Buttons
59
+
60
+ - Size icons to match the related text line height where practical.
61
+ - Tighten icon-and-label spacing so pairs feel intentional.
62
+ - Treat sidebar links and subtle nav actions as ghost buttons: no background by default, visible response on hover or active state.
63
+ - For button padding, a useful default is more horizontal than vertical padding, often about double.
64
+ - Use icons in buttons when they clarify action, status, or scanability.
65
+
66
+ ## States And Feedback
67
+
68
+ - Every user action should produce a response.
69
+ - Buttons need at least default, hover, active/pressed, and disabled states; loading states are needed when work is pending.
70
+ - Inputs need focus, error, and message states; warning states can help with optional or recoverable issues.
71
+ - Data fetching needs loading feedback. Completed actions need success feedback.
72
+ - Swipe, scroll, copy, submit, selection, and navigation actions should make the result visible.
73
+
74
+ ## Micro-Interactions
75
+
76
+ - Use micro-interactions as feedback that confirms an action or helps the user understand what changed.
77
+ - Practical examples include a copied confirmation, a small chip animation, a state transition, or a completion cue.
78
+ - Keep playful motion subordinate to clarity and task completion.
79
+
80
+ ## Text Over Images
81
+
82
+ - Do not put text directly over images without protecting readability.
83
+ - Use overlays, gradients, or progressive blur to preserve the image while creating a readable text zone.
84
+ - Prefer a directional gradient when the text occupies one side or edge of the image.
85
+ - Ensure the final composition preserves both image quality and text contrast.
86
+
87
+ ## Applying These Principles
88
+
89
+ Use `ui-loop.md` for generic design and rendered review, and
90
+ `components-and-states.md` for the implementation-level state matrix. This reference adds
91
+ concrete product-UI treatments for affordances, contextual grids, dark-mode depth,
92
+ shadows, icon/button pairing, micro-interaction feedback, and text over imagery.
93
+
94
+ When these treatments are used, specify their intended affordance, dark-mode depth,
95
+ layer/shadow relationship, icon alignment, outcome-linked feedback, or protected
96
+ text zone so implementation does not require guesswork.
97
+
98
+ ## Reference-Specific Output
99
+
100
+ - affordance and action-feedback rules
101
+ - hierarchy, grouping, grid, and whitespace decisions
102
+ - semantic color and dark-mode depth treatment
103
+ - icon/button alignment and component-state notes
104
+ - text-over-image protection when used
@@ -0,0 +1,184 @@
1
+ # kUInetic Reference
2
+
3
+ > Maintained in AI-Dev-Shop. Downstream copies are synced from here; edit it in
4
+ > AI-Dev-Shop, not in a downstream copy.
5
+
6
+ Attribute and effect lookup for kUInetic, the declarative `data-kui` animation library.
7
+ `ui-animation.md` owns when to use it and the motion rules; this file only lists what
8
+ exists. Not a tutorial.
9
+
10
+ **Authority:** the kUInetic source, package `kuinetic` v0.2.4 (MIT, kuinetic.com),
11
+ checked at commit `9fc5e54` on 2026-10-30. Every name below is registered in the
12
+ source; each group's `Source:` line is a path inside the kUInetic repo. Where the docs
13
+ and the source disagree, this file follows the source.
14
+
15
+ **Version lag:** a vendored bundle (e.g. `<theme>/vendor/kuinetic/kuinetic.js`) can be
16
+ older than the source. Before relying on a recent option (`direction:rise-mask`, the
17
+ `from:` event source, `wide:`/`narrow:`), grep the shipped bundle for it. Use
18
+ `kuinetic.describe('<effect>')` in the page only for effect parameters; it does not list
19
+ reserved keys, gates or event-source syntax, which live in the parser. An unknown effect is skipped; an unsupported
20
+ parameter or value may fall back to its default, and an invalid breakpoint gate is dropped
21
+ so the effect runs at every width. Nothing throws, and diagnostics appear only with a
22
+ reporter (see Dev warnings).
23
+
24
+ ## Detect
25
+
26
+ kUInetic is present when any of these hold:
27
+
28
+ - markup carries `data-kui` (authored) or `data-kui-fx` / `data-kui-state` (stamped at runtime)
29
+ - the page loads `kuinetic.js`, `kuinetic.all.js`, `kuinetic.min.js` or `kuinetic.all.min.js`,
30
+ or the theme ships a `vendor/kuinetic/` folder
31
+ - `package.json` depends on `kuinetic`, or code imports `kuinetic`, `kuinetic/css`, `kuinetic/advanced`
32
+ - `window.__kuinetic` (the auto-started animator) exists in the running page
33
+
34
+ Source: `src/browser/boot.ts`, `src/core/attrs.ts`, `package.json`.
35
+
36
+ ## Install And Initialise
37
+
38
+ | Setup | How |
39
+ |---|---|
40
+ | Split bundle (preferred: CSS still works if JS fails) | `<link rel="stylesheet" href="kuinetic.css">` + `<script src="kuinetic.js"></script>`. Auto-starts at `DOMContentLoaded` with `observe: true`; the animator is `window.__kuinetic`. |
41
+ | One tag | `kuinetic.all.js` / `kuinetic.all.min.js` (CSS embedded, same auto-start). |
42
+ | Manual start | `data-kui-manual` on the script tag, then `kuinetic.kuinetic({ observe: true }).start()`. |
43
+ | npm / bundler | `import { kuinetic } from 'kuinetic'`, `import 'kuinetic/css'`, `kuinetic({ observe: true }).start()`. An import never auto-starts. |
44
+ | Dev warnings | Pass `reporter: consoleReporter()` in the options; the default reporter is silent. |
45
+ | Pre-JS hide | `<html data-kui-cloak>` hides cloaked entrances until start; fails open (start, watchdog, CSS release). |
46
+
47
+ Never start a second animator beside an auto-started bundle. Pass custom options before
48
+ auto-start, or use `data-kui-manual` and create exactly one animator; a factory call with
49
+ options after the page has been scanned creates a second animator. Source: `README.md`, `src/browser/boot.ts`,
50
+ `src/css/base.css`, `src/core/reporter.ts`.
51
+
52
+ ## Attribute Grammar
53
+
54
+ ```html
55
+ <h2 data-kui="fade-up 700ms 120ms ease-out distance:16px, blur-in 400ms at:-200ms">
56
+ ```
57
+
58
+ - First token is the effect; then positional **duration → delay → easing**, or
59
+ `duration:` / `delay:` / `ease:`. Effect parameters are `key:value`.
60
+ - Comma-separate effects whose channels don't collide. A collision keeps the first and warns.
61
+ - Quote any value containing spaces or commas: `target:'.stops > li'`.
62
+ - Named bundle: `<template data-kui-define="card-in" data-kui="fade-up 700ms, blur-in 400ms at:-200ms">`,
63
+ then `data-kui="card-in 300ms"`. Local values override the bundle.
64
+ - Longhand attributes (an inline key wins): `data-kui-on`, `data-kui-timeline`,
65
+ `data-kui-threshold`, `data-kui-stagger`. Timing has no longhand. Set reduced motion
66
+ with the `rm:` key.
67
+ - Stamped by the runtime; read, never author: `data-kui-fx`, `data-kui-state`,
68
+ `data-kui-unmatched`, `data-kui-part`, `data-kui-rm` (the compiled reduced-motion policy).
69
+
70
+ Source: `src/core/parse.ts`, `src/core/attrs.ts`, `src/core/bundles.ts`.
71
+
72
+ ## Reserved Keys
73
+
74
+ | Key | Values |
75
+ |---|---|
76
+ | `on:` | `enter` (once, default for reveals), `leave`, `load`, `manual`, `hover`/`unhover`, `focus`/`blur`, `click`, any DOM event (`invalid`, `submit`, `cart:updated`), or a forward/back pair `hover/unhover`, `enter/leave`. |
77
+ | `data-kui-on="click from:#copy-btn"` | Listen on another element. Longhand only. |
78
+ | `actions:` | Four scroll crossings, slash-separated: `play` `pause` `resume` `reverse` `reset` `restart` `complete` `none`. |
79
+ | `threshold:` | Fraction visible before `enter` fires: `threshold:30%`. Default `0%`. |
80
+ | `timeline:` | `time` (default), `view`, `scroll`, `pin`. Range: `data-kui-timeline="view entry 0% cover 60%"`. |
81
+ | `at:` | Relative to the previous effect: `-200ms`, `+100ms`, `after`, `with`, `with+150ms`. |
82
+ | `repeat:` / `yoyo:` | Total plays or `infinite`; `yoyo:true` alternates. |
83
+ | `above:` / `below:` | Viewport gate on `sm` `md` `lg` `xl` `2xl`. `wide:` / `narrow:` gate the same scale against the nearest `data-kui-container` ancestor. |
84
+ | `cascade:` / `spread:` | Group stagger step, or total budget, on the **parent** (or `data-kui-stagger="90ms"`). |
85
+ | `order:` / `cols:` / `along:` | `start` `end` `center` `edges` `random`, a child index, or an `x/y` point; `cols:6` or `cols:auto`; `along:x`/`along:y`. |
86
+ | `target:` / `scope:page` | Animate matching descendants (or page matches) instead of the host. |
87
+ | `rm:` | Reduced-motion policy, mildest to strictest `shorten`, `crossfade`, `disable`; may only be stricter than the effect's own. |
88
+ | `func:` | Global function run on `kui:finish`. Never build it from CMS or user input. |
89
+
90
+ `stagger:` on the split-text effects is the gap between generated pieces, not the group
91
+ `cascade:`. Source: `src/core/parse.ts`, `src/core/activation.ts`,
92
+ `src/core/event-sources.ts`, `src/core/types.ts`, `src/core/repeat.ts`, `src/core/breakpoints.ts`,
93
+ `src/core/stagger-config.ts`, `src/core/target.ts`.
94
+
95
+ **Easing keywords:** `linear` `ease` `ease-in` `ease-out` `ease-in-out` `step-start`
96
+ `step-end` `expo-in` `expo-out` `expo-in-out` `back-in` `back-out` `back-in-out`
97
+ `quart-out` `circ-out` `spring` `bounce`; functions `cubic-bezier()` `steps()` `linear()`
98
+ `spring(bounce:0.3)` / `spring(stiffness:400 damping:20 mass:1)` (`bounce` 0–0.85; the
99
+ spring shapes the curve, your duration still holds). Source: `src/core/parse.ts`, `src/core/easing.ts`.
100
+
101
+ **Events and API:** `kui:start`, `kui:finish`, `kui:reverse-finish`, `kui:cancel` bubble
102
+ with `detail { effects, activation, timeline, reason }`. `kui` is `window.__kuinetic` under a
103
+ script tag, or what `kuinetic(...).start()` returns: `kui.play(target, effect, options)`,
104
+ `kui.activate(el)`, `kui.deactivate(el)`, `kui.control(target)` (`pause` `play` `reverse`
105
+ `seek(0..1)` `timeScale`, `progress`, `state`), `kui.process(el)`, `kui.reset(el)`.
106
+ JS-rendered and scroll-driven effects expose no playhead. Source: `src/core/control.ts`,
107
+ `src/core/animator.ts`.
108
+
109
+ ## Effects By Family
110
+
111
+ Defaults are the source defaults; override per element.
112
+
113
+ | Family | Names | Source |
114
+ |---|---|---|
115
+ | Entrance | `fade-in` `fade-up` `fade-down` `fade-left` `fade-right` `slide-up` `slide-down` `slide-left` `slide-right` `slide-inline-start` `slide-inline-end` `slide-block-start` `slide-block-end` `zoom-in` `zoom-in-up` `zoom-in-down` `pop-in` `flip-in-x` `flip-in-y` `rotate-in` `roll-in` `swing-in` `blur-in` `fade-blur-up` `fade-blur-in` `back-in-up` `back-in-down` `bounce-in` `reveal-once` (same as `fade-up`). Base default `600ms ease-out`, `distance:24px`. Preset exceptions: `slide-*` use `distance:100px` (no fade); `back-in-up`/`back-in-down` use `120px` with `expo-out`; `pop-in` uses scale 0.6 with `back-out`; `bounce-in` starts at scale 0.3 and uses the multi-peak `bounce` curve. | `src/effects/catalog/core.ts` |
116
+ | Exit | `fade-out` `fade-out-up` `fade-out-down` `fade-out-left` `fade-out-right` `slide-out-up` `slide-out-down` `slide-out-left` `slide-out-right` `zoom-out` `pop-out` `blur-out` | `src/effects/catalog/core.ts` |
117
+ | Scroll-linked | `parallax-y` `parallax-x` `parallax-scale` `parallax-rotate` `depth-layer` `scroll-fade` `scroll-desaturate` `scroll-skew` `scroll-progress-bar` `scroll-progress-bar-y` `scroll-progress-ring`. Use `timeline:view`/`scroll`; duration is meaningless there. | `src/effects/catalog/core.ts` |
118
+ | Pin and scroll mechanics | `pin-section` (`distance:100vh`, `offset-top:`, `spacer:true`) `pin-until` `pin-spacer` `stacking-cards` `horizontal-scroll` `scrollytelling-step` (`steps:`, `target:` stamps `data-kui-step-state` before/active/after and `--kui-step`) `scroll-progress` `sequence-scrub` `video-scrub` `scroll-snap-x` `scroll-snap-y` `scroll-spy` `smooth-scroll-to`. Set `--kui-pin-offset` on `:root` to clear a fixed header. | `src/effects/scroll-mechanics/presets.ts` |
119
+ | Text split | `split-chars` (30ms) `split-words` (90ms) `split-lines` (160ms), `direction:fade\|up\|down\|mask\|rise-mask`, `unit:`, `stagger:`; presets `text-reveal-up` `text-reveal-down` (words) `text-reveal-mask` (lines, mask). `rise-mask` slides each unit up 120% inside a stationary clip. `--kui-mask-bleed: 0.1em` protects ascenders under tight leading. | `src/effects/catalog/text.ts`, `text-shared.ts` |
120
+ | Text other | `typewriter` `typewriter-loop` `scramble` `decode` `glitch` `word-cycler` `highlight-sweep` `underline-draw` `gradient-shimmer` `gradient-sweep` `text-outline-fill` `text-wave` `text-jitter` `marquee` `marquee-scroll-linked` `redaction-reveal` `text-3d-extrude` `var-weight` `var-width` `var-slant` `var-axis` | `src/effects/catalog/text.ts` |
121
+ | Media reveal | `wipe-up` `wipe-down` `wipe-left` `wipe-right` `wipe-circle` `wipe-diagonal` `mask-reveal` `curtain-reveal` `before-after-wipe` `ken-burns` `ken-burns-out` `blur-up` `image-parallax-frame` `slat-assemble` `duotone-hover` `grayscale-hover` `saturate-hover` `bg` `background` `video-backdrop` `video-hero` | `src/effects/catalog/media.ts` |
122
+ | Hover and press | `lift` (220ms, `distance:6px`) `lift-shadow` `pop` (`scale:1.06`) `shine-sweep` `split-flap` `border-draw` `border-glow` `beam-border` `underline-slide` `underline-center` `icon-wiggle` `icon-spin` `icon-bounce` `tilt-3d` `tilt-parallax` `cursor-follow` `cursor-lag` `cursor-label` `cursor-spotlight` `cursor-invert` | `src/effects/catalog/interaction.ts` |
123
+ | Press, group, reveal-on-hover | `press-depth` (120ms, `scale:0.96`) `group-dim`; `masked-label-swap` `masked-label-swap-x` `masked-label-swap-diagonal` `hover-intent` `anchored-preview` `anchored-preview-bottom` `anchored-preview-left` `anchored-preview-right` `search-expand`; `proximity-glow` `proximity-field` | `interaction-states.ts`, `interaction-reveal.ts`, `interaction-proximity.ts` (all `src/effects/catalog/`) |
124
+ | Feedback | `skeleton-shimmer` `skeleton-to-content` `spinner` `spinner-dots` `spinner-ring` `progress-indeterminate` `toast-slide-in` `toast-slide-out` `shake-error` `wobble` `ripple` `badge-pop` `count-bump` `heart-burst` `confetti-burst` `copy-confirm` `pull-to-refresh` | `src/effects/catalog/feedback.ts` |
125
+ | Numbers | `count-up` (1600ms, `from:` `to:` `decimals:` `format:` `currency:`) `count-down` `count-currency` `count-percent` `count-compact` `odometer-roll` `progress-ring` `progress-bar` `progress-segments` `gauge-sweep` `star-rating-fill` `sparkline-draw` `donut-sweep` | `src/effects/catalog/numbers.ts` |
126
+ | Forms | `label-float` `input-underline-grow` `focus-ring-grow` `validate-shake` `validate-check` `strength-meter` `toggle-morph` `checkbox-draw` `radio-fill` `range-fill` `submit-to-spinner-to-check` `step-progress` `carousel` | `src/effects/forms/index.ts` |
127
+ | SVG and icons | `draw-stroke` `draw-signature` `draw-underline` `checkmark-draw` `cross-draw` `chart-line-draw` (`length:` sets path length); toggles `hamburger-to-x` (`aria-expanded`) `play-to-pause` (`aria-pressed`) `plus-to-minus` (`aria-expanded`) | `src/effects/svg/index.ts` |
128
+ | Layout (FLIP) | `flip-reorder` `flip-filter` `flip-sort` `flip-shuffle` `accordion-height` `expand-to-modal` `grid-to-list` `tab-indicator-slide` `masonry-reflow`. Motion only; you own `aria-expanded`, focus, keys. | `src/effects/layout/presets.ts` |
129
+ | Open/close from `display: none` | `fade-open` `pop-open` `scale-open` `drop-open` `slide-open-up` `slide-open-down` (`@starting-style`). Each stays hidden until opened: native `<dialog>` and popovers open through their own APIs (`[open]`, `:popover-open`); for an ordinary element, toggle the presence of `data-open` | `src/effects/catalog/discrete.ts` |
130
+ | Page and view | `page-morph` `view-swap` (View Transitions); `page-fade` `page-slide` `curtain-wipe` `loading-bar` | `src/effects/catalog/view-transitions.ts`; `src/effects/three-d/index.ts` |
131
+ | Navigation | `header-shrink` `header-hide-on-scroll` `menu-stagger-open` `menu-fullscreen` `dropdown-open` `drawer-slide` `mega-menu-drop` `back-to-top-fade` | `src/effects/navigation/index.ts` |
132
+ | CSS 3D (core entry) | `card-flip-x` `card-flip-y` `cube-rotate` `fold-panel` `flip-card` `book-page-turn`; ring/stack carousels `carousel-3d` `carousel-stack` | `src/effects/three-d/index.ts`, `src/effects/carousel/` |
133
+ | Ambient loops | `glow-pulse` `aurora` `gradient-mesh` `gradient-border` `gradient-rotate-border` `float` `bob` `orbit` `floating-shapes` `starfield` `dot-grid-drift` `line-grid-drift` `scanline` `spotlight-follow` `wave-blob`; `beam-border-auto` (runs unconditionally and loops forever) | `src/effects/catalog/ambient.ts`; `beam-border-auto` in `src/effects/catalog/interaction.ts` |
134
+ | Gestures | `drag` `drag-x` `drag-y` `drag-inertia` `throwable` `elastic-pull` `rubber-band` `snap-back` `swipe` `swipe-x` `swipe-y` `long-press` `magnetic` `magnetic-snap` | `src/effects/gestures/index.ts` |
135
+ | Generic tween | `tween` (to values) `tween-from` (from values): `tween x:100 opacity:0 rotate:45deg 800ms` | `src/effects/tween/index.ts` |
136
+ | Showcase widgets | `lightbox` `video-lightbox` `compare` `carousel-fade` `carousel-slide` `video-hero-slideshow` `scroll-story` `hotspots` `device-frame` `slow-mo` | `src/showcase/` |
137
+ | Paths, material | `motion-path` `path-arc` `path-loop` `path-swoop` `path-wave`; `glass`; `rotate-static` | `src/effects/motion-path/index.ts`, `src/effects/catalog/materials.ts`, `src/effects/catalog/transforms.ts` |
138
+
139
+ Catalog note (`docs/catalog.md` §I): every hover effect ships a `:focus-visible`
140
+ equivalent and a coarse-pointer fallback.
141
+
142
+ ## Reduced Motion
143
+
144
+ Each effect declares a policy; the runtime stamps it as `data-kui-rm`, and
145
+ `src/css/base.css` applies it under `prefers-reduced-motion: reduce`:
146
+
147
+ - `shorten`: CSS animations run at 1ms with no delay. Entrances, hover, feedback, counters.
148
+ JS counters instead finish in one timer tick (~16ms) after any authored delay.
149
+ - `crossfade`: replaced by a 200ms fade. No effect defaults to it; opt in with `rm:crossfade`.
150
+ - `disable`: no animation; the element is forced to its end state (`opacity: 1`, no
151
+ translate/scale/rotate/filter/offset-path). Split text, typewriter, scramble, pins,
152
+ parallax, scroll progress, ambient loops, spinners, cursor and tilt effects, gestures, FLIP layout,
153
+ `toggle-morph`.
154
+ - CSS transitions on every marked element shorten to 1ms under every policy.
155
+ - A skipped effect still emits `kui:finish` with `reason: 'reduced-motion'` (no `kui:start`),
156
+ so chained work still runs.
157
+ - The animator option `reducedMotion: 'ignore'` exists for demos and tests only.
158
+
159
+ Source: `src/core/types.ts` (`ReducedMotionPolicy`), `src/core/animator.ts`,
160
+ `src/core/host-facts.ts`, `src/css/base.css`; per-effect policy is each primitive's
161
+ `reducedMotion` field.
162
+
163
+ ## Opt-In Tiers
164
+
165
+ | Tier | Load | Names |
166
+ |---|---|---|
167
+ | Advanced (experimental, WebGL2 / Canvas / Web Audio, API may change without a major) | `<script src="kuinetic.advanced.js">` beside core, either order; or `registerAdvanced(k)` from `kuinetic/advanced` (or `registerShaders`, `registerScenes`, `registerCamera`, `registerParticles`, `registerFluidCursor`, `registerAudio`). No CSS file. | `shaders` `shader-displace` `shader-fluid` `fluid-pointer` `shader-liquid` `liquid-distort` `shader-particles` `particle-field` `shader-morph` `image-morph` `shader-gradient` `gradient-liquid` `gradient-bands` `gradient-holo` `shader-logo` `logo-gradient`; `scene` `scene-step`; `camera-scene` `camera-layer`; `particle-dissolve`; `fluid-trail` `cursor-fluid` `fluid-cursor`; `audio-source` `audio-reactive` `audio-mic` |
168
+ | 3D model | Not published: `src/3d/` is absent from the package `exports` and its renderer is not built. Do not use. | `model-3d` |
169
+ | Notes | Optional `kuinetic.notes.js`, only to add plain-words notes to `describe()` output. | none |
170
+
171
+ Every advanced primitive declares `reducedMotion: 'disable'`. Generative shaders bake one
172
+ still frame, `scene` holds its final frame, and `camera-scene` renders a stationary
173
+ composition. Source: `src/advanced/index.ts` and its modules,
174
+ `docs/advanced-modules.md`, `src/3d/index.ts`.
175
+
176
+ ## Gotchas
177
+
178
+ - A hidden element (`display: none`, a closed `<dialog>` or popover) cannot trigger a visible entrance while closed, and `on:enter` may fire only once it opens. For opening transitions, especially repeated ones, prefer the open/close family.
179
+ - Split, typewriter and scramble skip a host that contains a link or control; put them on a leaf.
180
+ - Author counters with the final value as text (`<b data-kui="count-up to:237">237</b>`).
181
+ - `repeat:infinite` is dropped on `view`/`scroll`/`pin` timelines. A `view` timeline stalls while pinned; use `timeline:pin`.
182
+ - `submit-to-spinner-to-check` runs on fixed timers (`load:1200ms`, `hold:1500ms`) with no error stage; it is a demo, not request state.
183
+ - `copy-confirm` fades 0 → 1 → 0 over 1400ms and ends hidden; put it on the status label, not the button. Under reduced motion it inherits `shorten`, runs in about 1ms and ends at opacity 0, so the app must keep its own visible "Copied" status for the hold period.
184
+ - `above:`/`below:` accept only the five named breakpoints. `above:900px` is invalid, and the gate is dropped, so the effect runs at every width.
@@ -0,0 +1,139 @@
1
+ # OpenAI Frontend Skill Reference
2
+
3
+ Use this reference for visually led landing pages, branded demos, polished prototypes, and other frontend work where composition and art direction matter more than component count.
4
+
5
+ This reference supplies an optional composition language. `ui-loop.md` owns generic
6
+ review, `visual-storytelling.md` owns narrative sequencing, and
7
+ `delight-and-motion.md` owns contextual motion decisions.
8
+
9
+ Source note: adapted into local reference form from OpenAI's curated frontend skill on 2026-03-21 so this repo does not need to fetch it from the web during use.
10
+
11
+ ## Activation Guardrail
12
+
13
+ - Hard guard: if you activate this reference, explicitly tell the user in your next reply that you are using `openai-frontend-skill.md`.
14
+ - Say why it was activated in plain language, such as landing-page composition, branded demo direction, or anti-generic UI guidance.
15
+ - Do this before presenting design direction, layout proposals, or stylistic recommendations derived from this reference.
16
+ - If the user does not want this direction, stop using this reference and fall back to the base UX skill plus the other applicable local references.
17
+
18
+ ## Working Model
19
+
20
+ Before designing, define:
21
+
22
+ 1. visual thesis: the mood, material, and energy
23
+ 2. dominant visual plane: what carries the composition before component details
24
+ 3. interaction character: how static, tactile, cinematic, or editorial it should feel
25
+
26
+ ## Composition Defaults
27
+
28
+ - Start with composition before components.
29
+ - Prefer one strong visual anchor in the first viewport.
30
+ - Treat the first screen like a poster, not a document.
31
+ - Make the brand or product name the loudest text on branded pages.
32
+ - Use spacing, scale, alignment, contrast, and cropping before adding extra UI chrome.
33
+ - Default to cardless layouts unless the card itself is the interaction.
34
+
35
+ ## Landing Page Sequence
36
+
37
+ Default structure:
38
+
39
+ 1. hero: product or brand, promise, CTA, dominant visual
40
+ 2. support: one concrete feature, offer, or proof point
41
+ 3. detail: workflow, atmosphere, depth, or story
42
+ 4. final CTA: start, contact, convert, or visit
43
+
44
+ ## Hero Rules
45
+
46
+ - One composition only.
47
+ - Use a full-bleed image or another dominant visual plane when the brief supports it.
48
+ - Keep the text column narrow and placed over a calm visual area.
49
+ - Keep headlines readable in one glance and protect contrast and tap targets when
50
+ text sits over imagery.
51
+ - Count sticky or fixed headers against the first-viewport budget. Do not stack
52
+ persistent chrome above a `100vh` or `100svh` hero without accounting for it.
53
+
54
+ ## Product UI Rules
55
+
56
+ For app surfaces, use restraint:
57
+
58
+ - calm hierarchy
59
+ - strong typography
60
+ - dense but readable information
61
+ - minimal chrome
62
+ - cards only when the card is the interaction
63
+
64
+ Organize product UI around:
65
+
66
+ - primary workspace
67
+ - navigation
68
+ - secondary context or inspector
69
+ - one clear accent for action or state
70
+
71
+ ## Imagery Rules
72
+
73
+ - Imagery must do narrative work, not just fill space.
74
+ - Prefer strong, real-looking photography for brands, editorial, venue, or lifestyle surfaces.
75
+ - Choose crops with a stable tonal area for text.
76
+ - Avoid embedded signage, logos, or typography fighting the UI.
77
+ - If several moments are needed, use several images instead of a collage.
78
+
79
+ ## Copy Rules
80
+
81
+ - Write in product language, not design commentary.
82
+ - Let the headline carry meaning, keep supporting copy short, and cut repetition
83
+ between sections.
84
+ - Give each section one responsibility: explain, prove, deepen, or convert.
85
+
86
+ For dashboards or operational UI:
87
+
88
+ - prefer utility copy over marketing copy
89
+ - lead with status, action, scope, or decision value
90
+ - avoid homepage-style hero language unless explicitly requested
91
+
92
+ ## Motion Recipe
93
+
94
+ For visually led work, explore a small set of intentional motions:
95
+
96
+ - one entrance sequence in the hero
97
+ - one scroll, sticky, or depth effect
98
+ - one hover, reveal, or layout transition
99
+
100
+ Keep the selected motions noticeable enough to support the intended atmosphere,
101
+ fast and smooth on mobile, and consistent across the page. Remove any that are
102
+ merely ornamental. This is an art-direction recipe, not a required motion count;
103
+ `ui-loop.md` owns the final restraint and reduced-motion review.
104
+
105
+ ## Composition Anti-Patterns
106
+
107
+ - no cards by default
108
+ - no hero cards by default
109
+ - no boxed center-column hero when the brief wants full bleed
110
+ - no more than one dominant idea per section
111
+ - no filler copy
112
+ - no busy imagery behind text
113
+ - no split-screen hero unless one side stays visually calm
114
+ - no more than two typefaces without a reason
115
+ - no more than one accent color unless the product already has a system
116
+
117
+ ## Failure Examples
118
+
119
+ Reject or revise when you see:
120
+
121
+ - generic SaaS card grid as the first impression
122
+ - strong image but weak brand presence
123
+ - strong headline but no clear action
124
+ - repeated mood-setting sections with no informational progression
125
+ - carousel with no narrative purpose
126
+ - app UI built from stacked cards instead of layout
127
+
128
+ ## Source Litmus Questions
129
+
130
+ - Is the brand or product unmistakable in the first screen?
131
+ - Is there one strong visual anchor?
132
+ - Can the page be understood by scanning headlines?
133
+ - Does each section have one job?
134
+ - Are cards actually necessary?
135
+ - Does motion improve hierarchy or atmosphere?
136
+ - Would the design still feel strong if shadows and decorative polish were removed?
137
+
138
+ Do not turn these defaults into fixed numeric caps or a second acceptance checklist.
139
+ Use the UI Loop to judge whether the selected composition succeeds in context.