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,370 @@
1
+ """Tests for db_performance_check.py"""
2
+
3
+ import json
4
+ import sys
5
+ from datetime import datetime
6
+ from pathlib import Path
7
+ from unittest.mock import Mock, patch, MagicMock
8
+
9
+ import pytest
10
+
11
+ # Add parent directory to path
12
+ sys.path.insert(0, str(Path(__file__).parent.parent))
13
+
14
+ from db_performance_check import (
15
+ SlowQuery, IndexRecommendation, PerformanceReport, PerformanceAnalyzer
16
+ )
17
+
18
+
19
+ @pytest.fixture
20
+ def mock_mongo_client():
21
+ """Mock MongoDB client."""
22
+ mock_client = MagicMock()
23
+ mock_db = MagicMock()
24
+ mock_client.get_default_database.return_value = mock_db
25
+ mock_client.server_info.return_value = {}
26
+ return mock_client, mock_db
27
+
28
+
29
+ @pytest.fixture
30
+ def mock_postgres_conn():
31
+ """Mock PostgreSQL connection."""
32
+ mock_conn = MagicMock()
33
+ mock_cursor = MagicMock()
34
+ mock_conn.cursor.return_value.__enter__.return_value = mock_cursor
35
+ return mock_conn, mock_cursor
36
+
37
+
38
+ class TestSlowQuery:
39
+ """Test SlowQuery dataclass."""
40
+
41
+ def test_slow_query_creation(self):
42
+ """Test creating slow query object."""
43
+ query = SlowQuery(
44
+ query="SELECT * FROM users",
45
+ execution_time_ms=150.5,
46
+ count=10
47
+ )
48
+
49
+ assert query.query == "SELECT * FROM users"
50
+ assert query.execution_time_ms == 150.5
51
+ assert query.count == 10
52
+
53
+
54
+ class TestIndexRecommendation:
55
+ """Test IndexRecommendation dataclass."""
56
+
57
+ def test_recommendation_creation(self):
58
+ """Test creating index recommendation."""
59
+ rec = IndexRecommendation(
60
+ collection_or_table="users",
61
+ fields=["email"],
62
+ reason="Frequently queried field",
63
+ estimated_benefit="High"
64
+ )
65
+
66
+ assert rec.collection_or_table == "users"
67
+ assert rec.fields == ["email"]
68
+ assert rec.reason == "Frequently queried field"
69
+ assert rec.estimated_benefit == "High"
70
+
71
+
72
+ class TestPerformanceReport:
73
+ """Test PerformanceReport dataclass."""
74
+
75
+ def test_report_creation(self):
76
+ """Test creating performance report."""
77
+ report = PerformanceReport(
78
+ database_type="mongodb",
79
+ database_name="testdb",
80
+ timestamp=datetime.now(),
81
+ slow_queries=[],
82
+ index_recommendations=[],
83
+ database_metrics={}
84
+ )
85
+
86
+ assert report.database_type == "mongodb"
87
+ assert report.database_name == "testdb"
88
+ assert isinstance(report.slow_queries, list)
89
+ assert isinstance(report.index_recommendations, list)
90
+ assert isinstance(report.database_metrics, dict)
91
+
92
+
93
+ class TestPerformanceAnalyzer:
94
+ """Test PerformanceAnalyzer class."""
95
+
96
+ def test_init(self):
97
+ """Test analyzer initialization."""
98
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost", 100)
99
+
100
+ assert analyzer.db_type == "mongodb"
101
+ assert analyzer.connection_string == "mongodb://localhost"
102
+ assert analyzer.threshold_ms == 100
103
+
104
+ @patch('db_performance_check.MongoClient')
105
+ def test_connect_mongodb(self, mock_client_class, mock_mongo_client):
106
+ """Test MongoDB connection."""
107
+ mock_client, mock_db = mock_mongo_client
108
+ mock_client_class.return_value = mock_client
109
+
110
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost")
111
+ result = analyzer.connect()
112
+
113
+ assert result is True
114
+ assert analyzer.client == mock_client
115
+ assert analyzer.db == mock_db
116
+
117
+ @patch('db_performance_check.psycopg2')
118
+ def test_connect_postgres(self, mock_psycopg2, mock_postgres_conn):
119
+ """Test PostgreSQL connection."""
120
+ mock_conn, mock_cursor = mock_postgres_conn
121
+ mock_psycopg2.connect.return_value = mock_conn
122
+
123
+ analyzer = PerformanceAnalyzer("postgres", "postgresql://localhost")
124
+ result = analyzer.connect()
125
+
126
+ assert result is True
127
+ assert analyzer.conn == mock_conn
128
+
129
+ def test_connect_unsupported_db(self):
130
+ """Test connection with unsupported database type."""
131
+ analyzer = PerformanceAnalyzer("unsupported", "connection_string")
132
+ result = analyzer.connect()
133
+
134
+ assert result is False
135
+
136
+ @patch('db_performance_check.MongoClient')
137
+ def test_analyze_mongodb(self, mock_client_class, mock_mongo_client):
138
+ """Test MongoDB performance analysis."""
139
+ mock_client, mock_db = mock_mongo_client
140
+ mock_client_class.return_value = mock_client
141
+
142
+ # Mock profiling
143
+ mock_db.command.side_effect = [
144
+ {"was": 0}, # profile -1 (get status)
145
+ {}, # profile 1 (enable)
146
+ ]
147
+
148
+ # Mock slow queries
149
+ mock_profile_cursor = MagicMock()
150
+ mock_profile_cursor.sort.return_value = [
151
+ {
152
+ "command": {"find": "users"},
153
+ "millis": 150,
154
+ "ns": "testdb.users",
155
+ "planSummary": "COLLSCAN"
156
+ }
157
+ ]
158
+ mock_db.system.profile.find.return_value = mock_profile_cursor
159
+
160
+ # Mock collections
161
+ mock_db.list_collection_names.return_value = ["users", "orders"]
162
+
163
+ # Mock collection stats
164
+ mock_coll = MagicMock()
165
+ mock_coll.aggregate.return_value = [{"storageStats": {}}]
166
+ mock_coll.list_indexes.return_value = [{"name": "_id_"}]
167
+ mock_coll.find.return_value.limit.return_value = [
168
+ {"_id": 1, "name": "Alice", "email": "alice@example.com"}
169
+ ]
170
+ mock_db.__getitem__.return_value = mock_coll
171
+
172
+ # Mock server status and db stats
173
+ mock_client.admin.command.return_value = {
174
+ "connections": {"current": 10},
175
+ "opcounters": {"query": 1000}
176
+ }
177
+ mock_db.command.return_value = {
178
+ "dataSize": 1024 * 1024 * 100,
179
+ "indexSize": 1024 * 1024 * 10,
180
+ "collections": 5
181
+ }
182
+
183
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost")
184
+ analyzer.connect()
185
+
186
+ report = analyzer.analyze()
187
+
188
+ assert report is not None
189
+ assert report.database_type == "mongodb"
190
+ assert isinstance(report.slow_queries, list)
191
+ assert isinstance(report.index_recommendations, list)
192
+ assert isinstance(report.database_metrics, dict)
193
+
194
+ @patch('db_performance_check.psycopg2')
195
+ def test_analyze_postgres(self, mock_psycopg2, mock_postgres_conn):
196
+ """Test PostgreSQL performance analysis."""
197
+ mock_conn, mock_cursor = mock_postgres_conn
198
+ mock_psycopg2.connect.return_value = mock_conn
199
+
200
+ # Mock cursor results
201
+ mock_cursor.fetchone.side_effect = [
202
+ {"has_extension": True}, # pg_stat_statements check
203
+ {"connections": 10, "commits": 1000, "rollbacks": 5}, # stats
204
+ {"db_size": 1024 * 1024 * 500}, # database size
205
+ {"cache_hit_ratio": 0.95} # cache hit ratio
206
+ ]
207
+
208
+ mock_cursor.fetchall.side_effect = [
209
+ # Slow queries
210
+ [
211
+ {
212
+ "query": "SELECT * FROM users",
213
+ "mean_exec_time": 150.5,
214
+ "calls": 100,
215
+ "total_exec_time": 15050
216
+ }
217
+ ],
218
+ # Sequential scans
219
+ [
220
+ {
221
+ "schemaname": "public",
222
+ "tablename": "users",
223
+ "seq_scan": 5000,
224
+ "seq_tup_read": 500000,
225
+ "idx_scan": 100
226
+ }
227
+ ],
228
+ # Unused indexes
229
+ []
230
+ ]
231
+
232
+ analyzer = PerformanceAnalyzer("postgres", "postgresql://localhost")
233
+ analyzer.connect()
234
+
235
+ report = analyzer.analyze()
236
+
237
+ assert report is not None
238
+ assert report.database_type == "postgres"
239
+ assert len(report.slow_queries) > 0
240
+ assert len(report.index_recommendations) > 0
241
+
242
+ def test_print_report(self, capsys):
243
+ """Test report printing."""
244
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost")
245
+
246
+ report = PerformanceReport(
247
+ database_type="mongodb",
248
+ database_name="testdb",
249
+ timestamp=datetime.now(),
250
+ slow_queries=[
251
+ SlowQuery(
252
+ query="db.users.find({age: {$gte: 18}})",
253
+ execution_time_ms=150.5,
254
+ count=10,
255
+ collection_or_table="users"
256
+ )
257
+ ],
258
+ index_recommendations=[
259
+ IndexRecommendation(
260
+ collection_or_table="users",
261
+ fields=["age"],
262
+ reason="Frequently queried field",
263
+ estimated_benefit="High"
264
+ )
265
+ ],
266
+ database_metrics={
267
+ "connections": 10,
268
+ "database_size_mb": 100.5
269
+ }
270
+ )
271
+
272
+ analyzer.print_report(report)
273
+
274
+ captured = capsys.readouterr()
275
+ assert "Database Performance Report" in captured.out
276
+ assert "testdb" in captured.out
277
+ assert "150.5ms" in captured.out
278
+ assert "users" in captured.out
279
+
280
+ def test_save_report(self, tmp_path):
281
+ """Test saving report to JSON."""
282
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost")
283
+
284
+ report = PerformanceReport(
285
+ database_type="mongodb",
286
+ database_name="testdb",
287
+ timestamp=datetime.now(),
288
+ slow_queries=[],
289
+ index_recommendations=[],
290
+ database_metrics={}
291
+ )
292
+
293
+ output_file = tmp_path / "report.json"
294
+ analyzer.save_report(report, str(output_file))
295
+
296
+ assert output_file.exists()
297
+
298
+ with open(output_file) as f:
299
+ data = json.load(f)
300
+ assert data["database_type"] == "mongodb"
301
+ assert data["database_name"] == "testdb"
302
+
303
+ def test_disconnect(self):
304
+ """Test disconnection."""
305
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost")
306
+
307
+ # Mock client and connection
308
+ analyzer.client = MagicMock()
309
+ analyzer.conn = MagicMock()
310
+
311
+ analyzer.disconnect()
312
+
313
+ analyzer.client.close.assert_called_once()
314
+ analyzer.conn.close.assert_called_once()
315
+
316
+ @patch('db_performance_check.MongoClient')
317
+ def test_analyze_error_handling(self, mock_client_class, mock_mongo_client):
318
+ """Test error handling during analysis."""
319
+ mock_client, mock_db = mock_mongo_client
320
+ mock_client_class.return_value = mock_client
321
+
322
+ # Simulate error
323
+ mock_db.command.side_effect = Exception("Database error")
324
+
325
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost")
326
+ analyzer.connect()
327
+
328
+ report = analyzer.analyze()
329
+
330
+ assert report is None
331
+
332
+
333
+ class TestIntegration:
334
+ """Integration tests."""
335
+
336
+ @patch('db_performance_check.MongoClient')
337
+ def test_full_mongodb_workflow(self, mock_client_class, mock_mongo_client, tmp_path):
338
+ """Test complete MongoDB analysis workflow."""
339
+ mock_client, mock_db = mock_mongo_client
340
+ mock_client_class.return_value = mock_client
341
+
342
+ # Setup mocks
343
+ mock_db.command.return_value = {"was": 0}
344
+ mock_db.system.profile.find.return_value.sort.return_value = []
345
+ mock_db.list_collection_names.return_value = []
346
+ mock_client.admin.command.return_value = {
347
+ "connections": {"current": 10},
348
+ "opcounters": {"query": 1000}
349
+ }
350
+
351
+ analyzer = PerformanceAnalyzer("mongodb", "mongodb://localhost", 100)
352
+
353
+ # Connect
354
+ assert analyzer.connect() is True
355
+
356
+ # Analyze
357
+ report = analyzer.analyze()
358
+ assert report is not None
359
+
360
+ # Save report
361
+ output_file = tmp_path / "report.json"
362
+ analyzer.save_report(report, str(output_file))
363
+ assert output_file.exists()
364
+
365
+ # Disconnect
366
+ analyzer.disconnect()
367
+
368
+
369
+ if __name__ == "__main__":
370
+ pytest.main([__file__, "-v"])
@@ -1,70 +1,82 @@
1
1
  ---
