@biggora/claude-plugins 1.2.0 → 1.2.2

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 (185) hide show
  1. package/README.md +11 -4
  2. package/package.json +1 -1
  3. package/registry/registry.json +319 -244
  4. package/specs/coding.md +24 -0
  5. package/specs/pod.md +2 -0
  6. package/src/skills/captcha/README.md +221 -0
  7. package/src/skills/captcha/SKILL.md +355 -0
  8. package/src/skills/captcha/references/captcha-types.md +254 -0
  9. package/src/skills/captcha/references/services.md +172 -0
  10. package/src/skills/captcha/references/stealth.md +238 -0
  11. package/src/skills/captcha/scripts/solve_captcha.py +323 -0
  12. package/src/skills/captcha/scripts/solve_image_grid.py +350 -0
  13. package/src/skills/google-merchant-api/SKILL.md +581 -0
  14. package/src/skills/google-merchant-api/references/accounts.md +247 -0
  15. package/src/skills/google-merchant-api/references/content-api-legacy.md +216 -0
  16. package/src/skills/google-merchant-api/references/datasources.md +233 -0
  17. package/src/skills/google-merchant-api/references/inventories.md +201 -0
  18. package/src/skills/google-merchant-api/references/migration.md +267 -0
  19. package/src/skills/google-merchant-api/references/products.md +316 -0
  20. package/src/skills/google-merchant-api/references/promotions.md +201 -0
  21. package/src/skills/google-merchant-api/references/reports.md +240 -0
  22. package/src/skills/lv-aggregators-api/SKILL.md +113 -0
  23. package/src/skills/lv-aggregators-api/references/integration-guide.md +368 -0
  24. package/src/skills/lv-aggregators-api/references/kurpirkt.md +103 -0
  25. package/src/skills/lv-aggregators-api/references/salidzini.md +122 -0
  26. package/src/skills/tailwindcss-best-practices/SKILL.md +180 -0
  27. package/src/skills/tailwindcss-best-practices/references/best-practices-utility-patterns.md +87 -0
  28. package/src/skills/tailwindcss-best-practices/references/core-installation.md +109 -0
  29. package/src/skills/tailwindcss-best-practices/references/core-preflight.md +200 -0
  30. package/src/skills/tailwindcss-best-practices/references/core-responsive.md +163 -0
  31. package/src/skills/tailwindcss-best-practices/references/core-source-detection.md +114 -0
  32. package/src/skills/tailwindcss-best-practices/references/core-theme.md +108 -0
  33. package/src/skills/tailwindcss-best-practices/references/core-utility-classes.md +59 -0
  34. package/src/skills/tailwindcss-best-practices/references/core-variants.md +204 -0
  35. package/src/skills/tailwindcss-best-practices/references/effects-form-controls.md +76 -0
  36. package/src/skills/tailwindcss-best-practices/references/effects-mask.md +91 -0
  37. package/src/skills/tailwindcss-best-practices/references/effects-scroll-snap.md +59 -0
  38. package/src/skills/tailwindcss-best-practices/references/effects-text-shadow.md +78 -0
  39. package/src/skills/tailwindcss-best-practices/references/effects-transition-animation.md +80 -0
  40. package/src/skills/tailwindcss-best-practices/references/effects-visibility-interactivity.md +82 -0
  41. package/src/skills/tailwindcss-best-practices/references/features-content-detection.md +175 -0
  42. package/src/skills/tailwindcss-best-practices/references/features-custom-styles.md +203 -0
  43. package/src/skills/tailwindcss-best-practices/references/features-dark-mode.md +137 -0
  44. package/src/skills/tailwindcss-best-practices/references/features-functions-directives.md +241 -0
  45. package/src/skills/tailwindcss-best-practices/references/features-upgrade.md +160 -0
  46. package/src/skills/tailwindcss-best-practices/references/layout-aspect-ratio.md +39 -0
  47. package/src/skills/tailwindcss-best-practices/references/layout-columns.md +80 -0
  48. package/src/skills/tailwindcss-best-practices/references/layout-display.md +110 -0
  49. package/src/skills/tailwindcss-best-practices/references/layout-flexbox.md +112 -0
  50. package/src/skills/tailwindcss-best-practices/references/layout-grid.md +87 -0
  51. package/src/skills/tailwindcss-best-practices/references/layout-height.md +97 -0
  52. package/src/skills/tailwindcss-best-practices/references/layout-inset.md +103 -0
  53. package/src/skills/tailwindcss-best-practices/references/layout-logical-properties.md +92 -0
  54. package/src/skills/tailwindcss-best-practices/references/layout-margin.md +126 -0
  55. package/src/skills/tailwindcss-best-practices/references/layout-min-max-sizing.md +63 -0
  56. package/src/skills/tailwindcss-best-practices/references/layout-object-fit-position.md +64 -0
  57. package/src/skills/tailwindcss-best-practices/references/layout-overflow.md +57 -0
  58. package/src/skills/tailwindcss-best-practices/references/layout-padding.md +77 -0
  59. package/src/skills/tailwindcss-best-practices/references/layout-position.md +85 -0
  60. package/src/skills/tailwindcss-best-practices/references/layout-tables.md +67 -0
  61. package/src/skills/tailwindcss-best-practices/references/layout-width.md +102 -0
  62. package/src/skills/tailwindcss-best-practices/references/transform-base.md +68 -0
  63. package/src/skills/tailwindcss-best-practices/references/transform-rotate.md +70 -0
  64. package/src/skills/tailwindcss-best-practices/references/transform-scale.md +83 -0
  65. package/src/skills/tailwindcss-best-practices/references/transform-skew.md +62 -0
  66. package/src/skills/tailwindcss-best-practices/references/transform-translate.md +77 -0
  67. package/src/skills/tailwindcss-best-practices/references/typography-font-text.md +142 -0
  68. package/src/skills/tailwindcss-best-practices/references/typography-list-style.md +65 -0
  69. package/src/skills/tailwindcss-best-practices/references/typography-text-align.md +60 -0
  70. package/src/skills/tailwindcss-best-practices/references/visual-background.md +76 -0
  71. package/src/skills/tailwindcss-best-practices/references/visual-border.md +108 -0
  72. package/src/skills/tailwindcss-best-practices/references/visual-effects.md +111 -0
  73. package/src/skills/tailwindcss-best-practices/references/visual-svg.md +82 -0
  74. package/src/skills/test-mobile-app/SKILL.md +11 -6
  75. package/src/skills/test-mobile-app/scripts/analyze_apk.py +15 -4
  76. package/src/skills/test-mobile-app/scripts/check_environment.py +5 -5
  77. package/src/skills/test-mobile-app/scripts/run_tests.py +1 -1
  78. package/src/skills/test-web-ui/SKILL.md +264 -84
  79. package/src/skills/test-web-ui/scripts/discover.py +25 -12
  80. package/src/skills/test-web-ui/scripts/run_tests.py +3 -2
  81. package/src/skills/vite-best-practices/SKILL.md +115 -0
  82. package/src/skills/vite-best-practices/references/build-and-ssr.md +255 -0
  83. package/src/skills/vite-best-practices/references/core-config.md +231 -0
  84. package/src/skills/vite-best-practices/references/core-features.md +222 -0
  85. package/src/skills/vite-best-practices/references/core-plugin-api.md +294 -0
  86. package/src/skills/vite-best-practices/references/environment-api.md +108 -0
  87. package/src/skills/vite-best-practices/references/rolldown-migration.md +242 -0
  88. package/codex-cli-workspace/iteration-1/benchmark.json +0 -122
  89. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/eval_metadata.json +0 -13
  90. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/grading.json +0 -52
  91. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/outputs/response.md +0 -163
  92. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/timing.json +0 -5
  93. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/grading.json +0 -58
  94. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/outputs/response.md +0 -151
  95. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/timing.json +0 -5
  96. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -13
  97. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -52
  98. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -86
  99. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  100. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -58
  101. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  102. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  103. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/eval_metadata.json +0 -13
  104. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/grading.json +0 -52
  105. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/outputs/response.md +0 -130
  106. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/timing.json +0 -5
  107. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/grading.json +0 -64
  108. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/outputs/response.md +0 -209
  109. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/timing.json +0 -5
  110. package/codex-cli-workspace/iteration-1/review.html +0 -1325
  111. package/gemini-cli-workspace/iteration-1/benchmark.json +0 -86
  112. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/eval_metadata.json +0 -37
  113. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/grading.json +0 -37
  114. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/outputs/response.md +0 -401
  115. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/timing.json +0 -5
  116. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/grading.json +0 -37
  117. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/outputs/response.md +0 -405
  118. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/timing.json +0 -5
  119. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -37
  120. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  121. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -212
  122. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  123. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  124. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -427
  125. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  126. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/eval_metadata.json +0 -32
  127. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  128. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -171
  129. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  130. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  131. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -199
  132. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  133. package/gemini-cli-workspace/iteration-1/review.html +0 -1325
  134. package/gemini-cli-workspace/iteration-2/benchmark.json +0 -173
  135. package/gemini-cli-workspace/iteration-2/benchmark.md +0 -28
  136. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/eval_metadata.json +0 -37
  137. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/grading.json +0 -37
  138. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/outputs/response.md +0 -195
  139. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/timing.json +0 -5
  140. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/grading.json +0 -37
  141. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/outputs/response.md +0 -377
  142. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/timing.json +0 -5
  143. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/eval_metadata.json +0 -37
  144. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  145. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -127
  146. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  147. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  148. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  149. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  150. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/eval_metadata.json +0 -32
  151. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  152. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -91
  153. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  154. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  155. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -112
  156. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  157. package/gemini-cli-workspace/iteration-2/eval-viewer.html +0 -1325
  158. package/screen-recording-workspace/evals.json +0 -41
  159. package/screen-recording-workspace/iteration-1/benchmark.json +0 -102
  160. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/eval_metadata.json +0 -31
  161. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/grading.json +0 -11
  162. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/outputs/demo.mp4 +0 -0
  163. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/timing.json +0 -5
  164. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/grading.json +0 -11
  165. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/outputs/demo.mp4 +0 -0
  166. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/timing.json +0 -5
  167. package/screen-recording-workspace/iteration-1/eval-1-region-audio/eval_metadata.json +0 -31
  168. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/grading.json +0 -11
  169. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/outputs/region_capture.mp4 +0 -0
  170. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/timing.json +0 -5
  171. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/grading.json +0 -11
  172. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/outputs/region_capture.mp4 +0 -0
  173. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/timing.json +0 -5
  174. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/eval_metadata.json +0 -31
  175. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/grading.json +0 -11
  176. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/outputs/fallback_recording.mp4 +0 -0
  177. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/timing.json +0 -5
  178. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/grading.json +0 -11
  179. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/fallback_recording.mp4 +0 -0
  180. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/record_screen.py +0 -67
  181. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/timing.json +0 -5
  182. package/screen-recording-workspace/iteration-1/review.html +0 -1325
  183. package/src/skills/codex-cli/evals/evals.json +0 -47
  184. package/src/skills/gemini-cli/evals/evals.json +0 -46
  185. package/src/skills/tm-search/evals/evals.json +0 -23
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: core-responsive
3
+ description: Building responsive designs with Tailwind's mobile-first breakpoint system and container queries
4
+ ---
5
+
6
+ # Responsive Design
7
+
8
+ Every utility class in Tailwind can be applied conditionally at different breakpoints using responsive variants.
9
+
10
+ ## Mobile-First Breakpoints
11
+
12
+ Tailwind uses a mobile-first approach. Unprefixed utilities apply to all screen sizes, while prefixed utilities apply at that breakpoint and above.
13
+
14
+ ```html
15
+ <!-- Center text on mobile, left align on sm screens and up -->
16
+ <div class="text-center sm:text-left">Content</div>
17
+ ```
18
+
19
+ ## Default Breakpoints
20
+
21
+ | Breakpoint | Minimum Width | CSS |
22
+ |------------|---------------|-----|
23
+ | `sm` | 40rem (640px) | `@media (width >= 40rem)` |
24
+ | `md` | 48rem (768px) | `@media (width >= 48rem)` |
25
+ | `lg` | 64rem (1024px) | `@media (width >= 64rem)` |
26
+ | `xl` | 80rem (1280px) | `@media (width >= 80rem)` |
27
+ | `2xl` | 96rem (1536px) | `@media (width >= 96rem)` |
28
+
29
+ ## Usage
30
+
31
+ Prefix any utility with a breakpoint name:
32
+
33
+ ```html
34
+ <!-- Width of 16 by default, 32 on medium screens, 48 on large screens -->
35
+ <img class="w-16 md:w-32 lg:w-48" src="..." />
36
+ ```
37
+
38
+ ## Example: Responsive Card
39
+
40
+ ```html
41
+ <div class="mx-auto max-w-md md:max-w-2xl">
42
+ <div class="md:flex">
43
+ <div class="md:shrink-0">
44
+ <img class="h-48 w-full object-cover md:h-full md:w-48" src="..." />
45
+ </div>
46
+ <div class="p-8">
47
+ <h2 class="text-lg font-semibold">Title</h2>
48
+ <p class="text-gray-500">Description</p>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ ```
53
+
54
+ ## Targeting Mobile Screens
55
+
56
+ Use unprefixed utilities for mobile, not `sm:`. Think of `sm:` as "at the small breakpoint", not "on small screens".
57
+
58
+ ```html
59
+ <!-- ❌ Only centers on screens 640px+, not mobile -->
60
+ <div class="sm:text-center"></div>
61
+
62
+ <!-- ✅ Centers on mobile, left aligns on 640px+ -->
63
+ <div class="text-center sm:text-left"></div>
64
+ ```
65
+
66
+ ## Breakpoint Ranges
67
+
68
+ Target a specific breakpoint range by stacking responsive variants with `max-*` variants:
69
+
70
+ ```html
71
+ <!-- Only applies between md and xl -->
72
+ <div class="md:max-xl:flex">Content</div>
73
+ ```
74
+
75
+ ## Max-Width Variants
76
+
77
+ Tailwind generates `max-*` variants for each breakpoint:
78
+
79
+ | Variant | Media Query |
80
+ |---------|-------------|
81
+ | `max-sm` | `@media (width < 40rem)` |
82
+ | `max-md` | `@media (width < 48rem)` |
83
+ | `max-lg` | `@media (width < 64rem)` |
84
+ | `max-xl` | `@media (width < 80rem)` |
85
+ | `max-2xl` | `@media (width < 96rem)` |
86
+
87
+ ## Custom Breakpoints
88
+
89
+ Add custom breakpoints using `--breakpoint-*` theme variables:
90
+
91
+ ```css
92
+ @theme {
93
+ --breakpoint-xs: 30rem;
94
+ --breakpoint-3xl: 120rem;
95
+ }
96
+ ```
97
+
98
+ ```html
99
+ <div class="xs:grid-cols-2 3xl:grid-cols-6">Content</div>
100
+ ```
101
+
102
+ ## Arbitrary Breakpoints
103
+
104
+ Use arbitrary values for one-off breakpoints:
105
+
106
+ ```html
107
+ <div class="min-[320px]:text-center max-[600px]:bg-sky-300">
108
+ Content
109
+ </div>
110
+ ```
111
+
112
+ ## Container Queries
113
+
114
+ Style elements based on parent container size instead of viewport:
115
+
116
+ ```html
117
+ <!-- Mark container -->
118
+ <div class="@container">
119
+ <!-- Style based on container size -->
120
+ <div class="flex flex-col @md:flex-row">
121
+ Content
122
+ </div>
123
+ </div>
124
+ ```
125
+
126
+ ### Container Query Variants
127
+
128
+ | Variant | Minimum Width |
129
+ |---------|---------------|
130
+ | `@3xs` | 16rem (256px) |
131
+ | `@xs` | 20rem (320px) |
132
+ | `@sm` | 24rem (384px) |
133
+ | `@md` | 28rem (448px) |
134
+ | `@lg` | 32rem (512px) |
135
+ | `@xl` | 36rem (576px) |
136
+ | `@2xl` | 42rem (672px) |
137
+ | `@3xl` | 48rem (768px) |
138
+ | ... up to `@7xl` | 80rem (1280px) |
139
+
140
+ ### Named Containers
141
+
142
+ Name containers to target specific ones in nested structures:
143
+
144
+ ```html
145
+ <div class="@container/main">
146
+ <div class="flex flex-row @sm/main:flex-col">
147
+ Content
148
+ </div>
149
+ </div>
150
+ ```
151
+
152
+ ## Key Points
153
+
154
+ - Mobile-first: unprefixed = mobile, prefixed = breakpoint and up
155
+ - Use unprefixed utilities for mobile, not `sm:`
156
+ - Stack variants for complex responsive behavior
157
+ - Container queries enable component-based responsive design
158
+ - Customize breakpoints with theme variables
159
+
160
+ <!--
161
+ Source references:
162
+ - https://tailwindcss.com/docs/responsive-design
163
+ -->
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: core-source-detection
3
+ description: How Tailwind v4 detects classes in source files, @source directives, @source not, and @source inline() for safelisting
4
+ ---
5
+
6
+ # Source Detection & Configuration
7
+
8
+ Tailwind v4 automatically scans your project for utility classes. This page covers how detection works and how to customize it.
9
+
10
+ ## Automatic Detection
11
+
12
+ By default, Tailwind scans all files in your project except:
13
+
14
+ - Files matching `.gitignore` patterns
15
+ - `node_modules/` directory (ignored since v4.1)
16
+ - Binary files (images, videos, zips)
17
+ - CSS files
18
+ - Package manager lock files
19
+
20
+ Files are scanned as **plain text** — Tailwind does not parse your code. It looks for token patterns that match utility class names.
21
+
22
+ ## Source Configuration
23
+
24
+ ### Register additional sources
25
+
26
+ Scan files outside the project root (e.g., UI library in node_modules):
27
+
28
+ ```css
29
+ @import "tailwindcss";
30
+ @source "../node_modules/@acmecorp/ui-lib";
31
+ ```
32
+
33
+ ### Set a base path
34
+
35
+ Restrict scanning to a specific directory (useful for monorepos):
36
+
37
+ ```css
38
+ @import "tailwindcss" source("../src");
39
+ ```
40
+
41
+ ### Disable automatic detection
42
+
43
+ Scan only explicitly listed paths:
44
+
45
+ ```css
46
+ @import "tailwindcss" source(none);
47
+ @source "../admin";
48
+ @source "../shared";
49
+ ```
50
+
51
+ ## Excluding Sources (v4.1+)
52
+
53
+ Exclude paths from scanning:
54
+
55
+ ```css
56
+ @source not "../src/components/legacy";
57
+ @source not "./generated";
58
+ ```
59
+
60
+ ## Safelisting with @source inline() (v4.1+)
61
+
62
+ Force generation of classes not found in source files. This replaces the v3 `safelist` config option.
63
+
64
+ ```css
65
+ /* Single utility */
66
+ @source inline("underline");
67
+
68
+ /* With variants */
69
+ @source inline("{hover:,focus:,}underline");
70
+
71
+ /* Color palette with brace expansion */
72
+ @source inline("{hover:,}bg-red-{50,{100..900..100},950}");
73
+
74
+ /* Exclude specific classes */
75
+ @source not inline("{hover:,focus:,}bg-red-{50,{100..900..100},950}");
76
+ ```
77
+
78
+ Brace expansion follows shell-style syntax:
79
+ - `{a,b,c}` — list of values
80
+ - `{100..900..100}` — range with step (100, 200, 300, ..., 900)
81
+
82
+ ## Dynamic Class Names
83
+
84
+ Because Tailwind scans files as plain text, it cannot detect dynamically constructed class names:
85
+
86
+ ```jsx
87
+ // BAD — Tailwind won't detect these
88
+ const color = 'red';
89
+ <div className={`bg-${color}-500`} />
90
+
91
+ // GOOD — Use complete class names
92
+ const colorClasses = {
93
+ red: 'bg-red-500',
94
+ blue: 'bg-blue-500',
95
+ };
96
+ <div className={colorClasses[color]} />
97
+ ```
98
+
99
+ If you must use dynamic classes, safelist them with `@source inline()`.
100
+
101
+ ## Key Points
102
+
103
+ - Automatic detection scans all non-ignored, non-binary files
104
+ - `@source "path"` adds additional scan paths
105
+ - `@source not "path"` excludes paths (v4.1+)
106
+ - `@source inline("classes")` safelists classes (v4.1+), replaces v3 `safelist`
107
+ - `source(none)` on the import disables auto-detection
108
+ - Always use complete class names — never string-interpolate utility names
109
+
110
+ <!--
111
+ Source references:
112
+ - https://tailwindcss.com/docs/detecting-classes-in-source-files
113
+ - https://tailwindcss.com/blog/tailwindcss-v4-1
114
+ -->
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: core-theme
3
+ description: Understanding theme variables, design tokens, and customizing Tailwind's default theme
4
+ ---
5
+
6
+ # Theme Variables
7
+
8
+ Theme variables are special CSS variables defined using the `@theme` directive that influence which utility classes exist in your project.
9
+
10
+ ## Overview
11
+
12
+ Theme variables store design tokens like colors, fonts, spacing, shadows, and breakpoints. They're defined using the `@theme` directive:
13
+
14
+ ```css
15
+ @import "tailwindcss";
16
+
17
+ @theme {
18
+ --color-mint-500: oklch(0.72 0.11 178);
19
+ --font-display: "Satoshi", "sans-serif";
20
+ --breakpoint-3xl: 120rem;
21
+ }
22
+ ```
23
+
24
+ Now utilities like `bg-mint-500`, `font-display`, and `3xl:grid-cols-6` become available.
25
+
26
+ ## Why @theme Instead of :root?
27
+
28
+ Theme variables aren't just CSS variables - they also instruct Tailwind to create new utility classes. Using `@theme` makes this explicit and ensures variables are defined top-level.
29
+
30
+ Use `@theme` for design tokens that map to utilities. Use `:root` for regular CSS variables that shouldn't have corresponding utilities.
31
+
32
+ ## Theme Variable Namespaces
33
+
34
+ Theme variables are organized into namespaces that map to utility classes:
35
+
36
+ | Namespace | Utility Classes |
37
+ |-----------|----------------|
38
+ | `--color-*` | `bg-red-500`, `text-sky-300`, `border-indigo-600`, etc. |
39
+ | `--font-*` | `font-sans`, `font-serif`, `font-mono` |
40
+ | `--breakpoint-*` | Responsive variants like `md:`, `lg:`, `xl:` |
41
+ | `--spacing-*` | Spacing scale for padding, margin, gap utilities |
42
+ | `--shadow-*` | `shadow-sm`, `shadow-md`, `shadow-lg` |
43
+ | `--ease-*` | Transition timing functions |
44
+
45
+ ## Extending the Default Theme
46
+
47
+ Add new theme variables to extend the default theme:
48
+
49
+ ```css
50
+ @import "tailwindcss";
51
+
52
+ @theme {
53
+ /* Add new color */
54
+ --color-brand-500: oklch(0.65 0.2 250);
55
+
56
+ /* Add new breakpoint */
57
+ --breakpoint-3xl: 120rem;
58
+
59
+ /* Add new font */
60
+ --font-display: "Satoshi", "sans-serif";
61
+ }
62
+ ```
63
+
64
+ ## Using Theme Variables
65
+
66
+ Tailwind generates CSS variables for your theme variables, so you can reference them:
67
+
68
+ ```html
69
+ <!-- Use utility classes -->
70
+ <div class="bg-brand-500 text-display">Content</div>
71
+
72
+ <!-- Reference CSS variables directly -->
73
+ <div style="background-color: var(--color-brand-500)">
74
+ Content
75
+ </div>
76
+ ```
77
+
78
+ ## Default Theme
79
+
80
+ When you import `tailwindcss`, it includes default theme variables:
81
+
82
+ ```css
83
+ @layer theme, base, components, utilities;
84
+
85
+ @import "./theme.css" layer(theme);
86
+ @import "./preflight.css" layer(base);
87
+ @import "./utilities.css" layer(utilities);
88
+ ```
89
+
90
+ The default theme includes:
91
+ - Color palette (red, blue, green, etc. with 50-950 shades)
92
+ - Font families (sans, serif, mono)
93
+ - Spacing scale
94
+ - Shadows
95
+ - Breakpoints (sm, md, lg, xl, 2xl)
96
+
97
+ ## Key Points
98
+
99
+ - Theme variables define which utilities exist in your project
100
+ - Use `@theme` directive to define design tokens
101
+ - Variables must be defined top-level, not nested
102
+ - Tailwind generates both utilities and CSS variables
103
+ - Default theme provides a solid starting point
104
+
105
+ <!--
106
+ Source references:
107
+ - https://tailwindcss.com/docs/theme
108
+ -->
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: core-utility-classes
3
+ description: Understanding Tailwind's utility-first approach and how to style elements with utility classes
4
+ ---
5
+
6
+ # Utility Classes
7
+
8
+ Tailwind CSS uses a utility-first approach where you style elements by combining many single-purpose utility classes directly in your markup.
9
+
10
+ ## Overview
11
+
12
+ Instead of writing custom CSS, you compose designs using utility classes:
13
+
14
+ ```html
15
+ <div class="mx-auto flex max-w-sm items-center gap-x-4 rounded-xl bg-white p-6 shadow-lg">
16
+ <img class="size-12 shrink-0" src="/logo.svg" alt="Logo" />
17
+ <div>
18
+ <div class="text-xl font-medium text-black">ChitChat</div>
19
+ <p class="text-gray-500">You have a new message!</p>
20
+ </div>
21
+ </div>
22
+ ```
23
+
24
+ ## Benefits
25
+
26
+ - **Faster development** - No need to come up with class names or switch between HTML and CSS files
27
+ - **Safer changes** - Adding or removing utilities only affects that element
28
+ - **Easier maintenance** - Find the element and change classes, no need to remember custom CSS
29
+ - **More portable** - Copy entire UI chunks between projects easily
30
+ - **Smaller CSS** - Utilities are reusable, so CSS doesn't grow linearly
31
+
32
+ ## Why Not Inline Styles?
33
+
34
+ Utility classes have important advantages over inline styles:
35
+
36
+ - **Design constraints** - Choose from a predefined design system instead of magic numbers
37
+ - **State variants** - Target hover, focus, and other states with variants like `hover:bg-blue-600`
38
+ - **Responsive design** - Use responsive variants like `md:flex` for media queries
39
+
40
+ ## Utility Class Structure
41
+
42
+ Utility classes follow consistent naming patterns:
43
+
44
+ - **Property-value**: `bg-blue-500`, `text-lg`, `rounded-xl`
45
+ - **Responsive**: `md:flex`, `lg:text-center`
46
+ - **State variants**: `hover:bg-blue-600`, `focus:outline-2`
47
+ - **Arbitrary values**: `top-[117px]`, `bg-[#bada55]`
48
+
49
+ ## Key Points
50
+
51
+ - Every utility class is single-purpose and composable
52
+ - Utilities can be combined with variants for conditional styling
53
+ - Use complete class names - Tailwind scans your files as plain text
54
+ - Avoid dynamically constructing class names with string interpolation
55
+
56
+ <!--
57
+ Source references:
58
+ - https://tailwindcss.com/docs/styling-with-utility-classes
59
+ -->
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: core-variants
3
+ description: Using variants to apply utilities conditionally based on states, pseudo-classes, and media queries
4
+ ---
5
+
6
+ # Variants
7
+
8
+ Variants let you apply utility classes conditionally based on states, pseudo-classes, pseudo-elements, media queries, and more.
9
+
10
+ ## Overview
11
+
12
+ Add a variant prefix to any utility class to apply it conditionally:
13
+
14
+ ```html
15
+ <!-- Apply bg-sky-700 only on hover -->
16
+ <button class="bg-sky-500 hover:bg-sky-700">Save</button>
17
+ ```
18
+
19
+ Variants can be stacked to target specific situations:
20
+
21
+ ```html
22
+ <!-- Dark mode, medium breakpoint, on hover -->
23
+ <button class="dark:md:hover:bg-fuchsia-600">Save</button>
24
+ ```
25
+
26
+ ## Pseudo-Class Variants
27
+
28
+ ### Interactive States
29
+
30
+ ```html
31
+ <button class="bg-violet-500 hover:bg-violet-600 focus:outline-2 focus:outline-violet-500 active:bg-violet-700">
32
+ Save changes
33
+ </button>
34
+ ```
35
+
36
+ Common interactive variants:
37
+ - `hover:` - `:hover` pseudo-class
38
+ - `focus:` - `:focus` pseudo-class
39
+ - `active:` - `:active` pseudo-class
40
+ - `focus-visible:` - `:focus-visible`
41
+ - `focus-within:` - `:focus-within`
42
+ - `visited:` - `:visited`
43
+
44
+ ### Structural Variants
45
+
46
+ ```html
47
+ <ul>
48
+ <li class="py-4 first:pt-0 last:pb-0">Item 1</li>
49
+ <li class="py-4 first:pt-0 last:pb-0">Item 2</li>
50
+ <li class="py-4 first:pt-0 last:pb-0">Item 3</li>
51
+ </ul>
52
+ ```
53
+
54
+ Common structural variants:
55
+ - `first:` - `:first-child`
56
+ - `last:` - `:last-child`
57
+ - `odd:` - `:nth-child(odd)`
58
+ - `even:` - `:nth-child(even)`
59
+ - `only:` - `:only-child`
60
+
61
+ ### Form States
62
+
63
+ ```html
64
+ <input class="border-gray-300 required:border-red-500 invalid:border-red-500" />
65
+ ```
66
+
67
+ Common form variants:
68
+ - `required:` - `:required`
69
+ - `optional:` - `:optional`
70
+ - `invalid:` - `:invalid`
71
+ - `valid:` - `:valid`
72
+ - `disabled:` - `:disabled`
73
+ - `enabled:` - `:enabled`
74
+ - `checked:` - `:checked`
75
+ - `user-valid:` - `:user-valid` (v4.1) — validation after user interaction
76
+ - `user-invalid:` - `:user-invalid` (v4.1) — invalid after user interaction
77
+
78
+ ```html
79
+ <!-- Better UX: only show validation state after user interacts -->
80
+ <input required class="border user-valid:border-green-500 user-invalid:border-red-500" />
81
+ ```
82
+
83
+ ## Pseudo-Element Variants
84
+
85
+ ```html
86
+ <input class="placeholder:text-gray-400 before:content-['*'] after:content-['required']" />
87
+ ```
88
+
89
+ Common pseudo-element variants:
90
+ - `before:` - `::before`
91
+ - `after:` - `::after`
92
+ - `placeholder:` - `::placeholder`
93
+ - `selection:` - `::selection`
94
+ - `first-line:` - `::first-line`
95
+ - `first-letter:` - `::first-letter`
96
+
97
+ ## Media Query Variants
98
+
99
+ ### Responsive Variants
100
+
101
+ ```html
102
+ <div class="text-sm md:text-base lg:text-lg">Responsive text</div>
103
+ ```
104
+
105
+ ### Dark Mode
106
+
107
+ ```html
108
+ <div class="bg-white dark:bg-gray-800 text-gray-900 dark:text-white">
109
+ Content
110
+ </div>
111
+ ```
112
+
113
+ By default uses `prefers-color-scheme`, but can be customized to use a class or data attribute.
114
+
115
+ ### Reduced Motion
116
+
117
+ ```html
118
+ <div class="transition-all motion-reduce:transition-none">
119
+ Animated content
120
+ </div>
121
+ ```
122
+
123
+ ### Pointer Device Variants (v4.1+)
124
+
125
+ Target specific input devices:
126
+
127
+ ```html
128
+ <!-- Larger touch targets on touch devices -->
129
+ <button class="p-2 pointer-coarse:p-4 pointer-coarse:text-lg">
130
+ Touch-friendly button
131
+ </button>
132
+
133
+ <!-- Fine details only on mouse/trackpad -->
134
+ <div class="hidden pointer-fine:block">
135
+ Precise hover details
136
+ </div>
137
+ ```
138
+
139
+ - `pointer-fine:` — precise pointing device (mouse, trackpad)
140
+ - `pointer-coarse:` — imprecise device (touchscreen)
141
+ - `pointer-none:` — no pointing device
142
+ - `any-pointer-fine:` / `any-pointer-coarse:` — any available device
143
+
144
+ ### Other New Variants (v4.1+)
145
+
146
+ ```html
147
+ <!-- Style <details> content -->
148
+ <details class="details-content:mt-3 details-content:p-4" open>
149
+ <summary>FAQ Question</summary>
150
+ <div>Answer content</div>
151
+ </details>
152
+
153
+ <!-- Show fallback when JS disabled -->
154
+ <div class="hidden noscript:block">Please enable JavaScript.</div>
155
+
156
+ <!-- Respect inverted colors preference -->
157
+ <img class="inverted-colors:hue-rotate-180" />
158
+ ```
159
+
160
+ - `details-content:` — target content inside `<details>`
161
+ - `noscript:` — styles when JavaScript is disabled
162
+ - `inverted-colors:` — when user has inverted colors preference
163
+
164
+ ## Attribute Selector Variants
165
+
166
+ ```html
167
+ <!-- RTL support -->
168
+ <div class="text-left rtl:text-right">Content</div>
169
+
170
+ <!-- Open state -->
171
+ <details class="[&[open]]:bg-gray-100">Details</details>
172
+ ```
173
+
174
+ ## Arbitrary Variants
175
+
176
+ Use arbitrary variants for custom selectors:
177
+
178
+ ```html
179
+ <ul>
180
+ <li class="lg:[&:nth-child(-n+3)]:hover:underline">Item</li>
181
+ </ul>
182
+ ```
183
+
184
+ ## Child Selector Variants
185
+
186
+ ```html
187
+ <div class="[&>*]:mb-4 [&>*:last-child]:mb-0">
188
+ <p>Paragraph 1</p>
189
+ <p>Paragraph 2</p>
190
+ </div>
191
+ ```
192
+
193
+ ## Key Points
194
+
195
+ - Variants prefix utilities to apply them conditionally
196
+ - Variants can be stacked: `dark:md:hover:bg-blue-600`
197
+ - Use variants for states, pseudo-classes, media queries, and more
198
+ - Arbitrary variants enable custom selector patterns
199
+ - Child selector variants target descendant elements
200
+
201
+ <!--
202
+ Source references:
203
+ - https://tailwindcss.com/docs/hover-focus-and-other-states
204
+ -->