cokit-cli 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/AGENTS.md +103 -0
  2. package/README.FLOW.md +237 -0
  3. package/README.md +153 -94
  4. package/agents/brainstormer.agent.md +71 -0
  5. package/agents/code-reviewer.agent.md +128 -0
  6. package/agents/database-admin.agent.md +91 -0
  7. package/agents/debugger.agent.md +128 -0
  8. package/agents/docs-manager.agent.md +121 -0
  9. package/agents/fullstack-developer.agent.md +96 -0
  10. package/agents/git-manager.agent.md +392 -0
  11. package/agents/mcp-manager.agent.md +93 -0
  12. package/agents/planner.agent.md +94 -0
  13. package/agents/project-manager.agent.md +124 -0
  14. package/agents/researcher.agent.md +32 -0
  15. package/agents/scout-external.agent.md +141 -0
  16. package/agents/scout.agent.md +107 -0
  17. package/agents/tester.agent.md +106 -0
  18. package/agents/ui-ux-designer.agent.md +225 -0
  19. package/collections/ck-core.collection.yml +30 -0
  20. package/collections/ck-development-rules.collection.yml +18 -0
  21. package/collections/ck-documentation.collection.yml +18 -0
  22. package/collections/ck-git-workflow.collection.yml +18 -0
  23. package/collections/ck-orchestration.collection.yml +22 -0
  24. package/collections/ck-ui-design.collection.yml +18 -0
  25. package/docs/README.md +85 -0
  26. package/docs/copilot-processing-flow.md +128 -0
  27. package/instructions/ck-backend.instructions.md +48 -0
  28. package/instructions/ck-development.instructions.md +40 -0
  29. package/instructions/ck-frontend-design-pro.instructions.md +58 -0
  30. package/instructions/ck-frontend.instructions.md +44 -0
  31. package/instructions/ck-google-adk-python.instructions.md +242 -0
  32. package/instructions/ck-research.instructions.md +167 -0
  33. package/instructions/ck-testing.instructions.md +36 -0
  34. package/package.json +9 -2
  35. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-01-restructure-folders.md +183 -0
  36. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-02-convert-agents.md +206 -0
  37. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-03-convert-commands-to-prompts.md +284 -0
  38. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-04-convert-skills-to-instructions.md +349 -0
  39. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-05-create-collections.md +320 -0
  40. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-06-update-cli-build-scripts.md +450 -0
  41. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-07-update-documentation.md +407 -0
  42. package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/plan.md +136 -0
  43. package/prompts/ck-ask.prompt.md +57 -0
  44. package/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
  45. package/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
  46. package/prompts/ck-bootstrap-auto.prompt.md +114 -0
  47. package/prompts/ck-bootstrap.prompt.md +136 -0
  48. package/prompts/ck-brainstorm.prompt.md +68 -0
  49. package/prompts/ck-ck-help.prompt.md +114 -0
  50. package/prompts/ck-code-auto.prompt.md +171 -0
  51. package/prompts/ck-code-no-test.prompt.md +159 -0
  52. package/prompts/ck-code-parallel.prompt.md +56 -0
  53. package/prompts/ck-code.prompt.md +177 -0
  54. package/prompts/ck-coding-level.prompt.md +54 -0
  55. package/prompts/ck-cook-auto-fast.prompt.md +26 -0
  56. package/prompts/ck-cook-auto-parallel.prompt.md +49 -0
  57. package/prompts/ck-cook-auto.prompt.md +15 -0
  58. package/prompts/ck-cook.prompt.md +96 -0
  59. package/prompts/ck-debug.prompt.md +14 -0
  60. package/prompts/ck-design-3d.prompt.md +84 -0
  61. package/prompts/ck-design-describe.prompt.md +24 -0
  62. package/prompts/ck-design-fast.prompt.md +32 -0
  63. package/prompts/ck-design-good.prompt.md +36 -0
  64. package/prompts/ck-design-screenshot.prompt.md +35 -0
  65. package/prompts/ck-design-video.prompt.md +35 -0
  66. package/prompts/ck-docs-init.prompt.md +27 -0
  67. package/prompts/ck-docs-summarize.prompt.md +23 -0
  68. package/prompts/ck-docs-update.prompt.md +36 -0
  69. package/prompts/ck-fix-ci.prompt.md +18 -0
  70. package/prompts/ck-fix-fast.prompt.md +18 -0
  71. package/prompts/ck-fix-hard.prompt.md +36 -0
  72. package/prompts/ck-fix-logs.prompt.md +27 -0
  73. package/prompts/ck-fix-parallel.prompt.md +54 -0
  74. package/prompts/ck-fix-test.prompt.md +19 -0
  75. package/prompts/ck-fix-types.prompt.md +11 -0
  76. package/prompts/ck-fix-ui.prompt.md +49 -0
  77. package/prompts/ck-fix.prompt.md +44 -0
  78. package/prompts/ck-git-cm.prompt.md +8 -0
  79. package/prompts/ck-git-cp.prompt.md +7 -0
  80. package/prompts/ck-git-merge.prompt.md +41 -0
  81. package/prompts/ck-git-pr.prompt.md +49 -0
  82. package/prompts/ck-kanban.prompt.md +77 -0
  83. package/prompts/ck-plan-archive.prompt.md +58 -0
  84. package/prompts/ck-plan-ci.prompt.md +34 -0
  85. package/prompts/ck-plan-cro.prompt.md +66 -0
  86. package/prompts/ck-plan-fast.prompt.md +67 -0
  87. package/prompts/ck-plan-hard.prompt.md +89 -0
  88. package/prompts/ck-plan-parallel.prompt.md +126 -0
  89. package/prompts/ck-plan-two.prompt.md +43 -0
  90. package/prompts/ck-plan-validate.prompt.md +118 -0
  91. package/prompts/ck-plan.prompt.md +29 -1
  92. package/prompts/ck-preview.prompt.md +65 -0
  93. package/prompts/ck-review-codebase.prompt.md +44 -0
  94. package/prompts/ck-scout-ext.prompt.md +35 -0
  95. package/prompts/ck-scout.prompt.md +25 -0
  96. package/prompts/ck-skill-add.prompt.md +36 -0
  97. package/prompts/ck-skill-create.prompt.md +29 -0
  98. package/prompts/ck-skill-fix-logs.prompt.md +22 -0
  99. package/prompts/ck-skill-optimize-auto.prompt.md +25 -0
  100. package/prompts/ck-skill-optimize.prompt.md +34 -0
  101. package/prompts/ck-skill-plan.prompt.md +46 -0
  102. package/prompts/ck-test-ui.prompt.md +92 -0
  103. package/prompts/ck-test.prompt.md +10 -0
  104. package/prompts/ck-use-mcp.prompt.md +27 -0
  105. package/prompts/ck-watzup.prompt.md +11 -0
  106. package/prompts/ck-worktree.prompt.md +127 -0
  107. package/rules/README.agents.md +55 -0
  108. package/rules/README.collections.md +78 -0
  109. package/rules/README.copilot-instructions.md +66 -0
  110. package/rules/README.instructions.md +73 -0
  111. package/rules/README.md +39 -0
  112. package/rules/README.prompts.md +76 -0
  113. package/rules/README.skills.md +71 -0
  114. package/skills/ck-ai-artist/SKILL.md +73 -0
  115. package/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
  116. package/skills/ck-ai-artist/references/domain-code.md +66 -0
  117. package/skills/ck-ai-artist/references/domain-data.md +72 -0
  118. package/skills/ck-ai-artist/references/domain-marketing.md +66 -0
  119. package/skills/ck-ai-artist/references/domain-patterns.md +33 -0
  120. package/skills/ck-ai-artist/references/domain-writing.md +68 -0
  121. package/skills/ck-ai-artist/references/image-prompting.md +141 -0
  122. package/skills/ck-ai-artist/references/llm-prompting.md +165 -0
  123. package/skills/ck-ai-artist/references/nano-banana.md +59 -0
  124. package/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
  125. package/skills/ck-backend-development/SKILL.md +93 -0
  126. package/skills/ck-backend-development/references/backend-api-design.md +495 -0
  127. package/skills/ck-backend-development/references/backend-architecture.md +454 -0
  128. package/skills/ck-backend-development/references/backend-authentication.md +338 -0
  129. package/skills/ck-backend-development/references/backend-code-quality.md +659 -0
  130. package/skills/ck-backend-development/references/backend-debugging.md +904 -0
  131. package/skills/ck-backend-development/references/backend-devops.md +494 -0
  132. package/skills/ck-backend-development/references/backend-mindset.md +387 -0
  133. package/skills/ck-backend-development/references/backend-performance.md +397 -0
  134. package/skills/ck-backend-development/references/backend-security.md +290 -0
  135. package/skills/ck-backend-development/references/backend-technologies.md +256 -0
  136. package/skills/ck-backend-development/references/backend-testing.md +429 -0
  137. package/skills/ck-better-auth/SKILL.md +202 -0
  138. package/skills/ck-better-auth/references/advanced-features.md +553 -0
  139. package/skills/ck-better-auth/references/database-integration.md +577 -0
  140. package/skills/ck-better-auth/references/email-password-auth.md +416 -0
  141. package/skills/ck-better-auth/references/oauth-providers.md +430 -0
  142. package/skills/ck-better-auth/scripts/.coverage +0 -0
  143. package/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
  144. package/skills/ck-better-auth/scripts/requirements.txt +15 -0
  145. package/skills/ck-better-auth/scripts/tests/.coverage +0 -0
  146. package/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
  147. package/skills/ck-chrome-devtools/SKILL.md +470 -0
  148. package/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
  149. package/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
  150. package/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
  151. package/skills/ck-chrome-devtools/scripts/README.md +272 -0
  152. package/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
  153. package/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
  154. package/skills/ck-chrome-devtools/scripts/click.js +83 -0
  155. package/skills/ck-chrome-devtools/scripts/console.js +79 -0
  156. package/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
  157. package/skills/ck-chrome-devtools/scripts/fill.js +76 -0
  158. package/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
  159. package/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
  160. package/skills/ck-chrome-devtools/scripts/install.sh +83 -0
  161. package/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
  162. package/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
  163. package/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
  164. package/skills/ck-chrome-devtools/scripts/network.js +106 -0
  165. package/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
  166. package/skills/ck-chrome-devtools/scripts/package.json +16 -0
  167. package/skills/ck-chrome-devtools/scripts/performance.js +149 -0
  168. package/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
  169. package/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
  170. package/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
  171. package/skills/ck-code-review/SKILL.md +110 -53
  172. package/skills/ck-code-review/references/code-review-reception.md +182 -49
  173. package/skills/ck-code-review/references/requesting-code-review.md +105 -0
  174. package/skills/ck-code-review/references/verification-before-completion.md +111 -58
  175. package/skills/ck-databases/SKILL.md +231 -0
  176. package/skills/ck-databases/references/mongodb-aggregation.md +447 -0
  177. package/skills/ck-databases/references/mongodb-atlas.md +465 -0
  178. package/skills/ck-databases/references/mongodb-crud.md +408 -0
  179. package/skills/ck-databases/references/mongodb-indexing.md +442 -0
  180. package/skills/ck-databases/references/postgresql-administration.md +594 -0
  181. package/skills/ck-databases/references/postgresql-performance.md +527 -0
  182. package/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
  183. package/skills/ck-databases/references/postgresql-queries.md +475 -0
  184. package/skills/ck-databases/scripts/.coverage +0 -0
  185. package/skills/ck-databases/scripts/db_backup.py +502 -0
  186. package/skills/ck-databases/scripts/db_migrate.py +425 -0
  187. package/skills/ck-databases/scripts/db_performance_check.py +456 -0
  188. package/skills/ck-databases/scripts/requirements.txt +20 -0
  189. package/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
  190. package/skills/ck-databases/scripts/tests/requirements.txt +4 -0
  191. package/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
  192. package/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
  193. package/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
  194. package/skills/ck-debugging/SKILL.md +55 -43
  195. package/skills/ck-debugging/references/defense-in-depth.md +124 -0
  196. package/skills/ck-debugging/references/root-cause-tracing.md +100 -43
  197. package/skills/ck-debugging/references/systematic-debugging.md +80 -52
  198. package/skills/ck-debugging/references/verification.md +101 -52
  199. package/skills/ck-debugging/scripts/find-polluter.sh +63 -0
  200. package/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
  201. package/skills/ck-devops/.env.example +76 -0
  202. package/skills/ck-devops/SKILL.md +283 -0
  203. package/skills/ck-devops/references/browser-rendering.md +305 -0
  204. package/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
  205. package/skills/ck-devops/references/cloudflare-platform.md +271 -0
  206. package/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
  207. package/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
  208. package/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
  209. package/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
  210. package/skills/ck-devops/references/docker-basics.md +297 -0
  211. package/skills/ck-devops/references/docker-compose.md +292 -0
  212. package/skills/ck-devops/references/gcloud-platform.md +297 -0
  213. package/skills/ck-devops/references/gcloud-services.md +304 -0
  214. package/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
  215. package/skills/ck-devops/scripts/docker_optimize.py +331 -0
  216. package/skills/ck-devops/scripts/requirements.txt +20 -0
  217. package/skills/ck-devops/scripts/tests/requirements.txt +3 -0
  218. package/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  219. package/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
  220. package/skills/ck-docs-seeker/.env.example +15 -0
  221. package/skills/ck-docs-seeker/SKILL.md +70 -65
  222. package/skills/ck-docs-seeker/package.json +25 -0
  223. package/skills/ck-docs-seeker/references/advanced.md +79 -0
  224. package/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
  225. package/skills/ck-docs-seeker/references/errors.md +68 -0
  226. package/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
  227. package/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
  228. package/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
  229. package/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
  230. package/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  231. package/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  232. package/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  233. package/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
  234. package/skills/ck-docs-seeker/workflows/library-search.md +87 -0
  235. package/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
  236. package/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
  237. package/skills/ck-frontend-design/SKILL.md +79 -0
  238. package/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
  239. package/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
  240. package/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
  241. package/skills/ck-frontend-design/references/animejs.md +396 -0
  242. package/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
  243. package/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
  244. package/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
  245. package/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
  246. package/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
  247. package/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
  248. package/skills/ck-frontend-design/references/technical-optimization.md +44 -0
  249. package/skills/ck-frontend-design/references/technical-overview.md +90 -0
  250. package/skills/ck-frontend-design/references/technical-workflows.md +150 -0
  251. package/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
  252. package/skills/ck-frontend-development/SKILL.md +399 -0
  253. package/skills/ck-frontend-development/resources/common-patterns.md +331 -0
  254. package/skills/ck-frontend-development/resources/complete-examples.md +872 -0
  255. package/skills/ck-frontend-development/resources/component-patterns.md +502 -0
  256. package/skills/ck-frontend-development/resources/data-fetching.md +767 -0
  257. package/skills/ck-frontend-development/resources/file-organization.md +502 -0
  258. package/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
  259. package/skills/ck-frontend-development/resources/performance.md +406 -0
  260. package/skills/ck-frontend-development/resources/routing-guide.md +364 -0
  261. package/skills/ck-frontend-development/resources/styling-guide.md +428 -0
  262. package/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
  263. package/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
  264. package/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
  265. package/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
  266. package/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
  267. package/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
  268. package/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
  269. package/skills/ck-markdown-novel-viewer/package.json +15 -0
  270. package/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
  271. package/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
  272. package/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
  273. package/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
  274. package/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
  275. package/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
  276. package/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
  277. package/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
  278. package/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
  279. package/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
  280. package/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
  281. package/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
  282. package/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
  283. package/skills/ck-mcp-builder/LICENSE.txt +202 -0
  284. package/skills/ck-mcp-builder/SKILL.md +327 -0
  285. package/skills/ck-mcp-builder/reference/evaluation.md +602 -0
  286. package/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
  287. package/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
  288. package/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
  289. package/skills/ck-mcp-builder/scripts/connections.py +151 -0
  290. package/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
  291. package/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
  292. package/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
  293. package/skills/ck-mcp-management/README.md +219 -0
  294. package/skills/ck-mcp-management/SKILL.md +209 -0
  295. package/skills/ck-mcp-management/assets/tools.json +3146 -0
  296. package/skills/ck-mcp-management/references/configuration.md +114 -0
  297. package/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
  298. package/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
  299. package/skills/ck-mcp-management/scripts/.env.example +10 -0
  300. package/skills/ck-mcp-management/scripts/cli.ts +195 -0
  301. package/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
  302. package/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
  303. package/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
  304. package/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
  305. package/skills/ck-mcp-management/scripts/package.json +20 -0
  306. package/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
  307. package/skills/ck-media-processing/SKILL.md +90 -0
  308. package/skills/ck-media-processing/references/common-workflows.md +132 -0
  309. package/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
  310. package/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
  311. package/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
  312. package/skills/ck-media-processing/references/format-compatibility.md +375 -0
  313. package/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
  314. package/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
  315. package/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
  316. package/skills/ck-media-processing/references/troubleshooting.md +109 -0
  317. package/skills/ck-media-processing/scripts/README.md +111 -0
  318. package/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
  319. package/skills/ck-media-processing/scripts/batch_resize.py +342 -0
  320. package/skills/ck-media-processing/scripts/media_convert.py +311 -0
  321. package/skills/ck-media-processing/scripts/remove-background.sh +96 -0
  322. package/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
  323. package/skills/ck-media-processing/scripts/requirements.txt +24 -0
  324. package/skills/ck-media-processing/scripts/tests/.coverage +0 -0
  325. package/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
  326. package/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
  327. package/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
  328. package/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
  329. package/skills/ck-media-processing/scripts/video_optimize.py +414 -0
  330. package/skills/ck-mobile-development/SKILL.md +210 -0
  331. package/skills/ck-mobile-development/references/mobile-android.md +604 -0
  332. package/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
  333. package/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
  334. package/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
  335. package/skills/ck-mobile-development/references/mobile-ios.md +496 -0
  336. package/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
  337. package/skills/ck-payment-integration/README.md +185 -0
  338. package/skills/ck-payment-integration/SKILL.md +116 -0
  339. package/skills/ck-payment-integration/references/polar/benefits.md +396 -0
  340. package/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
  341. package/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
  342. package/skills/ck-payment-integration/references/polar/overview.md +184 -0
  343. package/skills/ck-payment-integration/references/polar/products.md +244 -0
  344. package/skills/ck-payment-integration/references/polar/sdk.md +436 -0
  345. package/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
  346. package/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
  347. package/skills/ck-payment-integration/references/sepay/api.md +140 -0
  348. package/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
  349. package/skills/ck-payment-integration/references/sepay/overview.md +138 -0
  350. package/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
  351. package/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
  352. package/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
  353. package/skills/ck-payment-integration/scripts/.env.example +20 -0
  354. package/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
  355. package/skills/ck-payment-integration/scripts/package.json +17 -0
  356. package/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
  357. package/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
  358. package/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
  359. package/skills/ck-planning/SKILL.md +79 -49
  360. package/skills/ck-planning/references/codebase-understanding.md +62 -0
  361. package/skills/ck-planning/references/output-standards.md +127 -0
  362. package/skills/ck-planning/references/plan-organization.md +122 -60
  363. package/skills/ck-planning/references/research-phase.md +49 -56
  364. package/skills/ck-planning/references/solution-design.md +61 -63
  365. package/skills/ck-problem-solving/SKILL.md +95 -0
  366. package/skills/ck-problem-solving/references/attribution.md +69 -0
  367. package/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
  368. package/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
  369. package/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
  370. package/skills/ck-problem-solving/references/scale-game.md +95 -0
  371. package/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
  372. package/skills/ck-problem-solving/references/when-stuck.md +72 -0
  373. package/skills/ck-repomix/SKILL.md +247 -0
  374. package/skills/ck-repomix/references/configuration.md +211 -0
  375. package/skills/ck-repomix/references/usage-patterns.md +232 -0
  376. package/skills/ck-repomix/scripts/.coverage +0 -0
  377. package/skills/ck-repomix/scripts/README.md +179 -0
  378. package/skills/ck-repomix/scripts/repomix_batch.py +455 -0
  379. package/skills/ck-repomix/scripts/repos.example.json +15 -0
  380. package/skills/ck-repomix/scripts/requirements.txt +15 -0
  381. package/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
  382. package/skills/ck-sequential-thinking/.env.example +8 -0
  383. package/skills/ck-sequential-thinking/README.md +183 -0
  384. package/skills/ck-sequential-thinking/SKILL.md +14 -2
  385. package/skills/ck-sequential-thinking/package.json +31 -0
  386. package/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
  387. package/skills/ck-sequential-thinking/references/advanced-techniques.md +2 -14
  388. package/skills/ck-sequential-thinking/references/core-patterns.md +8 -0
  389. package/skills/ck-sequential-thinking/references/examples-api.md +88 -0
  390. package/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
  391. package/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
  392. package/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
  393. package/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
  394. package/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
  395. package/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
  396. package/skills/ck-shopify/README.md +66 -0
  397. package/skills/ck-shopify/SKILL.md +319 -0
  398. package/skills/ck-shopify/references/app-development.md +470 -0
  399. package/skills/ck-shopify/references/extensions.md +493 -0
  400. package/skills/ck-shopify/references/themes.md +498 -0
  401. package/skills/ck-shopify/scripts/.coverage +0 -0
  402. package/skills/ck-shopify/scripts/requirements.txt +19 -0
  403. package/skills/ck-shopify/scripts/shopify_init.py +423 -0
  404. package/skills/ck-shopify/scripts/tests/.coverage +0 -0
  405. package/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
  406. package/skills/ck-skill-creator/LICENSE.txt +202 -0
  407. package/skills/ck-skill-creator/SKILL.md +265 -0
  408. package/skills/ck-skill-creator/scripts/init_skill.py +303 -0
  409. package/skills/ck-skill-creator/scripts/package_skill.py +110 -0
  410. package/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
  411. package/skills/ck-threejs/SKILL.md +87 -0
  412. package/skills/ck-threejs/references/01-getting-started.md +177 -0
  413. package/skills/ck-threejs/references/02-loaders.md +169 -0
  414. package/skills/ck-threejs/references/03-textures.md +170 -0
  415. package/skills/ck-threejs/references/04-cameras.md +195 -0
  416. package/skills/ck-threejs/references/05-lights.md +183 -0
  417. package/skills/ck-threejs/references/06-animations.md +214 -0
  418. package/skills/ck-threejs/references/07-math.md +260 -0
  419. package/skills/ck-threejs/references/08-interaction.md +267 -0
  420. package/skills/ck-threejs/references/09-postprocessing.md +240 -0
  421. package/skills/ck-threejs/references/10-controls.md +259 -0
  422. package/skills/ck-threejs/references/11-materials-advanced.md +270 -0
  423. package/skills/ck-threejs/references/12-performance.md +269 -0
  424. package/skills/ck-threejs/references/13-node-materials.md +298 -0
  425. package/skills/ck-threejs/references/14-physics-vr.md +304 -0
  426. package/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
  427. package/skills/ck-threejs/references/16-webgpu.md +302 -0
  428. package/skills/ck-ui-styling/LICENSE.txt +202 -0
  429. package/skills/ck-ui-styling/SKILL.md +319 -0
  430. package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  431. package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  432. package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  433. package/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  434. package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  435. package/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  436. package/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  437. package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  438. package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  439. package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  440. package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  441. package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  442. package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  443. package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  444. package/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  445. package/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  446. package/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  447. package/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  448. package/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  449. package/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  450. package/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  451. package/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  452. package/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  453. package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  454. package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  455. package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  456. package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  457. package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  458. package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  459. package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  460. package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  461. package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  462. package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  463. package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  464. package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  465. package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  466. package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  467. package/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  468. package/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  469. package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  470. package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  471. package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  472. package/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  473. package/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  474. package/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  475. package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  476. package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  477. package/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  478. package/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  479. package/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  480. package/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  481. package/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  482. package/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  483. package/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  484. package/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  485. package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  486. package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  487. package/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  488. package/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  489. package/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  490. package/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  491. package/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  492. package/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  493. package/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  494. package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  495. package/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  496. package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  497. package/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  498. package/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  499. package/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  500. package/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  501. package/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  502. package/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  503. package/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  504. package/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  505. package/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  506. package/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  507. package/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  508. package/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  509. package/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  510. package/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  511. package/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
  512. package/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
  513. package/skills/ck-ui-styling/references/shadcn-components.md +424 -0
  514. package/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
  515. package/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
  516. package/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
  517. package/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
  518. package/skills/ck-ui-styling/scripts/.coverage +0 -0
  519. package/skills/ck-ui-styling/scripts/requirements.txt +17 -0
  520. package/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
  521. package/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
  522. package/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
  523. package/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
  524. package/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  525. package/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  526. package/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
  527. package/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
  528. package/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
  529. package/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
  530. package/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
  531. package/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
  532. package/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  533. package/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
  534. package/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  535. package/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  536. package/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
  537. package/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  538. package/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  539. package/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
  540. package/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
  541. package/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
  542. package/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  543. package/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
  544. package/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
  545. package/skills/ck-web-frameworks/SKILL.md +322 -0
  546. package/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
  547. package/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
  548. package/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
  549. package/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
  550. package/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
  551. package/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
  552. package/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
  553. package/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
  554. package/skills/ck-web-frameworks/scripts/.coverage +0 -0
  555. package/skills/ck-web-frameworks/scripts/__init__.py +0 -0
  556. package/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
  557. package/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
  558. package/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
  559. package/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
  560. package/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  561. package/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  562. package/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
  563. package/src/commands/init.js +61 -30
  564. package/src/utils/paths.js +35 -4
