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,490 @@
1
+ ---
2
+ name: tailwind-design-system
3
+ description: Build production-ready design systems with Tailwind CSS v4, including CSS-first configuration, design tokens, component variants, responsive patterns, and accessibility. Use when building component libraries with Tailwind v4, implementing design tokens and theming with CSS-first configuration, standardizing UI patterns, migrating from Tailwind v3 to v4, or setting up dark mode with native CSS features. Triggers on @theme, @custom-variant, CVA, design tokens, OKLCH, Tailwind v4, @utility.
4
+ ---
5
+
6
+ # Tailwind Design System (v4)
7
+
8
+ Build production-ready design systems with Tailwind CSS v4, including CSS-first configuration, design tokens, component variants, responsive patterns, and accessibility.
9
+
10
+ > **Note:** This skill targets Tailwind CSS v4 (2024+). For v3 projects, refer to the [upgrade guide](https://tailwindcss.com/docs/upgrade-guide).
11
+
12
+ ## When to Use This Skill
13
+
14
+ - Creating a component library with Tailwind v4
15
+ - Implementing design tokens and theming with CSS-first configuration
16
+ - Building responsive and accessible components
17
+ - Standardizing UI patterns across a codebase
18
+ - Migrating from Tailwind v3 to v4
19
+ - Setting up dark mode with native CSS features
20
+
21
+ ## Key v4 Changes
22
+
23
+ | v3 | v4 |
24
+ |----|-----|
25
+ | `tailwind.config.ts` | `@theme` |
26
+ | `@tailwind base/components/utilities` | `@import "tailwindcss"` |
27
+ | `darkMode: "class"` | `@custom-variant dark (&:where(.dark, .dark *))` |
28
+ | `theme.extend.colors` | `@theme { --color-*: value }` |
29
+ | `require("tailwindcss-animate")` | `@keyframes` + `@theme` + `@starting-style` |
30
+
31
+ ## Quick Start
32
+
33
+ ```css
34
+ /* app.css - Tailwind v4 CSS-first configuration */
35
+ @import "tailwindcss";
36
+
37
+ /* Define your theme with @theme */
38
+ @theme {
39
+ /* Semantic color tokens using OKLCH for better color perception */
40
+ --color-background: oklch(100% 0 0);
41
+ --color-foreground: oklch(14.5% 0.025 264);
42
+ --color-primary: oklch(14.5% 0.025 264);
43
+ --color-primary-foreground: oklch(98% 0.01 264);
44
+ --color-secondary: oklch(96% 0.01 264);
45
+ --color-secondary-foreground: oklch(14.5% 0.025 264);
46
+ --color-muted: oklch(96% 0.01 264);
47
+ --color-muted-foreground: oklch(46% 0.02 264);
48
+ --color-accent: oklch(96% 0.01 264);
49
+ --color-accent-foreground: oklch(14.5% 0.025 264);
50
+ --color-destructive: oklch(53% 0.22 27);
51
+ --color-destructive-foreground: oklch(98% 0.01 264);
52
+ --color-border: oklch(91% 0.01 264);
53
+ --color-ring: oklch(14.5% 0.025 264);
54
+ --color-card: oklch(100% 0 0);
55
+ --color-card-foreground: oklch(14.5% 0.025 264);
56
+
57
+ /* Ring offset for focus states */
58
+ --color-ring-offset: oklch(100% 0 0);
59
+
60
+ /* Radius tokens */
61
+ --radius-sm: 0.25rem;
62
+ --radius-md: 0.375rem;
63
+ --radius-lg: 0.5rem;
64
+ --radius-xl: 0.75rem;
65
+
66
+ /* Animation tokens */
67
+ --animate-fade-in: fade-in 0.2s ease-out;
68
+ --animate-fade-out: fade-out 0.2s ease-in;
69
+ --animate-slide-in: slide-in 0.3s ease-out;
70
+ --animate-slide-out: slide-out 0.3s ease-in;
71
+
72
+ @keyframes fade-in {
73
+ from { opacity: 0; }
74
+ to { opacity: 1; }
75
+ }
76
+ @keyframes fade-out {
77
+ from { opacity: 1; }
78
+ to { opacity: 0; }
79
+ }
80
+ @keyframes slide-in {
81
+ from { transform: translateY(-0.5rem); opacity: 0; }
82
+ to { transform: translateY(0); opacity: 1; }
83
+ }
84
+ @keyframes slide-out {
85
+ from { transform: translateY(0); opacity: 1; }
86
+ to { transform: translateY(-0.5rem); opacity: 0; }
87
+ }
88
+ }
89
+
90
+ /* Dark mode variant */
91
+ @custom-variant dark (&:where(.dark, .dark *));
92
+
93
+ /* Dark mode theme overrides */
94
+ .dark {
95
+ --color-background: oklch(14.5% 0.025 264);
96
+ --color-foreground: oklch(98% 0.01 264);
97
+ --color-primary: oklch(98% 0.01 264);
98
+ --color-primary-foreground: oklch(14.5% 0.025 264);
99
+ --color-secondary: oklch(22% 0.02 264);
100
+ --color-secondary-foreground: oklch(98% 0.01 264);
101
+ --color-muted: oklch(22% 0.02 264);
102
+ --color-muted-foreground: oklch(65% 0.02 264);
103
+ --color-accent: oklch(22% 0.02 264);
104
+ --color-accent-foreground: oklch(98% 0.01 264);
105
+ --color-destructive: oklch(42% 0.15 27);
106
+ --color-destructive-foreground: oklch(98% 0.01 264);
107
+ --color-border: oklch(22% 0.02 264);
108
+ --color-ring: oklch(83% 0.02 264);
109
+ --color-card: oklch(14.5% 0.025 264);
110
+ --color-card-foreground: oklch(98% 0.01 264);
111
+ --color-ring-offset: oklch(14.5% 0.025 264);
112
+ }
113
+
114
+ /* Base styles */
115
+ @layer base {
116
+ * { @apply border-border; }
117
+ body { @apply bg-background text-foreground antialiased; }
118
+ }
119
+ ```
120
+
121
+ ## Core Concepts
122
+
123
+ ### 1. Design Token Hierarchy
124
+
125
+ ```
126
+ Brand Tokens (abstract)
127
+ └── Semantic Tokens (purpose)
128
+ └── Component Tokens (specific)
129
+
130
+ Example: oklch(45% 0.2 260) → --color-primary → bg-primary
131
+ ```
132
+
133
+ ### 2. Component Architecture
134
+
135
+ ```
136
+ Base styles → Variants → Sizes → States → Overrides
137
+ ```
138
+
139
+ ## Patterns
140
+
141
+ ### Pattern 1: CVA (Class Variance Authority) Components
142
+
143
+ ```tsx
144
+ // components/ui/button.tsx
145
+ import { Slot } from '@radix-ui/react-slot'
146
+ import { cva, type VariantProps } from 'class-variance-authority'
147
+ import { cn } from '@/lib/utils'
148
+
149
+ const buttonVariants = cva(
150
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
151
+ {
152
+ variants: {
153
+ variant: {
154
+ default: 'bg-primary text-primary-foreground hover:bg-primary/90',
155
+ destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
156
+ outline: 'border border-border bg-background hover:bg-accent hover:text-accent-foreground',
157
+ secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
158
+ ghost: 'hover:bg-accent hover:text-accent-foreground',
159
+ link: 'text-primary underline-offset-4 hover:underline',
160
+ },
161
+ size: {
162
+ default: 'h-10 px-4 py-2',
163
+ sm: 'h-9 rounded-md px-3',
164
+ lg: 'h-11 rounded-md px-8',
165
+ icon: 'size-10',
166
+ },
167
+ },
168
+ defaultVariants: {
169
+ variant: 'default',
170
+ size: 'default',
171
+ },
172
+ }
173
+ )
174
+
175
+ export interface ButtonProps
176
+ extends React.ButtonHTMLAttributes<HTMLButtonElement>,
177
+ VariantProps<typeof buttonVariants> {
178
+ asChild?: boolean
179
+ }
180
+
181
+ // React 19: No forwardRef needed
182
+ export function Button({
183
+ className, variant, size, asChild = false, ref, ...props
184
+ }: ButtonProps & { ref?: React.Ref<HTMLButtonElement> }) {
185
+ const Comp = asChild ? Slot : 'button'
186
+ return (
187
+ <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />
188
+ )
189
+ }
190
+ ```
191
+
192
+ ### Pattern 2: Compound Components (React 19)
193
+
194
+ ```tsx
195
+ // components/ui/card.tsx
196
+ import { cn } from '@/lib/utils'
197
+
198
+ export function Card({ className, ref, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> }) {
199
+ return <div ref={ref} className={cn('rounded-lg border border-border bg-card text-card-foreground shadow-sm', className)} {...props} />
200
+ }
201
+
202
+ export function CardHeader({ className, ref, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> }) {
203
+ return <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />
204
+ }
205
+
206
+ export function CardTitle({ className, ref, ...props }: React.HTMLAttributes<HTMLHeadingElement> & { ref?: React.Ref<HTMLHeadingElement> }) {
207
+ return <h3 ref={ref} className={cn('text-2xl font-semibold leading-none tracking-tight', className)} {...props} />
208
+ }
209
+
210
+ export function CardContent({ className, ref, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> }) {
211
+ return <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />
212
+ }
213
+
214
+ export function CardFooter({ className, ref, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref?: React.Ref<HTMLDivElement> }) {
215
+ return <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />
216
+ }
217
+ ```
218
+
219
+ ### Pattern 3: Form Components
220
+
221
+ ```tsx
222
+ // components/ui/input.tsx
223
+ import { cn } from '@/lib/utils'
224
+
225
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
226
+ error?: string
227
+ ref?: React.Ref<HTMLInputElement>
228
+ }
229
+
230
+ export function Input({ className, type, error, ref, ...props }: InputProps) {
231
+ return (
232
+ <div className="relative">
233
+ <input
234
+ type={type}
235
+ className={cn(
236
+ 'flex h-10 w-full rounded-md border border-border bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
237
+ error && 'border-destructive focus-visible:ring-destructive',
238
+ className
239
+ )}
240
+ ref={ref}
241
+ aria-invalid={!!error}
242
+ aria-describedby={error ? `${props.id}-error` : undefined}
243
+ {...props}
244
+ />
245
+ {error && (
246
+ <p id={`${props.id}-error`} className="mt-1 text-sm text-destructive" role="alert">
247
+ {error}
248
+ </p>
249
+ )}
250
+ </div>
251
+ )
252
+ }
253
+ ```
254
+
255
+ ### Pattern 4: Responsive Grid System
256
+
257
+ ```tsx
258
+ // components/ui/grid.tsx
259
+ import { cn } from '@/lib/utils'
260
+ import { cva, type VariantProps } from 'class-variance-authority'
261
+
262
+ const gridVariants = cva('grid', {
263
+ variants: {
264
+ cols: {
265
+ 1: 'grid-cols-1',
266
+ 2: 'grid-cols-1 sm:grid-cols-2',
267
+ 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',
268
+ 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',
269
+ },
270
+ gap: {
271
+ none: 'gap-0',
272
+ sm: 'gap-2',
273
+ md: 'gap-4',
274
+ lg: 'gap-6',
275
+ xl: 'gap-8',
276
+ },
277
+ },
278
+ defaultVariants: { cols: 3, gap: 'md' },
279
+ })
280
+
281
+ const containerVariants = cva('mx-auto w-full px-4 sm:px-6 lg:px-8', {
282
+ variants: {
283
+ size: {
284
+ sm: 'max-w-screen-sm',
285
+ md: 'max-w-screen-md',
286
+ lg: 'max-w-screen-lg',
287
+ xl: 'max-w-screen-xl',
288
+ full: 'max-w-full',
289
+ },
290
+ },
291
+ defaultVariants: { size: 'xl' },
292
+ })
293
+ ```
294
+
295
+ ### Pattern 5: Native CSS Animations (v4)
296
+
297
+ ```css
298
+ /* Native @starting-style for entry animations */
299
+ @theme {
300
+ --animate-dialog-in: dialog-fade-in 0.2s ease-out;
301
+ --animate-dialog-out: dialog-fade-out 0.15s ease-in;
302
+ }
303
+
304
+ @keyframes dialog-fade-in {
305
+ from { opacity: 0; transform: scale(0.95) translateY(-0.5rem); }
306
+ to { opacity: 1; transform: scale(1) translateY(0); }
307
+ }
308
+
309
+ /* Native popover animations using @starting-style */
310
+ [popover] {
311
+ transition: opacity 0.2s, transform 0.2s, display 0.2s allow-discrete;
312
+ opacity: 0;
313
+ transform: scale(0.95);
314
+ }
315
+ [popover]:popover-open { opacity: 1; transform: scale(1); }
316
+ @starting-style {
317
+ [popover]:popover-open { opacity: 0; transform: scale(0.95); }
318
+ }
319
+ ```
320
+
321
+ ### Pattern 6: Dark Mode with CSS (v4)
322
+
323
+ ```tsx
324
+ // providers/ThemeProvider.tsx
325
+ 'use client'
326
+ import { createContext, useContext, useEffect, useState } from 'react'
327
+
328
+ type Theme = 'dark' | 'light' | 'system'
329
+
330
+ const ThemeContext = createContext<{ theme: Theme; setTheme: (t: Theme) => void; resolvedTheme: 'dark' | 'light' } | undefined>(undefined)
331
+
332
+ export function ThemeProvider({ children, defaultTheme = 'system', storageKey = 'theme' }: {
333
+ children: React.ReactNode; defaultTheme?: Theme; storageKey?: string
334
+ }) {
335
+ const [theme, setTheme] = useState<Theme>(defaultTheme)
336
+ const [resolvedTheme, setResolvedTheme] = useState<'dark' | 'light'>('light')
337
+
338
+ useEffect(() => {
339
+ const stored = localStorage.getItem(storageKey) as Theme | null
340
+ if (stored) setTheme(stored)
341
+ }, [storageKey])
342
+
343
+ useEffect(() => {
344
+ const root = document.documentElement
345
+ root.classList.remove('light', 'dark')
346
+ const resolved = theme === 'system'
347
+ ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')
348
+ : theme
349
+ root.classList.add(resolved)
350
+ setResolvedTheme(resolved)
351
+ }, [theme])
352
+
353
+ return (
354
+ <ThemeContext.Provider value={{
355
+ theme,
356
+ setTheme: (t) => { localStorage.setItem(storageKey, t); setTheme(t) },
357
+ resolvedTheme,
358
+ }}>
359
+ {children}
360
+ </ThemeContext.Provider>
361
+ )
362
+ }
363
+
364
+ export const useTheme = () => {
365
+ const ctx = useContext(ThemeContext)
366
+ if (!ctx) throw new Error('useTheme must be used within ThemeProvider')
367
+ return ctx
368
+ }
369
+ ```
370
+
371
+ ## Utility Functions
372
+
373
+ ```ts
374
+ // lib/utils.ts
375
+ import { type ClassValue, clsx } from "clsx";
376
+ import { twMerge } from "tailwind-merge";
377
+
378
+ export function cn(...inputs: ClassValue[]) {
379
+ return twMerge(clsx(inputs));
380
+ }
381
+
382
+ export const focusRing = cn(
383
+ "focus-visible:outline-none focus-visible:ring-2",
384
+ "focus-visible:ring-ring focus-visible:ring-offset-2",
385
+ );
386
+
387
+ export const disabled = "disabled:pointer-events-none disabled:opacity-50";
388
+ ```
389
+
390
+ ## Advanced v4 Patterns
391
+
392
+ ### Custom Utilities with @utility
393
+
394
+ ```css
395
+ @utility line-t {
396
+ @apply relative before:absolute before:top-0 before:-left-[100vw]
397
+ before:h-px before:w-[200vw] before:bg-gray-950/5 dark:before:bg-white/10;
398
+ }
399
+
400
+ @utility text-gradient {
401
+ @apply bg-gradient-to-r from-primary to-accent bg-clip-text text-transparent;
402
+ }
403
+ ```
404
+
405
+ ### Theme Modifiers
406
+
407
+ ```css
408
+ /* Use @theme inline when referencing other CSS variables */
409
+ @theme inline {
410
+ --font-sans: var(--font-inter), system-ui;
411
+ }
412
+
413
+ /* Use @theme static to always generate CSS variables (even when unused) */
414
+ @theme static {
415
+ --color-brand: oklch(65% 0.15 240);
416
+ }
417
+ ```
418
+
419
+ ### Namespace Overrides
420
+
421
+ ```css
422
+ @theme {
423
+ /* Clear all default colors and define your own */
424
+ --color-*: initial;
425
+ --color-white: #fff;
426
+ --color-black: #000;
427
+ --color-primary: oklch(45% 0.2 260);
428
+ --color-secondary: oklch(65% 0.15 200);
429
+ }
430
+ ```
431
+
432
+ ### Semi-transparent Color Variants
433
+
434
+ ```css
435
+ @theme {
436
+ --color-primary-50: color-mix(in oklab, var(--color-primary) 5%, transparent);
437
+ --color-primary-100: color-mix(in oklab, var(--color-primary) 10%, transparent);
438
+ --color-primary-200: color-mix(in oklab, var(--color-primary) 20%, transparent);
439
+ }
440
+ ```
441
+
442
+ ### Container Queries
443
+
444
+ ```css
445
+ @theme {
446
+ --container-xs: 20rem;
447
+ --container-sm: 24rem;
448
+ --container-md: 28rem;
449
+ --container-lg: 32rem;
450
+ }
451
+ ```
452
+
453
+ ## v3 to v4 Migration Checklist
454
+
455
+ - [ ] Replace `tailwind.config.ts` with CSS `@theme` block
456
+ - [ ] Change `@tailwind base/components/utilities` to `@import "tailwindcss"`
457
+ - [ ] Move color definitions to `@theme { --color-*: value }`
458
+ - [ ] Replace `darkMode: "class"` with `@custom-variant dark`
459
+ - [ ] Move `@keyframes` inside `@theme` blocks
460
+ - [ ] Replace `require("tailwindcss-animate")` with native CSS animations
461
+ - [ ] Update `h-10 w-10` to `size-10` (new utility)
462
+ - [ ] Remove `forwardRef` (React 19 passes ref as prop)
463
+ - [ ] Consider OKLCH colors for better color perception
464
+ - [ ] Replace custom plugins with `@utility` directives
465
+
466
+ ## Best Practices
467
+
468
+ ### Do's
469
+ - Use `@theme` blocks — CSS-first configuration is v4's core pattern
470
+ - Use OKLCH colors — Better perceptual uniformity than HSL
471
+ - Compose with CVA — Type-safe variants
472
+ - Use semantic tokens — `bg-primary` not `bg-blue-500`
473
+ - Use `size-*` — New shorthand for `w-* h-*`
474
+ - Add accessibility — ARIA attributes, focus states
475
+
476
+ ### Don'ts
477
+ - Don't use `tailwind.config.ts` — Use CSS `@theme` instead
478
+ - Don't use `@tailwind` directives — Use `@import "tailwindcss"`
479
+ - Don't use `forwardRef` — React 19 passes ref as prop
480
+ - Don't use arbitrary values — Extend `@theme` instead
481
+ - Don't hardcode colors — Use semantic tokens
482
+ - Don't forget dark mode — Test both themes
483
+
484
+ ## Resources
485
+
486
+ - [Tailwind CSS v4 Documentation](https://tailwindcss.com/docs)
487
+ - [Tailwind v4 Beta Announcement](https://tailwindcss.com/blog/tailwindcss-v4-beta)
488
+ - [CVA Documentation](https://cva.style/docs)
489
+ - [shadcn/ui](https://ui.shadcn.com/)
490
+ - [Radix Primitives](https://www.radix-ui.com/primitives)