cokit-cli 1.0.4 → 1.0.5

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 (525) hide show
  1. package/package.json +1 -1
  2. package/templates/repo/.github/instructions/ck-backend.instructions.md +28 -15
  3. package/templates/repo/.github/instructions/ck-development.instructions.md +15 -0
  4. package/templates/repo/.github/instructions/ck-frontend-design-pro.instructions.md +58 -0
  5. package/templates/repo/.github/instructions/ck-frontend.instructions.md +20 -7
  6. package/templates/repo/.github/instructions/ck-google-adk-python.instructions.md +242 -0
  7. package/templates/repo/.github/instructions/ck-research.instructions.md +167 -0
  8. package/templates/repo/.github/instructions/ck-testing.instructions.md +18 -13
  9. package/templates/repo/.github/prompts/ck-ask.prompt.md +57 -0
  10. package/templates/repo/.github/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
  11. package/templates/repo/.github/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
  12. package/templates/repo/.github/prompts/ck-bootstrap-auto.prompt.md +114 -0
  13. package/templates/repo/.github/prompts/ck-bootstrap.prompt.md +136 -0
  14. package/templates/repo/.github/prompts/ck-brainstorm.prompt.md +68 -0
  15. package/templates/repo/.github/prompts/ck-ck-help.prompt.md +114 -0
  16. package/templates/repo/.github/prompts/ck-code-auto.prompt.md +171 -0
  17. package/templates/repo/.github/prompts/ck-code-no-test.prompt.md +159 -0
  18. package/templates/repo/.github/prompts/ck-code-parallel.prompt.md +56 -0
  19. package/templates/repo/.github/prompts/ck-code.prompt.md +167 -18
  20. package/templates/repo/.github/prompts/ck-coding-level.prompt.md +54 -0
  21. package/templates/repo/.github/prompts/ck-cook-auto-fast.prompt.md +26 -0
  22. package/templates/repo/.github/prompts/ck-cook-auto-parallel.prompt.md +49 -0
  23. package/templates/repo/.github/prompts/ck-cook-auto.prompt.md +15 -0
  24. package/templates/repo/.github/prompts/ck-cook.prompt.md +96 -0
  25. package/templates/repo/.github/prompts/ck-debug.prompt.md +14 -0
  26. package/templates/repo/.github/prompts/ck-design-3d.prompt.md +84 -0
  27. package/templates/repo/.github/prompts/ck-design-describe.prompt.md +24 -0
  28. package/templates/repo/.github/prompts/ck-design-fast.prompt.md +32 -0
  29. package/templates/repo/.github/prompts/ck-design-good.prompt.md +36 -0
  30. package/templates/repo/.github/prompts/ck-design-screenshot.prompt.md +35 -0
  31. package/templates/repo/.github/prompts/ck-design-video.prompt.md +35 -0
  32. package/templates/repo/.github/prompts/ck-docs-init.prompt.md +27 -0
  33. package/templates/repo/.github/prompts/ck-docs-summarize.prompt.md +23 -0
  34. package/templates/repo/.github/prompts/ck-docs-update.prompt.md +36 -0
  35. package/templates/repo/.github/prompts/ck-fix-ci.prompt.md +18 -0
  36. package/templates/repo/.github/prompts/ck-fix-fast.prompt.md +18 -0
  37. package/templates/repo/.github/prompts/ck-fix-hard.prompt.md +36 -0
  38. package/templates/repo/.github/prompts/ck-fix-logs.prompt.md +27 -0
  39. package/templates/repo/.github/prompts/ck-fix-parallel.prompt.md +54 -0
  40. package/templates/repo/.github/prompts/ck-fix-test.prompt.md +19 -0
  41. package/templates/repo/.github/prompts/ck-fix-types.prompt.md +11 -0
  42. package/templates/repo/.github/prompts/ck-fix-ui.prompt.md +49 -0
  43. package/templates/repo/.github/prompts/ck-fix.prompt.md +36 -16
  44. package/templates/repo/.github/prompts/ck-git-cm.prompt.md +8 -0
  45. package/templates/repo/.github/prompts/ck-git-cp.prompt.md +7 -0
  46. package/templates/repo/.github/prompts/ck-git-merge.prompt.md +41 -0
  47. package/templates/repo/.github/prompts/ck-git-pr.prompt.md +49 -0
  48. package/templates/repo/.github/prompts/ck-kanban.prompt.md +77 -0
  49. package/templates/repo/.github/prompts/ck-plan-archive.prompt.md +58 -0
  50. package/templates/repo/.github/prompts/ck-plan-ci.prompt.md +34 -0
  51. package/templates/repo/.github/prompts/ck-plan-cro.prompt.md +66 -0
  52. package/templates/repo/.github/prompts/ck-plan-fast.prompt.md +67 -0
  53. package/templates/repo/.github/prompts/ck-plan-hard.prompt.md +89 -0
  54. package/templates/repo/.github/prompts/ck-plan-parallel.prompt.md +126 -0
  55. package/templates/repo/.github/prompts/ck-plan-two.prompt.md +43 -0
  56. package/templates/repo/.github/prompts/ck-plan-validate.prompt.md +118 -0
  57. package/templates/repo/.github/prompts/ck-plan.prompt.md +29 -25
  58. package/templates/repo/.github/prompts/ck-preview.prompt.md +65 -0
  59. package/templates/repo/.github/prompts/ck-review-codebase.prompt.md +44 -0
  60. package/templates/repo/.github/prompts/ck-scout-ext.prompt.md +35 -0
  61. package/templates/repo/.github/prompts/ck-scout.prompt.md +25 -0
  62. package/templates/repo/.github/prompts/ck-skill-add.prompt.md +36 -0
  63. package/templates/repo/.github/prompts/ck-skill-create.prompt.md +29 -0
  64. package/templates/repo/.github/prompts/ck-skill-fix-logs.prompt.md +22 -0
  65. package/templates/repo/.github/prompts/ck-skill-optimize-auto.prompt.md +25 -0
  66. package/templates/repo/.github/prompts/ck-skill-optimize.prompt.md +34 -0
  67. package/templates/repo/.github/prompts/ck-skill-plan.prompt.md +46 -0
  68. package/templates/repo/.github/prompts/ck-test-ui.prompt.md +92 -0
  69. package/templates/repo/.github/prompts/ck-test.prompt.md +6 -19
  70. package/templates/repo/.github/prompts/ck-use-mcp.prompt.md +27 -0
  71. package/templates/repo/.github/prompts/ck-watzup.prompt.md +11 -0
  72. package/templates/repo/.github/prompts/ck-worktree.prompt.md +127 -0
  73. package/templates/repo/.github/skills/ck-ai-artist/SKILL.md +73 -0
  74. package/templates/repo/.github/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
  75. package/templates/repo/.github/skills/ck-ai-artist/references/domain-code.md +66 -0
  76. package/templates/repo/.github/skills/ck-ai-artist/references/domain-data.md +72 -0
  77. package/templates/repo/.github/skills/ck-ai-artist/references/domain-marketing.md +66 -0
  78. package/templates/repo/.github/skills/ck-ai-artist/references/domain-patterns.md +33 -0
  79. package/templates/repo/.github/skills/ck-ai-artist/references/domain-writing.md +68 -0
  80. package/templates/repo/.github/skills/ck-ai-artist/references/image-prompting.md +141 -0
  81. package/templates/repo/.github/skills/ck-ai-artist/references/llm-prompting.md +165 -0
  82. package/templates/repo/.github/skills/ck-ai-artist/references/nano-banana.md +59 -0
  83. package/templates/repo/.github/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
  84. package/templates/repo/.github/skills/ck-backend-development/SKILL.md +93 -0
  85. package/templates/repo/.github/skills/ck-backend-development/references/backend-api-design.md +495 -0
  86. package/templates/repo/.github/skills/ck-backend-development/references/backend-architecture.md +454 -0
  87. package/templates/repo/.github/skills/ck-backend-development/references/backend-authentication.md +338 -0
  88. package/templates/repo/.github/skills/ck-backend-development/references/backend-code-quality.md +659 -0
  89. package/templates/repo/.github/skills/ck-backend-development/references/backend-debugging.md +904 -0
  90. package/templates/repo/.github/skills/ck-backend-development/references/backend-devops.md +494 -0
  91. package/templates/repo/.github/skills/ck-backend-development/references/backend-mindset.md +387 -0
  92. package/templates/repo/.github/skills/ck-backend-development/references/backend-performance.md +397 -0
  93. package/templates/repo/.github/skills/ck-backend-development/references/backend-security.md +290 -0
  94. package/templates/repo/.github/skills/ck-backend-development/references/backend-technologies.md +256 -0
  95. package/templates/repo/.github/skills/ck-backend-development/references/backend-testing.md +429 -0
  96. package/templates/repo/.github/skills/ck-better-auth/SKILL.md +202 -0
  97. package/templates/repo/.github/skills/ck-better-auth/references/advanced-features.md +553 -0
  98. package/templates/repo/.github/skills/ck-better-auth/references/database-integration.md +577 -0
  99. package/templates/repo/.github/skills/ck-better-auth/references/email-password-auth.md +416 -0
  100. package/templates/repo/.github/skills/ck-better-auth/references/oauth-providers.md +430 -0
  101. package/templates/repo/.github/skills/ck-better-auth/scripts/.coverage +0 -0
  102. package/templates/repo/.github/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
  103. package/templates/repo/.github/skills/ck-better-auth/scripts/requirements.txt +15 -0
  104. package/templates/repo/.github/skills/ck-better-auth/scripts/tests/.coverage +0 -0
  105. package/templates/repo/.github/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
  106. package/templates/repo/.github/skills/ck-chrome-devtools/SKILL.md +470 -0
  107. package/templates/repo/.github/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
  108. package/templates/repo/.github/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
  109. package/templates/repo/.github/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
  110. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/README.md +272 -0
  111. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
  112. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
  113. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/click.js +83 -0
  114. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/console.js +79 -0
  115. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
  116. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/fill.js +76 -0
  117. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
  118. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
  119. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/install.sh +83 -0
  120. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
  121. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
  122. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
  123. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/network.js +106 -0
  124. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
  125. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/package.json +16 -0
  126. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/performance.js +149 -0
  127. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
  128. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
  129. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
  130. package/templates/repo/.github/skills/ck-code-review/SKILL.md +130 -33
  131. package/templates/repo/.github/skills/ck-code-review/references/code-review-reception.md +209 -0
  132. package/templates/repo/.github/skills/ck-code-review/references/requesting-code-review.md +105 -0
  133. package/templates/repo/.github/skills/ck-code-review/references/verification-before-completion.md +139 -0
  134. package/templates/repo/.github/skills/ck-databases/SKILL.md +231 -0
  135. package/templates/repo/.github/skills/ck-databases/references/mongodb-aggregation.md +447 -0
  136. package/templates/repo/.github/skills/ck-databases/references/mongodb-atlas.md +465 -0
  137. package/templates/repo/.github/skills/ck-databases/references/mongodb-crud.md +408 -0
  138. package/templates/repo/.github/skills/ck-databases/references/mongodb-indexing.md +442 -0
  139. package/templates/repo/.github/skills/ck-databases/references/postgresql-administration.md +594 -0
  140. package/templates/repo/.github/skills/ck-databases/references/postgresql-performance.md +527 -0
  141. package/templates/repo/.github/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
  142. package/templates/repo/.github/skills/ck-databases/references/postgresql-queries.md +475 -0
  143. package/templates/repo/.github/skills/ck-databases/scripts/.coverage +0 -0
  144. package/templates/repo/.github/skills/ck-databases/scripts/db_backup.py +502 -0
  145. package/templates/repo/.github/skills/ck-databases/scripts/db_migrate.py +425 -0
  146. package/templates/repo/.github/skills/ck-databases/scripts/db_performance_check.py +456 -0
  147. package/templates/repo/.github/skills/ck-databases/scripts/requirements.txt +20 -0
  148. package/templates/repo/.github/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
  149. package/templates/repo/.github/skills/ck-databases/scripts/tests/requirements.txt +4 -0
  150. package/templates/repo/.github/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
  151. package/templates/repo/.github/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
  152. package/templates/repo/.github/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
  153. package/templates/repo/.github/skills/ck-debugging/SKILL.md +70 -22
  154. package/templates/repo/.github/skills/ck-debugging/references/defense-in-depth.md +124 -0
  155. package/templates/repo/.github/skills/ck-debugging/references/root-cause-tracing.md +122 -0
  156. package/templates/repo/.github/skills/ck-debugging/references/systematic-debugging.md +102 -0
  157. package/templates/repo/.github/skills/ck-debugging/references/verification.md +123 -0
  158. package/templates/repo/.github/skills/ck-debugging/scripts/find-polluter.sh +63 -0
  159. package/templates/repo/.github/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
  160. package/templates/repo/.github/skills/ck-devops/.env.example +76 -0
  161. package/templates/repo/.github/skills/ck-devops/SKILL.md +283 -0
  162. package/templates/repo/.github/skills/ck-devops/references/browser-rendering.md +305 -0
  163. package/templates/repo/.github/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
  164. package/templates/repo/.github/skills/ck-devops/references/cloudflare-platform.md +271 -0
  165. package/templates/repo/.github/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
  166. package/templates/repo/.github/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
  167. package/templates/repo/.github/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
  168. package/templates/repo/.github/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
  169. package/templates/repo/.github/skills/ck-devops/references/docker-basics.md +297 -0
  170. package/templates/repo/.github/skills/ck-devops/references/docker-compose.md +292 -0
  171. package/templates/repo/.github/skills/ck-devops/references/gcloud-platform.md +297 -0
  172. package/templates/repo/.github/skills/ck-devops/references/gcloud-services.md +304 -0
  173. package/templates/repo/.github/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
  174. package/templates/repo/.github/skills/ck-devops/scripts/docker_optimize.py +331 -0
  175. package/templates/repo/.github/skills/ck-devops/scripts/requirements.txt +20 -0
  176. package/templates/repo/.github/skills/ck-devops/scripts/tests/requirements.txt +3 -0
  177. package/templates/repo/.github/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  178. package/templates/repo/.github/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
  179. package/templates/repo/.github/skills/ck-docs-seeker/.env.example +15 -0
  180. package/templates/repo/.github/skills/ck-docs-seeker/SKILL.md +96 -0
  181. package/templates/repo/.github/skills/ck-docs-seeker/package.json +25 -0
  182. package/templates/repo/.github/skills/ck-docs-seeker/references/advanced.md +79 -0
  183. package/templates/repo/.github/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
  184. package/templates/repo/.github/skills/ck-docs-seeker/references/errors.md +68 -0
  185. package/templates/repo/.github/skills/ck-docs-seeker/references/search-patterns.md +93 -0
  186. package/templates/repo/.github/skills/ck-docs-seeker/references/source-evaluation.md +77 -0
  187. package/templates/repo/.github/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
  188. package/templates/repo/.github/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
  189. package/templates/repo/.github/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
  190. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
  191. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  192. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  193. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  194. package/templates/repo/.github/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
  195. package/templates/repo/.github/skills/ck-docs-seeker/workflows/library-search.md +87 -0
  196. package/templates/repo/.github/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
  197. package/templates/repo/.github/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
  198. package/templates/repo/.github/skills/ck-frontend-design/SKILL.md +79 -0
  199. package/templates/repo/.github/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
  200. package/templates/repo/.github/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
  201. package/templates/repo/.github/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
  202. package/templates/repo/.github/skills/ck-frontend-design/references/animejs.md +396 -0
  203. package/templates/repo/.github/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
  204. package/templates/repo/.github/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
  205. package/templates/repo/.github/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
  206. package/templates/repo/.github/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
  207. package/templates/repo/.github/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
  208. package/templates/repo/.github/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
  209. package/templates/repo/.github/skills/ck-frontend-design/references/technical-optimization.md +44 -0
  210. package/templates/repo/.github/skills/ck-frontend-design/references/technical-overview.md +90 -0
  211. package/templates/repo/.github/skills/ck-frontend-design/references/technical-workflows.md +150 -0
  212. package/templates/repo/.github/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
  213. package/templates/repo/.github/skills/ck-frontend-development/SKILL.md +399 -0
  214. package/templates/repo/.github/skills/ck-frontend-development/resources/common-patterns.md +331 -0
  215. package/templates/repo/.github/skills/ck-frontend-development/resources/complete-examples.md +872 -0
  216. package/templates/repo/.github/skills/ck-frontend-development/resources/component-patterns.md +502 -0
  217. package/templates/repo/.github/skills/ck-frontend-development/resources/data-fetching.md +767 -0
  218. package/templates/repo/.github/skills/ck-frontend-development/resources/file-organization.md +502 -0
  219. package/templates/repo/.github/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
  220. package/templates/repo/.github/skills/ck-frontend-development/resources/performance.md +406 -0
  221. package/templates/repo/.github/skills/ck-frontend-development/resources/routing-guide.md +364 -0
  222. package/templates/repo/.github/skills/ck-frontend-development/resources/styling-guide.md +428 -0
  223. package/templates/repo/.github/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
  224. package/templates/repo/.github/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
  225. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
  226. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
  227. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
  228. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
  229. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
  230. package/templates/repo/.github/skills/ck-markdown-novel-viewer/package.json +15 -0
  231. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
  232. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
  233. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
  234. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
  235. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
  236. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
  237. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
  238. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
  239. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
  240. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
  241. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
  242. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
  243. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
  244. package/templates/repo/.github/skills/ck-mcp-builder/LICENSE.txt +202 -0
  245. package/templates/repo/.github/skills/ck-mcp-builder/SKILL.md +327 -0
  246. package/templates/repo/.github/skills/ck-mcp-builder/reference/evaluation.md +602 -0
  247. package/templates/repo/.github/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
  248. package/templates/repo/.github/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
  249. package/templates/repo/.github/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
  250. package/templates/repo/.github/skills/ck-mcp-builder/scripts/connections.py +151 -0
  251. package/templates/repo/.github/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
  252. package/templates/repo/.github/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
  253. package/templates/repo/.github/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
  254. package/templates/repo/.github/skills/ck-mcp-management/README.md +219 -0
  255. package/templates/repo/.github/skills/ck-mcp-management/SKILL.md +209 -0
  256. package/templates/repo/.github/skills/ck-mcp-management/assets/tools.json +3146 -0
  257. package/templates/repo/.github/skills/ck-mcp-management/references/configuration.md +114 -0
  258. package/templates/repo/.github/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
  259. package/templates/repo/.github/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
  260. package/templates/repo/.github/skills/ck-mcp-management/scripts/.env.example +10 -0
  261. package/templates/repo/.github/skills/ck-mcp-management/scripts/cli.ts +195 -0
  262. package/templates/repo/.github/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
  263. package/templates/repo/.github/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
  264. package/templates/repo/.github/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
  265. package/templates/repo/.github/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
  266. package/templates/repo/.github/skills/ck-mcp-management/scripts/package.json +20 -0
  267. package/templates/repo/.github/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
  268. package/templates/repo/.github/skills/ck-media-processing/SKILL.md +90 -0
  269. package/templates/repo/.github/skills/ck-media-processing/references/common-workflows.md +132 -0
  270. package/templates/repo/.github/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
  271. package/templates/repo/.github/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
  272. package/templates/repo/.github/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
  273. package/templates/repo/.github/skills/ck-media-processing/references/format-compatibility.md +375 -0
  274. package/templates/repo/.github/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
  275. package/templates/repo/.github/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
  276. package/templates/repo/.github/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
  277. package/templates/repo/.github/skills/ck-media-processing/references/troubleshooting.md +109 -0
  278. package/templates/repo/.github/skills/ck-media-processing/scripts/README.md +111 -0
  279. package/templates/repo/.github/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
  280. package/templates/repo/.github/skills/ck-media-processing/scripts/batch_resize.py +342 -0
  281. package/templates/repo/.github/skills/ck-media-processing/scripts/media_convert.py +311 -0
  282. package/templates/repo/.github/skills/ck-media-processing/scripts/remove-background.sh +96 -0
  283. package/templates/repo/.github/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
  284. package/templates/repo/.github/skills/ck-media-processing/scripts/requirements.txt +24 -0
  285. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/.coverage +0 -0
  286. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
  287. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
  288. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
  289. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
  290. package/templates/repo/.github/skills/ck-media-processing/scripts/video_optimize.py +414 -0
  291. package/templates/repo/.github/skills/ck-mobile-development/SKILL.md +210 -0
  292. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-android.md +604 -0
  293. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
  294. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
  295. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
  296. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-ios.md +496 -0
  297. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
  298. package/templates/repo/.github/skills/ck-payment-integration/README.md +185 -0
  299. package/templates/repo/.github/skills/ck-payment-integration/SKILL.md +116 -0
  300. package/templates/repo/.github/skills/ck-payment-integration/references/polar/benefits.md +396 -0
  301. package/templates/repo/.github/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
  302. package/templates/repo/.github/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
  303. package/templates/repo/.github/skills/ck-payment-integration/references/polar/overview.md +184 -0
  304. package/templates/repo/.github/skills/ck-payment-integration/references/polar/products.md +244 -0
  305. package/templates/repo/.github/skills/ck-payment-integration/references/polar/sdk.md +436 -0
  306. package/templates/repo/.github/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
  307. package/templates/repo/.github/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
  308. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/api.md +140 -0
  309. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
  310. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/overview.md +138 -0
  311. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
  312. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
  313. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
  314. package/templates/repo/.github/skills/ck-payment-integration/scripts/.env.example +20 -0
  315. package/templates/repo/.github/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
  316. package/templates/repo/.github/skills/ck-payment-integration/scripts/package.json +17 -0
  317. package/templates/repo/.github/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
  318. package/templates/repo/.github/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
  319. package/templates/repo/.github/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
  320. package/templates/repo/.github/skills/ck-planning/SKILL.md +112 -0
  321. package/templates/repo/.github/skills/ck-planning/references/codebase-understanding.md +62 -0
  322. package/templates/repo/.github/skills/ck-planning/references/output-standards.md +127 -0
  323. package/templates/repo/.github/skills/ck-planning/references/plan-organization.md +150 -0
  324. package/templates/repo/.github/skills/ck-planning/references/research-phase.md +49 -0
  325. package/templates/repo/.github/skills/ck-planning/references/solution-design.md +63 -0
  326. package/templates/repo/.github/skills/ck-problem-solving/SKILL.md +95 -0
  327. package/templates/repo/.github/skills/ck-problem-solving/references/attribution.md +69 -0
  328. package/templates/repo/.github/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
  329. package/templates/repo/.github/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
  330. package/templates/repo/.github/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
  331. package/templates/repo/.github/skills/ck-problem-solving/references/scale-game.md +95 -0
  332. package/templates/repo/.github/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
  333. package/templates/repo/.github/skills/ck-problem-solving/references/when-stuck.md +72 -0
  334. package/templates/repo/.github/skills/ck-repomix/SKILL.md +247 -0
  335. package/templates/repo/.github/skills/ck-repomix/references/configuration.md +211 -0
  336. package/templates/repo/.github/skills/ck-repomix/references/usage-patterns.md +232 -0
  337. package/templates/repo/.github/skills/ck-repomix/scripts/.coverage +0 -0
  338. package/templates/repo/.github/skills/ck-repomix/scripts/README.md +179 -0
  339. package/templates/repo/.github/skills/ck-repomix/scripts/repomix_batch.py +455 -0
  340. package/templates/repo/.github/skills/ck-repomix/scripts/repos.example.json +15 -0
  341. package/templates/repo/.github/skills/ck-repomix/scripts/requirements.txt +15 -0
  342. package/templates/repo/.github/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
  343. package/templates/repo/.github/skills/ck-sequential-thinking/.env.example +8 -0
  344. package/templates/repo/.github/skills/ck-sequential-thinking/README.md +183 -0
  345. package/templates/repo/.github/skills/ck-sequential-thinking/SKILL.md +92 -0
  346. package/templates/repo/.github/skills/ck-sequential-thinking/package.json +31 -0
  347. package/templates/repo/.github/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
  348. package/templates/repo/.github/skills/ck-sequential-thinking/references/advanced-techniques.md +76 -0
  349. package/templates/repo/.github/skills/ck-sequential-thinking/references/core-patterns.md +95 -0
  350. package/templates/repo/.github/skills/ck-sequential-thinking/references/examples-api.md +88 -0
  351. package/templates/repo/.github/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
  352. package/templates/repo/.github/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
  353. package/templates/repo/.github/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
  354. package/templates/repo/.github/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
  355. package/templates/repo/.github/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
  356. package/templates/repo/.github/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
  357. package/templates/repo/.github/skills/ck-shopify/README.md +66 -0
  358. package/templates/repo/.github/skills/ck-shopify/SKILL.md +319 -0
  359. package/templates/repo/.github/skills/ck-shopify/references/app-development.md +470 -0
  360. package/templates/repo/.github/skills/ck-shopify/references/extensions.md +493 -0
  361. package/templates/repo/.github/skills/ck-shopify/references/themes.md +498 -0
  362. package/templates/repo/.github/skills/ck-shopify/scripts/.coverage +0 -0
  363. package/templates/repo/.github/skills/ck-shopify/scripts/requirements.txt +19 -0
  364. package/templates/repo/.github/skills/ck-shopify/scripts/shopify_init.py +423 -0
  365. package/templates/repo/.github/skills/ck-shopify/scripts/tests/.coverage +0 -0
  366. package/templates/repo/.github/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
  367. package/templates/repo/.github/skills/ck-skill-creator/LICENSE.txt +202 -0
  368. package/templates/repo/.github/skills/ck-skill-creator/SKILL.md +265 -0
  369. package/templates/repo/.github/skills/ck-skill-creator/scripts/init_skill.py +303 -0
  370. package/templates/repo/.github/skills/ck-skill-creator/scripts/package_skill.py +110 -0
  371. package/templates/repo/.github/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
  372. package/templates/repo/.github/skills/ck-threejs/SKILL.md +87 -0
  373. package/templates/repo/.github/skills/ck-threejs/references/01-getting-started.md +177 -0
  374. package/templates/repo/.github/skills/ck-threejs/references/02-loaders.md +169 -0
  375. package/templates/repo/.github/skills/ck-threejs/references/03-textures.md +170 -0
  376. package/templates/repo/.github/skills/ck-threejs/references/04-cameras.md +195 -0
  377. package/templates/repo/.github/skills/ck-threejs/references/05-lights.md +183 -0
  378. package/templates/repo/.github/skills/ck-threejs/references/06-animations.md +214 -0
  379. package/templates/repo/.github/skills/ck-threejs/references/07-math.md +260 -0
  380. package/templates/repo/.github/skills/ck-threejs/references/08-interaction.md +267 -0
  381. package/templates/repo/.github/skills/ck-threejs/references/09-postprocessing.md +240 -0
  382. package/templates/repo/.github/skills/ck-threejs/references/10-controls.md +259 -0
  383. package/templates/repo/.github/skills/ck-threejs/references/11-materials-advanced.md +270 -0
  384. package/templates/repo/.github/skills/ck-threejs/references/12-performance.md +269 -0
  385. package/templates/repo/.github/skills/ck-threejs/references/13-node-materials.md +298 -0
  386. package/templates/repo/.github/skills/ck-threejs/references/14-physics-vr.md +304 -0
  387. package/templates/repo/.github/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
  388. package/templates/repo/.github/skills/ck-threejs/references/16-webgpu.md +302 -0
  389. package/templates/repo/.github/skills/ck-ui-styling/LICENSE.txt +202 -0
  390. package/templates/repo/.github/skills/ck-ui-styling/SKILL.md +319 -0
  391. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  392. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  393. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  394. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  395. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  396. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  397. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  398. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  399. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  400. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  401. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  402. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  403. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  404. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  405. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  406. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  407. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  408. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  409. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  410. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  411. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  412. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  413. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  414. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  415. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  416. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  417. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  418. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  419. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  420. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  421. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  422. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  423. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  424. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  425. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  426. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  427. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  428. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  429. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  430. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  431. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  432. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  433. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  434. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  435. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  436. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  437. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  438. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  439. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  440. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  441. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  442. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  443. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  444. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  445. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  446. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  447. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  448. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  449. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  450. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  451. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  452. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  453. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  454. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  455. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  456. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  457. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  458. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  459. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  460. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  461. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  462. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  463. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  464. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  465. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  466. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  467. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  468. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  469. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  470. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  471. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  472. package/templates/repo/.github/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
  473. package/templates/repo/.github/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
  474. package/templates/repo/.github/skills/ck-ui-styling/references/shadcn-components.md +424 -0
  475. package/templates/repo/.github/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
  476. package/templates/repo/.github/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
  477. package/templates/repo/.github/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
  478. package/templates/repo/.github/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
  479. package/templates/repo/.github/skills/ck-ui-styling/scripts/.coverage +0 -0
  480. package/templates/repo/.github/skills/ck-ui-styling/scripts/requirements.txt +17 -0
  481. package/templates/repo/.github/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
  482. package/templates/repo/.github/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
  483. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
  484. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
  485. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  486. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  487. package/templates/repo/.github/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
  488. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
  489. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
  490. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
  491. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
  492. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
  493. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  494. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
  495. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  496. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  497. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
  498. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  499. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  500. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
  501. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
  502. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
  503. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  504. package/templates/repo/.github/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
  505. package/templates/repo/.github/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
  506. package/templates/repo/.github/skills/ck-web-frameworks/SKILL.md +322 -0
  507. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
  508. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
  509. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
  510. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
  511. package/templates/repo/.github/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
  512. package/templates/repo/.github/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
  513. package/templates/repo/.github/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
  514. package/templates/repo/.github/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
  515. package/templates/repo/.github/skills/ck-web-frameworks/scripts/.coverage +0 -0
  516. package/templates/repo/.github/skills/ck-web-frameworks/scripts/__init__.py +0 -0
  517. package/templates/repo/.github/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
  518. package/templates/repo/.github/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
  519. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
  520. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
  521. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  522. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  523. package/templates/repo/.github/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
  524. package/templates/repo/.github/prompts/ck-docs.prompt.md +0 -23
  525. package/templates/repo/.github/prompts/ck-review.prompt.md +0 -24