@@ -0,0 +1,394 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Turborepo Migration Script
4
+
5
+ Convert existing monorepo to Turborepo with intelligent pipeline generation.
6
+ """
7
+
8
+ import argparse
9
+ import json
10
+ import os
11
+ import sys
12
+ from pathlib import Path
13
+ from typing import Dict, List, Optional, Set
14
+
15
+
16
+ class TurborepoMigrator:
17
+ """Migrate existing monorepo to Turborepo."""
18
+
19
+ def __init__(
20
+ self,
21
+ path: Path,
22
+ dry_run: bool = False,
23
+ package_manager: str = "npm",
24
+ ):
25
+ """
26
+ Initialize TurborepoMigrator.
27
+
28
+ Args:
29
+ path: Path to existing monorepo
30
+ dry_run: Preview changes without writing files
31
+ package_manager: Package manager (npm, yarn, pnpm, bun)
32
+ """
33
+ self.path = path.resolve()
34
+ self.dry_run = dry_run
35
+ self.package_manager = package_manager
36
+ self.packages: List[Dict] = []
37
+ self.workspace_config: Dict = {}
38
+
39
+ def validate_path(self) -> None:
40
+ """Validate monorepo path."""
41
+ if not self.path.exists():
42
+ raise FileNotFoundError(f"Path '{self.path}' does not exist")
43
+
44
+ if not self.path.is_dir():
45
+ raise NotADirectoryError(f"Path '{self.path}' is not a directory")
46
+
47
+ package_json = self.path / "package.json"
48
+ if not package_json.exists():
49
+ raise FileNotFoundError(
50
+ f"No package.json found in '{self.path}'. Not a valid monorepo."
51
+ )
52
+
53
+ def analyze_workspace(self) -> None:
54
+ """Analyze existing workspace configuration."""
55
+ print("Analyzing workspace...")
56
+
57
+ package_json = self.path / "package.json"
58
+ with open(package_json) as f:
59
+ root_config = json.load(f)
60
+
61
+ # Detect workspace configuration
62
+ if "workspaces" in root_config:
63
+ self.workspace_config = {
64
+ "type": "npm/yarn",
65
+ "patterns": root_config["workspaces"],
66
+ }
67
+ elif (self.path / "pnpm-workspace.yaml").exists():
68
+ self.workspace_config = {
69
+ "type": "pnpm",
70
+ "file": "pnpm-workspace.yaml",
71
+ }
72
+ else:
73
+ raise ValueError(
74
+ "No workspace configuration found. Monorepo structure not detected."
75
+ )
76
+
77
+ print(f" Workspace type: {self.workspace_config['type']}")
78
+
79
+ def discover_packages(self) -> None:
80
+ """Discover all packages in workspace."""
81
+ print("Discovering packages...")
82
+
83
+ if self.workspace_config["type"] == "npm/yarn":
84
+ patterns = self.workspace_config["patterns"]
85
+ if isinstance(patterns, dict):
86
+ patterns = patterns.get("packages", [])
87
+ else:
88
+ # Parse pnpm-workspace.yaml
89
+ yaml_file = self.path / "pnpm-workspace.yaml"
90
+ patterns = self._parse_pnpm_workspace(yaml_file)
91
+
92
+ # Find all packages matching patterns
93
+ for pattern in patterns:
94
+ self._find_packages_by_pattern(pattern)
95
+
96
+ print(f" Found {len(self.packages)} packages")
97
+ for pkg in self.packages:
98
+ print(f" - {pkg['name']} ({pkg['path'].relative_to(self.path)})")
99
+
100
+ def _parse_pnpm_workspace(self, yaml_file: Path) -> List[str]:
101
+ """Parse pnpm-workspace.yaml file."""
102
+ patterns = []
103
+ with open(yaml_file) as f:
104
+ in_packages = False
105
+ for line in f:
106
+ line = line.strip()
107
+ if line.startswith("packages:"):
108
+ in_packages = True
109
+ continue
110
+ if in_packages and line.startswith("- "):
111
+ pattern = line[2:].strip().strip("'\"")
112
+ patterns.append(pattern)
113
+ return patterns
114
+
115
+ def _find_packages_by_pattern(self, pattern: str) -> None:
116
+ """Find packages matching glob pattern."""
117
+ import glob
118
+
119
+ # Convert pattern to absolute path
120
+ search_pattern = str(self.path / pattern)
121
+
122
+ for match in glob.glob(search_pattern):
123
+ match_path = Path(match)
124
+ package_json = match_path / "package.json"
125
+
126
+ if package_json.exists():
127
+ with open(package_json) as f:
128
+ pkg_data = json.load(f)
129
+
130
+ self.packages.append(
131
+ {
132
+ "name": pkg_data.get("name", match_path.name),
133
+ "path": match_path,
134
+ "scripts": pkg_data.get("scripts", {}),
135
+ "dependencies": pkg_data.get("dependencies", {}),
136
+ "devDependencies": pkg_data.get("devDependencies", {}),
137
+ }
138
+ )
139
+
140
+ def analyze_scripts(self) -> Dict[str, Set[str]]:
141
+ """Analyze common scripts across packages."""
142
+ print("Analyzing scripts...")
143
+
144
+ script_map: Dict[str, Set[str]] = {}
145
+
146
+ for pkg in self.packages:
147
+ for script_name in pkg["scripts"]:
148
+ if script_name not in script_map:
149
+ script_map[script_name] = set()
150
+ script_map[script_name].add(pkg["name"])
151
+
152
+ common_scripts = {
153
+ name: packages
154
+ for name, packages in script_map.items()
155
+ if len(packages) >= 2 # Present in at least 2 packages
156
+ }
157
+
158
+ print(f" Found {len(common_scripts)} common scripts:")
159
+ for script, packages in common_scripts.items():
160
+ print(f" - {script} ({len(packages)} packages)")
161
+
162
+ return common_scripts
163
+
164
+ def generate_turbo_config(self, common_scripts: Dict[str, Set[str]]) -> Dict:
165
+ """Generate turbo.json configuration."""
166
+ print("Generating turbo.json configuration...")
167
+
168
+ pipeline = {}
169
+
170
+ # Build task
171
+ if "build" in common_scripts:
172
+ pipeline["build"] = {
173
+ "dependsOn": ["^build"],
174
+ "outputs": self._infer_build_outputs(),
175
+ }
176
+
177
+ # Test task
178
+ if "test" in common_scripts:
179
+ pipeline["test"] = {
180
+ "dependsOn": ["build"],
181
+ "outputs": ["coverage/**"],
182
+ }
183
+
184
+ # Lint task
185
+ if "lint" in common_scripts:
186
+ pipeline["lint"] = {"dependsOn": ["^build"]}
187
+
188
+ # Typecheck task
189
+ if "typecheck" in common_scripts or "type-check" in common_scripts:
190
+ task_name = "typecheck" if "typecheck" in common_scripts else "type-check"
191
+ pipeline[task_name] = {"dependsOn": ["^build"]}
192
+
193
+ # Dev task
194
+ if "dev" in common_scripts or "start" in common_scripts:
195
+ dev_task = "dev" if "dev" in common_scripts else "start"
196
+ pipeline[dev_task] = {"cache": False, "persistent": True}
197
+
198
+ # Clean task
199
+ if "clean" in common_scripts:
200
+ pipeline["clean"] = {"cache": False}
201
+
202
+ turbo_config = {
203
+ "$schema": "https://turbo.build/schema.json",
204
+ "globalDependencies": ["**/.env.*local"],
205
+ "pipeline": pipeline,
206
+ }
207
+
208
+ return turbo_config
209
+
210
+ def _infer_build_outputs(self) -> List[str]:
211
+ """Infer build output directories from packages."""
212
+ outputs = set()
213
+
214
+ for pkg in self.packages:
215
+ pkg_path = pkg["path"]
216
+
217
+ # Check common output directories
218
+ if (pkg_path / "dist").exists():
219
+ outputs.add("dist/**")
220
+ if (pkg_path / "build").exists():
221
+ outputs.add("build/**")
222
+ if (pkg_path / ".next").exists():
223
+ outputs.add(".next/**")
224
+ outputs.add("!.next/cache/**")
225
+ if (pkg_path / "out").exists():
226
+ outputs.add("out/**")
227
+
228
+ return sorted(list(outputs)) or ["dist/**"]
229
+
230
+ def update_root_package_json(self) -> Dict:
231
+ """Update root package.json with Turborepo scripts."""
232
+ print("Updating root package.json...")
233
+
234
+ package_json_path = self.path / "package.json"
235
+ with open(package_json_path) as f:
236
+ package_json = json.load(f)
237
+
238
+ # Add turbo to devDependencies
239
+ if "devDependencies" not in package_json:
240
+ package_json["devDependencies"] = {}
241
+
242
+ package_json["devDependencies"]["turbo"] = "latest"
243
+
244
+ # Update scripts to use turbo
245
+ if "scripts" not in package_json:
246
+ package_json["scripts"] = {}
247
+
248
+ common_tasks = ["build", "dev", "test", "lint", "typecheck", "clean"]
249
+ for task in common_tasks:
250
+ # Check if task exists in any package
251
+ if any(task in pkg["scripts"] for pkg in self.packages):
252
+ package_json["scripts"][task] = f"turbo run {task}"
253
+
254
+ return package_json
255
+
256
+ def generate_migration_report(
257
+ self, turbo_config: Dict, updated_package_json: Dict
258
+ ) -> str:
259
+ """Generate migration report."""
260
+ report = []
261
+
262
+ report.append("=" * 60)
263
+ report.append("TURBOREPO MIGRATION REPORT")
264
+ report.append("=" * 60)
265
+ report.append("")
266
+
267
+ report.append(f"Monorepo Path: {self.path}")
268
+ report.append(f"Package Manager: {self.package_manager}")
269
+ report.append(f"Total Packages: {len(self.packages)}")
270
+ report.append("")
271
+
272
+ report.append("PACKAGES:")
273
+ for pkg in self.packages:
274
+ rel_path = pkg["path"].relative_to(self.path)
275
+ report.append(f" - {pkg['name']} ({rel_path})")
276
+ report.append("")
277
+
278
+ report.append("TURBO.JSON PIPELINE:")
279
+ for task, config in turbo_config["pipeline"].items():
280
+ report.append(f" {task}:")
281
+ for key, value in config.items():
282
+ report.append(f" {key}: {value}")
283
+ report.append("")
284
+
285
+ report.append("ROOT PACKAGE.JSON SCRIPTS:")
286
+ for script, command in updated_package_json.get("scripts", {}).items():
287
+ report.append(f" {script}: {command}")
288
+ report.append("")
289
+
290
+ report.append("RECOMMENDATIONS:")
291
+ report.append(" 1. Review generated turbo.json pipeline configuration")
292
+ report.append(" 2. Adjust output directories based on your build tools")
293
+ report.append(" 3. Configure remote caching: turbo login && turbo link")
294
+ report.append(" 4. Run 'npm install' to install Turborepo")
295
+ report.append(" 5. Test with: turbo run build --dry-run")
296
+ report.append("")
297
+
298
+ if self.dry_run:
299
+ report.append("DRY RUN MODE: No files were modified")
300
+ else:
301
+ report.append("FILES CREATED/MODIFIED:")
302
+ report.append(f" - {self.path / 'turbo.json'}")
303
+ report.append(f" - {self.path / 'package.json'}")
304
+
305
+ report.append("")
306
+ report.append("=" * 60)
307
+
308
+ return "\n".join(report)
309
+
310
+ def write_files(self, turbo_config: Dict, updated_package_json: Dict) -> None:
311
+ """Write configuration files."""
312
+ if self.dry_run:
313
+ print("\nDRY RUN - Files that would be created/modified:")
314
+ print(f" - {self.path / 'turbo.json'}")
315
+ print(f" - {self.path / 'package.json'}")
316
+ return
317
+
318
+ print("Writing files...")
319
+
320
+ # Write turbo.json
321
+ turbo_json_path = self.path / "turbo.json"
322
+ with open(turbo_json_path, "w") as f:
323
+ json.dump(turbo_config, f, indent=2)
324
+ print(f" ✓ Created {turbo_json_path}")
325
+
326
+ # Write updated package.json
327
+ package_json_path = self.path / "package.json"
328
+ with open(package_json_path, "w") as f:
329
+ json.dump(updated_package_json, f, indent=2)
330
+ print(f" ✓ Updated {package_json_path}")
331
+
332
+ def migrate(self) -> None:
333
+ """Run migration process."""
334
+ try:
335
+ print(f"Migrating monorepo to Turborepo: {self.path}")
336
+ print(f"Dry run: {self.dry_run}")
337
+ print()
338
+
339
+ self.validate_path()
340
+ self.analyze_workspace()
341
+ self.discover_packages()
342
+
343
+ common_scripts = self.analyze_scripts()
344
+ turbo_config = self.generate_turbo_config(common_scripts)
345
+ updated_package_json = self.update_root_package_json()
346
+
347
+ print()
348
+ self.write_files(turbo_config, updated_package_json)
349
+
350
+ print()
351
+ report = self.generate_migration_report(turbo_config, updated_package_json)
352
+ print(report)
353
+
354
+ except Exception as e:
355
+ print(f"Error: {e}", file=sys.stderr)
356
+ sys.exit(1)
357
+
358
+
359
+ def main():
360
+ """CLI entry point."""
361
+ parser = argparse.ArgumentParser(
362
+ description="Migrate existing monorepo to Turborepo"
363
+ )
364
+ parser.add_argument(
365
+ "--path",
366
+ type=Path,
367
+ default=Path.cwd(),
368
+ help="Path to monorepo (default: current directory)",
369
+ )
370
+ parser.add_argument(
371
+ "--dry-run",
372
+ action="store_true",
373
+ help="Preview changes without writing files",
374
+ )
375
+ parser.add_argument(
376
+ "--package-manager",
377
+ choices=["npm", "yarn", "pnpm", "bun"],
378
+ default="npm",
379
+ help="Package manager (default: npm)",
380
+ )
381
+
382
+ args = parser.parse_args()
383
+
384
+ migrator = TurborepoMigrator(
385
+ path=args.path,
386
+ dry_run=args.dry_run,
387
+ package_manager=args.package_manager,
388
+ )
389
+
390
+ migrator.migrate()
391
+
392
+
393
+ if __name__ == "__main__":
394
+ main()
@@ -2,15 +2,27 @@
2
2
  import { Command } from 'commander';
3
3
  import prompts from 'prompts';
4
4
  import { copyDir, pathExists } from '../utils/copy.js';
5
- import { getTemplatesDir, getSkillsSourceDir, getUserSkillsDir, getRepoGithubDir, getRepoVscodeDir } from '../utils/paths.js';
5
+ import {
6
+ getTemplatesDir,
7
+ getSkillsSourceDir,
8
+ getAgentsSourceDir,
9
+ getPromptsSourceDir,
10
+ getInstructionsSourceDir,
11
+ getUserSkillsDir,
12
+ getUserAgentsDir,
13
+ getUserPromptsDir,
14
+ getUserInstructionsDir,
15
+ getRepoGithubDir,
16
+ getRepoVscodeDir
17
+ } from '../utils/paths.js';
6
18
  import { success, error, done, info, hint, bold, cyan } from '../utils/colors.js';
7
19
  import { join } from 'path';
8
20
  import { mkdirSync, existsSync } from 'fs';
9
21
 
10
22
  export const initCommand = new Command('init')
11
23
  .description('Set up CoKit in your project or globally')
12
- .option('-g, --global', 'Install personal skills to ~/.copilot/')
13
- .option('-a, --all', 'Install both project templates and personal skills')
24
+ .option('-g, --global', 'Install all CoKit resources to ~/.copilot/')
25
+ .option('-a, --all', 'Install both project templates and global resources')
14
26
  .option('-y, --yes', 'Skip confirmation prompts')
15
27
  .option('--overwrite', 'Overwrite existing files without prompting')
16
28
  .action(async (options) => {
@@ -19,7 +31,6 @@ export const initCommand = new Command('init')
19
31
  console.log();
20
32
 
21
33
  try {
22
- // Determine what to install
23
34
  let installProject = false;
24
35
  let installGlobal = false;
25
36
 
@@ -29,14 +40,13 @@ export const initCommand = new Command('init')
29
40
  } else if (options.global) {
30
41
  installGlobal = true;
31
42
  } else if (!options.global && !options.all) {
32
- // Interactive mode - ask user
33
43
  const response = await prompts({
34
44
  type: 'select',
35
45
  name: 'mode',
36
46
  message: 'What do you want to set up?',
37
47
  choices: [
38
48
  { title: 'Project templates (.github/)', value: 'project', description: 'For this project only - share via git' },
39
- { title: 'Personal skills (~/.copilot/)', value: 'global', description: 'Works in all projects' },
49
+ { title: 'Global resources (~/.copilot/)', value: 'global', description: 'Works in all projects' },
40
50
  { title: 'Both', value: 'both', description: 'Recommended for first-time setup' }
41
51
  ],
42
52
  initial: 0
@@ -51,11 +61,10 @@ export const initCommand = new Command('init')
51
61
  installGlobal = response.mode === 'global' || response.mode === 'both';
52
62
  }
53
63
 
54
- // Confirm before proceeding
55
64
  if (!options.yes) {
56
65
  const targets = [];
57
66
  if (installProject) targets.push('.github/');
58
- if (installGlobal) targets.push('~/.copilot/skills/');
67
+ if (installGlobal) targets.push('~/.copilot/');
59
68
 
60
69
  const confirm = await prompts({
61
70
  type: 'confirm',
@@ -72,21 +81,18 @@ export const initCommand = new Command('init')
72
81
 
73
82
  console.log();
74
83
 
75
- // Install project templates
76
84
  if (installProject) {
77
85
  info('Setting up project templates...');
78
86
  await installProjectTemplates(options);
79
87
  console.log();
80
88
  }
81
89
 
82
- // Install global skills
83
90
  if (installGlobal) {
84
- info('Setting up personal skills...');
85
- await installGlobalSkills(options);
91
+ info('Setting up global CoKit resources...');
92
+ await installGlobalResources(options);
86
93
  console.log();
87
94
  }
88
95
 
89
- // Success message
90
96
  done('Done! Open VS Code and start using Copilot.');
91
97
  hint('Try typing /ck-fix in Copilot Chat.');
92
98
  console.log();
@@ -101,13 +107,11 @@ async function installProjectTemplates(options) {
101
107
  const templatesDir = getTemplatesDir();
102
108
  const cwd = process.cwd();
103
109
 
104
- // Check if templates exist
105
110
  if (!pathExists(templatesDir)) {
106
111
  error('Templates not found. Package may be corrupted.');
107
112
  return;
108
113
  }
109
114
 
110
- // Copy .github directory
111
115
  const githubSrc = join(templatesDir, '.github');
112
116
  const githubDest = getRepoGithubDir(cwd);
113
117
 
@@ -118,7 +122,6 @@ async function installProjectTemplates(options) {
118
122
  });
119
123
  }
120
124
 
121
- // Copy .vscode directory
122
125
  const vscodeSrc = join(templatesDir, '.vscode');
123
126
  const vscodeDest = getRepoVscodeDir(cwd);
124
127
 
@@ -130,23 +133,51 @@ async function installProjectTemplates(options) {
130
133
  }
131
134
  }
132
135
 
133
- async function installGlobalSkills(options) {
134
- const skillsSrc = getSkillsSourceDir();
135
- const skillsDest = getUserSkillsDir();
136
+ async function installGlobalResources(options) {
137
+ const copyOptions = {
138
+ overwrite: options.overwrite,
139
+ prompt: !options.yes
140
+ };
141
+
142
+ // Install agents
143
+ const agentsSrc = getAgentsSourceDir();
144
+ const agentsDest = getUserAgentsDir();
145
+ if (pathExists(agentsSrc)) {
146
+ ensureDir(agentsDest);
147
+ await copyDir(agentsSrc, agentsDest, copyOptions);
148
+ success(` ✓ Agents installed to ${agentsDest}`);
149
+ }
136
150
 
137
- // Check if skills source exists
138
- if (!pathExists(skillsSrc)) {
139
- error('Skills not found. Package may be corrupted.');
140
- return;
151
+ // Install prompts
152
+ const promptsSrc = getPromptsSourceDir();
153
+ const promptsDest = getUserPromptsDir();
154
+ if (pathExists(promptsSrc)) {
155
+ ensureDir(promptsDest);
156
+ await copyDir(promptsSrc, promptsDest, copyOptions);
157
+ success(` ✓ Prompts installed to ${promptsDest}`);
141
158
  }
142
159
 
143
- // Ensure ~/.copilot/skills/ directory exists
144
- if (!existsSync(skillsDest)) {
145
- mkdirSync(skillsDest, { recursive: true });
160
+ // Install instructions
161
+ const instructionsSrc = getInstructionsSourceDir();
162
+ const instructionsDest = getUserInstructionsDir();
163
+ if (pathExists(instructionsSrc)) {
164
+ ensureDir(instructionsDest);
165
+ await copyDir(instructionsSrc, instructionsDest, copyOptions);
166
+ success(` ✓ Instructions installed to ${instructionsDest}`);
146
167
  }
147
168
 
148
- await copyDir(skillsSrc, skillsDest, {
149
- overwrite: options.overwrite,
150
- prompt: !options.yes
151
- });
169
+ // Install skills
170
+ const skillsSrc = getSkillsSourceDir();
171
+ const skillsDest = getUserSkillsDir();
172
+ if (pathExists(skillsSrc)) {
173
+ ensureDir(skillsDest);
174
+ await copyDir(skillsSrc, skillsDest, copyOptions);
175
+ success(` ✓ Skills installed to ${skillsDest}`);
176
+ }
177
+ }
178
+
179
+ function ensureDir(dir) {
180
+ if (!existsSync(dir)) {
181
+ mkdirSync(dir, { recursive: true });
182
+ }
152
183
  }
@@ -14,16 +14,47 @@ export function getUserSkillsDir() {
14
14
  return join(homedir(), '.copilot', 'skills');
15
15
  }
16
16
 
17
- // Repo-level templates source
18
- export function getTemplatesDir() {
19
- return join(PACKAGE_ROOT, 'templates', 'repo');
17
+ // User-level agents directory (~/.copilot/agents/)
18
+ export function getUserAgentsDir() {
19
+ return join(homedir(), '.copilot', 'agents');
20
+ }
21
+
22
+ // User-level prompts directory (~/.copilot/prompts/)
23
+ export function getUserPromptsDir() {
24
+ return join(homedir(), '.copilot', 'prompts');
25
+ }
26
+
27
+ // User-level instructions directory (~/.copilot/instructions/)
28
+ export function getUserInstructionsDir() {
29
+ return join(homedir(), '.copilot', 'instructions');
30
+ }
31
+
32
+ // Source directories in package
33
+ export function getAgentsSourceDir() {
34
+ return join(PACKAGE_ROOT, 'agents');
35
+ }
36
+
37
+ export function getPromptsSourceDir() {
38
+ return join(PACKAGE_ROOT, 'prompts');
39
+ }
40
+
41
+ export function getInstructionsSourceDir() {
42
+ return join(PACKAGE_ROOT, 'instructions');
20
43
  }
21
44
 
22
- // User-level skills source
23
45
  export function getSkillsSourceDir() {
24
46
  return join(PACKAGE_ROOT, 'skills');
25
47
  }
26
48
 
49
+ export function getCollectionsSourceDir() {
50
+ return join(PACKAGE_ROOT, 'collections');
51
+ }
52
+
53
+ // Repo-level templates source (legacy)
54
+ export function getTemplatesDir() {
55
+ return join(PACKAGE_ROOT, 'templates', 'repo');
56
+ }
57
+
27
58
  // Get .github directory in current project
28
59
  export function getRepoGithubDir(cwd = process.cwd()) {
29
60
  return join(cwd, '.github');