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,516 @@
1
+ ---
2
+ name: dark-mode-theming
3
+ description: "Implement dark mode and theming systems with CSS custom properties, system preference detection, FOUC prevention, Tailwind dark variants, and accessible contrast maintenance across themes. Use when adding dark mode, theme switching, or design token systems."
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Dark Mode & Theming
8
+
9
+ Build a robust theming system that respects user preferences, avoids flash-of-unstyled-content, and maintains accessibility across all themes.
10
+
11
+ ## CSS Custom Properties as Theme Tokens
12
+
13
+ Define your entire color system as CSS custom properties. Every color in your app should reference a token, never a hardcoded hex value.
14
+
15
+ ```css
16
+ /* src/styles/tokens.css */
17
+
18
+ /* Light theme (default) */
19
+ :root {
20
+ /* Surfaces */
21
+ --color-bg-primary: #ffffff;
22
+ --color-bg-secondary: #f5f5f5;
23
+ --color-bg-tertiary: #e8e8e8;
24
+ --color-bg-elevated: #ffffff;
25
+
26
+ /* Text */
27
+ --color-text-primary: #111111;
28
+ --color-text-secondary: #555555;
29
+ --color-text-muted: #888888;
30
+ --color-text-inverse: #ffffff;
31
+
32
+ /* Interactive */
33
+ --color-accent: #0066cc;
34
+ --color-accent-hover: #0052a3;
35
+ --color-accent-text: #ffffff;
36
+
37
+ /* Borders */
38
+ --color-border: #d4d4d4;
39
+ --color-border-strong: #999999;
40
+
41
+ /* Status */
42
+ --color-success: #157a3e;
43
+ --color-warning: #9a6700;
44
+ --color-error: #cc1a1a;
45
+ --color-info: #0066cc;
46
+
47
+ /* Shadows */
48
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
49
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
50
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
51
+ }
52
+
53
+ /* Dark theme */
54
+ [data-theme="dark"] {
55
+ --color-bg-primary: #0d0d0d;
56
+ --color-bg-secondary: #1a1a1a;
57
+ --color-bg-tertiary: #262626;
58
+ --color-bg-elevated: #1f1f1f;
59
+
60
+ --color-text-primary: #eeeeee;
61
+ --color-text-secondary: #aaaaaa;
62
+ --color-text-muted: #777777;
63
+ --color-text-inverse: #111111;
64
+
65
+ --color-accent: #4da6ff;
66
+ --color-accent-hover: #80bfff;
67
+ --color-accent-text: #000000;
68
+
69
+ --color-border: #333333;
70
+ --color-border-strong: #555555;
71
+
72
+ --color-success: #3fb950;
73
+ --color-warning: #d29922;
74
+ --color-error: #f85149;
75
+ --color-info: #58a6ff;
76
+
77
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
78
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4);
79
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.5);
80
+ }
81
+ ```
82
+
83
+ **Usage in components:**
84
+ ```css
85
+ .card {
86
+ background: var(--color-bg-elevated);
87
+ color: var(--color-text-primary);
88
+ border: 1px solid var(--color-border);
89
+ box-shadow: var(--shadow-md);
90
+ }
91
+
92
+ .card-title {
93
+ color: var(--color-text-primary);
94
+ }
95
+
96
+ .card-description {
97
+ color: var(--color-text-secondary);
98
+ }
99
+ ```
100
+
101
+ ---
102
+
103
+ ## System vs User Preference Detection
104
+
105
+ ### Detecting System Preference
106
+
107
+ ```typescript
108
+ function getSystemTheme(): 'light' | 'dark' {
109
+ if (typeof window === 'undefined') return 'light';
110
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
111
+ }
112
+ ```
113
+
114
+ ### Three-Way Preference: System, Light, Dark
115
+
116
+ ```typescript
117
+ type ThemePreference = 'system' | 'light' | 'dark';
118
+ type ResolvedTheme = 'light' | 'dark';
119
+
120
+ function resolveTheme(preference: ThemePreference): ResolvedTheme {
121
+ if (preference === 'system') return getSystemTheme();
122
+ return preference;
123
+ }
124
+
125
+ function saveThemePreference(preference: ThemePreference): void {
126
+ localStorage.setItem('theme-preference', preference);
127
+ }
128
+
129
+ function loadThemePreference(): ThemePreference {
130
+ const saved = localStorage.getItem('theme-preference');
131
+ if (saved === 'light' || saved === 'dark' || saved === 'system') return saved;
132
+ return 'system';
133
+ }
134
+ ```
135
+
136
+ ### Listening for System Changes
137
+
138
+ ```typescript
139
+ function watchSystemTheme(callback: (theme: ResolvedTheme) => void): () => void {
140
+ const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
141
+
142
+ function handler(event: MediaQueryListEvent) {
143
+ const preference = loadThemePreference();
144
+ if (preference === 'system') {
145
+ callback(event.matches ? 'dark' : 'light');
146
+ }
147
+ }
148
+
149
+ mediaQuery.addEventListener('change', handler);
150
+ return () => mediaQuery.removeEventListener('change', handler);
151
+ }
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Avoiding FOUC (Flash of Unstyled Content)
157
+
158
+ The theme must be applied **before** the page renders. This requires a blocking inline script in `<head>`.
159
+
160
+ ### Blocking Script Technique
161
+
162
+ ```html
163
+ <!-- Place this in <head> BEFORE any stylesheets -->
164
+ <script>
165
+ (function() {
166
+ var preference = 'system';
167
+ try { preference = localStorage.getItem('theme-preference') || 'system'; } catch(e) {}
168
+
169
+ var theme;
170
+ if (preference === 'system') {
171
+ theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
172
+ } else {
173
+ theme = preference;
174
+ }
175
+
176
+ document.documentElement.setAttribute('data-theme', theme);
177
+ })();
178
+ </script>
179
+ ```
180
+
181
+ **Why this works:** The script runs synchronously before the browser paints, so the `data-theme` attribute is set before CSS is applied.
182
+
183
+ ### Astro Implementation
184
+
185
+ ```astro
186
+ ---
187
+ // src/layouts/BaseLayout.astro
188
+ ---
189
+ <html lang="en">
190
+ <head>
191
+ <script is:inline>
192
+ (function() {
193
+ var p = 'system';
194
+ try { p = localStorage.getItem('theme-preference') || 'system'; } catch(e) {}
195
+ var t = p === 'system'
196
+ ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')
197
+ : p;
198
+ document.documentElement.setAttribute('data-theme', t);
199
+ })();
200
+ </script>
201
+ <!-- Stylesheets load AFTER theme attribute is set -->
202
+ <link rel="stylesheet" href="/styles/tokens.css" />
203
+ </head>
204
+ <body>
205
+ <slot />
206
+ </body>
207
+ </html>
208
+ ```
209
+
210
+ ---
211
+
212
+ ## Image and SVG Adaptation
213
+
214
+ ### CSS Filter Approach (Quick)
215
+
216
+ ```css
217
+ /* Invert images in dark mode (useful for diagrams, charts) */
218
+ [data-theme="dark"] img.invertible {
219
+ filter: invert(1) hue-rotate(180deg);
220
+ }
221
+ ```
222
+
223
+ ### Source Switching (Preferred for Quality)
224
+
225
+ ```html
226
+ <picture>
227
+ <source srcset="/images/hero-dark.webp" media="(prefers-color-scheme: dark)" />
228
+ <img src="/images/hero-light.webp" alt="Hero illustration" />
229
+ </picture>
230
+ ```
231
+
232
+ ### SVG with currentColor
233
+
234
+ ```html
235
+ <!-- SVGs using currentColor automatically adapt to theme -->
236
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
237
+ <path d="M12 2L2 7l10 5 10-5-10-5z" />
238
+ </svg>
239
+ ```
240
+
241
+ ```css
242
+ .icon { color: var(--color-text-primary); }
243
+ .icon-muted { color: var(--color-text-muted); }
244
+ ```
245
+
246
+ ### Background Images
247
+
248
+ ```css
249
+ .hero {
250
+ background-image: var(--hero-image);
251
+ }
252
+
253
+ :root {
254
+ --hero-image: url('/images/hero-light.jpg');
255
+ }
256
+
257
+ [data-theme="dark"] {
258
+ --hero-image: url('/images/hero-dark.jpg');
259
+ }
260
+ ```
261
+
262
+ ---
263
+
264
+ ## Third-Party Widget Theming
265
+
266
+ Many third-party widgets (embedded forms, maps, code blocks) do not follow your theme. Handle them explicitly.
267
+
268
+ ```css
269
+ /* Syntax highlighting with theme tokens */
270
+ [data-theme="dark"] .shiki {
271
+ background-color: var(--color-bg-secondary) !important;
272
+ }
273
+
274
+ /* Embedded iframes: some support color-scheme parameter */
275
+ [data-theme="dark"] iframe.themeable {
276
+ filter: invert(1) hue-rotate(180deg);
277
+ /* Last resort --- use sparingly */
278
+ }
279
+ ```
280
+
281
+ **For widgets that support a theme parameter:**
282
+ ```typescript
283
+ // Re-initialize widget when theme changes
284
+ function onThemeChange(theme: ResolvedTheme): void {
285
+ // Recaptcha
286
+ grecaptcha.render('captcha', { theme });
287
+
288
+ // Stripe Elements
289
+ elements.update({ appearance: { theme: theme === 'dark' ? 'night' : 'stripe' } });
290
+ }
291
+ ```
292
+
293
+ ---
294
+
295
+ ## Contrast Maintenance Across Themes
296
+
297
+ Every color pairing must meet WCAG AA contrast ratios in both themes.
298
+
299
+ | Pairing | Minimum Ratio | Verification |
300
+ |---------|--------------|--------------|
301
+ | `--color-text-primary` on `--color-bg-primary` | 7:1 (AAA) | Both themes |
302
+ | `--color-text-secondary` on `--color-bg-primary` | 4.5:1 (AA) | Both themes |
303
+ | `--color-text-muted` on `--color-bg-primary` | 4.5:1 (AA) | Both themes |
304
+ | `--color-accent` on `--color-bg-primary` | 4.5:1 (AA) | Both themes |
305
+ | `--color-accent-text` on `--color-accent` | 4.5:1 (AA) | Both themes |
306
+ | Status colors on background | 4.5:1 (AA) | Both themes |
307
+
308
+ **Testing contrast programmatically:**
309
+ ```typescript
310
+ // Use a tool like `wcag-contrast` to verify at build time
311
+ import { getContrastRatio } from 'wcag-contrast';
312
+
313
+ const ratio = getContrastRatio('#eeeeee', '#0d0d0d');
314
+ console.assert(ratio >= 4.5, `Contrast ratio ${ratio} is below 4.5:1`);
315
+ ```
316
+
317
+ ---
318
+
319
+ ## Theme Toggle Component
320
+
321
+ ```tsx
322
+ function ThemeToggle() {
323
+ const [preference, setPreference] = useState<ThemePreference>(() => loadThemePreference());
324
+ const resolvedTheme = resolveTheme(preference);
325
+
326
+ function cycleTheme() {
327
+ const next: ThemePreference =
328
+ preference === 'system' ? 'light'
329
+ : preference === 'light' ? 'dark'
330
+ : 'system';
331
+
332
+ setPreference(next);
333
+ saveThemePreference(next);
334
+ document.documentElement.setAttribute('data-theme', resolveTheme(next));
335
+ }
336
+
337
+ const label =
338
+ preference === 'system' ? 'Theme: System'
339
+ : preference === 'light' ? 'Theme: Light'
340
+ : 'Theme: Dark';
341
+
342
+ return (
343
+ <button
344
+ onClick={cycleTheme}
345
+ aria-label={label}
346
+ title={label}
347
+ type="button"
348
+ >
349
+ {preference === 'system' && <MonitorIcon aria-hidden="true" />}
350
+ {preference === 'light' && <SunIcon aria-hidden="true" />}
351
+ {preference === 'dark' && <MoonIcon aria-hidden="true" />}
352
+ </button>
353
+ );
354
+ }
355
+ ```
356
+
357
+ **Alternative: dropdown select for clarity:**
358
+ ```tsx
359
+ function ThemeSelect() {
360
+ const [preference, setPreference] = useState<ThemePreference>(loadThemePreference());
361
+
362
+ function handleChange(value: ThemePreference) {
363
+ setPreference(value);
364
+ saveThemePreference(value);
365
+ document.documentElement.setAttribute('data-theme', resolveTheme(value));
366
+ }
367
+
368
+ return (
369
+ <label>
370
+ Theme
371
+ <select value={preference} onChange={(e) => handleChange(e.target.value as ThemePreference)}>
372
+ <option value="system">System</option>
373
+ <option value="light">Light</option>
374
+ <option value="dark">Dark</option>
375
+ </select>
376
+ </label>
377
+ );
378
+ }
379
+ ```
380
+
381
+ ---
382
+
383
+ ## Tailwind CSS Dark Mode
384
+
385
+ ### Class Strategy (Recommended for User Control)
386
+
387
+ ```javascript
388
+ // tailwind.config.js
389
+ export default {
390
+ darkMode: 'selector', // Tailwind v4: uses [data-theme="dark"] or .dark
391
+ };
392
+ ```
393
+
394
+ ```html
395
+ <!-- Usage in templates -->
396
+ <div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
397
+ <p class="text-gray-600 dark:text-gray-400">Secondary text</p>
398
+ <button class="bg-blue-600 dark:bg-blue-400 text-white dark:text-black">
399
+ Action
400
+ </button>
401
+ </div>
402
+ ```
403
+
404
+ ### Combining Tailwind with CSS Custom Properties
405
+
406
+ Use Tailwind for layout/spacing and custom properties for theme colors:
407
+
408
+ ```css
409
+ /* In your Tailwind CSS */
410
+ @theme {
411
+ --color-surface: var(--color-bg-primary);
412
+ --color-on-surface: var(--color-text-primary);
413
+ }
414
+ ```
415
+
416
+ ```html
417
+ <div class="bg-surface text-on-surface p-4 rounded-lg">
418
+ Theme-aware via tokens, layout via Tailwind
419
+ </div>
420
+ ```
421
+
422
+ ---
423
+
424
+ ## Smooth Theme Transitions
425
+
426
+ ```css
427
+ /* Apply transition only to theme-related properties */
428
+ * {
429
+ transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease,
430
+ box-shadow 0.2s ease;
431
+ }
432
+
433
+ /* Disable transitions during theme load to prevent FOUC */
434
+ html.no-transitions * {
435
+ transition: none !important;
436
+ }
437
+
438
+ /* Respect reduced motion */
439
+ @media (prefers-reduced-motion: reduce) {
440
+ * {
441
+ transition: none !important;
442
+ }
443
+ }
444
+ ```
445
+
446
+ **Apply no-transitions class during theme switch:**
447
+ ```typescript
448
+ function setTheme(theme: ResolvedTheme): void {
449
+ document.documentElement.classList.add('no-transitions');
450
+ document.documentElement.setAttribute('data-theme', theme);
451
+
452
+ // Re-enable transitions after a single frame
453
+ requestAnimationFrame(() => {
454
+ requestAnimationFrame(() => {
455
+ document.documentElement.classList.remove('no-transitions');
456
+ });
457
+ });
458
+ }
459
+ ```
460
+
461
+ ---
462
+
463
+ ## Color Palette Design for Dual Themes
464
+
465
+ ### Design Principles
466
+
467
+ 1. **Do not just invert colors.** Dark mode needs its own palette with adjusted saturation and lightness.
468
+ 2. **Reduce saturation in dark mode.** Fully saturated colors on dark backgrounds cause eye strain.
469
+ 3. **Elevate with lighter surfaces, not shadows.** In dark mode, higher elevation = lighter surface (Material Design principle).
470
+ 4. **Test with real content.** A palette that looks good on a demo page may fail with actual text and images.
471
+
472
+ ### Common Mistakes
473
+
474
+ | Mistake | Fix |
475
+ |---------|-----|
476
+ | Pure black (#000) background | Use very dark gray (#0d0d0d or #121212) |
477
+ | White text on pure black (#fff on #000) | Use off-white (#eeeeee) for less harsh contrast |
478
+ | Same border color in both themes | Borders need to be lighter in dark mode |
479
+ | Colored backgrounds unchanged | Adjust saturation and lightness per theme |
480
+
481
+ ---
482
+
483
+ ## Testing Themes
484
+
485
+ ### Automated
486
+
487
+ ```typescript
488
+ // Playwright test for both themes
489
+ import { test, expect } from '@playwright/test';
490
+
491
+ for (const theme of ['light', 'dark'] as const) {
492
+ test(`renders correctly in ${theme} mode`, async ({ page }) => {
493
+ await page.emulateMedia({ colorScheme: theme });
494
+ await page.goto('/');
495
+ await expect(page).toHaveScreenshot(`homepage-${theme}.png`);
496
+ });
497
+ }
498
+ ```
499
+
500
+ ### Manual Checklist
501
+
502
+ - [ ] Toggle between light, dark, and system --- no FOUC
503
+ - [ ] All text meets contrast requirements in both themes
504
+ - [ ] Images and icons are visible and appropriate in both themes
505
+ - [ ] Form inputs, borders, and placeholders are visible in both themes
506
+ - [ ] Status colors (error, success, warning) are distinguishable in both themes
507
+ - [ ] Third-party widgets adapt or remain usable
508
+ - [ ] Preference persists across page reloads and sessions
509
+ - [ ] System preference change is reflected when set to "system"
510
+
511
+ ## References
512
+
513
+ - [Material Design Dark Theme](https://m3.material.io/styles/color/dark-theme)
514
+ - [Tailwind CSS Dark Mode](https://tailwindcss.com/docs/dark-mode)
515
+ - [prefers-color-scheme on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
516
+ - [A Complete Guide to Dark Mode on the Web](https://css-tricks.com/a-complete-guide-to-dark-mode-on-the-web/)
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: design-reference-data
3
+ description: "Searchable reference database of 58 design styles, color palettes, typography pairings, chart styles, and UX patterns. Use during /create-prd-design-system to provide data-backed design recommendations after the direction interview."
4
+ ---
5
+
6
+ # Design Reference Database
7
+
8
+ > **When to use:** During `/create-prd-design-system`, after the user has selected a design direction via the `design-direction` skill. Query this database to ground your design system recommendations in concrete, researched data rather than relying on training data defaults.
9
+
10
+ ## What This Skill Contains
11
+
12
+ ### Data Files (`data/`)
13
+
14
+ | File | Records | What It Contains |
15
+ |---|---|---|
16
+ | `styles.csv` | 58 | Design styles with colors, effects, accessibility, framework compat, complexity, best-for/don't-use-for |
17
+ | `colors.csv` | — | Color palettes organized by mood, industry, and design style |
18
+ | `typography.csv` | — | Font pairings by style category with usage guidance |
19
+ | `charts.csv` | — | Chart and data visualization style patterns |
20
+ | `ux-guidelines.csv` | — | UX patterns and interaction design reference |
21
+ | `landing.csv` | — | Landing page design patterns and conversion strategies |
22
+
23
+ ### Search Scripts (`scripts/`)
24
+
25
+ | Script | Purpose |
26
+ |---|---|
27
+ | `search.py` | CLI entry point — accepts queries, routes to core |
28
+ | `core.py` | BM25 search engine — loads CSVs, scores matches |
29
+ | `design_system.py` | Generates complete design system recommendations from search results |
30
+
31
+ ## Pipeline Integration
32
+
33
+ ### When in the Pipeline
34
+
35
+ ```
36
+ /create-prd-design-system
37
+ ├── Step 1: design-direction interview (5 questions)
38
+ ├── Step 2: User picks direction
39
+ ├── ★ Step 3: Query this database ← YOU ARE HERE
40
+ ├── Step 4: brand-guidelines locks with data-backed values
41
+ └── Step 5: design-system.md output
42
+ ```
43
+
44
+ ### How to Use
45
+
46
+ After the user confirms their design direction, run these searches to get concrete reference data:
47
+
48
+ #### 1. Find matching design styles
49
+
50
+ ```bash
51
+ python .agent/skills/design-reference-data/scripts/search.py \
52
+ "<direction + project context>" \
53
+ --domain style --max-results 5
54
+ ```
55
+
56
+ Example: `"modern dark mode SaaS dashboard"` or `"warm friendly wellness app"`
57
+
58
+ #### 2. Find specific color palettes
59
+
60
+ ```bash
61
+ python .agent/skills/design-reference-data/scripts/search.py \
62
+ "<mood + industry>" \
63
+ --domain color --max-results 3
64
+ ```
65
+
66
+ Example: `"professional trust-building fintech"` or `"vibrant playful consumer"`
67
+
68
+ #### 3. Find typography pairings
69
+
70
+ ```bash
71
+ python .agent/skills/design-reference-data/scripts/search.py \
72
+ "<style + readability needs>" \
73
+ --domain typography --max-results 3
74
+ ```
75
+
76
+ Example: `"clean serif editorial"` or `"modern sans-serif technical"`
77
+
78
+ #### 4. Generate full design system recommendation
79
+
80
+ ```bash
81
+ python .agent/skills/design-reference-data/scripts/search.py \
82
+ "<project description>" \
83
+ --design-system -p "ProjectName"
84
+ ```
85
+
86
+ This returns a comprehensive recommendation covering style, colors, typography, and effects.
87
+
88
+ ### Using the Results
89
+
90
+ Search results include:
91
+ - **Primary/Secondary Colors** — exact hex values
92
+ - **Effects & Animation** — specific CSS patterns and timing recommendations
93
+ - **Best For / Don't Use For** — context-appropriate usage guidance
94
+ - **Framework Compatibility** — scores for Tailwind, Bootstrap, MUI, etc.
95
+ - **Accessibility Rating** — WCAG compliance level
96
+ - **Performance Rating** — render cost assessment
97
+ - **Complexity** — Low/Medium/High implementation effort
98
+
99
+ Feed these results into the `brand-guidelines` skill to lock specific, researched values instead of AI-generated guesses.
100
+
101
+ ## Important Notes
102
+
103
+ - **This is a reference, not a mandate.** The user's design direction (from `design-direction` skill) always takes priority. Use this data to provide concrete options within their chosen direction.
104
+ - **Cross-reference with `design-anti-cliche`** — if search results return a style that matches a Safe Harbor forbidden default (e.g., glassmorphism), note the conflict and present alternatives.
105
+ - **The database is curated, not exhaustive.** If the user's vision doesn't map to any style here, don't force-fit. Use the data as inspiration, not constraint.
@@ -0,0 +1,26 @@
1
+ No,Data Type,Keywords,Best Chart Type,Secondary Options,Color Guidance,Performance Impact,Accessibility Notes,Library Recommendation,Interactive Level
2
+ 1,Trend Over Time,"trend, time-series, line, growth, timeline, progress",Line Chart,"Area Chart, Smooth Area",Primary: #0080FF. Multiple series: use distinct colors. Fill: 20% opacity,⚡ Excellent (optimized),✓ Clear line patterns for colorblind users. Add pattern overlays.,"Chart.js, Recharts, ApexCharts",Hover + Zoom
3
+ 2,Compare Categories,"compare, categories, bar, comparison, ranking",Bar Chart (Horizontal or Vertical),"Column Chart, Grouped Bar",Each bar: distinct color. Category: grouped same color. Sorted: descending order,⚡ Excellent,✓ Easy to compare. Add value labels on bars for clarity.,"Chart.js, Recharts, D3.js",Hover + Sort
4
+ 3,Part-to-Whole,"part-to-whole, pie, donut, percentage, proportion, share",Pie Chart or Donut,"Stacked Bar, Treemap",Colors: 5-6 max. Contrasting palette. Large slices first. Use labels.,⚡ Good (limit 6 slices),⚠ Hard for accessibility. Better: Stacked bar with legend. Avoid pie if >5 items.,"Chart.js, Recharts, D3.js",Hover + Drill
5
+ 4,Correlation/Distribution,"correlation, distribution, scatter, relationship, pattern",Scatter Plot or Bubble Chart,"Heat Map, Matrix",Color axis: gradient (blue-red). Size: relative. Opacity: 0.6-0.8 to show density,⚠ Moderate (many points),⚠ Provide data table alternative. Use pattern + color distinction.,"D3.js, Plotly, Recharts",Hover + Brush
6
+ 5,Heatmap/Intensity,"heatmap, heat-map, intensity, density, matrix",Heat Map or Choropleth,"Grid Heat Map, Bubble Heat",Gradient: Cool (blue) to Hot (red). Scale: clear legend. Divergent for ±data,⚡ Excellent (color CSS),⚠ Colorblind: Use pattern overlay. Provide numerical legend.,"D3.js, Plotly, ApexCharts",Hover + Zoom
7
+ 6,Geographic Data,"geographic, map, location, region, geo, spatial","Choropleth Map, Bubble Map",Geographic Heat Map,Regional: single color gradient or categorized colors. Legend: clear scale,⚠ Moderate (rendering),⚠ Include text labels for regions. Provide data table alternative.,"D3.js, Mapbox, Leaflet",Pan + Zoom + Drill
8
+ 7,Funnel/Flow,funnel/flow,"Funnel Chart, Sankey",Waterfall (for flows),Stages: gradient (starting color → ending color). Show conversion %,⚡ Good,✓ Clear stage labels + percentages. Good for accessibility if labeled.,"D3.js, Recharts, Custom SVG",Hover + Drill
9
+ 8,Performance vs Target,performance-vs-target,Gauge Chart or Bullet Chart,"Dial, Thermometer",Performance: Red→Yellow→Green gradient. Target: marker line. Threshold colors,⚡ Good,✓ Add numerical value + percentage label beside gauge.,"D3.js, ApexCharts, Custom SVG",Hover
10
+ 9,Time-Series Forecast,time-series-forecast,Line with Confidence Band,Ribbon Chart,Actual: solid line #0080FF. Forecast: dashed #FF9500. Band: light shading,⚡ Good,✓ Clearly distinguish actual vs forecast. Add legend.,"Chart.js, ApexCharts, Plotly",Hover + Toggle
11
+ 10,Anomaly Detection,anomaly-detection,Line Chart with Highlights,Scatter with Alert,Normal: blue #0080FF. Anomaly: red #FF0000 circle/square marker + alert,⚡ Good,✓ Circle/marker for anomalies. Add text alert annotation.,"D3.js, Plotly, ApexCharts",Hover + Alert
12
+ 11,Hierarchical/Nested Data,hierarchical/nested-data,Treemap,"Sunburst, Nested Donut, Icicle",Parent: distinct hues. Children: lighter shades. White borders 2-3px.,⚠ Moderate,⚠ Poor - provide table alternative. Label large areas.,"D3.js, Recharts, ApexCharts",Hover + Drilldown
13
+ 12,Flow/Process Data,flow/process-data,Sankey Diagram,"Alluvial, Chord Diagram",Gradient from source to target. Opacity 0.4-0.6 for flows.,⚠ Moderate,⚠ Poor - provide flow table alternative.,"D3.js (d3-sankey), Plotly",Hover + Drilldown
14
+ 13,Cumulative Changes,cumulative-changes,Waterfall Chart,"Stacked Bar, Cascade",Increases: #4CAF50. Decreases: #F44336. Start: #2196F3. End: #0D47A1.,⚡ Good,✓ Good - clear directional colors with labels.,"ApexCharts, Highcharts, Plotly",Hover
15
+ 14,Multi-Variable Comparison,multi-variable-comparison,Radar/Spider Chart,"Parallel Coordinates, Grouped Bar",Single: #0080FF 20% fill. Multiple: distinct colors per dataset.,⚡ Good,⚠ Moderate - limit 5-8 axes. Add data table.,"Chart.js, Recharts, ApexCharts",Hover + Toggle
16
+ 15,Stock/Trading OHLC,stock/trading-ohlc,Candlestick Chart,"OHLC Bar, Heikin-Ashi",Bullish: #26A69A. Bearish: #EF5350. Volume: 40% opacity below.,⚡ Good,⚠ Moderate - provide OHLC data table.,"Lightweight Charts (TradingView), ApexCharts",Real-time + Hover + Zoom
17
+ 16,Relationship/Connection Data,relationship/connection-data,Network Graph,"Hierarchical Tree, Adjacency Matrix",Node types: categorical colors. Edges: #90A4AE 60% opacity.,❌ Poor (500+ nodes struggles),❌ Very Poor - provide adjacency list alternative.,"D3.js (d3-force), Vis.js, Cytoscape.js",Drilldown + Hover + Drag
18
+ 17,Distribution/Statistical,distribution/statistical,Box Plot,"Violin Plot, Beeswarm",Box: #BBDEFB. Border: #1976D2. Median: #D32F2F. Outliers: #F44336.,⚡ Excellent,"✓ Good - include stats table (min, Q1, median, Q3, max).","Plotly, D3.js, Chart.js (plugin)",Hover
19
+ 18,Performance vs Target (Compact),performance-vs-target-(compact),Bullet Chart,"Gauge, Progress Bar","Ranges: #FFCDD2, #FFF9C4, #C8E6C9. Performance: #1976D2. Target: black 3px.",⚡ Excellent,✓ Excellent - compact with clear values.,"D3.js, Plotly, Custom SVG",Hover
20
+ 19,Proportional/Percentage,proportional/percentage,Waffle Chart,"Pictogram, Stacked Bar 100%",10x10 grid. 3-5 categories max. 2-3px spacing between squares.,⚡ Good,✓ Good - better than pie for accessibility.,"D3.js, React-Waffle, Custom CSS Grid",Hover
21
+ 20,Hierarchical Proportional,hierarchical-proportional,Sunburst Chart,"Treemap, Icicle, Circle Packing",Center to outer: darker to lighter. 15-20% lighter per level.,⚠ Moderate,⚠ Poor - provide hierarchy table alternative.,"D3.js (d3-hierarchy), Recharts, ApexCharts",Drilldown + Hover
22
+ 21,Root Cause Analysis,"root cause, decomposition, tree, hierarchy, drill-down, ai-split",Decomposition Tree,"Decision Tree, Flow Chart",Nodes: #2563EB (Primary) vs #EF4444 (Negative impact). Connectors: Neutral grey.,⚠ Moderate (calculation heavy),✓ clear hierarchy. Allow keyboard navigation for nodes.,"Power BI (native), React-Flow, Custom D3.js",Drill + Expand
23
+ 22,3D Spatial Data,"3d, spatial, immersive, terrain, molecular, volumetric",3D Scatter/Surface Plot,"Volumetric Rendering, Point Cloud",Depth cues: lighting/shading. Z-axis: color gradient (cool to warm).,❌ Heavy (WebGL required),❌ Poor - requires alternative 2D view or data table.,"Three.js, Deck.gl, Plotly 3D",Rotate + Zoom + VR
24
+ 23,Real-Time Streaming,"streaming, real-time, ticker, live, velocity, pulse",Streaming Area Chart,"Ticker Tape, Moving Gauge",Current: Bright Pulse (#00FF00). History: Fading opacity. Grid: Dark.,⚡ Optimized (canvas/webgl),⚠ Flashing elements - provide pause button. High contrast.,Smoothed D3.js, CanvasJS, SciChart,Real-time + Pause
25
+ 24,Sentiment/Emotion,"sentiment, emotion, nlp, opinion, feeling",Word Cloud with Sentiment,"Sentiment Arc, Radar Chart",Positive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Size = Frequency.,⚡ Good,⚠ Word clouds poor for screen readers. Use list view.,"D3-cloud, Highcharts, Nivo",Hover + Filter
26
+ 25,Process Mining,"process, mining, variants, path, bottleneck, log",Process Map / Graph,"Directed Acyclic Graph (DAG), Petri Net",Happy path: #10B981 (Thick). Deviations: #F59E0B (Thin). Bottlenecks: #EF4444.,⚠ Moderate to Heavy,⚠ Complex graphs hard to navigate. Provide path summary.,"React-Flow, Cytoscape.js, Recharts",Drag + Node-Click