@amsterdamdatalabs/enact-extensions 0.1.37 → 0.1.47

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 (577) hide show
  1. package/README.md +67 -108
  2. package/bundled-extensions.json +6 -0
  3. package/dist/create/enact.d.ts.map +1 -1
  4. package/dist/create/enact.js +2 -0
  5. package/dist/create/enact.js.map +1 -1
  6. package/dist/create/index.d.ts +3 -0
  7. package/dist/create/index.d.ts.map +1 -1
  8. package/dist/create/index.js +6 -0
  9. package/dist/create/index.js.map +1 -1
  10. package/dist/create/kimi.d.ts +16 -0
  11. package/dist/create/kimi.d.ts.map +1 -0
  12. package/dist/create/kimi.js +87 -0
  13. package/dist/create/kimi.js.map +1 -0
  14. package/dist/create/opencode.d.ts +129 -0
  15. package/dist/create/opencode.d.ts.map +1 -0
  16. package/dist/create/opencode.js +696 -0
  17. package/dist/create/opencode.js.map +1 -0
  18. package/dist/index.d.ts +12 -16
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +10 -10
  21. package/dist/index.js.map +1 -1
  22. package/dist/internal/agents.d.ts +12 -2
  23. package/dist/internal/agents.d.ts.map +1 -1
  24. package/dist/internal/agents.js +119 -3
  25. package/dist/internal/agents.js.map +1 -1
  26. package/dist/internal/extensions-table.d.ts +58 -0
  27. package/dist/internal/extensions-table.d.ts.map +1 -0
  28. package/dist/internal/extensions-table.js +134 -0
  29. package/dist/internal/extensions-table.js.map +1 -0
  30. package/dist/internal/file-ops.d.ts +36 -0
  31. package/dist/internal/file-ops.d.ts.map +1 -0
  32. package/dist/internal/file-ops.js +89 -0
  33. package/dist/internal/file-ops.js.map +1 -0
  34. package/dist/internal/hooks.d.ts +56 -0
  35. package/dist/internal/hooks.d.ts.map +1 -0
  36. package/dist/internal/hooks.js +128 -0
  37. package/dist/internal/hooks.js.map +1 -0
  38. package/dist/internal/json-merge.d.ts +63 -0
  39. package/dist/internal/json-merge.d.ts.map +1 -0
  40. package/dist/internal/json-merge.js +122 -0
  41. package/dist/internal/json-merge.js.map +1 -0
  42. package/dist/internal/lock-ownership.d.ts +41 -0
  43. package/dist/internal/lock-ownership.d.ts.map +1 -0
  44. package/dist/internal/lock-ownership.js +24 -0
  45. package/dist/internal/lock-ownership.js.map +1 -0
  46. package/dist/internal/platform.d.ts.map +1 -1
  47. package/dist/internal/platform.js +90 -4
  48. package/dist/internal/platform.js.map +1 -1
  49. package/dist/internal/schema.js.map +1 -1
  50. package/dist/internal/toml-block.d.ts +59 -0
  51. package/dist/internal/toml-block.d.ts.map +1 -0
  52. package/dist/internal/toml-block.js +113 -0
  53. package/dist/internal/toml-block.js.map +1 -0
  54. package/dist/internal/types.d.ts +2 -1
  55. package/dist/internal/types.d.ts.map +1 -1
  56. package/dist/projection.d.ts +47 -0
  57. package/dist/projection.d.ts.map +1 -0
  58. package/dist/projection.js +180 -0
  59. package/dist/projection.js.map +1 -0
  60. package/dist/validate/index.d.ts +9 -4
  61. package/dist/validate/index.d.ts.map +1 -1
  62. package/dist/validate/index.js +56 -7
  63. package/dist/validate/index.js.map +1 -1
  64. package/dist/validate/kimi.d.ts +3 -0
  65. package/dist/validate/kimi.d.ts.map +1 -0
  66. package/dist/validate/kimi.js +11 -0
  67. package/dist/validate/kimi.js.map +1 -0
  68. package/dist/validate/opencode.d.ts +3 -0
  69. package/dist/validate/opencode.d.ts.map +1 -0
  70. package/dist/validate/opencode.js +11 -0
  71. package/dist/validate/opencode.js.map +1 -0
  72. package/dist/validate/run.d.ts +39 -0
  73. package/dist/validate/run.d.ts.map +1 -0
  74. package/dist/validate/run.js +63 -0
  75. package/dist/validate/run.js.map +1 -0
  76. package/extensions/enact-loop/.agents/plugin.json +12 -8
  77. package/extensions/enact-loop/scripts/validate.mjs +113 -2
  78. package/extensions/enact-loop/skills/enact-loop/SKILL.md +36 -466
  79. package/extensions/enact-loop/skills/enact-loop/references/loop-contract.md +114 -0
  80. package/extensions/enact-loop/skills/loop-budget/SKILL.md +57 -0
  81. package/extensions/enact-loop/skills/loop-intake/SKILL.md +59 -0
  82. package/extensions/enact-repo/.agents/plugin.json +55 -0
  83. package/extensions/enact-repo/.mcp.json +20 -0
  84. package/extensions/enact-repo/README.md +90 -0
  85. package/extensions/enact-repo/hooks/hooks.json +98 -0
  86. package/extensions/enact-repo/lean-ctx/config.toml +35 -0
  87. package/extensions/enact-repo/lean-ctx/layout.toml +5 -0
  88. package/extensions/enact-repo/skills/aca-sandboxes/SKILL.md +53 -0
  89. package/extensions/enact-repo/skills/aca-sandboxes/references/capabilities.md +52 -0
  90. package/extensions/enact-repo/skills/aca-sandboxes/references/install.md +87 -0
  91. package/extensions/enact-repo/skills/aca-sandboxes/references/prerequisites.md +52 -0
  92. package/extensions/enact-repo/skills/aca-sandboxes/references/quickstart.md +164 -0
  93. package/extensions/enact-repo/skills/aca-sandboxes/references/reference-advanced.md +251 -0
  94. package/extensions/enact-repo/skills/aca-sandboxes/references/reference.md +287 -0
  95. package/extensions/enact-repo/skills/aca-sandboxes/references/response-cues.md +71 -0
  96. package/extensions/enact-repo/skills/aca-sandboxes/references/scenarios.md +219 -0
  97. package/extensions/enact-repo/skills/aca-sandboxes/version.json +4 -0
  98. package/extensions/enact-repo/skills/backend-remove-deadcode/SKILL.md +96 -0
  99. package/extensions/enact-repo/skills/cmux-leader/SKILL.md +61 -0
  100. package/extensions/enact-repo/skills/cmux-send/SKILL.md +61 -0
  101. package/extensions/enact-repo/skills/code-review/SKILL.md +100 -0
  102. package/extensions/enact-repo/skills/codebase-design/SKILL.md +98 -0
  103. package/extensions/enact-repo/skills/codebase-design/references/DEEPENING.md +37 -0
  104. package/extensions/enact-repo/skills/codebase-design/references/DESIGN-IT-TWICE.md +44 -0
  105. package/extensions/enact-repo/skills/codebase-design/references/TESTABILITY.md +29 -0
  106. package/extensions/enact-repo/skills/computer-use/SKILL.md +76 -0
  107. package/extensions/enact-repo/skills/debug-issue/SKILL.md +40 -0
  108. package/extensions/enact-repo/skills/diagnosing-bugs/SKILL.md +100 -0
  109. package/extensions/enact-repo/skills/diagnosing-bugs/references/FEEDBACK-LOOP-TACTICS.md +34 -0
  110. package/extensions/enact-repo/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  111. package/extensions/enact-repo/skills/domain-modeling/SKILL.md +86 -0
  112. package/extensions/enact-repo/skills/domain-modeling/references/ADR-FORMAT.md +47 -0
  113. package/extensions/enact-repo/skills/domain-modeling/references/CONTEXT-FORMAT.md +60 -0
  114. package/extensions/enact-repo/skills/explore-codebase/SKILL.md +41 -0
  115. package/extensions/enact-repo/skills/frontend-design/LICENSE.txt +177 -0
  116. package/extensions/enact-repo/skills/frontend-design/SKILL.md +56 -0
  117. package/extensions/enact-repo/skills/grill-me/SKILL.md +20 -0
  118. package/extensions/enact-repo/skills/grill-with-docs/SKILL.md +20 -0
  119. package/extensions/enact-repo/skills/handoff/SKILL.md +28 -0
  120. package/extensions/enact-repo/skills/http-contract-migration/SKILL.md +74 -0
  121. package/extensions/enact-repo/skills/http-contract-migration/references/compatibility-and-gates.md +26 -0
  122. package/extensions/enact-repo/skills/http-contract-migration/references/hexagonal-boundary.md +16 -0
  123. package/extensions/enact-repo/skills/http-contract-migration/references/publication-and-adoption.md +31 -0
  124. package/extensions/enact-repo/skills/http-contract-migration/references/wire-fidelity-and-dto.md +31 -0
  125. package/extensions/enact-repo/skills/implement/SKILL.md +28 -0
  126. package/extensions/enact-repo/skills/improve-codebase-architecture/SKILL.md +80 -0
  127. package/extensions/enact-repo/skills/improve-codebase-architecture/references/HTML-REPORT.md +123 -0
  128. package/extensions/enact-repo/skills/interaction-design/SKILL.md +30 -0
  129. package/extensions/enact-repo/skills/interaction-design/references/Workflow.md +146 -0
  130. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-gsap.md +220 -0
  131. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-native.md +110 -0
  132. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries.md +178 -0
  133. package/extensions/enact-repo/skills/interaction-design/references/interaction-patterns.md +166 -0
  134. package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns-advanced.md +285 -0
  135. package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns.md +254 -0
  136. package/extensions/enact-repo/skills/interaction-design/references/scroll-animations-reveals.md +213 -0
  137. package/extensions/enact-repo/skills/interaction-design/references/scroll-animations.md +209 -0
  138. package/extensions/enact-repo/skills/lean-ctx/SKILL.md +81 -0
  139. package/extensions/enact-repo/skills/orca-cli/SKILL.md +88 -0
  140. package/extensions/enact-repo/skills/orchestration/SKILL.md +80 -0
  141. package/extensions/enact-repo/skills/prototype/SKILL.md +37 -0
  142. package/extensions/enact-repo/skills/prototype/references/LOGIC.md +79 -0
  143. package/extensions/enact-repo/skills/prototype/references/UI.md +112 -0
  144. package/extensions/enact-repo/skills/refactor-safely/SKILL.md +44 -0
  145. package/extensions/enact-repo/skills/remove-deadcode/SKILL.md +54 -0
  146. package/extensions/enact-repo/skills/research/SKILL.md +27 -0
  147. package/extensions/enact-repo/skills/resolving-merge-conflicts/SKILL.md +28 -0
  148. package/extensions/enact-repo/skills/review-changes/SKILL.md +45 -0
  149. package/extensions/enact-repo/skills/tailwind-4-docs/SKILL.md +88 -0
  150. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/accent-color.mdx +149 -0
  151. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/adding-custom-styles.mdx +635 -0
  152. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-content.mdx +300 -0
  153. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-items.mdx +241 -0
  154. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-self.mdx +294 -0
  155. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/animation.mdx +286 -0
  156. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/appearance.mdx +180 -0
  157. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/aspect-ratio.mdx +98 -0
  158. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-blur.mdx +109 -0
  159. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-brightness.mdx +82 -0
  160. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-contrast.mdx +82 -0
  161. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-grayscale.mdx +99 -0
  162. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-hue-rotate.mdx +173 -0
  163. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-invert.mdx +99 -0
  164. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-opacity.mdx +103 -0
  165. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-saturate.mdx +98 -0
  166. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-sepia.mdx +95 -0
  167. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter.mdx +113 -0
  168. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backface-visibility.mdx +110 -0
  169. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-attachment.mdx +126 -0
  170. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-blend-mode.mdx +79 -0
  171. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-clip.mdx +85 -0
  172. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-color.mdx +176 -0
  173. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-image.mdx +349 -0
  174. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-origin.mdx +64 -0
  175. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-position.mdx +171 -0
  176. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-repeat.mdx +127 -0
  177. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-size.mdx +100 -0
  178. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/block-size.mdx +190 -0
  179. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-collapse.mdx +181 -0
  180. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-color.mdx +316 -0
  181. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-radius.mdx +347 -0
  182. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-spacing.mdx +117 -0
  183. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-style.mdx +129 -0
  184. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-width.mdx +344 -0
  185. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-decoration-break.mdx +71 -0
  186. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-shadow.mdx +497 -0
  187. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-sizing.mdx +175 -0
  188. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-after.mdx +38 -0
  189. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-before.mdx +38 -0
  190. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-inside.mdx +34 -0
  191. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caption-side.mdx +190 -0
  192. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caret-color.mdx +66 -0
  193. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/clear.mdx +224 -0
  194. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color-scheme.mdx +81 -0
  195. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color.mdx +125 -0
  196. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/colors.mdx +927 -0
  197. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/columns.mdx +310 -0
  198. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/compatibility.mdx +193 -0
  199. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/content.mdx +129 -0
  200. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/cursor.mdx +104 -0
  201. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/dark-mode.mdx +191 -0
  202. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/detecting-classes-in-source-files.mdx +315 -0
  203. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/display.mdx +523 -0
  204. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/editor-setup.mdx +90 -0
  205. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/field-sizing.mdx +75 -0
  206. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/fill.mdx +100 -0
  207. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-blur.mdx +114 -0
  208. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-brightness.mdx +102 -0
  209. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-contrast.mdx +102 -0
  210. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-drop-shadow.mdx +230 -0
  211. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-grayscale.mdx +101 -0
  212. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-hue-rotate.mdx +171 -0
  213. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-invert.mdx +93 -0
  214. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-saturate.mdx +109 -0
  215. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-sepia.mdx +92 -0
  216. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter.mdx +113 -0
  217. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-basis.mdx +144 -0
  218. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-direction.mdx +130 -0
  219. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-grow.mdx +129 -0
  220. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-shrink.mdx +95 -0
  221. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-wrap.mdx +118 -0
  222. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex.mdx +164 -0
  223. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/float.mdx +197 -0
  224. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-family.mdx +119 -0
  225. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-feature-settings.mdx +52 -0
  226. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-size.mdx +184 -0
  227. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-smoothing.mdx +67 -0
  228. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-stretch.mdx +138 -0
  229. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-style.mdx +62 -0
  230. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-variant-numeric.mdx +228 -0
  231. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-weight.mdx +105 -0
  232. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/forced-color-adjust.mdx +152 -0
  233. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/functions-and-directives.mdx +322 -0
  234. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/gap.mdx +100 -0
  235. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-columns.mdx +43 -0
  236. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-flow.mdx +58 -0
  237. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-rows.mdx +43 -0
  238. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-column.mdx +124 -0
  239. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-row.mdx +115 -0
  240. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-columns.mdx +101 -0
  241. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-rows.mdx +108 -0
  242. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/height.mdx +260 -0
  243. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hover-focus-and-other-states.mdx +4935 -0
  244. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hyphens.mdx +112 -0
  245. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/inline-size.mdx +191 -0
  246. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/isolation.mdx +30 -0
  247. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-content.mdx +348 -0
  248. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-items.mdx +286 -0
  249. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-self.mdx +282 -0
  250. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/letter-spacing.mdx +100 -0
  251. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-clamp.mdx +110 -0
  252. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-height.mdx +147 -0
  253. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-image.mdx +80 -0
  254. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-position.mdx +67 -0
  255. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-type.mdx +86 -0
  256. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/margin.mdx +397 -0
  257. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-clip.mdx +66 -0
  258. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-composite.mdx +70 -0
  259. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-image.mdx +933 -0
  260. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-mode.mdx +114 -0
  261. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-origin.mdx +66 -0
  262. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-position.mdx +117 -0
  263. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-repeat.mdx +169 -0
  264. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-size.mdx +104 -0
  265. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-type.mdx +98 -0
  266. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-block-size.mdx +153 -0
  267. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-height.mdx +164 -0
  268. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-inline-size.mdx +185 -0
  269. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-width.mdx +214 -0
  270. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-block-size.mdx +146 -0
  271. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-height.mdx +150 -0
  272. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-inline-size.mdx +153 -0
  273. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-width.mdx +153 -0
  274. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mix-blend-mode.mdx +103 -0
  275. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-fit.mdx +147 -0
  276. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-position.mdx +182 -0
  277. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/opacity.mdx +84 -0
  278. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/order.mdx +94 -0
  279. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-color.mdx +130 -0
  280. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-offset.mdx +72 -0
  281. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-style.mdx +134 -0
  282. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-width.mdx +91 -0
  283. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow-wrap.mdx +130 -0
  284. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow.mdx +665 -0
  285. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overscroll-behavior.mdx +151 -0
  286. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/padding.mdx +232 -0
  287. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective-origin.mdx +127 -0
  288. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective.mdx +137 -0
  289. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-content.mdx +257 -0
  290. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-items.mdx +269 -0
  291. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-self.mdx +257 -0
  292. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/pointer-events.mdx +101 -0
  293. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/position.mdx +399 -0
  294. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/preflight.mdx +291 -0
  295. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/resize.mdx +110 -0
  296. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/responsive-design.mdx +666 -0
  297. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/rotate.mdx +291 -0
  298. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scale.mdx +360 -0
  299. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-behavior.mdx +39 -0
  300. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-margin.mdx +268 -0
  301. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-padding.mdx +255 -0
  302. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-align.mdx +281 -0
  303. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-stop.mdx +198 -0
  304. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-type.mdx +284 -0
  305. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/skew.mdx +352 -0
  306. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke-width.mdx +74 -0
  307. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke.mdx +103 -0
  308. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/styling-with-utility-classes.mdx +1020 -0
  309. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/table-layout.mdx +212 -0
  310. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-align.mdx +162 -0
  311. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-color.mdx +155 -0
  312. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-line.mdx +143 -0
  313. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-style.mdx +75 -0
  314. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-thickness.mdx +75 -0
  315. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-indent.mdx +74 -0
  316. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-overflow.mdx +103 -0
  317. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-shadow.mdx +177 -0
  318. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-transform.mdx +106 -0
  319. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-underline-offset.mdx +74 -0
  320. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-wrap.mdx +144 -0
  321. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/theme.mdx +1142 -0
  322. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/top-right-bottom-left.mdx +296 -0
  323. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/touch-action.mdx +95 -0
  324. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-origin.mdx +130 -0
  325. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-style.mdx +110 -0
  326. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform.mdx +51 -0
  327. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-behavior.mdx +76 -0
  328. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-delay.mdx +76 -0
  329. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-duration.mdx +82 -0
  330. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-property.mdx +137 -0
  331. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-timing-function.mdx +89 -0
  332. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/translate.mdx +487 -0
  333. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/upgrade-guide.mdx +910 -0
  334. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/user-select.mdx +114 -0
  335. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/vertical-align.mdx +194 -0
  336. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/visibility.mdx +287 -0
  337. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/white-space.mdx +211 -0
  338. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/width.mdx +264 -0
  339. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/will-change.mdx +47 -0
  340. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/word-break.mdx +94 -0
  341. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/z-index.mdx +104 -0
  342. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-catalog.md +251 -0
  343. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-index.tsx +237 -0
  344. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-source.txt +6 -0
  345. package/extensions/enact-repo/skills/tailwind-4-docs/references/gotchas.md +18 -0
  346. package/extensions/enact-repo/skills/tailwind-4-docs/scripts/sync_tailwind_docs.py +183 -0
  347. package/extensions/enact-repo/skills/tdd/SKILL.md +49 -0
  348. package/extensions/enact-repo/skills/tdd/references/mocking.md +59 -0
  349. package/extensions/enact-repo/skills/tdd/references/tests.md +77 -0
  350. package/extensions/enact-repo/skills/teach/SKILL.md +88 -0
  351. package/extensions/enact-repo/skills/teach/references/GLOSSARY-FORMAT.md +35 -0
  352. package/extensions/enact-repo/skills/teach/references/LEARNING-RECORD-FORMAT.md +46 -0
  353. package/extensions/enact-repo/skills/teach/references/MISSION-FORMAT.md +31 -0
  354. package/extensions/enact-repo/skills/teach/references/PHILOSOPHY.md +65 -0
  355. package/extensions/enact-repo/skills/teach/references/RESOURCES-FORMAT.md +32 -0
  356. package/extensions/enact-repo/skills/testing/SKILL.md +54 -0
  357. package/extensions/enact-repo/skills/to-spec/SKILL.md +85 -0
  358. package/extensions/enact-repo/skills/to-tickets/SKILL.md +75 -0
  359. package/extensions/enact-repo/skills/to-tickets/references/TICKET-TEMPLATES.md +39 -0
  360. package/extensions/enact-repo/skills/triage/SKILL.md +99 -0
  361. package/extensions/enact-repo/skills/triage/references/AGENT-BRIEF.md +207 -0
  362. package/extensions/enact-repo/skills/triage/references/NEEDS-INFO-TEMPLATE.md +17 -0
  363. package/extensions/enact-repo/skills/triage/references/OUT-OF-SCOPE.md +105 -0
  364. package/extensions/enact-repo/skills/ui-ux-pro-max/SKILL.md +32 -0
  365. package/extensions/enact-repo/skills/ui-ux-pro-max/references/Workflow.md +207 -0
  366. package/extensions/enact-repo/skills/ui-ux-pro-max/references/workflow-reference.md +175 -0
  367. package/extensions/enact-repo/skills/wayfinder/SKILL.md +100 -0
  368. package/extensions/enact-repo/skills/wayfinder/references/TEMPLATES.md +35 -0
  369. package/extensions/enact-repo/skills/wayfinder/references/TICKET-TYPES.md +8 -0
  370. package/extensions/enact-repo/skills/writing-great-skills/SKILL.md +93 -0
  371. package/extensions/enact-repo/skills/writing-great-skills/references/GLOSSARY.md +201 -0
  372. package/package.json +18 -14
  373. package/scripts/enact-extensions.mjs +255 -873
  374. package/scripts/lib/allowed-plugins.mjs +52 -0
  375. package/scripts/lib/run-repo-doctor.mjs +571 -0
  376. package/scripts/lib/run-repo-install.mjs +1579 -0
  377. package/scripts/lib/run-sync.mjs +1 -1
  378. package/scripts/lib/run-validate.mjs +23 -37
  379. package/scripts/lib/skill-validator.mjs +872 -0
  380. package/spec/enact.json +21 -3
  381. package/spec/enact.md +13 -12
  382. package/spec/kimi.json +100 -0
  383. package/spec/opencode.json +64 -0
  384. package/dist/install.d.ts +0 -235
  385. package/dist/install.d.ts.map +0 -1
  386. package/dist/install.js +0 -697
  387. package/dist/install.js.map +0 -1
  388. package/dist/internal/claude.d.ts +0 -65
  389. package/dist/internal/claude.d.ts.map +0 -1
  390. package/dist/internal/claude.js +0 -200
  391. package/dist/internal/claude.js.map +0 -1
  392. package/dist/internal/codex.d.ts +0 -43
  393. package/dist/internal/codex.d.ts.map +0 -1
  394. package/dist/internal/codex.js +0 -211
  395. package/dist/internal/codex.js.map +0 -1
  396. package/dist/internal/cursor.d.ts +0 -2
  397. package/dist/internal/cursor.d.ts.map +0 -1
  398. package/dist/internal/cursor.js +0 -6
  399. package/dist/internal/cursor.js.map +0 -1
  400. package/dist/principles.d.ts +0 -28
  401. package/dist/principles.d.ts.map +0 -1
  402. package/dist/principles.js +0 -159
  403. package/dist/principles.js.map +0 -1
  404. package/dist/provision.d.ts +0 -30
  405. package/dist/provision.d.ts.map +0 -1
  406. package/dist/provision.js +0 -202
  407. package/dist/provision.js.map +0 -1
  408. package/extensions/dev-state/.agents/plugin.json +0 -36
  409. package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +0 -194
  410. package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +0 -4
  411. package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +0 -130
  412. package/extensions/enact-context/.agents/plugin.json +0 -41
  413. package/extensions/enact-context/.mcp.json +0 -8
  414. package/extensions/enact-context/README.md +0 -25
  415. package/extensions/enact-context/assets/icon.png +0 -0
  416. package/extensions/enact-context/assets/logo.png +0 -0
  417. package/extensions/enact-context/hooks/hooks.json +0 -115
  418. package/extensions/enact-context/skills/enact-context/SKILL.md +0 -151
  419. package/extensions/enact-context/skills/enact-context/scripts/install.sh +0 -69
  420. package/extensions/enact-core/.agents/plugin.json +0 -40
  421. package/extensions/enact-core/OPERATING-PRINCIPLES.md +0 -7
  422. package/extensions/enact-core/hooks/hooks.json +0 -26
  423. package/extensions/enact-evolve/.agents/plugin.json +0 -47
  424. package/extensions/enact-evolve/agents/evolve-session-analyst.toml +0 -37
  425. package/extensions/enact-evolve/assets/icon.png +0 -0
  426. package/extensions/enact-evolve/assets/logo.png +0 -0
  427. package/extensions/enact-evolve/skills/mined-investigate-loop/SKILL.md +0 -68
  428. package/extensions/enact-evolve/skills/session-analysis/SKILL.md +0 -98
  429. package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +0 -343
  430. package/extensions/enact-factory/.agents/plugin.json +0 -49
  431. package/extensions/enact-factory/.mcp.json +0 -8
  432. package/extensions/enact-factory/agents/architect.toml +0 -34
  433. package/extensions/enact-factory/agents/code-reviewer.toml +0 -33
  434. package/extensions/enact-factory/agents/critic.toml +0 -39
  435. package/extensions/enact-factory/agents/executor.toml +0 -26
  436. package/extensions/enact-factory/agents/explore.toml +0 -25
  437. package/extensions/enact-factory/agents/planner.toml +0 -26
  438. package/extensions/enact-factory/agents/verifier.toml +0 -33
  439. package/extensions/enact-factory/assets/icon.png +0 -0
  440. package/extensions/enact-factory/assets/logo.png +0 -0
  441. package/extensions/enact-factory/skills/advisor/SKILL.md +0 -82
  442. package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +0 -57
  443. package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +0 -353
  444. package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +0 -309
  445. package/extensions/enact-factory/skills/azdo-ci-strategy/references/build-failures.md +0 -60
  446. package/extensions/enact-factory/skills/azdo-ci-strategy/references/cli-reference.md +0 -87
  447. package/extensions/enact-factory/skills/azdo-ci-strategy/references/policies-and-pipelines.md +0 -132
  448. package/extensions/enact-factory/skills/azdo-ci-strategy/references/troubleshooting.md +0 -53
  449. package/extensions/enact-factory/skills/cmux-leader/SKILL.md +0 -74
  450. package/extensions/enact-factory/skills/cmux-send/SKILL.md +0 -50
  451. package/extensions/enact-factory/skills/committee/SKILL.md +0 -80
  452. package/extensions/enact-factory/skills/deep-interview/SKILL.md +0 -68
  453. package/extensions/enact-factory/skills/drive-loop/SKILL.md +0 -394
  454. package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +0 -127
  455. package/extensions/enact-factory/skills/handoff/SKILL.md +0 -75
  456. package/extensions/enact-factory/skills/hyperplan/SKILL.md +0 -59
  457. package/extensions/enact-factory/skills/looplan/SKILL.md +0 -120
  458. package/extensions/enact-factory/skills/plan/SKILL.md +0 -103
  459. package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +0 -46
  460. package/extensions/enact-factory/skills/research/SKILL.md +0 -83
  461. package/extensions/enact-factory/skills/review/SKILL.md +0 -67
  462. package/extensions/enact-factory/skills/security-research/SKILL.md +0 -57
  463. package/extensions/enact-factory/skills/tdd/SKILL.md +0 -62
  464. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +0 -172
  465. package/extensions/enact-factory/skills/trace/SKILL.md +0 -42
  466. package/extensions/enact-factory/skills/ultraqa/SKILL.md +0 -85
  467. package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +0 -56
  468. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +0 -42
  469. package/extensions/enact-wiki/.agents/plugin.json +0 -43
  470. package/extensions/enact-wiki/.mcp.json +0 -15
  471. package/extensions/enact-wiki/README.md +0 -44
  472. package/extensions/enact-wiki/assets/icon.png +0 -0
  473. package/extensions/enact-wiki/assets/logo.png +0 -0
  474. package/extensions/enact-wiki/skills/document-parser/SKILL.md +0 -17
  475. package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +0 -60
  476. package/extensions/enact-wiki/skills/document-parser/skill.json +0 -9
  477. package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +0 -30
  478. package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +0 -62
  479. package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +0 -34
  480. package/extensions/enact-wiki/skills/enact-wiki/references/query.md +0 -59
  481. package/extensions/enact-wiki/skills/search-lab/SKILL.md +0 -57
  482. package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +0 -23
  483. package/extensions/enact-wiki/skills/wiki/SKILL.md +0 -42
  484. package/extensions/net-revenue-management/.agents/plugin.json +0 -40
  485. package/extensions/net-revenue-management/.mcp.json +0 -9
  486. package/extensions/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -30
  487. package/extensions/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -31
  488. package/extensions/plugin-dev/.agents/plugin.json +0 -41
  489. package/extensions/plugin-dev/agents/agent-creator.md +0 -199
  490. package/extensions/plugin-dev/agents/plugin-validator.md +0 -91
  491. package/extensions/plugin-dev/agents/skill-reviewer.md +0 -212
  492. package/extensions/plugin-dev/skills/agent-development/SKILL.md +0 -641
  493. package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +0 -250
  494. package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +0 -461
  495. package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +0 -246
  496. package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +0 -216
  497. package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +0 -226
  498. package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +0 -464
  499. package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +0 -474
  500. package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +0 -176
  501. package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +0 -227
  502. package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +0 -227
  503. package/extensions/plugin-dev/skills/create-plugin/SKILL.md +0 -505
  504. package/extensions/plugin-dev/skills/hook-development/SKILL.md +0 -861
  505. package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +0 -55
  506. package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +0 -57
  507. package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +0 -48
  508. package/extensions/plugin-dev/skills/hook-development/references/advanced.md +0 -871
  509. package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +0 -145
  510. package/extensions/plugin-dev/skills/hook-development/references/migration.md +0 -392
  511. package/extensions/plugin-dev/skills/hook-development/references/patterns.md +0 -430
  512. package/extensions/plugin-dev/skills/hook-development/scripts/README.md +0 -181
  513. package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +0 -153
  514. package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +0 -276
  515. package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +0 -159
  516. package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +0 -775
  517. package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +0 -20
  518. package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +0 -19
  519. package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +0 -38
  520. package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +0 -26
  521. package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +0 -601
  522. package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +0 -190
  523. package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +0 -572
  524. package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +0 -623
  525. package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +0 -221
  526. package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +0 -705
  527. package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +0 -774
  528. package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +0 -83
  529. package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +0 -611
  530. package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +0 -289
  531. package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +0 -592
  532. package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +0 -233
  533. package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +0 -193
  534. package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +0 -625
  535. package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +0 -116
  536. package/extensions/plugin-dev/skills/skill-development/SKILL.md +0 -562
  537. package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +0 -465
  538. package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +0 -167
  539. package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +0 -111
  540. package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +0 -225
  541. package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +0 -39
  542. package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +0 -379
  543. package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +0 -210
  544. package/extensions/plugin-dev/skills/start/SKILL.md +0 -82
  545. package/scripts/check-hooks.mjs +0 -174
  546. package/scripts/check-principles.mjs +0 -116
  547. package/scripts/hooks/session-start-drift-check.mjs +0 -48
  548. package/scripts/install.sh +0 -70
  549. package/scripts/lib/auto-update.mjs +0 -75
  550. package/scripts/lib/bundle-hash.mjs +0 -137
  551. package/scripts/lib/hooks.mjs +0 -585
  552. package/scripts/lib/ledger.mjs +0 -163
  553. package/scripts/lib/migrate-artifacts.mjs +0 -144
  554. package/scripts/lib/outdated.mjs +0 -144
  555. package/scripts/lib/postinstall-offer.mjs +0 -83
  556. package/scripts/lib/principles.mjs +0 -109
  557. package/scripts/lib/provision-mcp.mjs +0 -16
  558. package/scripts/lib/resolve-plugin-root.mjs +0 -9
  559. package/scripts/lib/run-install.mjs +0 -500
  560. package/scripts/lib/run-prune.mjs +0 -94
  561. package/scripts/lib/run-uninstall.mjs +0 -244
  562. package/scripts/lib/run-update.mjs +0 -152
  563. package/scripts/lib/serve.mjs +0 -472
  564. package/scripts/lib/ups-router.mjs +0 -392
  565. package/scripts/postinstall.mjs +0 -101
  566. package/scripts/setup-enact-context.sh +0 -28
  567. package/scripts/version-bump.sh +0 -484
  568. package/web/assets/README.md +0 -111
  569. package/web/assets/logo-full.png +0 -0
  570. package/web/assets/logo-slim.png +0 -0
  571. package/web/assets/tokens/base.css +0 -45
  572. package/web/assets/tokens/colors.css +0 -248
  573. package/web/assets/tokens/effects.css +0 -24
  574. package/web/assets/tokens/fonts.css +0 -8
  575. package/web/assets/tokens/index.css +0 -18
  576. package/web/assets/tokens/spacing.css +0 -50
  577. package/web/index.html +0 -1188
