cfsa-antigravity 1.0.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 (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,1393 @@
1
+ ---
2
+ name: frontend-design
3
+ description: Create award-winning, cinematic frontend interfaces that feel ALIVE. Combines 10+ years of creative frontend experience with technical excellence. Specializes in WebGL, custom shaders, premium animations, and distinctive aesthetics that would win on Awwwards. Use when building landing pages, dashboards, platforms, or any interface where "generic AI slop" is unacceptable.
4
+ license: Complete terms in LICENSE.txt
5
+ ---
6
+
7
+ # Premium Frontend Design Skill
8
+
9
+ This skill guides creation of **production-grade frontend interfaces that feel ALIVE** — not generic, not copy-paste, but genuinely crafted experiences that users remember.
10
+
11
+ > "The difference between a good interface and an unforgettable one is intentionality in every pixel."
12
+
13
+ ---
14
+
15
+ ## Prerequisite: Read Brand Guidelines First
16
+
17
+ Before making any aesthetic decisions, read `.agent/skills/brand-guidelines/SKILL.md`.
18
+
19
+ - If the design direction is confirmed (no `{{PLACEHOLDER}}` values), **execute that direction**. Do not invent a new direction — the user confirmed this one during `/create-prd`.
20
+ - If `{{DESIGN_DIRECTION}}` is still a literal placeholder, stop and tell the user: "Design direction hasn't been confirmed yet — run `/create-prd` first before building UI."
21
+
22
+ This skill provides the **how** (craft, execution quality, anti-slop). The brand-guidelines skill provides the **what** (direction, palette, typography). Both are required.
23
+
24
+ ---
25
+
26
+ ## Dependencies (Flexible — Choose What Fits)
27
+
28
+ This skill is **framework-flexible**. Pick packages based on user preference and project needs.
29
+
30
+ ### Core 3D (for WebGL templates)
31
+ ```bash
32
+ pnpm add three @react-three/fiber @react-three/drei
33
+ ```
34
+
35
+ ### Animation (choose based on user preference)
36
+
37
+ | Library | Best For | Complexity | Bundle Size |
38
+ |---------|----------|------------|-------------|
39
+ | **CSS/Tailwind** | Simple transitions, micro-interactions | Low | 0KB |
40
+ | **Framer Motion** | React-native feel, layout animations, gestures | Medium | ~30KB |
41
+ | **GSAP** | Complex timelines, scroll-triggered, text effects | High | ~60KB |
42
+ | **GSAP + Club** | SplitText, ScrollTrigger, MorphSVG | High | ~80KB |
43
+
44
+ ```bash
45
+ # Framer Motion (simpler, React-idiomatic)
46
+ pnpm add framer-motion
47
+
48
+ # GSAP (powerful, timeline-based)
49
+ pnpm add gsap @gsap/react
50
+ # Note: SplitText, ScrollTrigger require GSAP Club license
51
+ ```
52
+
53
+ **Decision Guide:**
54
+ - User says "simple" or "lightweight" → CSS + Framer Motion
55
+ - User says "complex animations" or "scroll effects" → GSAP
56
+ - User says "text animations" or "split text" → GSAP + SplitText
57
+ - User doesn't specify → Default to Framer Motion (simpler API)
58
+
59
+ ### Optional Enhancements
60
+ ```bash
61
+ # Mesh gradients (for mesh-gradient-hero)
62
+ pnpm add @paper-design/shaders-react
63
+
64
+ # Icons
65
+ pnpm add lucide-react
66
+
67
+ # Charts/Sparklines (for dashboards)
68
+ pnpm add recharts
69
+ # or lightweight: pnpm add @visx/shape @visx/scale
70
+ ```
71
+
72
+ ### Browser Compatibility Notes
73
+ - `backdrop-filter`: Not supported in Firefox < 103 (add fallback bg)
74
+ - WebGL: Provide CSS fallback for older devices
75
+ - `@starting-style`: Chrome 117+, Safari 17.4+ (progressive enhancement)
76
+
77
+ ---
78
+
79
+ ## Core Philosophy
80
+
81
+ ### The "Alive" Principle
82
+
83
+ An interface feels alive when:
84
+ - **It breathes**: Subtle ambient animations, particles, or shader effects create constant but non-distracting motion
85
+ - **It responds**: Micro-interactions acknowledge every user action with satisfying feedback
86
+ - **It has depth**: Layers, parallax, glassmorphism, and shadows create dimensional space
87
+ - **It surprises**: At least one element breaks expectations in a delightful way
88
+
89
+ ### Design Thinking (Before ANY Code)
90
+
91
+ Before writing a single line, answer these:
92
+
93
+ 1. **Purpose**: What problem does this solve? Who uses it?
94
+ 2. **Tone**: Pick ONE extreme direction (not a blend):
95
+ - Brutally minimal
96
+ - Maximalist chaos
97
+ - Retro-futuristic / Cyberpunk
98
+ - Organic / Natural
99
+ - Luxury / Refined
100
+ - Playful / Toy-like
101
+ - Editorial / Magazine
102
+ - Brutalist / Raw
103
+ - Art Deco / Geometric
104
+ - Industrial / Utilitarian
105
+ - Bio-luminescent / Sci-fi
106
+ - Mission Control / Technical
107
+
108
+ 3. **The One Thing**: What single element will someone remember? Every great interface has a signature moment.
109
+ 4. **Unique Selling Proposition (USP)**: Ensure the design amplifies the product's USP rather than just looking pretty.
110
+
111
+ 4. **Constraints**: Framework, performance budgets, accessibility requirements.
112
+
113
+ **CRITICAL**: Bold maximalism and refined minimalism both work. The key is **intentionality, not intensity**. A single, perfectly-executed animation beats 50 mediocre ones.
114
+
115
+ ---
116
+
117
+ ## Wow + Clarity Framework
118
+
119
+ Use this whenever the brief is vague or when you need to justify design decisions. The goal is **wow factor with purpose**.
120
+
121
+ ### 1. Hierarchy Guardrails
122
+
123
+ - **1 hero flourish** (shader, particle system, or globe). Everything else supports readability.
124
+ - **1 supporting flourish** (micro-interactions, animated stat card, or glowing CTA). No more.
125
+ - Layout rule: `Hero (wild) → Content blocks (calm) → Proof (calm) → CTA (highlighted)`.
126
+ - If the page has more than one scroll-length of copy, every second section should be mostly static.
127
+
128
+ ### 2. Typography Discipline
129
+
130
+ - **Max 2 headliner fonts** (display + body). Monospace only for data.
131
+ - Headline letter-spacing ≥ -0.04em. Anything tighter kills readability.
132
+ - Body width target: 55–75 characters per line on desktop, 35–45 on mobile.
133
+ - Always pair big display text with a plain supporting sentence under 80 characters.
134
+
135
+ ### 3. Color & Contrast Rules
136
+
137
+ - Limit neon usage to **primary CTA + 1 accent**. Everything else stays in zinc/neutral palette.
138
+ - If background is busy (shader, gradients, particles), add a `bg-black/70` or `bg-slate-950/70` scrim behind text.
139
+ - Keep contrast ratios ≥ 4.5:1 for body copy even if the aesthetic is cyberpunk.
140
+ - Add a grayscale preview check before shipping: if it looks muddy, dial the palette back.
141
+
142
+ ### 4. Motion Throttle
143
+
144
+ - **Default**: CSS or Framer Motion with durations ≤ 400ms, easing `cubic-bezier(0.34, 1.56, 0.64, 1)`.
145
+ - **Escalate to GSAP/WebGL** only if the brief explicitly asks for cinematic or interactive experiences.
146
+ - Max 1 continuous animation per viewport (e.g., shader OR wave bars, not both).
147
+ - Provide a “calm mode”: disable non-essential motion when `prefers-reduced-motion` is on OR when user scrolls past hero.
148
+
149
+ ### 5. When Requirements Are Vague
150
+
151
+ | Situation | Default | Optional Upgrade |
152
+ |-----------|---------|------------------|
153
+ | User only says “clean SaaS” | `mesh-gradient-hero` + `bento-grid` | Swap hero background for CPPN if they later ask for “more energy” |
154
+ | User says “dashboard” with no flair | `bento-grid` + `dashboard-widgets` + CSS glow pills | Add `digital-liquid` shader only after data viz is signed off |
155
+ | User says “hero section” but nothing else | Text-first layout + CSS gradient | Offer shader/globe as a suggestion, never as default |
156
+
157
+ If the prompt does not explicitly mention WebGL, assume **CSS-first** and opt-in to shaders only when the user embraces the cost.
158
+
159
+ ---
160
+
161
+ ## Anti-Patterns (NEVER Do This)
162
+
163
+ ### Visual Anti-Patterns
164
+ ❌ White/light backgrounds as default (dark mode is premium)
165
+ ❌ Generic gradients (purple-to-blue on white is AI slop)
166
+ ❌ Evenly-distributed, timid color palettes
167
+ ❌ Static, lifeless backgrounds
168
+ ❌ Cookie-cutter component layouts
169
+ ❌ Missing loading/transition states
170
+ ❌ Jarring, un-eased animations
171
+
172
+ ### Typography Anti-Patterns
173
+ ❌ Inter, Roboto, Arial, system fonts for headlines
174
+ ❌ Same font for everything
175
+ ❌ Default line-heights and letter-spacing
176
+ ❌ Boring, predictable type scales
177
+
178
+ ### Code Anti-Patterns
179
+ ❌ Inline styles scattered randomly
180
+ ❌ No CSS variables for theming
181
+ ❌ Animations without `will-change` or GPU acceleration
182
+ ❌ Canvas/WebGL without `requestAnimationFrame`
183
+ ❌ Missing cleanup in `useEffect`
184
+
185
+ ---
186
+
187
+ ## Design System
188
+
189
+ ### 1. Color Architecture
190
+
191
+ **Rule: ONE dominant accent, everything else supports it.**
192
+
193
+ ```typescript
194
+ // Premium Dark Theme (Default)
195
+ const colors = {
196
+ // Backgrounds (layer from darkest to lightest)
197
+ bg: {
198
+ void: '#000000', // True black for maximum contrast
199
+ primary: '#050505', // Main background
200
+ elevated: '#0a0a0a', // Cards, modals
201
+ subtle: '#111111', // Hover states
202
+ },
203
+
204
+ // Glass surfaces
205
+ glass: {
206
+ bg: 'rgba(255, 255, 255, 0.03)',
207
+ border: 'rgba(255, 255, 255, 0.08)',
208
+ hover: 'rgba(255, 255, 255, 0.06)',
209
+ },
210
+
211
+ // Text hierarchy
212
+ text: {
213
+ primary: '#ffffff',
214
+ secondary: '#a1a1aa', // zinc-400
215
+ muted: '#71717a', // zinc-500
216
+ ghost: '#3f3f46', // zinc-700
217
+ },
218
+
219
+ // Accent (choose ONE per project)
220
+ accent: '#ff4d00', // Neon Orange
221
+ // accent: '#00f3ff', // Neon Cyan
222
+ // accent: '#ccff00', // Neon Lime
223
+ // accent: '#F5E445', // Premium Yellow
224
+ // accent: '#a855f7', // Electric Purple
225
+ }
226
+ ```
227
+
228
+ **Accent Usage Rules**:
229
+ - Primary actions: Full accent color
230
+ - Secondary elements: Accent at 20% opacity
231
+ - Borders/lines: Accent at 30% opacity
232
+ - Glows: Accent with blur, 40-60% opacity
233
+ - Never use accent for large background areas
234
+
235
+ ### 2. Typography System
236
+
237
+ **Rule: Display font for impact, Body font for reading, Mono for data.**
238
+
239
+ ```css
240
+ /* Tier 1: Display/Headlines - BOLD, characterful */
241
+ --font-display: 'Chakra Petch', 'Orbitron', 'Bebas Neue', 'Playfair Display';
242
+
243
+ /* Tier 2: Headings - Geometric, modern */
244
+ --font-heading: 'Manrope', 'Outfit', 'Syne', 'Space Grotesk';
245
+
246
+ /* Tier 3: Body - Clean, highly legible */
247
+ --font-body: 'Plus Jakarta Sans', 'DM Sans', 'Satoshi', 'General Sans';
248
+
249
+ /* Tier 4: Data/Code - ALWAYS monospace */
250
+ --font-mono: 'JetBrains Mono', 'Fira Code', 'IBM Plex Mono';
251
+ ```
252
+
253
+ **Typography Patterns**:
254
+
255
+ ```css
256
+ /* Hero Headlines: Massive, tight, aggressive */
257
+ .headline {
258
+ font-family: var(--font-display);
259
+ font-size: clamp(3rem, 12vw, 10rem);
260
+ font-weight: 800;
261
+ line-height: 0.9;
262
+ letter-spacing: -0.03em;
263
+ text-transform: uppercase;
264
+ }
265
+
266
+ /* Section Titles */
267
+ .section-title {
268
+ font-family: var(--font-heading);
269
+ font-size: clamp(1.5rem, 4vw, 3rem);
270
+ font-weight: 700;
271
+ letter-spacing: -0.02em;
272
+ }
273
+
274
+ /* Technical Labels */
275
+ .label {
276
+ font-family: var(--font-mono);
277
+ font-size: 0.75rem;
278
+ font-weight: 500;
279
+ text-transform: uppercase;
280
+ letter-spacing: 0.1em;
281
+ color: var(--text-muted);
282
+ }
283
+
284
+ /* Data Display */
285
+ .data {
286
+ font-family: var(--font-mono);
287
+ font-variant-numeric: tabular-nums;
288
+ }
289
+ ```
290
+
291
+ ### 3. Spacing & Layout
292
+
293
+ **Rule: Asymmetry creates interest. Grids are starting points, not prisons.**
294
+
295
+ ```css
296
+ /* Spacing scale (use consistently) */
297
+ --space-1: 0.25rem; /* 4px */
298
+ --space-2: 0.5rem; /* 8px */
299
+ --space-3: 0.75rem; /* 12px */
300
+ --space-4: 1rem; /* 16px */
301
+ --space-6: 1.5rem; /* 24px */
302
+ --space-8: 2rem; /* 32px */
303
+ --space-12: 3rem; /* 48px */
304
+ --space-16: 4rem; /* 64px */
305
+ --space-24: 6rem; /* 96px */
306
+ --space-32: 8rem; /* 128px */
307
+
308
+ /* Use generous padding on containers */
309
+ .container {
310
+ padding-inline: clamp(1rem, 5vw, 4rem);
311
+ }
312
+
313
+ /* Hero sections need breathing room */
314
+ .hero {
315
+ min-height: 100vh;
316
+ padding-block: var(--space-32);
317
+ }
318
+ ```
319
+
320
+ **Bento Grid Pattern** (for dashboards):
321
+ ```css
322
+ .bento {
323
+ display: grid;
324
+ grid-template-columns: repeat(4, 1fr);
325
+ grid-auto-rows: minmax(150px, auto);
326
+ gap: var(--space-4);
327
+ }
328
+
329
+ /* Feature card spans */
330
+ .card-hero { grid-column: span 2; grid-row: span 2; }
331
+ .card-wide { grid-column: span 2; }
332
+ .card-tall { grid-row: span 2; }
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Visual Effects Library
338
+
339
+ ### 1. Glassmorphism (The Right Way)
340
+
341
+ ```css
342
+ .glass {
343
+ background: rgba(255, 255, 255, 0.03);
344
+ backdrop-filter: blur(12px);
345
+ -webkit-backdrop-filter: blur(12px);
346
+ border: 1px solid rgba(255, 255, 255, 0.08);
347
+ border-radius: 12px;
348
+ }
349
+
350
+ /* Elevated glass (for modals, dropdowns) */
351
+ .glass-elevated {
352
+ background: rgba(255, 255, 255, 0.05);
353
+ backdrop-filter: blur(20px);
354
+ border: 1px solid rgba(255, 255, 255, 0.1);
355
+ box-shadow:
356
+ 0 8px 32px rgba(0, 0, 0, 0.4),
357
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
358
+ }
359
+ ```
360
+
361
+ ### 2. CRT Scanlines Overlay
362
+
363
+ ```css
364
+ .scanlines::before {
365
+ content: '';
366
+ position: fixed;
367
+ inset: 0;
368
+ background: repeating-linear-gradient(
369
+ 0deg,
370
+ rgba(0, 0, 0, 0.1) 0px,
371
+ rgba(0, 0, 0, 0.1) 1px,
372
+ transparent 1px,
373
+ transparent 2px
374
+ );
375
+ pointer-events: none;
376
+ z-index: 9999;
377
+ }
378
+ ```
379
+
380
+ ### 3. Film Grain Texture
381
+
382
+ ```css
383
+ .grain::before {
384
+ content: '';
385
+ position: fixed;
386
+ inset: 0;
387
+ opacity: 0.03;
388
+ pointer-events: none;
389
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
390
+ }
391
+ ```
392
+
393
+ ### 4. Tech Grid Background
394
+
395
+ ```css
396
+ .tech-grid {
397
+ background-image:
398
+ linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
399
+ linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
400
+ background-size: 60px 60px;
401
+ }
402
+ ```
403
+
404
+ ### 5. Neon Glow Effects
405
+
406
+ ```css
407
+ /* Text glow */
408
+ .neon-text {
409
+ text-shadow:
410
+ 0 0 10px currentColor,
411
+ 0 0 20px currentColor,
412
+ 0 0 40px currentColor,
413
+ 0 0 80px currentColor;
414
+ }
415
+
416
+ /* Box glow */
417
+ .neon-box {
418
+ box-shadow:
419
+ 0 0 20px var(--accent-alpha-40),
420
+ 0 0 40px var(--accent-alpha-20),
421
+ inset 0 0 20px var(--accent-alpha-10);
422
+ }
423
+
424
+ /* Border glow */
425
+ .neon-border {
426
+ border: 1px solid var(--accent);
427
+ box-shadow:
428
+ 0 0 10px var(--accent-alpha-50),
429
+ inset 0 0 10px var(--accent-alpha-20);
430
+ }
431
+ ```
432
+
433
+ ---
434
+
435
+ ## Animation Patterns
436
+
437
+ ### Philosophy
438
+ - **Entrance animations**: Use once, make them count
439
+ - **Micro-interactions**: Subtle, fast (150-300ms)
440
+ - **Ambient motion**: Infinite, very slow, non-distracting
441
+ - **Page transitions**: Smooth, coordinated
442
+
443
+ ### Choosing the Right Tool
444
+
445
+ | Need | Use | Why |
446
+ |------|-----|-----|
447
+ | Hover/focus states | CSS | Zero JS, instant |
448
+ | Simple entrance | CSS keyframes | Lightweight |
449
+ | Layout animations | Framer Motion | `layout` prop magic |
450
+ | Gesture-based | Framer Motion | Built-in drag/pan |
451
+ | Scroll-triggered | GSAP ScrollTrigger | Most powerful |
452
+ | Text splitting | GSAP SplitText | Industry standard |
453
+ | Complex timelines | GSAP | Precise control |
454
+ | SVG morphing | GSAP MorphSVG | No alternative |
455
+
456
+ **Default to simpler solutions. Escalate complexity only when needed.**
457
+
458
+ ### CSS Keyframes Library
459
+
460
+ ```css
461
+ @keyframes fade-up {
462
+ from { opacity: 0; transform: translateY(20px); }
463
+ to { opacity: 1; transform: translateY(0); }
464
+ }
465
+
466
+ @keyframes fade-in {
467
+ from { opacity: 0; }
468
+ to { opacity: 1; }
469
+ }
470
+
471
+ @keyframes scale-in {
472
+ from { opacity: 0; transform: scale(0.95); }
473
+ to { opacity: 1; transform: scale(1); }
474
+ }
475
+
476
+ @keyframes slide-in-right {
477
+ from { opacity: 0; transform: translateX(20px); }
478
+ to { opacity: 1; transform: translateX(0); }
479
+ }
480
+
481
+ @keyframes pulse-glow {
482
+ 0%, 100% { opacity: 1; }
483
+ 50% { opacity: 0.6; }
484
+ }
485
+
486
+ @keyframes float {
487
+ 0%, 100% { transform: translateY(0); }
488
+ 50% { transform: translateY(-10px); }
489
+ }
490
+
491
+ @keyframes rotate-slow {
492
+ from { transform: rotate(0deg); }
493
+ to { transform: rotate(360deg); }
494
+ }
495
+
496
+ @keyframes scan-line {
497
+ 0% { transform: translateY(-100%); }
498
+ 100% { transform: translateY(100vh); }
499
+ }
500
+ ```
501
+
502
+ ### Staggered Entrance Pattern
503
+
504
+ ```css
505
+ .stagger-container > * {
506
+ opacity: 0;
507
+ animation: fade-up 0.6s ease-out forwards;
508
+ }
509
+
510
+ .stagger-container > *:nth-child(1) { animation-delay: 0.1s; }
511
+ .stagger-container > *:nth-child(2) { animation-delay: 0.2s; }
512
+ .stagger-container > *:nth-child(3) { animation-delay: 0.3s; }
513
+ .stagger-container > *:nth-child(4) { animation-delay: 0.4s; }
514
+ .stagger-container > *:nth-child(5) { animation-delay: 0.5s; }
515
+ ```
516
+
517
+ ### CSS-Only Patterns (Zero Dependencies)
518
+
519
+ ```css
520
+ /* View transition entrance (Chrome 111+, Safari 18+) */
521
+ @supports (view-transition-name: none) {
522
+ .card {
523
+ view-transition-name: card;
524
+ }
525
+
526
+ ::view-transition-old(card),
527
+ ::view-transition-new(card) {
528
+ animation-duration: 0.3s;
529
+ }
530
+ }
531
+
532
+ /* Scroll-driven animations (Chrome 115+) */
533
+ @supports (animation-timeline: scroll()) {
534
+ .parallax-bg {
535
+ animation: parallax linear;
536
+ animation-timeline: scroll();
537
+ }
538
+
539
+ @keyframes parallax {
540
+ from { transform: translateY(0); }
541
+ to { transform: translateY(-30%); }
542
+ }
543
+ }
544
+
545
+ /* Hover with spring-like feel */
546
+ .spring-hover {
547
+ transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
548
+ }
549
+ .spring-hover:hover {
550
+ transform: scale(1.05);
551
+ }
552
+
553
+ /* Glow pulse */
554
+ .glow-pulse {
555
+ animation: glow-pulse 2s ease-in-out infinite;
556
+ }
557
+ @keyframes glow-pulse {
558
+ 0%, 100% { box-shadow: 0 0 20px var(--accent-alpha-40); }
559
+ 50% { box-shadow: 0 0 40px var(--accent-alpha-60); }
560
+ }
561
+ ```
562
+
563
+ ### GSAP Patterns (When You Need Power)
564
+
565
+ ```typescript
566
+ // Stagger entrance on scroll
567
+ gsap.from('.card', {
568
+ scrollTrigger: {
569
+ trigger: '.cards-section',
570
+ start: 'top 80%',
571
+ },
572
+ y: 60,
573
+ opacity: 0,
574
+ duration: 0.8,
575
+ stagger: 0.1,
576
+ ease: 'power3.out',
577
+ });
578
+
579
+ // Text scramble effect
580
+ const scrambleText = (el: HTMLElement, text: string) => {
581
+ const chars = '!<>-_\\/[]{}—=+*^?#';
582
+ let iteration = 0;
583
+
584
+ const interval = setInterval(() => {
585
+ el.innerText = text
586
+ .split('')
587
+ .map((char, i) =>
588
+ i < iteration ? char : chars[Math.floor(Math.random() * chars.length)]
589
+ )
590
+ .join('');
591
+
592
+ if (iteration >= text.length) clearInterval(interval);
593
+ iteration += 1/3;
594
+ }, 30);
595
+ };
596
+
597
+ // Smooth parallax
598
+ gsap.to('.parallax-bg', {
599
+ scrollTrigger: {
600
+ scrub: 1,
601
+ },
602
+ y: '-30%',
603
+ ease: 'none',
604
+ });
605
+ ```
606
+
607
+ ### Framer Motion Patterns
608
+
609
+ ```tsx
610
+ // Page transitions
611
+ <AnimatePresence mode="wait">
612
+ <motion.div
613
+ key={page}
614
+ initial={{ opacity: 0, y: 20 }}
615
+ animate={{ opacity: 1, y: 0 }}
616
+ exit={{ opacity: 0, y: -20 }}
617
+ transition={{ duration: 0.3 }}
618
+ />
619
+ </AnimatePresence>
620
+
621
+ // Hover glow effect
622
+ <motion.div
623
+ whileHover={{
624
+ scale: 1.02,
625
+ boxShadow: '0 0 30px rgba(255, 77, 0, 0.4)',
626
+ }}
627
+ transition={{ type: 'spring', stiffness: 300 }}
628
+ />
629
+
630
+ // Stagger children
631
+ <motion.div
632
+ initial="hidden"
633
+ animate="visible"
634
+ variants={{
635
+ hidden: {},
636
+ visible: { transition: { staggerChildren: 0.1 } },
637
+ }}
638
+ >
639
+ {items.map(item => (
640
+ <motion.div
641
+ key={item.id}
642
+ variants={{
643
+ hidden: { opacity: 0, y: 20 },
644
+ visible: { opacity: 1, y: 0 },
645
+ }}
646
+ />
647
+ ))}
648
+ </motion.div>
649
+ ```
650
+
651
+ ---
652
+
653
+ ## Premium Tier: Cinematic Interfaces
654
+
655
+ ### Tech Stack
656
+ ```bash
657
+ npm install three @react-three/fiber @react-three/drei
658
+ ```
659
+
660
+ ### Basic Scene Setup
661
+
662
+ ```tsx
663
+ import { Canvas } from '@react-three/fiber';
664
+ import { Stars, Float, MeshDistortMaterial } from '@react-three/drei';
665
+
666
+ const Scene = () => (
667
+ <Canvas
668
+ camera={{ position: [0, 0, 5], fov: 75 }}
669
+ style={{ position: 'fixed', inset: 0, zIndex: -1 }}
670
+ >
671
+ <ambientLight intensity={0.2} />
672
+ <pointLight position={[10, 10, 10]} color="#ff4d00" />
673
+ <Stars radius={100} depth={50} count={3000} />
674
+ {/* Your 3D content */}
675
+ </Canvas>
676
+ );
677
+ ```
678
+
679
+ ### Particle Sphere (Data Globe)
680
+
681
+ ```tsx
682
+ const ParticleSphere = ({ count = 3000, color = '#ff4d00' }) => {
683
+ const ref = useRef<THREE.Points>(null);
684
+
685
+ const positions = useMemo(() => {
686
+ const pos = new Float32Array(count * 3);
687
+ for (let i = 0; i < count; i++) {
688
+ const theta = Math.random() * Math.PI * 2;
689
+ const phi = Math.acos(Math.random() * 2 - 1);
690
+ const r = 2;
691
+ pos[i * 3] = r * Math.sin(phi) * Math.cos(theta);
692
+ pos[i * 3 + 1] = r * Math.sin(phi) * Math.sin(theta);
693
+ pos[i * 3 + 2] = r * Math.cos(phi);
694
+ }
695
+ return pos;
696
+ }, [count]);
697
+
698
+ useFrame(() => {
699
+ if (ref.current) ref.current.rotation.y += 0.001;
700
+ });
701
+
702
+ return (
703
+ <points ref={ref}>
704
+ <bufferGeometry>
705
+ <bufferAttribute
706
+ attach="attributes-position"
707
+ count={count}
708
+ array={positions}
709
+ itemSize={3}
710
+ />
711
+ </bufferGeometry>
712
+ <pointsMaterial size={0.02} color={color} transparent opacity={0.8} />
713
+ </points>
714
+ );
715
+ };
716
+ ```
717
+
718
+ ### Sentient Core (AI Brain)
719
+
720
+ ```tsx
721
+ const SentientCore = () => (
722
+ <Float speed={2} rotationIntensity={0.5}>
723
+ <mesh>
724
+ <sphereGeometry args={[1.5, 64, 64]} />
725
+ <MeshDistortMaterial
726
+ color="#00f3ff"
727
+ wireframe
728
+ distort={0.4}
729
+ speed={2}
730
+ />
731
+ </mesh>
732
+ </Float>
733
+ );
734
+ ```
735
+
736
+ ### Performance Rules
737
+ 1. Always use `requestAnimationFrame` via `useFrame`
738
+ 2. Reduce particle counts on mobile (check `window.innerWidth`)
739
+ 3. Use `useMemo` for geometry/position calculations
740
+ 4. Cleanup animations in `useEffect` return
741
+ 5. Set `transparent` and `opacity` for depth sorting
742
+
743
+ ---
744
+
745
+ ## Component Patterns
746
+
747
+ ### 1. Loading + Page Transitions
748
+
749
+ **Default (ship this unless user asks otherwise):**
750
+ - Skeleton placeholders on cards/sections (see shimmer pattern above)
751
+ - Simple fade/slide page transition using CSS or Framer Motion route transitions
752
+
753
+ **Optional Cinematic Mode (only when the user wants a narrative boot sequence and there's time/budget):**
754
+ - GSAP-powered preloader with boot logs, text scramble, shader/WebGL background
755
+ - Coordinated timeline that fades into actual content once data is ready
756
+
757
+ ### 2. Glassmorphic Navbar
758
+
759
+ ```tsx
760
+ <nav className="fixed top-4 left-1/2 -translate-x-1/2 z-50">
761
+ <div className="glass rounded-full px-6 py-3 flex items-center gap-8">
762
+ <Logo />
763
+ <NavLinks />
764
+ <ThemeToggle />
765
+ <CTA />
766
+ </div>
767
+ </nav>
768
+ ```
769
+
770
+ ### 3. Live Terminal
771
+
772
+ ```tsx
773
+ const Terminal = ({ logs }) => {
774
+ const scrollRef = useRef();
775
+
776
+ useEffect(() => {
777
+ scrollRef.current?.scrollTo(0, scrollRef.current.scrollHeight);
778
+ }, [logs]);
779
+
780
+ return (
781
+ <div className="glass font-mono text-xs">
782
+ <header className="border-b border-white/10 px-4 py-2">
783
+ <span className="text-accent">&gt;</span> System Logs
784
+ <span className="ml-auto w-2 h-2 bg-green-500 rounded-full animate-pulse" />
785
+ </header>
786
+ <div ref={scrollRef} className="h-64 overflow-y-auto p-4">
787
+ {logs.map(log => (
788
+ <div key={log.id}>
789
+ <span className="text-zinc-600">{log.time}</span>
790
+ <span className={levelColor[log.level]}>[{log.level}]</span>
791
+ <span>{log.message}</span>
792
+ </div>
793
+ ))}
794
+ </div>
795
+ </div>
796
+ );
797
+ };
798
+ ```
799
+
800
+ ### 4. Stat Cards with Sparklines
801
+
802
+ ```tsx
803
+ const StatCard = ({ icon, label, value, change, trend }) => (
804
+ <motion.div
805
+ whileHover={{ scale: 1.02, boxShadow: '0 0 30px var(--accent-alpha-30)' }}
806
+ className="glass p-4"
807
+ >
808
+ <div className="flex justify-between">
809
+ <div className="p-2 rounded-lg bg-accent/10 text-accent">{icon}</div>
810
+ <span className={change > 0 ? 'text-green-400' : 'text-red-400'}>
811
+ {change > 0 ? '+' : ''}{change}%
812
+ </span>
813
+ </div>
814
+ <div className="mt-4 font-mono text-2xl font-bold">{value}</div>
815
+ <div className="text-xs text-zinc-500 uppercase">{label}</div>
816
+ <Sparkline data={trend} className="mt-2 h-8" />
817
+ </motion.div>
818
+ );
819
+ ```
820
+
821
+ ---
822
+
823
+ ## Quality Checklist
824
+
825
+ Before shipping, verify:
826
+
827
+ ### Visual
828
+ - [ ] Dark mode is default and premium-feeling
829
+ - [ ] ONE dominant accent color used consistently
830
+ - [ ] Glass effects have proper blur AND borders
831
+ - [ ] Scanlines or grain overlay for texture
832
+ - [ ] No pure white text on dark (#f4f4f5 max)
833
+
834
+ ### Typography
835
+ - [ ] Display font for headlines (not Inter/Roboto)
836
+ - [ ] Monospace for ALL data/code/numbers
837
+ - [ ] Proper hierarchy (3-4 distinct levels)
838
+ - [ ] Tracking adjusted for large text
839
+
840
+ ### Animation
841
+ - [ ] Entrance animations on load (staggered)
842
+ - [ ] Hover states with transform AND glow
843
+ - [ ] Smooth 60fps for all canvas
844
+ - [ ] No animation without purpose
845
+
846
+ ### Code
847
+ - [ ] CSS variables for all colors
848
+ - [ ] Responsive (mobile-first)
849
+ - [ ] Cleanup functions in useEffect
850
+ - [ ] Error boundaries for 3D content
851
+
852
+ ---
853
+
854
+ ## Accessibility (Premium ≠ Inaccessible)
855
+
856
+ Great design is inclusive. These aren't optional.
857
+
858
+ ### Motion Sensitivity
859
+
860
+ ```css
861
+ /* ALWAYS respect user preferences */
862
+ @media (prefers-reduced-motion: reduce) {
863
+ *, *::before, *::after {
864
+ animation-duration: 0.01ms !important;
865
+ animation-iteration-count: 1 !important;
866
+ transition-duration: 0.01ms !important;
867
+ }
868
+ }
869
+ ```
870
+
871
+ ```tsx
872
+ // React hook for motion preference
873
+ const usePrefersReducedMotion = () => {
874
+ const [prefersReduced, setPrefersReduced] = useState(false);
875
+
876
+ useEffect(() => {
877
+ const mq = window.matchMedia('(prefers-reduced-motion: reduce)');
878
+ setPrefersReduced(mq.matches);
879
+ const handler = (e: MediaQueryListEvent) => setPrefersReduced(e.matches);
880
+ mq.addEventListener('change', handler);
881
+ return () => mq.removeEventListener('change', handler);
882
+ }, []);
883
+
884
+ return prefersReduced;
885
+ };
886
+
887
+ // Usage
888
+ const shouldAnimate = !usePrefersReducedMotion();
889
+ ```
890
+
891
+ ### WebGL Accessibility
892
+
893
+ ```tsx
894
+ // Always mark decorative 3D as hidden
895
+ <div aria-hidden="true" className="pointer-events-none">
896
+ <Canvas>{/* decorative background */}</Canvas>
897
+ </div>
898
+
899
+ // Provide text alternatives for meaningful 3D
900
+ <div role="img" aria-label="3D visualization of global network connections">
901
+ <Canvas>{/* data visualization */}</Canvas>
902
+ </div>
903
+ ```
904
+
905
+ ### Color Contrast
906
+
907
+ | Element | Minimum Ratio | Target |
908
+ |---------|---------------|--------|
909
+ | Body text | 4.5:1 | 7:1 |
910
+ | Large text (18px+) | 3:1 | 4.5:1 |
911
+ | UI components | 3:1 | 4.5:1 |
912
+ | Decorative | N/A | N/A |
913
+
914
+ ```css
915
+ /* Safe text colors on dark backgrounds */
916
+ --text-primary: #ffffff; /* ✓ 21:1 on #000 */
917
+ --text-secondary: #a1a1aa; /* ✓ 7.2:1 on #000 */
918
+ --text-muted: #71717a; /* ✓ 4.6:1 on #000 */
919
+ --text-ghost: #52525b; /* ⚠ 3.2:1 - decorative only */
920
+ ```
921
+
922
+ ### Keyboard Navigation
923
+
924
+ ```tsx
925
+ // Interactive 3D elements need keyboard support
926
+ <mesh
927
+ tabIndex={0}
928
+ onKeyDown={(e) => e.key === 'Enter' && handleClick()}
929
+ onClick={handleClick}
930
+ />
931
+
932
+ // Focus indicators for glass components
933
+ .glass:focus-visible {
934
+ outline: 2px solid var(--accent);
935
+ outline-offset: 2px;
936
+ }
937
+ ```
938
+
939
+ ---
940
+
941
+ ## Mobile & Responsive Strategy
942
+
943
+ Premium experiences adapt gracefully. Don't just shrink — reimagine.
944
+
945
+ ### WebGL Fallbacks
946
+
947
+ ```tsx
948
+ // Detect low-power devices
949
+ const useIsLowPowerDevice = () => {
950
+ const [isLowPower, setIsLowPower] = useState(false);
951
+
952
+ useEffect(() => {
953
+ const isLow =
954
+ window.innerWidth < 768 ||
955
+ navigator.hardwareConcurrency <= 4 ||
956
+ /Android|iPhone|iPad/.test(navigator.userAgent);
957
+ setIsLowPower(isLow);
958
+ }, []);
959
+
960
+ return isLowPower;
961
+ };
962
+
963
+ // Usage in hero components
964
+ const HeroBackground = () => {
965
+ const isLowPower = useIsLowPowerDevice();
966
+
967
+ if (isLowPower) {
968
+ return <CSSGradientFallback />; // Lighter alternative
969
+ }
970
+
971
+ return <WebGLBackground />;
972
+ };
973
+ ```
974
+
975
+ ### Performance Budgets
976
+
977
+ | Device | JS Budget | Animation Target |
978
+ |--------|-----------|------------------|
979
+ | Desktop | < 500KB | 60fps WebGL |
980
+ | Tablet | < 300KB | 30fps or CSS-only |
981
+ | Mobile | < 150KB | CSS-only, no WebGL |
982
+
983
+ ### Touch Interactions
984
+
985
+ ```tsx
986
+ // Replace hover with tap/long-press on mobile
987
+ <motion.div
988
+ whileHover={{ scale: 1.02 }} // Desktop
989
+ whileTap={{ scale: 0.98 }} // Mobile
990
+ onTouchStart={handleTouch}
991
+ />
992
+
993
+ // Increase touch targets
994
+ .button {
995
+ min-height: 44px; /* Apple HIG */
996
+ min-width: 44px;
997
+ padding: 12px 24px;
998
+ }
999
+ ```
1000
+
1001
+ ### Responsive Typography
1002
+
1003
+ ```css
1004
+ /* Fluid type scale */
1005
+ --text-hero: clamp(2.5rem, 8vw, 7rem);
1006
+ --text-h1: clamp(2rem, 5vw, 4rem);
1007
+ --text-h2: clamp(1.5rem, 3vw, 2.5rem);
1008
+ --text-body: clamp(1rem, 2vw, 1.125rem);
1009
+
1010
+ /* Reduce letter-spacing on mobile */
1011
+ @media (max-width: 768px) {
1012
+ .headline {
1013
+ letter-spacing: -0.02em; /* Less aggressive than desktop */
1014
+ }
1015
+ }
1016
+ ```
1017
+
1018
+ ---
1019
+
1020
+ ## Loading & Error States
1021
+
1022
+ Premium UX handles every state beautifully.
1023
+
1024
+ ### Skeleton Loaders
1025
+
1026
+ ```tsx
1027
+ // Glass skeleton with shimmer
1028
+ const Skeleton = ({ className }: { className?: string }) => (
1029
+ <div
1030
+ className={`relative overflow-hidden rounded-lg bg-white/5 ${className}`}
1031
+ >
1032
+ <div
1033
+ className="absolute inset-0 -translate-x-full animate-[shimmer_2s_infinite] bg-gradient-to-r from-transparent via-white/10 to-transparent"
1034
+ />
1035
+ </div>
1036
+ );
1037
+
1038
+ // Usage
1039
+ <div className="space-y-4">
1040
+ <Skeleton className="h-8 w-3/4" />
1041
+ <Skeleton className="h-4 w-full" />
1042
+ <Skeleton className="h-4 w-5/6" />
1043
+ </div>
1044
+ ```
1045
+
1046
+ ```css
1047
+ @keyframes shimmer {
1048
+ 100% { transform: translateX(100%); }
1049
+ }
1050
+ ```
1051
+
1052
+ ### Error Boundaries (Styled)
1053
+
1054
+ ```tsx
1055
+ const ErrorFallback = ({ error, resetErrorBoundary }) => (
1056
+ <div className="glass p-8 text-center">
1057
+ <div className="mx-auto mb-4 h-16 w-16 rounded-full bg-red-500/10 flex items-center justify-center">
1058
+ <AlertTriangle className="h-8 w-8 text-red-400" />
1059
+ </div>
1060
+ <h2 className="text-xl font-semibold text-white mb-2">
1061
+ Something went wrong
1062
+ </h2>
1063
+ <p className="text-zinc-400 mb-4 font-mono text-sm">
1064
+ {error.message}
1065
+ </p>
1066
+ <button
1067
+ onClick={resetErrorBoundary}
1068
+ className="px-4 py-2 bg-white/10 rounded-lg hover:bg-white/20 transition"
1069
+ >
1070
+ Try again
1071
+ </button>
1072
+ </div>
1073
+ );
1074
+ ```
1075
+
1076
+ ### Empty States
1077
+
1078
+ ```tsx
1079
+ const EmptyState = ({
1080
+ icon: Icon,
1081
+ title,
1082
+ description,
1083
+ action
1084
+ }: EmptyStateProps) => (
1085
+ <div className="flex flex-col items-center justify-center py-16 text-center">
1086
+ <div className="mb-4 rounded-full bg-white/5 p-4">
1087
+ <Icon className="h-8 w-8 text-zinc-500" />
1088
+ </div>
1089
+ <h3 className="text-lg font-medium text-white mb-1">{title}</h3>
1090
+ <p className="text-zinc-400 mb-4 max-w-sm">{description}</p>
1091
+ {action}
1092
+ </div>
1093
+ );
1094
+
1095
+ // Usage
1096
+ <EmptyState
1097
+ icon={Inbox}
1098
+ title="No messages yet"
1099
+ description="When you receive messages, they'll appear here."
1100
+ action={<Button>Send your first message</Button>}
1101
+ />
1102
+ ```
1103
+
1104
+ ### Loading States for Data
1105
+
1106
+ ```tsx
1107
+ // Optimistic UI with rollback
1108
+ const [items, setItems] = useState(data);
1109
+ const [pending, startTransition] = useTransition();
1110
+
1111
+ const addItem = (newItem) => {
1112
+ // Optimistic update
1113
+ setItems(prev => [...prev, { ...newItem, pending: true }]);
1114
+
1115
+ startTransition(async () => {
1116
+ try {
1117
+ await api.createItem(newItem);
1118
+ } catch {
1119
+ // Rollback on error
1120
+ setItems(prev => prev.filter(i => i.id !== newItem.id));
1121
+ toast.error('Failed to add item');
1122
+ }
1123
+ });
1124
+ };
1125
+ ```
1126
+
1127
+ ---
1128
+
1129
+ ## Framework Integration
1130
+
1131
+ ### Next.js App Router
1132
+
1133
+ ```tsx
1134
+ // Client boundary for WebGL components
1135
+ // app/components/hero-client.tsx
1136
+ 'use client';
1137
+
1138
+ import dynamic from 'next/dynamic';
1139
+
1140
+ // Lazy load heavy 3D components
1141
+ const WebGLHero = dynamic(() => import('./webgl-hero'), {
1142
+ ssr: false,
1143
+ loading: () => <HeroSkeleton />,
1144
+ });
1145
+
1146
+ export default function HeroClient() {
1147
+ return <WebGLHero />;
1148
+ }
1149
+ ```
1150
+
1151
+ ```tsx
1152
+ // Server component wrapper
1153
+ // app/page.tsx
1154
+ import HeroClient from './components/hero-client';
1155
+
1156
+ export default function Page() {
1157
+ return (
1158
+ <main>
1159
+ {/* Server-rendered SEO content */}
1160
+ <h1 className="sr-only">Your SEO Title</h1>
1161
+
1162
+ {/* Client-side 3D hero */}
1163
+ <HeroClient />
1164
+ </main>
1165
+ );
1166
+ }
1167
+ ```
1168
+
1169
+ ### SEO for WebGL Content
1170
+
1171
+ ```tsx
1172
+ // WebGL isn't crawlable - always provide text alternatives
1173
+ <section aria-labelledby="hero-title">
1174
+ {/* Hidden but crawlable */}
1175
+ <h1 id="hero-title" className="sr-only">
1176
+ AI-Powered Trading Platform
1177
+ </h1>
1178
+ <p className="sr-only">
1179
+ {seoDescription}
1180
+ </p>
1181
+
1182
+ {/* Visual hero (not crawled) */}
1183
+ <div aria-hidden="true">
1184
+ <Canvas>...</Canvas>
1185
+ </div>
1186
+
1187
+ {/* Visible text (crawled) */}
1188
+ <div className="relative z-10">
1189
+ <span className="text-7xl">{visibleTitle}</span>
1190
+ </div>
1191
+ </section>
1192
+ ```
1193
+
1194
+ ### Data Fetching with Loading States
1195
+
1196
+ ```tsx
1197
+ // Server Component with Suspense
1198
+ import { Suspense } from 'react';
1199
+
1200
+ async function DashboardData() {
1201
+ const data = await fetchDashboardData();
1202
+ return <DashboardWidgets data={data} />;
1203
+ }
1204
+
1205
+ export default function Dashboard() {
1206
+ return (
1207
+ <div className="bento-grid">
1208
+ <Suspense fallback={<WidgetSkeleton />}>
1209
+ <DashboardData />
1210
+ </Suspense>
1211
+ </div>
1212
+ );
1213
+ }
1214
+ ```
1215
+
1216
+ ---
1217
+
1218
+ ## Template Quick Reference
1219
+
1220
+ | Template | Props | WebGL | Mobile Fallback | Best Animation Lib |
1221
+ |----------|-------|-------|-----------------|-------------------|
1222
+ | `cppn-hero` | `title`, `description`, `ctaButtons`, `microDetails` | Yes | CSS gradient | GSAP (SplitText) |
1223
+ | `mesh-gradient-hero` | `colors[]`, `speed`, `distortion`, `swirl` | No* | Native | Framer Motion |
1224
+ | `wave-hero` | `title`, `subtitle`, `placeholder`, `onPromptSubmit` | Yes | Solid bg | GSAP |
1225
+ | `globe-hero` | `globeImage`, `dashboardImage`, `accentColor` | No | Native | Framer Motion |
1226
+ | `hero-section` | `title`, `badge`, `primaryCTA`, `accentColor` | Yes | Stars CSS | Either |
1227
+ | `bento-grid` | `children` (card layout) | No | Native | CSS or Framer |
1228
+ | `dashboard-widgets` | `value`, `change`, `trend[]` | No | Native | Framer Motion |
1229
+ | `terminal` | `logs[]`, `title` | No | Native | CSS |
1230
+ | `preloader` | `onComplete`, `messages[]` | Optional | CSS version | GSAP |
1231
+ | `glass-components` | Various | No | Native | CSS |
1232
+
1233
+ *`mesh-gradient-hero` uses `@paper-design/shaders-react` (Canvas, not WebGL)
1234
+
1235
+ ---
1236
+
1237
+ ## Template Playbooks (Start Grounded, Layer Wow Intentionally)
1238
+
1239
+ | Goal | Baseline (Clarity-first) | Optional Wow Upgrade | Kill It If |
1240
+ |------|--------------------------|----------------------|------------|
1241
+ | Marketing / Waitlist | `mesh-gradient-hero` + `glass-components` + `bento-grid` value props | Swap hero for `cppn-hero` or add `wave-hero` band for social proof | Copy is long-form or the product is compliance-heavy |
1242
+ | AI / Research Landing | `cppn-hero` + `dashboard-widgets` (metrics) + `terminal` logs | Add `holographic` shader sections or `globe-hero` interlude | User needs print-friendly deliverables |
1243
+ | Crypto / Finance | `globe-hero` + `bento-grid` KPIs + `dashboard-widgets` + CTA strip | Add `data-grid` shader background or rolling ticker | Performance budget < 200KB or mobile-only |
1244
+ | Developer Tools | `wave-hero` + `terminal` + `glass-components` cards | Introduce `digital-liquid` shader or 3D device mock | Audience is enterprise buyers needing conservative tone |
1245
+ | Product Dashboard | `bento-grid` + `dashboard-widgets` + `mesh-gradient-hero` (static) | Add mini WebGL module (sentient core, particle globe) | Data is dense, requires tabular clarity |
1246
+
1247
+ ### Layout Flow Recipes
1248
+
1249
+ 1. **Hero (signature flourish)** → Key metrics/value props (calm) → Product proof (screens) → Testimonials/logos → CTA (glow button).
1250
+ 2. **Dashboard page**: Above-the-fold summary (minimal) → Feature grid (asymmetrical) → Live data (terminal/sparkline) → Help/resources (calm).
1251
+ 3. **Docs/Platform**: Clean header (`mesh-gradient-hero` in CSS mode) → Navigation grid → Content area (monospace) → CTA.
1252
+
1253
+ Each flow should have at most **two high-saturation panels**. If you need more energy, animate the CTA or accent borders instead of adding another shader.
1254
+
1255
+ ---
1256
+
1257
+ ## Template Remix & Adaptation Patterns
1258
+
1259
+ | Need | Action | Notes |
1260
+ |------|--------|-------|
1261
+ | **Downgrade WebGL → CSS** | Replace `cppn-hero` with `mesh-gradient-hero`, keep same copy. Swap shader backgrounds for `bg-gradient-to-b`. | Use when user mentions “mobile-first,” “performance,” or “lightweight.” |
1262
+ | **Upgrade CSS → WebGL** | Start from `mesh-gradient-hero`, then inject `ShaderBackground` and reuse props from `cppn-hero`. | Only after confirming the client wants “cinematic” or “experimental.” |
1263
+ | **Shader swap** | Any hero using shaders can switch to another by swapping imports (e.g., `holographic` ↔ `digital-liquid`). Keep uniform names consistent. | Document the new accent palette alongside the swap. |
1264
+ | **Content density mode** | When the design needs to carry lots of text, keep hero flourish but make every subsequent section `bg-black` with simple borders. | Example: `cppn-hero` on top, then `bento-grid` in plain glass cards. |
1265
+ | **Prompt-to-template defaults** | - “Clean SaaS” → Mesh gradient package<br> - “AI platform” → CPPN hero + dashboard metrics<br> - “Crypto trading” → Globe hero + ticker<br> - “Developer CLI” → Wave hero + terminal | Mention these defaults directly in responses so the model doesn’t hallucinate new structures. |
1266
+
1267
+ When in doubt: **start with the baseline, ship usable layout, then pitch a single wow upgrade** as a follow-up suggestion (“Optionally we can swap in the CPPN shader if you want a more neural vibe.”).
1268
+
1269
+ ---
1270
+
1271
+ ## Template & Shader Selection Guide
1272
+
1273
+ Use this guide to pick the right template and shader based on the user's request. **Don't default to the same hero for everything** — match the aesthetic to the domain.
1274
+
1275
+ ### Industry/Vertical Mapping
1276
+
1277
+ | Industry | Hero Template | Shader | Accent Color | Tone |
1278
+ |----------|--------------|--------|--------------|------|
1279
+ | **AI/ML/Neural** | `cppn-hero` | `cppn-generative` | Cyan `#00f3ff` / Purple `#a855f7` | Organic, alive, mathematical |
1280
+ | **Crypto/DeFi/Trading** | `globe-hero` | `data-grid` | Purple `#9b87f5` / Amber `#f59e0b` | Global, technical, financial |
1281
+ | **Developer Tools/API** | `wave-hero` | `digital-liquid` | Blue `#1f3dbc` / Orange `#ff4d00` | Technical, dynamic, builder |
1282
+ | **SaaS/B2B/Product** | `mesh-gradient-hero` | *(CSS only)* | Soft pastels | Clean, professional, trustworthy |
1283
+ | **Creative Agency** | `hero-section` (CyberpunkHero) | `holographic` | Neon colors | Bold, experimental, artistic |
1284
+ | **Fintech/Dashboard** | `bento-grid` + `dashboard-widgets` | `data-grid` | Green `#10b981` / Blue `#3b82f6` | Data-rich, precise, analytical |
1285
+
1286
+ ### Keyword-Based Selection
1287
+
1288
+ When analyzing user requests, match keywords to templates:
1289
+
1290
+ ```
1291
+ User Request Analysis:
1292
+ ├── Contains "AI", "neural", "intelligent", "learning", "model", "GPT"
1293
+ │ → cppn-hero + cppn-generative shader
1294
+ │ → Organic, flowing backgrounds that feel "alive"
1295
+
1296
+ ├── Contains "crypto", "blockchain", "trading", "global", "DeFi", "web3"
1297
+ │ → globe-hero + data-grid shader
1298
+ │ → Earth imagery, global reach, financial precision
1299
+
1300
+ ├── Contains "developer", "API", "code", "build", "deploy", "ship"
1301
+ │ → wave-hero + digital-liquid shader
1302
+ │ → Dynamic bars, typing animations, terminal aesthetic
1303
+
1304
+ ├── Contains "SaaS", "product", "waitlist", "brand", "startup", "launch"
1305
+ │ → mesh-gradient-hero (no WebGL needed)
1306
+ │ → Soft, fluid gradients, professional feel
1307
+
1308
+ ├── Contains "futuristic", "cyber", "agency", "creative", "portfolio"
1309
+ │ → hero-section (CyberpunkHero) + holographic shader
1310
+ │ → Particle spheres, text scramble, scanlines
1311
+
1312
+ └── Contains "dashboard", "analytics", "metrics", "data", "monitoring"
1313
+ → bento-grid + dashboard-widgets + terminal
1314
+ → Stat cards, sparklines, live data feeds
1315
+ ```
1316
+
1317
+ ### Performance-Based Selection
1318
+
1319
+ Choose based on target audience and device constraints:
1320
+
1321
+ | Performance Tier | Templates | Best For |
1322
+ |-----------------|-----------|----------|
1323
+ | **High-end (WebGL)** | `cppn-hero`, `wave-hero`, `hero-section` | Desktop-first, portfolio sites, creative agencies |
1324
+ | **Medium (Canvas/Images)** | `globe-hero` | Marketing sites, crypto landing pages |
1325
+ | **Light (CSS only)** | `mesh-gradient-hero`, `bento-grid` | Mobile-first, SaaS, B2B, accessibility-focused |
1326
+
1327
+ ### Shader Pairing Guide
1328
+
1329
+ | Shader | Aesthetic | Pairs Well With |
1330
+ |--------|-----------|-----------------|
1331
+ | `cppn-generative` | Neural, organic, mathematical | AI products, generative art, research tools |
1332
+ | `data-grid` | Matrix, technical, cyberpunk | Crypto, fintech, developer tools |
1333
+ | `digital-liquid` | Flowing, dynamic, fluid | Creative tools, media platforms |
1334
+ | `holographic` | Sci-fi, iridescent, futuristic | Gaming, AR/VR, experimental projects |
1335
+
1336
+ ### Quick Decision Flowchart
1337
+
1338
+ ```
1339
+ Is performance critical (mobile-first)?
1340
+ ├── YES → mesh-gradient-hero (CSS only)
1341
+ └── NO → Continue...
1342
+
1343
+ Is it AI/ML related?
1344
+ ├── YES → cppn-hero
1345
+ └── NO → Continue...
1346
+
1347
+ Is it crypto/global/financial?
1348
+ ├── YES → globe-hero
1349
+ └── NO → Continue...
1350
+
1351
+ Is it developer-focused?
1352
+ ├── YES → wave-hero
1353
+ └── NO → hero-section (CyberpunkHero)
1354
+ ```
1355
+
1356
+ ---
1357
+
1358
+ ## File Structure
1359
+
1360
+ ```
1361
+ premium-frontend-skill/
1362
+ ├── SKILL.md # This document
1363
+ ├── examples/
1364
+ │ ├── 01-racing-dashboard.tsx # Motorsport telemetry
1365
+ │ ├── 02-cyberpunk-platform.tsx # Developer platform
1366
+ │ ├── 03-bioluminescent-landing.tsx # AI agency landing
1367
+ │ ├── 04-fintech-protocol.tsx # DeFi interface
1368
+ │ └── 05-neural-interface.tsx # Sentient AI core
1369
+ ├── templates/
1370
+ │ ├── preloader.tsx # Boot sequence loader
1371
+ │ ├── glass-components.tsx # Glassmorphic UI elements
1372
+ │ ├── terminal.tsx # Live logs display
1373
+ │ ├── bento-grid.tsx # Dashboard layout system
1374
+ │ ├── dashboard-widgets.tsx # Stat cards, charts, metrics
1375
+ │ ├── hero-section.tsx # CyberpunkHero + StarfieldScene
1376
+ │ ├── cppn-hero.tsx # Neural network shader hero
1377
+ │ ├── mesh-gradient-hero.tsx # Fluid gradient hero (CSS-light)
1378
+ │ ├── wave-hero.tsx # Animated wave bars hero
1379
+ │ └── globe-hero.tsx # 3D globe with dashboard
1380
+ └── shaders/
1381
+ ├── cppn-generative.glsl.ts # Neural pattern generator
1382
+ ├── digital-liquid.glsl.ts # Flowing noise effect
1383
+ ├── data-grid.glsl.ts # Matrix/grid effect
1384
+ └── holographic.glsl.ts # Hologram interference
1385
+ ```
1386
+
1387
+ ---
1388
+
1389
+ ## Remember
1390
+
1391
+ > "The goal is to create interfaces that feel **alive**, **cinematic**, and **unforgettable**. Every pixel should be intentional. These aren't just websites—they're experiences."
1392
+
1393
+ Don't hold back. Show what can truly be created when thinking outside the box and committing fully to a distinctive vision.