@@ -0,0 +1,266 @@
1
+ """Tests for shadcn_add.py"""
2
+
3
+ import json
4
+ import subprocess
5
+ from pathlib import Path
6
+ from unittest.mock import MagicMock, mock_open, patch
7
+
8
+ import pytest
9
+
10
+ # Add parent directory to path for imports
11
+ import sys
12
+ sys.path.insert(0, str(Path(__file__).parent.parent))
13
+
14
+ from shadcn_add import ShadcnInstaller
15
+
16
+
17
+ class TestShadcnInstaller:
18
+ """Test ShadcnInstaller class."""
19
+
20
+ @pytest.fixture
21
+ def temp_project(self, tmp_path):
22
+ """Create temporary project structure."""
23
+ project_root = tmp_path / "test-project"
24
+ project_root.mkdir()
25
+
26
+ # Create components.json
27
+ components_json = project_root / "components.json"
28
+ components_json.write_text(
29
+ json.dumps({
30
+ "style": "new-york",
31
+ "aliases": {
32
+ "components": "@/components",
33
+ "utils": "@/lib/utils"
34
+ }
35
+ })
36
+ )
37
+
38
+ # Create components directory
39
+ ui_dir = project_root / "components" / "ui"
40
+ ui_dir.mkdir(parents=True)
41
+
42
+ return project_root
43
+
44
+ def test_init_default_project_root(self):
45
+ """Test initialization with default project root."""
46
+ installer = ShadcnInstaller()
47
+ assert installer.project_root == Path.cwd()
48
+ assert installer.dry_run is False
49
+
50
+ def test_init_custom_project_root(self, tmp_path):
51
+ """Test initialization with custom project root."""
52
+ installer = ShadcnInstaller(project_root=tmp_path)
53
+ assert installer.project_root == tmp_path
54
+
55
+ def test_init_dry_run(self):
56
+ """Test initialization with dry run mode."""
57
+ installer = ShadcnInstaller(dry_run=True)
58
+ assert installer.dry_run is True
59
+
60
+ def test_check_shadcn_config_exists(self, temp_project):
61
+ """Test checking for existing shadcn config."""
62
+ installer = ShadcnInstaller(project_root=temp_project)
63
+ assert installer.check_shadcn_config() is True
64
+
65
+ def test_check_shadcn_config_not_exists(self, tmp_path):
66
+ """Test checking for non-existent shadcn config."""
67
+ installer = ShadcnInstaller(project_root=tmp_path)
68
+ assert installer.check_shadcn_config() is False
69
+
70
+ def test_get_installed_components_empty(self, temp_project):
71
+ """Test getting installed components when none exist."""
72
+ installer = ShadcnInstaller(project_root=temp_project)
73
+ installed = installer.get_installed_components()
74
+ assert installed == []
75
+
76
+ def test_get_installed_components_with_files(self, temp_project):
77
+ """Test getting installed components when files exist."""
78
+ ui_dir = temp_project / "components" / "ui"
79
+
80
+ # Create component files
81
+ (ui_dir / "button.tsx").write_text("export const Button = () => {}")
82
+ (ui_dir / "card.tsx").write_text("export const Card = () => {}")
83
+
84
+ installer = ShadcnInstaller(project_root=temp_project)
85
+ installed = installer.get_installed_components()
86
+
87
+ assert sorted(installed) == ["button", "card"]
88
+
89
+ def test_get_installed_components_no_config(self, tmp_path):
90
+ """Test getting installed components without config."""
91
+ installer = ShadcnInstaller(project_root=tmp_path)
92
+ installed = installer.get_installed_components()
93
+ assert installed == []
94
+
95
+ def test_add_components_no_components(self, temp_project):
96
+ """Test adding components with empty list."""
97
+ installer = ShadcnInstaller(project_root=temp_project)
98
+ success, message = installer.add_components([])
99
+
100
+ assert success is False
101
+ assert "No components specified" in message
102
+
103
+ def test_add_components_no_config(self, tmp_path):
104
+ """Test adding components without shadcn config."""
105
+ installer = ShadcnInstaller(project_root=tmp_path)
106
+ success, message = installer.add_components(["button"])
107
+
108
+ assert success is False
109
+ assert "not initialized" in message
110
+
111
+ def test_add_components_already_installed(self, temp_project):
112
+ """Test adding components that are already installed."""
113
+ ui_dir = temp_project / "components" / "ui"
114
+ (ui_dir / "button.tsx").write_text("export const Button = () => {}")
115
+
116
+ installer = ShadcnInstaller(project_root=temp_project)
117
+ success, message = installer.add_components(["button"])
118
+
119
+ assert success is False
120
+ assert "already installed" in message
121
+ assert "button" in message
122
+
123
+ def test_add_components_with_overwrite(self, temp_project):
124
+ """Test adding components with overwrite flag."""
125
+ ui_dir = temp_project / "components" / "ui"
126
+ (ui_dir / "button.tsx").write_text("export const Button = () => {}")
127
+
128
+ installer = ShadcnInstaller(project_root=temp_project)
129
+
130
+ with patch("subprocess.run") as mock_run:
131
+ mock_run.return_value = MagicMock(
132
+ stdout="Component added successfully",
133
+ returncode=0
134
+ )
135
+
136
+ success, message = installer.add_components(["button"], overwrite=True)
137
+
138
+ assert success is True
139
+ assert "Successfully added" in message
140
+ mock_run.assert_called_once()
141
+
142
+ # Verify --overwrite flag was passed
143
+ call_args = mock_run.call_args[0][0]
144
+ assert "--overwrite" in call_args
145
+
146
+ def test_add_components_dry_run(self, temp_project):
147
+ """Test adding components in dry run mode."""
148
+ installer = ShadcnInstaller(project_root=temp_project, dry_run=True)
149
+ success, message = installer.add_components(["button", "card"])
150
+
151
+ assert success is True
152
+ assert "Would run:" in message
153
+ assert "button" in message
154
+ assert "card" in message
155
+
156
+ @patch("subprocess.run")
157
+ def test_add_components_success(self, mock_run, temp_project):
158
+ """Test successful component addition."""
159
+ mock_run.return_value = MagicMock(
160
+ stdout="Components added successfully",
161
+ stderr="",
162
+ returncode=0
163
+ )
164
+
165
+ installer = ShadcnInstaller(project_root=temp_project)
166
+ success, message = installer.add_components(["button", "card"])
167
+
168
+ assert success is True
169
+ assert "Successfully added" in message
170
+ assert "button" in message
171
+ assert "card" in message
172
+
173
+ # Verify correct command was called
174
+ mock_run.assert_called_once()
175
+ call_args = mock_run.call_args[0][0]
176
+ assert call_args[:3] == ["npx", "shadcn@latest", "add"]
177
+ assert "button" in call_args
178
+ assert "card" in call_args
179
+
180
+ @patch("subprocess.run")
181
+ def test_add_components_subprocess_error(self, mock_run, temp_project):
182
+ """Test component addition with subprocess error."""
183
+ mock_run.side_effect = subprocess.CalledProcessError(
184
+ 1, "cmd", stderr="Error occurred"
185
+ )
186
+
187
+ installer = ShadcnInstaller(project_root=temp_project)
188
+ success, message = installer.add_components(["button"])
189
+
190
+ assert success is False
191
+ assert "Failed to add" in message
192
+
193
+ @patch("subprocess.run")
194
+ def test_add_components_npx_not_found(self, mock_run, temp_project):
195
+ """Test component addition when npx is not found."""
196
+ mock_run.side_effect = FileNotFoundError()
197
+
198
+ installer = ShadcnInstaller(project_root=temp_project)
199
+ success, message = installer.add_components(["button"])
200
+
201
+ assert success is False
202
+ assert "npx not found" in message
203
+
204
+ def test_add_all_components_no_config(self, tmp_path):
205
+ """Test adding all components without config."""
206
+ installer = ShadcnInstaller(project_root=tmp_path)
207
+ success, message = installer.add_all_components()
208
+
209
+ assert success is False
210
+ assert "not initialized" in message
211
+
212
+ def test_add_all_components_dry_run(self, temp_project):
213
+ """Test adding all components in dry run mode."""
214
+ installer = ShadcnInstaller(project_root=temp_project, dry_run=True)
215
+ success, message = installer.add_all_components()
216
+
217
+ assert success is True
218
+ assert "Would run:" in message
219
+ assert "--all" in message
220
+
221
+ @patch("subprocess.run")
222
+ def test_add_all_components_success(self, mock_run, temp_project):
223
+ """Test successful addition of all components."""
224
+ mock_run.return_value = MagicMock(
225
+ stdout="All components added",
226
+ returncode=0
227
+ )
228
+
229
+ installer = ShadcnInstaller(project_root=temp_project)
230
+ success, message = installer.add_all_components()
231
+
232
+ assert success is True
233
+ assert "Successfully added all" in message
234
+
235
+ # Verify --all flag was passed
236
+ call_args = mock_run.call_args[0][0]
237
+ assert "--all" in call_args
238
+
239
+ def test_list_installed_no_config(self, tmp_path):
240
+ """Test listing installed components without config."""
241
+ installer = ShadcnInstaller(project_root=tmp_path)
242
+ success, message = installer.list_installed()
243
+
244
+ assert success is False
245
+ assert "not initialized" in message
246
+
247
+ def test_list_installed_empty(self, temp_project):
248
+ """Test listing installed components when none exist."""
249
+ installer = ShadcnInstaller(project_root=temp_project)
250
+ success, message = installer.list_installed()
251
+
252
+ assert success is True
253
+ assert "No components installed" in message
254
+
255
+ def test_list_installed_with_components(self, temp_project):
256
+ """Test listing installed components when they exist."""
257
+ ui_dir = temp_project / "components" / "ui"
258
+ (ui_dir / "button.tsx").write_text("export const Button = () => {}")
259
+ (ui_dir / "card.tsx").write_text("export const Card = () => {}")
260
+
261
+ installer = ShadcnInstaller(project_root=temp_project)
262
+ success, message = installer.list_installed()
263
+
264
+ assert success is True
265
+ assert "button" in message
266
+ assert "card" in message
@@ -0,0 +1,336 @@
1
+ """Tests for tailwind_config_gen.py"""
2
+
3
+ from pathlib import Path
4
+
5
+ import pytest
6
+
7
+ # Add parent directory to path for imports
8
+ import sys
9
+ sys.path.insert(0, str(Path(__file__).parent.parent))
10
+
11
+ from tailwind_config_gen import TailwindConfigGenerator
12
+
13
+
14
+ class TestTailwindConfigGenerator:
15
+ """Test TailwindConfigGenerator class."""
16
+
17
+ def test_init_default_typescript(self):
18
+ """Test initialization with default settings."""
19
+ generator = TailwindConfigGenerator()
20
+ assert generator.typescript is True
21
+ assert generator.framework == "react"
22
+
23
+ def test_init_javascript(self):
24
+ """Test initialization for JavaScript config."""
25
+ generator = TailwindConfigGenerator(typescript=False)
26
+ assert generator.typescript is False
27
+
28
+ def test_init_framework(self):
29
+ """Test initialization with different frameworks."""
30
+ for framework in ["react", "vue", "svelte", "nextjs"]:
31
+ generator = TailwindConfigGenerator(framework=framework)
32
+ assert generator.framework == framework
33
+
34
+ def test_default_output_path_typescript(self):
35
+ """Test default output path for TypeScript."""
36
+ generator = TailwindConfigGenerator(typescript=True)
37
+ assert generator.output_path.name == "tailwind.config.ts"
38
+
39
+ def test_default_output_path_javascript(self):
40
+ """Test default output path for JavaScript."""
41
+ generator = TailwindConfigGenerator(typescript=False)
42
+ assert generator.output_path.name == "tailwind.config.js"
43
+
44
+ def test_custom_output_path(self, tmp_path):
45
+ """Test custom output path."""
46
+ custom_path = tmp_path / "custom-config.ts"
47
+ generator = TailwindConfigGenerator(output_path=custom_path)
48
+ assert generator.output_path == custom_path
49
+
50
+ def test_base_config_structure(self):
51
+ """Test base configuration structure."""
52
+ generator = TailwindConfigGenerator()
53
+ config = generator.config
54
+
55
+ assert "darkMode" in config
56
+ assert "content" in config
57
+ assert "theme" in config
58
+ assert "plugins" in config
59
+ assert "extend" in config["theme"]
60
+
61
+ def test_default_content_paths_react(self):
62
+ """Test default content paths for React."""
63
+ generator = TailwindConfigGenerator(framework="react")
64
+ paths = generator.config["content"]
65
+
66
+ assert any("src/**/*.{js,jsx,ts,tsx}" in p for p in paths)
67
+ assert any("index.html" in p for p in paths)
68
+
69
+ def test_default_content_paths_nextjs(self):
70
+ """Test default content paths for Next.js."""
71
+ generator = TailwindConfigGenerator(framework="nextjs")
72
+ paths = generator.config["content"]
73
+
74
+ assert any("app/**" in p for p in paths)
75
+ assert any("pages/**" in p for p in paths)
76
+ assert any("components/**" in p for p in paths)
77
+
78
+ def test_default_content_paths_vue(self):
79
+ """Test default content paths for Vue."""
80
+ generator = TailwindConfigGenerator(framework="vue")
81
+ paths = generator.config["content"]
82
+
83
+ assert any("vue" in p for p in paths)
84
+
85
+ def test_add_colors(self):
86
+ """Test adding custom colors."""
87
+ generator = TailwindConfigGenerator()
88
+ colors = {
89
+ "brand": "#3b82f6",
90
+ "accent": "#8b5cf6"
91
+ }
92
+ generator.add_colors(colors)
93
+
94
+ assert "colors" in generator.config["theme"]["extend"]
95
+ assert generator.config["theme"]["extend"]["colors"]["brand"] == "#3b82f6"
96
+ assert generator.config["theme"]["extend"]["colors"]["accent"] == "#8b5cf6"
97
+
98
+ def test_add_colors_multiple_times(self):
99
+ """Test adding colors multiple times."""
100
+ generator = TailwindConfigGenerator()
101
+
102
+ generator.add_colors({"brand": "#3b82f6"})
103
+ generator.add_colors({"accent": "#8b5cf6"})
104
+
105
+ colors = generator.config["theme"]["extend"]["colors"]
106
+ assert "brand" in colors
107
+ assert "accent" in colors
108
+
109
+ def test_add_color_palette(self):
110
+ """Test adding full color palette."""
111
+ generator = TailwindConfigGenerator()
112
+ generator.add_color_palette("brand", "#3b82f6")
113
+
114
+ brand = generator.config["theme"]["extend"]["colors"]["brand"]
115
+
116
+ assert isinstance(brand, dict)
117
+ assert "50" in brand
118
+ assert "500" in brand
119
+ assert "950" in brand
120
+ assert "var(--color-brand" in brand["500"]
121
+
122
+ def test_add_fonts(self):
123
+ """Test adding custom fonts."""
124
+ generator = TailwindConfigGenerator()
125
+ fonts = {
126
+ "sans": ["Inter", "system-ui", "sans-serif"],
127
+ "display": ["Playfair Display", "serif"]
128
+ }
129
+ generator.add_fonts(fonts)
130
+
131
+ font_family = generator.config["theme"]["extend"]["fontFamily"]
132
+ assert font_family["sans"] == ["Inter", "system-ui", "sans-serif"]
133
+ assert font_family["display"] == ["Playfair Display", "serif"]
134
+
135
+ def test_add_spacing(self):
136
+ """Test adding custom spacing."""
137
+ generator = TailwindConfigGenerator()
138
+ spacing = {
139
+ "18": "4.5rem",
140
+ "navbar": "4rem"
141
+ }
142
+ generator.add_spacing(spacing)
143
+
144
+ spacing_config = generator.config["theme"]["extend"]["spacing"]
145
+ assert spacing_config["18"] == "4.5rem"
146
+ assert spacing_config["navbar"] == "4rem"
147
+
148
+ def test_add_breakpoints(self):
149
+ """Test adding custom breakpoints."""
150
+ generator = TailwindConfigGenerator()
151
+ breakpoints = {
152
+ "3xl": "1920px",
153
+ "tablet": "768px"
154
+ }
155
+ generator.add_breakpoints(breakpoints)
156
+
157
+ screens = generator.config["theme"]["extend"]["screens"]
158
+ assert screens["3xl"] == "1920px"
159
+ assert screens["tablet"] == "768px"
160
+
161
+ def test_add_plugins(self):
162
+ """Test adding plugins."""
163
+ generator = TailwindConfigGenerator()
164
+ plugins = ["@tailwindcss/typography", "@tailwindcss/forms"]
165
+ generator.add_plugins(plugins)
166
+
167
+ assert "@tailwindcss/typography" in generator.config["plugins"]
168
+ assert "@tailwindcss/forms" in generator.config["plugins"]
169
+
170
+ def test_add_plugins_no_duplicates(self):
171
+ """Test that adding same plugin twice doesn't duplicate."""
172
+ generator = TailwindConfigGenerator()
173
+ generator.add_plugins(["@tailwindcss/typography"])
174
+ generator.add_plugins(["@tailwindcss/typography"])
175
+
176
+ count = generator.config["plugins"].count("@tailwindcss/typography")
177
+ assert count == 1
178
+
179
+ def test_recommend_plugins(self):
180
+ """Test plugin recommendations."""
181
+ generator = TailwindConfigGenerator()
182
+ recommendations = generator.recommend_plugins()
183
+
184
+ assert isinstance(recommendations, list)
185
+ assert "tailwindcss-animate" in recommendations
186
+
187
+ def test_recommend_plugins_nextjs(self):
188
+ """Test plugin recommendations for Next.js."""
189
+ generator = TailwindConfigGenerator(framework="nextjs")
190
+ recommendations = generator.recommend_plugins()
191
+
192
+ assert "@tailwindcss/typography" in recommendations
193
+
194
+ def test_generate_typescript_config(self):
195
+ """Test generating TypeScript configuration."""
196
+ generator = TailwindConfigGenerator(typescript=True)
197
+ config = generator.generate_config_string()
198
+
199
+ assert "import type { Config } from 'tailwindcss'" in config
200
+ assert "const config: Config" in config
201
+ assert "export default config" in config
202
+
203
+ def test_generate_javascript_config(self):
204
+ """Test generating JavaScript configuration."""
205
+ generator = TailwindConfigGenerator(typescript=False)
206
+ config = generator.generate_config_string()
207
+
208
+ assert "module.exports" in config
209
+ assert "@type" in config
210
+
211
+ def test_generate_config_with_colors(self):
212
+ """Test generating config with custom colors."""
213
+ generator = TailwindConfigGenerator()
214
+ generator.add_colors({"brand": "#3b82f6"})
215
+ config = generator.generate_config_string()
216
+
217
+ assert "colors" in config
218
+ assert "brand" in config
219
+
220
+ def test_generate_config_with_plugins(self):
221
+ """Test generating config with plugins."""
222
+ generator = TailwindConfigGenerator()
223
+ generator.add_plugins(["tailwindcss-animate"])
224
+ config = generator.generate_config_string()
225
+
226
+ assert "plugins:" in config
227
+ assert "require('tailwindcss-animate')" in config
228
+
229
+ def test_validate_config_valid(self):
230
+ """Test validating valid configuration."""
231
+ generator = TailwindConfigGenerator()
232
+ valid, message = generator.validate_config()
233
+
234
+ assert valid is True
235
+
236
+ def test_validate_config_no_content(self):
237
+ """Test validating config with no content paths."""
238
+ generator = TailwindConfigGenerator()
239
+ generator.config["content"] = []
240
+
241
+ valid, message = generator.validate_config()
242
+
243
+ assert valid is False
244
+ assert "No content paths" in message
245
+
246
+ def test_validate_config_empty_theme(self):
247
+ """Test validating config with empty theme extensions."""
248
+ generator = TailwindConfigGenerator()
249
+ # Default has empty theme.extend
250
+
251
+ valid, message = generator.validate_config()
252
+
253
+ assert valid is True
254
+ assert "Warning" in message
255
+
256
+ def test_write_config(self, tmp_path):
257
+ """Test writing configuration to file."""
258
+ output_path = tmp_path / "tailwind.config.ts"
259
+ generator = TailwindConfigGenerator(output_path=output_path)
260
+
261
+ success, message = generator.write_config()
262
+
263
+ assert success is True
264
+ assert output_path.exists()
265
+ assert "written to" in message
266
+
267
+ def test_write_config_creates_content(self, tmp_path):
268
+ """Test that written config contains expected content."""
269
+ output_path = tmp_path / "tailwind.config.ts"
270
+ generator = TailwindConfigGenerator(output_path=output_path)
271
+ generator.add_colors({"brand": "#3b82f6"})
272
+
273
+ generator.write_config()
274
+
275
+ content = output_path.read_text()
276
+ assert "import type { Config }" in content
277
+ assert "brand" in content
278
+
279
+ def test_write_config_invalid_path(self):
280
+ """Test writing config to invalid path."""
281
+ generator = TailwindConfigGenerator(output_path=Path("/invalid/path/config.ts"))
282
+
283
+ success, message = generator.write_config()
284
+
285
+ assert success is False
286
+ assert "Failed to write" in message
287
+
288
+ def test_full_configuration_typescript(self, tmp_path):
289
+ """Test generating complete TypeScript configuration."""
290
+ output_path = tmp_path / "tailwind.config.ts"
291
+ generator = TailwindConfigGenerator(
292
+ typescript=True,
293
+ framework="nextjs",
294
+ output_path=output_path
295
+ )
296
+
297
+ # Add various customizations
298
+ generator.add_colors({"brand": "#3b82f6", "accent": "#8b5cf6"})
299
+ generator.add_fonts({"sans": ["Inter", "sans-serif"]})
300
+ generator.add_spacing({"navbar": "4rem"})
301
+ generator.add_breakpoints({"3xl": "1920px"})
302
+ generator.add_plugins(["tailwindcss-animate"])
303
+
304
+ success, _ = generator.write_config()
305
+ assert success is True
306
+
307
+ content = output_path.read_text()
308
+
309
+ # Verify all customizations are present
310
+ assert "brand" in content
311
+ assert "accent" in content
312
+ assert "Inter" in content
313
+ assert "navbar" in content
314
+ assert "3xl" in content
315
+ assert "tailwindcss-animate" in content
316
+
317
+ def test_full_configuration_javascript(self, tmp_path):
318
+ """Test generating complete JavaScript configuration."""
319
+ output_path = tmp_path / "tailwind.config.js"
320
+ generator = TailwindConfigGenerator(
321
+ typescript=False,
322
+ framework="react",
323
+ output_path=output_path
324
+ )
325
+
326
+ generator.add_colors({"primary": "#3b82f6"})
327
+ generator.add_plugins(["@tailwindcss/forms"])
328
+
329
+ success, _ = generator.write_config()
330
+ assert success is True
331
+
332
+ content = output_path.read_text()
333
+
334
+ assert "module.exports" in content
335
+ assert "primary" in content
336
+ assert "@tailwindcss/forms" in content