@@ -0,0 +1,1020 @@
1
+ import { Example } from "@/components/example";
2
+ import { CodeExampleWrapper, CodeExampleStack } from "@/components/code-example";
3
+ import { Iframe } from "@/components/iframe.tsx";
4
+ import { Figure } from "@/components/figure";
5
+ import { TipGood, TipBad, TipCompat, TipInfo } from "@/components/tips";
6
+ import { MultiCursorAnimation, MultiCursorPreview } from "@/components/multi-cursor/animation.tsx";
7
+ import { MultiCursorCode } from "@/components/multi-cursor/example.tsx";
8
+ import erinLindford from "./img/erin-lindford.jpg";
9
+
10
+ export const title = "Styling with utility classes";
11
+ export const description = "Building complex components from a constrained set of primitive utilities.";
12
+
13
+ ## Overview
14
+
15
+ You style things with Tailwind by combining many single-purpose presentational classes _(utility classes)_ directly in your markup:
16
+
17
+ <Figure>
18
+
19
+ <Example>
20
+ {
21
+ <div className="mx-auto flex max-w-sm items-center gap-x-4 rounded-xl bg-white p-6 shadow-lg outline outline-black/5 dark:bg-slate-800 dark:shadow-none dark:-outline-offset-1 dark:outline-white/10">
22
+ <svg className="size-12 shrink-0" viewBox="0 0 40 40">
23
+ <defs>
24
+ <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a">
25
+ <stop stopColor="#2397B3" offset="0%"></stop>
26
+ <stop stopColor="#13577E" offset="100%"></stop>
27
+ </linearGradient>
28
+ <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="b">
29
+ <stop stopColor="#73DFF2" offset="0%"></stop>
30
+ <stop stopColor="#47B1EB" offset="100%"></stop>
31
+ </linearGradient>
32
+ </defs>
33
+ <g fill="none" fillRule="evenodd">
34
+ <path
35
+ d="M28.872 22.096c.084.622.128 1.258.128 1.904 0 7.732-6.268 14-14 14-2.176 0-4.236-.496-6.073-1.382l-6.022 2.007c-1.564.521-3.051-.966-2.53-2.53l2.007-6.022A13.944 13.944 0 0 1 1 24c0-7.331 5.635-13.346 12.81-13.95A9.967 9.967 0 0 0 13 14c0 5.523 4.477 10 10 10a9.955 9.955 0 0 0 5.872-1.904z"
36
+ fill="url(#a)"
37
+ transform="translate(1 1)"
38
+ ></path>
39
+ <path
40
+ d="M35.618 20.073l2.007 6.022c.521 1.564-.966 3.051-2.53 2.53l-6.022-2.007A13.944 13.944 0 0 1 23 28c-7.732 0-14-6.268-14-14S15.268 0 23 0s14 6.268 14 14c0 2.176-.496 4.236-1.382 6.073z"
41
+ fill="url(#b)"
42
+ transform="translate(1 1)"
43
+ ></path>
44
+ <path
45
+ d="M18 17a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM24 17a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM30 17a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"
46
+ fill="#FFF"
47
+ ></path>
48
+ </g>
49
+ </svg>
50
+ <div>
51
+ <div className="text-xl font-medium text-black dark:text-white">ChitChat</div>
52
+ <p className="text-gray-500 dark:text-gray-400">You have a new message!</p>
53
+ </div>
54
+ </div>
55
+ }
56
+ </Example>
57
+
58
+ ```html
59
+ <!-- prettier-ignore -->
60
+ <div class="mx-auto flex max-w-sm items-center gap-x-4 rounded-xl bg-white p-6 shadow-lg outline outline-black/5 dark:bg-slate-800 dark:shadow-none dark:-outline-offset-1 dark:outline-white/10">
61
+ <img class="size-12 shrink-0" src="/img/logo.svg" alt="ChitChat Logo" />
62
+ <div>
63
+ <div class="text-xl font-medium text-black dark:text-white">ChitChat</div>
64
+ <p class="text-gray-500 dark:text-gray-400">You have a new message!</p>
65
+ </div>
66
+ </div>
67
+ ```
68
+
69
+ </Figure>
70
+
71
+ For example, in the UI above we've used:
72
+
73
+ - The [display](/docs/display#flex) and [padding](/docs/padding) utilities (`flex`, `shrink-0`, and `p-6`) to control the overall layout
74
+ - The [max-width](/docs/max-width) and [margin](/docs/margin) utilities (`max-w-sm` and `mx-auto`) to constrain the card width and center it horizontally
75
+ - The [background-color](/docs/background-color), [border-radius](/docs/border-radius), and [box-shadow](/docs/box-shadow) utilities (`bg-white`, `rounded-xl`, and `shadow-lg`) to style the card's appearance
76
+ - The [width](/docs/width) and [height](/docs/height) utilities (`size-12`) to set the width and height of the logo image
77
+ - The [gap](/docs/gap) utilities (`gap-x-4`) to handle the spacing between the logo and the text
78
+ - The [font-size](/docs/font-size), [color](/docs/text-color), and [font-weight](/docs/font-weight) utilities (`text-xl`, `text-black`, `font-medium`, etc.) to style the card text
79
+
80
+ Styling things this way contradicts a lot of traditional best practices, but once you try it you'll quickly notice some really important benefits:
81
+
82
+ - **You get things done faster** — you don't spend any time coming up with class names, making decisions about selectors, or switching between HTML and CSS files, so your designs come together very fast.
83
+ - **Making changes feels safer** — adding or removing a utility class to an element only ever affects that element, so you never have to worry about accidentally breaking something another page that's using the same CSS.
84
+ - **Maintaining old projects is easier** — changing something just means finding that element in your project and changing the classes, not trying to remember how all of that custom CSS works that you haven't touched in six months.
85
+ - **Your code is more portable** — since both the structure and styling live in the same place, you can easily copy and paste entire chunks of UI around, even between different projects.
86
+ - **Your CSS stops growing** — since utility classes are so reusable, your CSS doesn't continue to grow linearly with every new feature you add to a project.
87
+
88
+ These benefits make a big difference on small projects, but they are even more valuable for teams working on long-running projects at scale.
89
+
90
+ ### Why not just use inline styles?
91
+
92
+ A common reaction to this approach is wondering, “isn’t this just inline styles?” and in some ways it is — you’re applying styles directly to elements instead of assigning them a class name and then styling that class.
93
+
94
+ But using utility classes has many important advantages over inline styles, for example:
95
+
96
+ - **Designing with constraints** — using inline styles, every value is a magic number. With utilities, you’re choosing styles from a [predefined design system](/docs/theme), which makes it much easier to build visually consistent UIs.
97
+ - **Hover, focus, and other states** — inline styles can’t target states like hover or focus, but Tailwind’s [state variants](/docs/hover-focus-and-other-states) make it easy to style those states with utility classes.
98
+ - **Media queries** — you can’t use media queries in inline styles, but you can use Tailwind’s [responsive variants](/docs/responsive-design) to build fully responsive interfaces easily.
99
+
100
+ This component is fully responsive and includes a button with hover and active styles, and is built entirely with utility classes:
101
+
102
+ <Figure>
103
+
104
+ <Example resizable>
105
+ {
106
+ <div className="mx-auto max-w-sm space-y-2 rounded-xl bg-white px-8 py-8 shadow-lg ring ring-black/5 @sm:flex @sm:items-center @sm:space-y-0 @sm:gap-x-6 @sm:py-4">
107
+ <img
108
+ className="mx-auto block h-24 rounded-full @sm:mx-0 @sm:shrink-0"
109
+ src={erinLindford.src}
110
+ alt="Woman's Face"
111
+ />
112
+ <div className="space-y-2 text-center @sm:text-left">
113
+ <div className="space-y-0.5">
114
+ <p className="text-lg font-semibold text-black">Erin Lindford</p>
115
+ <p className="font-medium text-gray-500">Product Engineer</p>
116
+ </div>
117
+ <button className="rounded-full border border-purple-200 px-4 py-1 text-sm font-semibold text-purple-600 hover:border-transparent hover:bg-purple-600 hover:text-white active:bg-purple-700">
118
+ Message
119
+ </button>
120
+ </div>
121
+ </div>
122
+ }
123
+ </Example>
124
+
125
+ ```html
126
+ <!-- [!code classes:sm:flex-row,sm:py-4,sm:gap-6,sm:mx-0,sm:shrink-0,sm:text-left,sm:items-center] -->
127
+ <!-- [!code classes:hover:text-white,hover:bg-purple-600,hover:border-transparent,active:bg-purple-700] -->
128
+ <div class="flex flex-col gap-2 p-8 sm:flex-row sm:items-center sm:gap-6 sm:py-4 ...">
129
+ <img class="mx-auto block h-24 rounded-full sm:mx-0 sm:shrink-0" src="/img/erin-lindford.jpg" alt="" />
130
+ <div class="space-y-2 text-center sm:text-left">
131
+ <div class="space-y-0.5">
132
+ <p class="text-lg font-semibold text-black">Erin Lindford</p>
133
+ <p class="font-medium text-gray-500">Product Engineer</p>
134
+ </div>
135
+ <!-- prettier-ignore -->
136
+ <button class="border-purple-200 text-purple-600 hover:border-transparent hover:bg-purple-600 hover:text-white active:bg-purple-700 ...">
137
+ Message
138
+ </button>
139
+ </div>
140
+ </div>
141
+ ```
142
+
143
+ </Figure>
144
+
145
+ ## Thinking in utility classes
146
+
147
+ ### Styling hover and focus states
148
+
149
+ To style an element on states like hover or focus, prefix any utility with the state you want to target, for example `hover:bg-sky-700`:
150
+
151
+ <Figure hint="Hover over this button to see the background color change">
152
+
153
+ <Example>
154
+ {
155
+ <div className="grid place-items-center">
156
+ <button className="rounded-full bg-sky-500 px-5 py-2 text-sm leading-5 font-semibold text-white hover:bg-sky-700">
157
+ Save changes
158
+ </button>
159
+ </div>
160
+ }
161
+ </Example>
162
+
163
+ ```html
164
+ <!-- [!code word:hover\:bg-sky-700] -->
165
+ <button class="bg-sky-500 hover:bg-sky-700 ...">Save changes</button>
166
+ ```
167
+
168
+ </Figure>
169
+
170
+ These prefixes are called [variants](/docs/hover-focus-and-other-states) in Tailwind, and they only apply the styles from a utility class when the condition for that variant matches.
171
+
172
+ Here's what the generated CSS looks like for the `hover:bg-sky-700` class:
173
+
174
+ ```css
175
+ /* [!code filename: Generated CSS] */
176
+ .hover\:bg-sky-700 {
177
+ &:hover {
178
+ background-color: var(--color-sky-700);
179
+ }
180
+ }
181
+ ```
182
+
183
+ Notice how this class does nothing _unless_ the element is hovered? Its _only_ job is to provide hover styles — nothing else.
184
+
185
+ This is different from how you'd write traditional CSS, where a single class would usually provide the styles for many states:
186
+
187
+ ```html
188
+ /* [!code filename:HTML] */
189
+ <button class="btn">Save changes</button>
190
+
191
+ <style>
192
+ .btn {
193
+ background-color: var(--color-sky-500);
194
+ &:hover {
195
+ background-color: var(--color-sky-700);
196
+ }
197
+ }
198
+ </style>
199
+ ```
200
+
201
+ You can even stack variants in Tailwind to apply a utility when multiple conditions match, like combining `hover:` and `disabled:`
202
+
203
+ ```html
204
+ <!-- [!code classes:disabled:hover:bg-sky-500] -->
205
+ <button class="bg-sky-500 disabled:hover:bg-sky-500 ...">Save changes</button>
206
+ ```
207
+
208
+ Learn more in the documentation styling elements on [hover, focus, and other states](/docs/hover-focus-and-other-states).
209
+
210
+ ### Media queries and breakpoints
211
+
212
+ Just like hover and focus states, you can style elements at different breakpoints by prefixing any utility with the breakpoint where you want that style to apply:
213
+
214
+ <Figure hint="Resize this example to see the layout change">
215
+
216
+ <Example className="@container" resizable>
217
+ {
218
+ <div className="grid grid-cols-2 gap-4 text-center font-mono font-medium text-white @sm:grid-cols-3">
219
+ <div className="rounded-lg bg-sky-500 p-4">01</div>
220
+ <div className="rounded-lg bg-sky-500 p-4">02</div>
221
+ <div className="rounded-lg bg-sky-500 p-4">03</div>
222
+ <div className="rounded-lg bg-sky-500 p-4">04</div>
223
+ <div className="rounded-lg bg-sky-500 p-4">05</div>
224
+ <div className="rounded-lg bg-sky-500 p-4">06</div>
225
+ </div>
226
+ }
227
+ </Example>
228
+
229
+ ```html
230
+ <!-- [!code classes:sm:grid-cols-3] -->
231
+ <div class="grid grid-cols-2 sm:grid-cols-3">
232
+ <!-- ... -->
233
+ </div>
234
+ ```
235
+
236
+ </Figure>
237
+
238
+ In the example above, the `sm:` prefix makes sure that `grid-cols-3` only triggers at the `sm` breakpoint and above, which is 40rem out of the box:
239
+
240
+ ```css
241
+ /* [!code filename: Generated CSS] */
242
+ .sm\:grid-cols-3 {
243
+ @media (width >= 40rem) {
244
+ grid-template-columns: repeat(3, minmax(0, 1fr));
245
+ }
246
+ }
247
+ ```
248
+
249
+ Learn more in the [responsive design](/docs/responsive-design) documentation.
250
+
251
+ ### Targeting dark mode
252
+
253
+ Styling an element in dark mode is just a matter of adding the `dark:` prefix to any utility you want to apply when dark mode is active:
254
+
255
+ <Figure>
256
+
257
+ <Example padding={false}>
258
+ {
259
+ <div className="grid grid-cols-1 sm:grid-cols-2">
260
+ <div className="p-8 pt-7">
261
+ <p className="mb-2 text-sm font-medium text-gray-500">Light mode</p>
262
+ <div className="rounded-lg bg-white px-6 py-8 shadow-xl ring ring-gray-900/5">
263
+ <div>
264
+ <span className="inline-flex items-center justify-center rounded-md bg-indigo-500 p-2 shadow-lg">
265
+ <svg
266
+ className="h-6 w-6 text-white"
267
+ fill="none"
268
+ viewBox="0 0 24 24"
269
+ stroke="currentColor"
270
+ aria-hidden="true"
271
+ >
272
+ <path
273
+ strokeLinecap="round"
274
+ strokeLinejoin="round"
275
+ strokeWidth="2"
276
+ d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"
277
+ />
278
+ </svg>
279
+ </span>
280
+ </div>
281
+ <p className="mt-5 text-base font-medium tracking-tight text-gray-900">Writes upside-down</p>
282
+ <p
283
+ className="mt-2 text-sm text-gray-500"
284
+ children={`The Zero Gravity Pen can be used to write in any orientation,
285
+ including upside-down. It even works in outer space.`}
286
+ />
287
+ </div>
288
+ </div>
289
+ <div className="bg-gray-900 p-8 pt-7">
290
+ <p className="mb-2 text-sm font-medium text-gray-400">Dark mode</p>
291
+ <div className="rounded-lg bg-gray-800 px-6 py-8 shadow-xl ring ring-gray-900/5">
292
+ <div>
293
+ <span className="inline-flex items-center justify-center rounded-md bg-indigo-500 p-2 shadow-lg">
294
+ <svg
295
+ className="h-6 w-6 text-white"
296
+ fill="none"
297
+ viewBox="0 0 24 24"
298
+ stroke="currentColor"
299
+ aria-hidden="true"
300
+ >
301
+ <path
302
+ strokeLinecap="round"
303
+ strokeLinejoin="round"
304
+ strokeWidth="2"
305
+ d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"
306
+ />
307
+ </svg>
308
+ </span>
309
+ </div>
310
+ <p className="mt-5 text-base font-medium tracking-tight text-white">Writes upside-down</p>
311
+ <p
312
+ className="mt-2 text-sm text-gray-400"
313
+ children={`The Zero Gravity Pen can be used to write in any orientation,
314
+ including upside-down. It even works in outer space.`}
315
+ />
316
+ </div>
317
+ </div>
318
+ </div>
319
+ }
320
+ </Example>
321
+
322
+ ```html
323
+ <!-- [!code word:dark\:bg-gray-800] -->
324
+ <!-- prettier-ignore -->
325
+ <div class="bg-white dark:bg-gray-800 rounded-lg px-6 py-8 ring shadow-xl ring-gray-900/5">
326
+ <div>
327
+ <span class="inline-flex items-center justify-center rounded-md bg-indigo-500 p-2 shadow-lg">
328
+ <svg
329
+ class="h-6 w-6 text-white"
330
+
331
+ fill="none"
332
+ viewBox="0 0 24 24"
333
+ stroke="currentColor"
334
+ aria-hidden="true"
335
+ >
336
+ <!-- ... -->
337
+ </svg>
338
+ </span>
339
+ </div>
340
+ <!-- prettier-ignore -->
341
+ <!-- [!code word:dark\:text-white] -->
342
+ <h3 class="text-gray-900 dark:text-white mt-5 text-base font-medium tracking-tight ">Writes upside-down</h3>
343
+ <!-- prettier-ignore -->
344
+ <!-- [!code word:dark\:text-gray-400] -->
345
+ <p class="text-gray-500 dark:text-gray-400 mt-2 text-sm ">
346
+ The Zero Gravity Pen can be used to write in any orientation, including upside-down. It even works in outer space.
347
+ </p>
348
+ </div>
349
+ ```
350
+
351
+ </Figure>
352
+
353
+ Just like with hover states or media queries, the important thing to understand is that a single utility class will never include _both_ the light and dark styles — you style things in dark mode by using multiple classes, one for the light mode styles and another for the dark mode styles.
354
+
355
+ ```css
356
+ /* [!code filename: Generated CSS] */
357
+ .dark\:bg-gray-800 {
358
+ @media (prefers-color-scheme: dark) {
359
+ background-color: var(--color-gray-800);
360
+ }
361
+ }
362
+ ```
363
+
364
+ Learn more in the [dark mode](/docs/dark-mode) documentation.
365
+
366
+ ### Using class composition
367
+
368
+ A lot of the time with Tailwind you'll even use multiple classes to build up the value for a single CSS property, for example adding multiple filters to an element:
369
+
370
+ ```html
371
+ <!-- [!code filename:HTML] -->
372
+ <!-- [!code classes:blur-sm,grayscale] -->
373
+ <div class="blur-sm grayscale">
374
+ <!-- ... -->
375
+ </div>
376
+ ```
377
+
378
+ Both of these effects rely on the `filter` property in CSS, so Tailwind uses CSS variables to make it possible to compose these effects together:
379
+
380
+ ```css
381
+ /* [!code filename:Generated CSS] */
382
+ .blur-sm {
383
+ --tw-blur: blur(var(--blur-sm));
384
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-grayscale,);
385
+ }
386
+ .grayscale {
387
+ --tw-grayscale: grayscale(100%);
388
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-grayscale,);
389
+ }
390
+ ```
391
+
392
+ The generated CSS above is slightly simplified, but the trick here is that each utility sets a CSS variable just for the effect it's meant to apply. Then the `filter` property looks at all of these variables, falling back to nothing if the variable hasn't been set.
393
+
394
+ Tailwind uses this same approach for [gradients](/docs/background-image#adding-a-linear-gradient), [shadow colors](/docs/box-shadow#setting-the-shadow-color), [transforms](/docs/translate), and more.
395
+
396
+ ### Using arbitrary values
397
+
398
+ Many utilities in Tailwind are driven by [theme variables](/docs/theme), like `bg-blue-500`, `text-xl`, and `shadow-md`, which map to your underlying color palette, type scale, and shadows.
399
+
400
+ When you need to use a one-off value outside of your theme, use the special square bracket syntax for specifying arbitrary values:
401
+
402
+ ```html
403
+ <!-- [!code filename:HTML] -->
404
+ <!-- [!code classes:bg-[#316ff6]] -->
405
+ <!-- prettier-ignore -->
406
+ <button class="bg-[#316ff6] ...">
407
+ Sign in with Facebook
408
+ </button>
409
+ ```
410
+
411
+ This can be useful for one-off colors outside of your color palette _(like the Facebook blue above)_, but also when you need a complex custom value like a very specific grid:
412
+
413
+ ```html
414
+ <!-- [!code filename:HTML] -->
415
+ <!-- [!code classes:grid-cols-[24rem_2.5rem_minmax(0,1fr)]] -->
416
+ <div class="grid grid-cols-[24rem_2.5rem_minmax(0,1fr)]">
417
+ <!-- ... -->
418
+ </div>
419
+ ```
420
+
421
+ It's also useful when you need to use CSS features like `calc()`, even if you are using your theme values:
422
+
423
+ ```html
424
+ <!-- [!code filename:HTML] -->
425
+ <!-- [!code classes:max-h-[calc(100dvh-(--spacing(6)))]] -->
426
+ <div class="max-h-[calc(100dvh-(--spacing(6)))]">
427
+ <!-- ... -->
428
+ </div>
429
+ ```
430
+
431
+ There's even a syntax for generating completely arbitrary CSS including an arbitrary property name, which can be useful for setting CSS variables:
432
+
433
+ ```html
434
+ <!-- [!code filename:HTML] -->
435
+ <!-- [!code classes:[--gutter-width:1rem],lg:[--gutter-width:2rem]] -->
436
+ <div class="[--gutter-width:1rem] lg:[--gutter-width:2rem]">
437
+ <!-- ... -->
438
+ </div>
439
+ ```
440
+
441
+ Learn more in the documentation on [using arbitrary values](/docs/adding-custom-styles#using-arbitrary-values).
442
+
443
+ #### How does this even work?
444
+
445
+ Tailwind CSS isn't one big static stylesheet like you might be used to with other CSS frameworks — it generates the CSS needed based on the classes you're actually using when you compile your CSS.
446
+
447
+ It does this by scanning all of the files in your project looking for any symbol that looks like it could be a class name:
448
+
449
+ ```jsx
450
+ // [!code filename:Button.jsx]
451
+ // [!code word:px-4]
452
+ // [!code word:py-2]
453
+ // [!code word:rounded-md]
454
+ // [!code word:text-base]
455
+ // [!code word:px-5]
456
+ // [!code word:py-3]
457
+ // [!code word:rounded-lg]
458
+ // [!code word:text-lg]
459
+ // [!code word:font-bold]
460
+ export default function Button({ size, children }) {
461
+ let sizeClasses = {
462
+ md: "px-4 py-2 rounded-md text-base",
463
+ lg: "px-5 py-3 rounded-lg text-lg",
464
+ }[size];
465
+
466
+ return (
467
+ <button type="button" className={`font-bold ${sizeClasses}`}>
468
+ {children}
469
+ </button>
470
+ );
471
+ }
472
+ ```
473
+
474
+ After it's found all of the potential classes, Tailwind generates the CSS for each one and compiles it all into one stylesheet of just the styles you actually need.
475
+
476
+ Since the CSS is generated based on the class name, Tailwind can recognize classes using arbitrary values like `bg-[#316ff6]` and generate the necessary CSS, even when the value isn't part of your theme.
477
+
478
+ Learn more about how this works in [detecting classes in source files](/docs/detecting-classes-in-source-files).
479
+
480
+ ### Complex selectors
481
+
482
+ Sometimes you need to style an element under a combination of conditions, for example in dark mode, at a specific breakpoint, when hovered, and when the element has a specific data attribute.
483
+
484
+ Here's an example of what that looks like with Tailwind:
485
+
486
+ <CodeExampleStack>
487
+
488
+ ```html
489
+ <!-- [!code filename:HTML] -->
490
+ <!-- [!code classes:dark:lg:data-current:hover:bg-indigo-600] -->
491
+ <button class="dark:lg:data-current:hover:bg-indigo-600 ...">
492
+ <!-- ... -->
493
+ </button>
494
+ ```
495
+
496
+ ```css
497
+ /* [!code filename:Simplified CSS] */
498
+ @media (prefers-color-scheme: dark) and (width >= 64rem) {
499
+ button[data-current]:hover {
500
+ background-color: var(--color-indigo-600);
501
+ }
502
+ }
503
+ ```
504
+
505
+ </CodeExampleStack>
506
+
507
+ Tailwind also supports things like `group-hover`, which let you style an element when a specific parent is hovered:
508
+
509
+ <CodeExampleStack>
510
+
511
+ ```html
512
+ <!-- [!code filename:HTML] -->
513
+ <!-- [!code classes:group,group-hover:underline] -->
514
+ <a href="#" class="group rounded-lg p-8">
515
+ <!-- ... -->
516
+ <span class="group-hover:underline">Read more…</span>
517
+ </a>
518
+ ```
519
+
520
+ ```css
521
+ /* [!code filename:Simplified CSS] */
522
+ @media (hover: hover) {
523
+ a:hover span {
524
+ text-decoration-line: underline;
525
+ }
526
+ }
527
+ ```
528
+
529
+ </CodeExampleStack>
530
+
531
+ This `group-*` syntax works with other variants too, like `group-focus`, `group-active`, and [many more](/docs/hover-focus-and-other-states#styling-based-on-parent-state).
532
+
533
+ For really complex scenarios _(especially when styling HTML you don't control)_, Tailwind supports [arbitrary variants](/docs/adding-custom-styles#arbitrary-variants) which let you write any selector you want, directly in a class name:
534
+
535
+ <CodeExampleStack>
536
+
537
+ ```html
538
+ <!-- [!code filename:HTML] -->
539
+ <!-- [!code classes:[&>[data-active]+span]:text-blue-600] -->
540
+ <div class="[&>[data-active]+span]:text-blue-600 ...">
541
+ <span data-active><!-- ... --></span>
542
+ <!-- [!code highlight:2] -->
543
+ <span>This text will be blue</span>
544
+ </div>
545
+ ```
546
+
547
+ ```css
548
+ /* [!code filename:Simplified CSS] */
549
+ div > [data-active] + span {
550
+ color: var(--color-blue-600);
551
+ }
552
+ ```
553
+
554
+ </CodeExampleStack>
555
+
556
+ ### When to use inline styles
557
+
558
+ Inline styles are still very useful in Tailwind CSS projects, particularly when a value is coming from a dynamic source like a database or API:
559
+
560
+ ```jsx
561
+ // [!code filename:branded-button.jsx]
562
+ export function BrandedButton({ buttonColor, textColor, children }) {
563
+ return (
564
+ <button
565
+ style={{
566
+ // [!code highlight:3]
567
+ backgroundColor: buttonColor,
568
+ color: textColor,
569
+ }}
570
+ className="rounded-md px-3 py-1.5 font-medium"
571
+ >
572
+ {children}
573
+ </button>
574
+ );
575
+ }
576
+ ```
577
+
578
+ You might also reach for an inline style for very complicated arbitrary values that are difficult to read when formatted as a class name:
579
+
580
+ ```html
581
+ <!-- [!code filename:HTML] -->
582
+ <!-- prettier-ignore -->
583
+ <div class="grid-[2fr_max(0,var(--gutter-width))_calc(var(--gutter-width)+10px)]"> <!-- [!code --] -->
584
+ <!-- prettier-ignore -->
585
+ <div style="grid-template-columns: 2fr max(0, var(--gutter-width)) calc(var(--gutter-width) + 10px)"> <!-- [!code ++] -->
586
+ <!-- ... -->
587
+ </div>
588
+ ```
589
+
590
+ Another useful pattern is setting CSS variables based on dynamic sources using inline styles, then referencing those variables with utility classes:
591
+
592
+ ```jsx
593
+ // [!code filename:branded-button.jsx]
594
+ export function BrandedButton({ buttonColor, buttonColorHover, textColor, children }) {
595
+ return (
596
+ <button
597
+ style={{
598
+ // [!code highlight:4]
599
+ "--bg-color": buttonColor,
600
+ "--bg-color-hover": buttonColorHover,
601
+ "--text-color": textColor,
602
+ }}
603
+ // [!code classes:bg-(--bg-color),text-(--text-color),hover:bg-(--bg-color-hover)]
604
+ className="bg-(--bg-color) text-(--text-color) hover:bg-(--bg-color-hover) ..."
605
+ >
606
+ {children}
607
+ </button>
608
+ );
609
+ }
610
+ ```
611
+
612
+ ## Managing duplication
613
+
614
+ When you build entire projects with just utility classes, you'll inevitably find yourself repeating certain patterns to recreate the same design in different places.
615
+
616
+ For example, here the utility classes for each avatar image are repeated five separate times:
617
+
618
+ <Figure>
619
+
620
+ <Example padding={false}>
621
+ <div className="bg-white">
622
+ <div className="mx-auto w-72 px-8 py-6 sm:w-96 sm:px-12 sm:py-8">
623
+ <div className="flex items-center space-x-2 text-base">
624
+ <h4 className="text-base font-semibold text-slate-900">Contributors</h4>
625
+ <span className="rounded-full bg-slate-100 px-2 py-1 text-xs font-semibold text-slate-700">204</span>
626
+ </div>
627
+ <div className="mt-3 flex -space-x-2 overflow-hidden">
628
+ <img
629
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
630
+ src="https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
631
+ alt=""
632
+ />
633
+ <img
634
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
635
+ src="https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
636
+ alt=""
637
+ />
638
+ <img
639
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
640
+ src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80"
641
+ alt=""
642
+ />
643
+ <img
644
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
645
+ src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
646
+ alt=""
647
+ />
648
+ <img
649
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
650
+ src="https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
651
+ alt=""
652
+ />
653
+ </div>
654
+ <div className="mt-3 text-sm font-medium">
655
+ <a href="#" className="text-blue-500">
656
+ + 198 others
657
+ </a>
658
+ </div>
659
+ </div>
660
+ </div>
661
+ </Example>
662
+
663
+ ```html
664
+ <!-- [!code classes:inline-block,h-12,w-12,rounded-full,ring-2,ring-white] -->
665
+ <div>
666
+ <div class="flex items-center space-x-2 text-base">
667
+ <h4 class="font-semibold text-slate-900">Contributors</h4>
668
+ <span class="bg-slate-100 px-2 py-1 text-xs font-semibold text-slate-700 ...">204</span>
669
+ </div>
670
+ <div class="mt-3 flex -space-x-2 overflow-hidden">
671
+ <!-- prettier-ignore -->
672
+ <img class="inline-block h-12 w-12 rounded-full ring-2 ring-white" src="https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="" />
673
+ <!-- prettier-ignore -->
674
+ <img class="inline-block h-12 w-12 rounded-full ring-2 ring-white" src="https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="" />
675
+ <!-- prettier-ignore -->
676
+ <img class="inline-block h-12 w-12 rounded-full ring-2 ring-white" src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80" alt="" />
677
+ <!-- prettier-ignore -->
678
+ <img class="inline-block h-12 w-12 rounded-full ring-2 ring-white" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="" />
679
+ <!-- prettier-ignore -->
680
+ <img class="inline-block h-12 w-12 rounded-full ring-2 ring-white" src="https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="" />
681
+ </div>
682
+ <div class="mt-3 text-sm font-medium">
683
+ <a href="#" class="text-blue-500">+ 198 others</a>
684
+ </div>
685
+ </div>
686
+ ```
687
+
688
+ </Figure>
689
+
690
+ Don't panic! In practice this isn't the problem you might be worried it is, and the strategies for dealing with it are things you already do every day.
691
+
692
+ ### Using loops
693
+
694
+ A lot of the time a design element that shows up more than once in the rendered page is only actually authored once because the actual markup is rendered in a loop.
695
+
696
+ For example, the duplicate avatars at the beginning of this guide would almost certainly be rendered in a loop in a real project:
697
+
698
+ <Figure>
699
+
700
+ <Example padding={false}>
701
+ <div className="bg-white">
702
+ <div className="mx-auto w-72 px-8 py-6 sm:w-96 sm:px-12 sm:py-8">
703
+ <div className="flex items-center space-x-2 text-base">
704
+ <h4 className="text-base font-semibold text-slate-900">Contributors</h4>
705
+ <span className="rounded-full bg-slate-100 px-2 py-1 text-xs font-semibold text-slate-700">204</span>
706
+ </div>
707
+ <div className="mt-3 flex -space-x-2 overflow-hidden">
708
+ <img
709
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
710
+ src="https://images.unsplash.com/photo-1491528323818-fdd1faba62cc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
711
+ alt=""
712
+ />
713
+ <img
714
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
715
+ src="https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
716
+ alt=""
717
+ />
718
+ <img
719
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
720
+ src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2.25&w=256&h=256&q=80"
721
+ alt=""
722
+ />
723
+ <img
724
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
725
+ src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
726
+ alt=""
727
+ />
728
+ <img
729
+ className="inline-block h-12 w-12 rounded-full ring-2 ring-white"
730
+ src="https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
731
+ alt=""
732
+ />
733
+ </div>
734
+ <div className="mt-3 text-sm font-medium">
735
+ <a href="#" className="text-blue-500">
736
+ + 198 others
737
+ </a>
738
+ </div>
739
+ </div>
740
+ </div>
741
+ </Example>
742
+
743
+ ```svelte
744
+ <div>
745
+ <div class="flex items-center space-x-2 text-base">
746
+ <h4 class="font-semibold text-slate-900">Contributors</h4>
747
+ <span class="bg-slate-100 px-2 py-1 text-xs font-semibold text-slate-700 ...">204</span>
748
+ </div>
749
+ <div class="mt-3 flex -space-x-2 overflow-hidden">
750
+ <!-- prettier-ignore -->
751
+ <!-- [!code highlight:4] -->
752
+ {#each contributors as user}
753
+ <img class="inline-block h-12 w-12 rounded-full ring-2 ring-white" src={user.avatarUrl} alt={user.handle} />
754
+ {/each}
755
+ </div>
756
+ <div class="mt-3 text-sm font-medium">
757
+ <a href="#" class="text-blue-500">+ 198 others</a>
758
+ </div>
759
+ </div>
760
+ ```
761
+
762
+ </Figure>
763
+
764
+ When elements are rendered in a loop like this, the actual class list is only written once so there's no actual duplication problem to solve.
765
+
766
+ ### Using multi-cursor editing
767
+
768
+ When duplication is localized to a group of elements in a single file, the easiest way to deal with it is to use [multi-cursor editing](https://code.visualstudio.com/docs/editor/codebasics#_multiple-selections-multicursor) to quickly select and edit the class list for each element at once:
769
+
770
+ <MultiCursorAnimation>
771
+ <Figure>
772
+ <Example>
773
+ <MultiCursorPreview />
774
+ </Example>
775
+ <CodeExampleWrapper>
776
+ <MultiCursorCode />
777
+ </CodeExampleWrapper>
778
+ </Figure>
779
+ </MultiCursorAnimation>
780
+
781
+ You'd be surprised at how often this ends up being the best solution. If you can quickly edit all of the duplicated class lists simultaneously, there's no benefit to introducing any additional abstraction.
782
+
783
+ ### Using components
784
+
785
+ If you need to reuse some styles across multiple files, the best strategy is to create a _component_ if you're using a front-end framework like React, Svelte, or Vue, or a _template partial_ if you're using a templating language like Blade, ERB, Twig, or Nunjucks.
786
+
787
+ <Figure>
788
+
789
+ <Example padding={false}>
790
+ <div className="bg-white">
791
+ <div className="mx-auto w-72 bg-white px-8 py-6 sm:w-96 sm:px-12 sm:py-8">
792
+ <div>
793
+ <img
794
+ className="rounded-lg"
795
+ src="https://images.unsplash.com/photo-1452784444945-3f422708fe5e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=512&q=80"
796
+ width="512"
797
+ height="341"
798
+ alt="Beach"
799
+ />
800
+ <div className="mt-4">
801
+ <div className="text-xs font-bold text-sky-500">Private Villa</div>
802
+ <div className="mt-1 font-bold text-gray-700">
803
+ <a href="#" className="hover:underline">Relaxing All-Inclusive Resort in Cancun</a>
804
+ </div>
805
+ <div className="mt-2 text-sm text-gray-600">$299 USD per night</div>
806
+ </div>
807
+ </div>
808
+ </div>
809
+ </div>
810
+
811
+ </Example>
812
+
813
+ ```jsx {{ filename: 'VacationCard.jsx' }}
814
+ export function VacationCard({ img, imgAlt, eyebrow, title, pricing, url }) {
815
+ return (
816
+ <div>
817
+ <img className="rounded-lg" src={img} alt={imgAlt} />
818
+ <div className="mt-4">
819
+ <div className="text-xs font-bold text-sky-500">{eyebrow}</div>
820
+ <div className="mt-1 font-bold text-gray-700">
821
+ <a href={url} className="hover:underline">
822
+ {title}
823
+ </a>
824
+ </div>
825
+ <div className="mt-2 text-sm text-gray-600">{pricing}</div>
826
+ </div>
827
+ </div>
828
+ );
829
+ }
830
+ ```
831
+
832
+ </Figure>
833
+
834
+ Now you can use this component in as many places as you like, while still having a single source of truth for the styles so they can easily be updated together in one place.
835
+
836
+ ### Using custom CSS
837
+
838
+ If you're using a templating language like ERB or Twig instead of something like React or Vue, creating a template partial for something as small as a button can feel like overkill compared to a simple CSS class like `btn`.
839
+
840
+ While it's highly recommended that you create proper template partials for more complex components, writing some custom CSS is totally fine when a template partial feels heavy-handed.
841
+
842
+ Here's what a `btn-primary` class might look like, using [theme variables](/docs/theme#with-custom-css) to keep the design consistent:
843
+
844
+ <Figure>
845
+
846
+ <Example>
847
+
848
+ <div className="text-center">
849
+ <button
850
+ type="button"
851
+ className="rounded-full bg-violet-500 px-5 py-2 font-semibold text-white shadow-md hover:bg-violet-700"
852
+ >
853
+ Save changes
854
+ </button>
855
+ </div>
856
+
857
+ </Example>
858
+
859
+ <CodeExampleStack>
860
+
861
+ ```html
862
+ <!-- [!code filename:HTML] -->
863
+ <button class="btn-primary">Save changes</button>
864
+ ```
865
+
866
+ ```css
867
+ /* [!code filename:CSS] */
868
+ @import "tailwindcss";
869
+
870
+ @layer components {
871
+ .btn-primary {
872
+ border-radius: calc(infinity * 1px);
873
+ background-color: var(--color-violet-500);
874
+ padding-inline: --spacing(5);
875
+ padding-block: --spacing(2);
876
+ font-weight: var(--font-weight-semibold);
877
+ color: var(--color-white);
878
+ box-shadow: var(--shadow-md);
879
+ &:hover {
880
+ @media (hover: hover) {
881
+ background-color: var(--color-violet-700);
882
+ }
883
+ }
884
+ }
885
+ }
886
+ ```
887
+
888
+ </CodeExampleStack>
889
+
890
+ </Figure>
891
+
892
+ Again though, for anything that's more complicated than just a single HTML element, we highly recommend using template partials so the styles and structure can be encapsulated in one place.
893
+
894
+ ## Managing style conflicts
895
+
896
+ ### Conflicting utility classes
897
+
898
+ When you add two classes that target the same CSS property, the class that appears later in the stylesheet wins. So in this example, the element will receive `display: grid` even though `flex` comes last in the actual `class` attribute:
899
+
900
+ <CodeExampleStack>
901
+
902
+ ```html
903
+ <!-- [!code filename:HTML] -->
904
+ <!-- prettier-ignore -->
905
+ <div class="grid flex">
906
+ <!-- ... -->
907
+ </div>
908
+ ```
909
+
910
+ ```css
911
+ /* [!code filename: CSS] */
912
+ .flex {
913
+ display: flex;
914
+ }
915
+ .grid {
916
+ display: grid;
917
+ }
918
+ ```
919
+
920
+ </CodeExampleStack>
921
+
922
+ In general, you should just never add two conflicting classes to the same element — only ever add the one you actually want to take effect:
923
+
924
+ ```jsx
925
+ // [!code filename:example.jsx]
926
+ // [!code word:gridLayout\ \?\ \"grid\"\ \:\ \"flex\"]
927
+ export function Example({ gridLayout }) {
928
+ return <div className={gridLayout ? "grid" : "flex"}>{/* ... */}</div>;
929
+ }
930
+ ```
931
+
932
+ Using component-based libraries like React or Vue, this often means exposing specific props for styling customizations instead of letting consumers add extra classes from outside of a component, since those styles will often conflict.
933
+
934
+ ### Using the important modifier
935
+
936
+ When you really need to force a specific utility class to take effect and have no other means of managing the specificity, you can add `!` to the end of the class name to make all of the declarations `!important`:
937
+
938
+ <CodeExampleStack>
939
+
940
+ ```html
941
+ <!-- [!code filename:HTML] -->
942
+ <!-- [!code classes:bg-red-500!] -->
943
+ <!-- prettier-ignore -->
944
+ <div class="bg-teal-500 bg-red-500!">
945
+ <!-- ... -->
946
+ </div>
947
+ ```
948
+
949
+ ```css
950
+ /* [!code filename: Generated CSS] */
951
+ /* [!code word:!important] */
952
+ .bg-red-500\! {
953
+ background-color: var(--color-red-500) !important;
954
+ }
955
+ .bg-teal-500 {
956
+ background-color: var(--color-teal-500);
957
+ }
958
+ ```
959
+
960
+ </CodeExampleStack>
961
+
962
+ ### Using the important flag
963
+
964
+ If you're adding Tailwind to a project that has existing complex CSS with high specificity rules, you can use the `important` flag when importing Tailwind to mark _all_ utilities as `!important`:
965
+
966
+ <CodeExampleStack>
967
+
968
+ ```css
969
+ /* [!code filename:app.css] */
970
+ /* [!code word:important] */
971
+ @import "tailwindcss" important;
972
+ ```
973
+
974
+ ```css
975
+ /* [!code filename:Compiled CSS] */
976
+ /* [!code word:!important] */
977
+ @layer utilities {
978
+ .flex {
979
+ display: flex !important;
980
+ }
981
+ .gap-4 {
982
+ gap: 1rem !important;
983
+ }
984
+ .underline {
985
+ text-decoration-line: underline !important;
986
+ }
987
+ }
988
+ ```
989
+
990
+ </CodeExampleStack>
991
+
992
+ ### Using the prefix option
993
+
994
+ If your project has class names that conflict with Tailwind CSS utilities, you can prefix all Tailwind-generated classes and CSS variables using the `prefix` option:
995
+
996
+ <CodeExampleStack>
997
+
998
+ ```css
999
+ /* [!code filename:app.css] */
1000
+ /* [!code word:important] */
1001
+ @import "tailwindcss" prefix(tw);
1002
+ ```
1003
+
1004
+ ```css
1005
+ /* [!code filename:Compiled CSS] */
1006
+ /* [!code word:tw\:] */
1007
+ @layer theme {
1008
+ :root {
1009
+ --tw-color-red-500: oklch(0.637 0.237 25.331);
1010
+ }
1011
+ }
1012
+
1013
+ @layer utilities {
1014
+ .tw\:text-red-500 {
1015
+ color: var(--tw-color-red-500);
1016
+ }
1017
+ }
1018
+ ```
1019
+
1020
+ </CodeExampleStack>