2
- name: debugging
3
- description: Systematic debugging framework with root cause investigation. Use when encountering bugs, test failures, unexpected behavior, or before claiming work complete.
2
+ name: 'ck-debugging'
3
+ description: 'Systematic debugging framework ensuring root cause investigation before fixes. Includes four-phase debugging process, backward call stack tracing, multi-layer validation, and verification protocols. Use when encountering bugs, test failures, unexpected behavior, performance issues, or before claiming work complete. Prevents random fixes, masks over symptoms, and false completion claims.'
4
4
  ---
5
5
 
6
6
  # Debugging
7
7
 
8
- Comprehensive debugging framework combining systematic investigation and verification.
8
+ Comprehensive debugging framework combining systematic investigation, root cause tracing, defense-in-depth validation, and verification protocols.
9
9
 
10
10
  ## Core Principle
11
11
 
12
12
  **NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST**
13
13
 
14
- Random fixes waste time and create new bugs. Find the root cause, fix at source, verify before claiming success.
14
+ Random fixes waste time and create new bugs. Find the root cause, fix at source, validate at every layer, verify before claiming success.
15
15
 
16
16
  ## When to Use
17
17
 
18
- - Test failures or bugs
19
- - Unexpected behavior
20
- - Performance issues
21
- - Build failures
22
- - Before claiming work complete
18
+ **Always use for:** Test failures, bugs, unexpected behavior, performance issues, build failures, integration problems, before claiming work complete
23
19
 
24
- ## The Four Phases
20
+ **Especially when:** Under time pressure, "quick fix" seems obvious, tried multiple fixes, don't fully understand issue, about to claim success
25
21
 
26
- ### Phase 1: Root Cause Investigation
27
- 1. Read error messages completely
28
- 2. Reproduce the issue consistently
29
- 3. Check recent changes
30
- 4. Gather evidence before theorizing
22
+ ## The Four Techniques
31
23
 
32
- ### Phase 2: Pattern Analysis
33
- 1. Find working examples
34
- 2. Compare with failing case
35
- 3. Identify differences
24
+ ### 1. Systematic Debugging (`references/systematic-debugging.md`)
36
25
 
37
- ### Phase 3: Hypothesis and Testing
38
- 1. Form a theory
39
- 2. Test minimally
40
- 3. Verify theory is correct
26
+ Four-phase framework ensuring proper investigation:
27
+ - Phase 1: Root Cause Investigation (read errors, reproduce, check changes, gather evidence)
28
+ - Phase 2: Pattern Analysis (find working examples, compare, identify differences)
29
+ - Phase 3: Hypothesis and Testing (form theory, test minimally, verify)
30
+ - Phase 4: Implementation (create test, fix once, verify)
41
31
 
42
- ### Phase 4: Implementation
43
- 1. Create a test that fails
44
- 2. Fix once at root cause
45
- 3. Verify test passes
32
+ **Key rule:** Complete each phase before proceeding. No fixes without Phase 1.
33
+
34
+ **Load when:** Any bug/issue requiring investigation and fix
35
+
36
+ ### 2. Root Cause Tracing (`references/root-cause-tracing.md`)
37
+
38
+ Trace bugs backward through call stack to find original trigger.
39
+
40
+ **Technique:** When error appears deep in execution, trace backward level-by-level until finding source where invalid data originated. Fix at source, not at symptom.
41
+
42
+ **Includes:** `scripts/find-polluter.sh` for bisecting test pollution
43
+
44
+ **Load when:** Error deep in call stack, unclear where invalid data originated
45
+
46
+ ### 3. Defense-in-Depth (`references/defense-in-depth.md`)
47
+
48
+ Validate at every layer data passes through. Make bugs impossible.
49
+
50
+ **Four layers:** Entry validation → Business logic → Environment guards → Debug instrumentation
51
+
52
+ **Load when:** After finding root cause, need to add comprehensive validation
53
+
54
+ ### 4. Verification (`references/verification.md`)
55
+
56
+ Run verification commands and confirm output before claiming success.
57
+
58
+ **Iron law:** NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
59
+
60
+ Run the command. Read the output. Then claim the result.
61
+
62
+ **Load when:** About to claim work complete, fixed, or passing
46
63
 
47
64
  ## Quick Reference
48
65
 
49
66
  ```
50
- Bug reported → Phase 1 (investigate)
51
- Error deep in stack? → Trace backward to source
52
- Found root cause? → Phase 4 (fix at source)
53
- About to claim success? → Verify first!
67
+ Bug → systematic-debugging.md (Phase 1-4)
68
+ Error deep in stack? → root-cause-tracing.md (trace backward)
69
+ Found root cause? → defense-in-depth.md (add layers)
70
+ About to claim success? → verification.md (verify first)
54
71
  ```
55
72
 
56
73
  ## Red Flags
57
74
 
58
- Stop if thinking:
59
- - "Quick fix for now"
60
- - "Just try changing X"
61
- - "Should work now"
62
-
63
- **All mean:** Return to Phase 1.
64
-
65
- ## References
75
+ Stop and follow process if thinking:
76
+ - "Quick fix for now, investigate later"
77
+ - "Just try changing X and see if it works"
78
+ - "It's probably X, let me fix that"
79
+ - "Should work now" / "Seems fixed"
80
+ - "Tests pass, we're done"
66
81
 
67
- See `./references/` for detailed guides:
68
- - `systematic-debugging.md` - Full 4-phase process
69
- - `root-cause-tracing.md` - Backward tracing technique
70
- - `verification.md` - Verification protocol
82
+ **All mean:** Return to systematic process.
@@ -0,0 +1,124 @@
1
+ # Defense-in-Depth Validation
2
+
3
+ Validate at every layer data passes through to make bugs impossible.
4
+
5
+ ## Core Principle
6
+
7
+ **Validate at EVERY layer data passes through. Make bug structurally impossible.**
8
+
9
+ When fix bug caused by invalid data, adding validation at one place feels sufficient. But single check can be bypassed by different code paths, refactoring, or mocks.
10
+
11
+ ## Why Multiple Layers
12
+
13
+ Single validation: "We fixed bug"
14
+ Multiple layers: "We made bug impossible"
15
+
16
+ Different layers catch different cases:
17
+ - Entry validation catches most bugs
18
+ - Business logic catches edge cases
19
+ - Environment guards prevent context-specific dangers
20
+ - Debug logging helps when other layers fail
21
+
22
+ ## The Four Layers
23
+
24
+ ### Layer 1: Entry Point Validation
25
+ **Purpose:** Reject obviously invalid input at API boundary
26
+
27
+ ```typescript
28
+ function createProject(name: string, workingDirectory: string) {
29
+ if (!workingDirectory || workingDirectory.trim() === '') {
30
+ throw new Error('workingDirectory cannot be empty');
31
+ }
32
+ if (!existsSync(workingDirectory)) {
33
+ throw new Error(`workingDirectory does not exist: ${workingDirectory}`);
34
+ }
35
+ if (!statSync(workingDirectory).isDirectory()) {
36
+ throw new Error(`workingDirectory is not a directory: ${workingDirectory}`);
37
+ }
38
+ // proceed
39
+ }
40
+ ```
41
+
42
+ ### Layer 2: Business Logic Validation
43
+ **Purpose:** Ensure data makes sense for this operation
44
+
45
+ ```typescript
46
+ function initializeWorkspace(projectDir: string, sessionId: string) {
47
+ if (!projectDir) {
48
+ throw new Error('projectDir required for workspace initialization');
49
+ }
50
+ // proceed
51
+ }
52
+ ```
53
+
54
+ ### Layer 3: Environment Guards
55
+ **Purpose:** Prevent dangerous operations in specific contexts
56
+
57
+ ```typescript
58
+ async function gitInit(directory: string) {
59
+ // In tests, refuse git init outside temp directories
60
+ if (process.env.NODE_ENV === 'test') {
61
+ const normalized = normalize(resolve(directory));
62
+ const tmpDir = normalize(resolve(tmpdir()));
63
+
64
+ if (!normalized.startsWith(tmpDir)) {
65
+ throw new Error(
66
+ `Refusing git init outside temp dir during tests: ${directory}`
67
+ );
68
+ }
69
+ }
70
+ // proceed
71
+ }
72
+ ```
73
+
74
+ ### Layer 4: Debug Instrumentation
75
+ **Purpose:** Capture context for forensics
76
+
77
+ ```typescript
78
+ async function gitInit(directory: string) {
79
+ const stack = new Error().stack;
80
+ logger.debug('About to git init', {
81
+ directory,
82
+ cwd: process.cwd(),
83
+ stack,
84
+ });
85
+ // proceed
86
+ }
87
+ ```
88
+
89
+ ## Applying the Pattern
90
+
91
+ When find bug:
92
+
93
+ 1. **Trace data flow** - Where does bad value originate? Where used?
94
+ 2. **Map all checkpoints** - List every point data passes through
95
+ 3. **Add validation at each layer** - Entry, business, environment, debug
96
+ 4. **Test each layer** - Try to bypass layer 1, verify layer 2 catches it
97
+
98
+ ## Example from Real Session
99
+
100
+ Bug: Empty `projectDir` caused `git init` in source code
101
+
102
+ **Data flow:**
103
+ 1. Test setup → empty string
104
+ 2. `Project.create(name, '')`
105
+ 3. `WorkspaceManager.createWorkspace('')`
106
+ 4. `git init` runs in `process.cwd()`
107
+
108
+ **Four layers added:**
109
+ - Layer 1: `Project.create()` validates not empty/exists/writable
110
+ - Layer 2: `WorkspaceManager` validates projectDir not empty
111
+ - Layer 3: `WorktreeManager` refuses git init outside tmpdir in tests
112
+ - Layer 4: Stack trace logging before git init
113
+
114
+ **Result:** All 1847 tests passed, bug impossible to reproduce
115
+
116
+ ## Key Insight
117
+
118
+ All four layers were necessary. During testing, each layer caught bugs others missed:
119
+ - Different code paths bypassed entry validation
120
+ - Mocks bypassed business logic checks
121
+ - Edge cases on different platforms needed environment guards
122
+ - Debug logging identified structural misuse
123
+
124
+ **Don't stop at one validation point.** Add checks at every layer.