@macpaw/cctk 1.0.0-beta.1

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 (415) hide show
  1. package/License +21 -0
  2. package/README.md +142 -0
  3. package/bin/index.js +5 -0
  4. package/dist/index.js +1 -0
  5. package/package.json +65 -0
  6. package/templates/claude/agents/brainstormer.md +113 -0
  7. package/templates/claude/agents/code-reviewer.md +157 -0
  8. package/templates/claude/agents/copywriter.md +110 -0
  9. package/templates/claude/agents/database-admin.md +92 -0
  10. package/templates/claude/agents/debugger.md +137 -0
  11. package/templates/claude/agents/docs-manager.md +208 -0
  12. package/templates/claude/agents/fullstack-developer.md +95 -0
  13. package/templates/claude/agents/git-manager.md +394 -0
  14. package/templates/claude/agents/journal-writer.md +113 -0
  15. package/templates/claude/agents/mcp-manager.md +89 -0
  16. package/templates/claude/agents/planner.md +108 -0
  17. package/templates/claude/agents/project-manager.md +125 -0
  18. package/templates/claude/agents/registry.json +304 -0
  19. package/templates/claude/agents/researcher.md +37 -0
  20. package/templates/claude/agents/scout-external.md +140 -0
  21. package/templates/claude/agents/scout.md +106 -0
  22. package/templates/claude/agents/tester.md +105 -0
  23. package/templates/claude/agents/ui-ux-designer.md +208 -0
  24. package/templates/claude/commands/ask.md +56 -0
  25. package/templates/claude/commands/bootstrap/auto/fast.md +106 -0
  26. package/templates/claude/commands/bootstrap/auto/parallel.md +64 -0
  27. package/templates/claude/commands/bootstrap/auto.md +110 -0
  28. package/templates/claude/commands/bootstrap.md +130 -0
  29. package/templates/claude/commands/brainstorm.md +75 -0
  30. package/templates/claude/commands/code/auto.md +198 -0
  31. package/templates/claude/commands/code/no-test.md +172 -0
  32. package/templates/claude/commands/code/parallel.md +100 -0
  33. package/templates/claude/commands/code.md +197 -0
  34. package/templates/claude/commands/coding-level.md +37 -0
  35. package/templates/claude/commands/content/cro.md +41 -0
  36. package/templates/claude/commands/content/enhance.md +12 -0
  37. package/templates/claude/commands/content/fast.md +11 -0
  38. package/templates/claude/commands/content/good.md +14 -0
  39. package/templates/claude/commands/cook/auto/fast.md +26 -0
  40. package/templates/claude/commands/cook/auto/parallel.md +49 -0
  41. package/templates/claude/commands/cook/auto.md +15 -0
  42. package/templates/claude/commands/cook.md +101 -0
  43. package/templates/claude/commands/debug.md +13 -0
  44. package/templates/claude/commands/docs/init.md +37 -0
  45. package/templates/claude/commands/docs/summarize.md +22 -0
  46. package/templates/claude/commands/docs/update.md +78 -0
  47. package/templates/claude/commands/fix/ci.md +17 -0
  48. package/templates/claude/commands/fix/fast.md +18 -0
  49. package/templates/claude/commands/fix/hard.md +35 -0
  50. package/templates/claude/commands/fix/logs.md +26 -0
  51. package/templates/claude/commands/fix/parallel.md +54 -0
  52. package/templates/claude/commands/fix/test.md +20 -0
  53. package/templates/claude/commands/fix/types.md +9 -0
  54. package/templates/claude/commands/fix/ui.md +33 -0
  55. package/templates/claude/commands/fix.md +43 -0
  56. package/templates/claude/commands/git/cm.md +5 -0
  57. package/templates/claude/commands/git/cp.md +4 -0
  58. package/templates/claude/commands/git/merge.md +40 -0
  59. package/templates/claude/commands/git/pr.md +50 -0
  60. package/templates/claude/commands/journal.md +7 -0
  61. package/templates/claude/commands/kanban.md +99 -0
  62. package/templates/claude/commands/plan/archive.md +57 -0
  63. package/templates/claude/commands/plan/ci.md +33 -0
  64. package/templates/claude/commands/plan/cro.md +67 -0
  65. package/templates/claude/commands/plan/fast.md +66 -0
  66. package/templates/claude/commands/plan/hard.md +92 -0
  67. package/templates/claude/commands/plan/parallel.md +129 -0
  68. package/templates/claude/commands/plan/two.md +45 -0
  69. package/templates/claude/commands/plan/validate.md +117 -0
  70. package/templates/claude/commands/plan.md +30 -0
  71. package/templates/claude/commands/preview.md +87 -0
  72. package/templates/claude/commands/registry.json +313 -0
  73. package/templates/claude/commands/review/codebase/parallel.md +122 -0
  74. package/templates/claude/commands/review/codebase.md +47 -0
  75. package/templates/claude/commands/scout/ext.md +35 -0
  76. package/templates/claude/commands/scout.md +28 -0
  77. package/templates/claude/commands/skill/add.md +36 -0
  78. package/templates/claude/commands/skill/create.md +29 -0
  79. package/templates/claude/commands/skill/fix-logs.md +22 -0
  80. package/templates/claude/commands/skill/optimize/auto.md +25 -0
  81. package/templates/claude/commands/skill/optimize.md +34 -0
  82. package/templates/claude/commands/skill/plan.md +45 -0
  83. package/templates/claude/commands/test/ui.md +91 -0
  84. package/templates/claude/commands/test.md +8 -0
  85. package/templates/claude/commands/use-mcp.md +34 -0
  86. package/templates/claude/commands/watzup.md +8 -0
  87. package/templates/claude/commands/worktree.md +126 -0
  88. package/templates/claude/hooks/dev-rules-reminder.cjs +258 -0
  89. package/templates/claude/hooks/docs/README.md +42 -0
  90. package/templates/claude/hooks/lib/cctk-config-utils.cjs +751 -0
  91. package/templates/claude/hooks/lib/cctk-paths.cjs +106 -0
  92. package/templates/claude/hooks/lib/context-tracker.cjs +346 -0
  93. package/templates/claude/hooks/privacy-block.cjs +289 -0
  94. package/templates/claude/hooks/registry.json +77 -0
  95. package/templates/claude/hooks/scout-block/broad-pattern-detector.cjs +293 -0
  96. package/templates/claude/hooks/scout-block/error-formatter.cjs +156 -0
  97. package/templates/claude/hooks/scout-block/path-extractor.cjs +359 -0
  98. package/templates/claude/hooks/scout-block/pattern-matcher.cjs +184 -0
  99. package/templates/claude/hooks/scout-block/vendor/ignore.js +626 -0
  100. package/templates/claude/hooks/scout-block.cjs +167 -0
  101. package/templates/claude/hooks/session-end.cjs +35 -0
  102. package/templates/claude/hooks/session-init.cjs +214 -0
  103. package/templates/claude/hooks/subagent-init.cjs +161 -0
  104. package/templates/claude/hooks/write-compact-marker.cjs +153 -0
  105. package/templates/claude/output-styles/coding-level-1.md +148 -0
  106. package/templates/claude/output-styles/coding-level-2.md +159 -0
  107. package/templates/claude/output-styles/coding-level-3.md +91 -0
  108. package/templates/claude/scripts/README.md +33 -0
  109. package/templates/claude/scripts/generate-catalogs.cjs +318 -0
  110. package/templates/claude/scripts/registry.json +48 -0
  111. package/templates/claude/scripts/set-active-plan.cjs +45 -0
  112. package/templates/claude/scripts/validate-docs.cjs +447 -0
  113. package/templates/claude/scripts/worktree.cjs +658 -0
  114. package/templates/claude/skills/README.md +112 -0
  115. package/templates/claude/skills/ai-artist/SKILL.md +75 -0
  116. package/templates/claude/skills/ai-artist/references/advanced-techniques.md +184 -0
  117. package/templates/claude/skills/ai-artist/references/domain-code.md +66 -0
  118. package/templates/claude/skills/ai-artist/references/domain-data.md +72 -0
  119. package/templates/claude/skills/ai-artist/references/domain-marketing.md +66 -0
  120. package/templates/claude/skills/ai-artist/references/domain-patterns.md +33 -0
  121. package/templates/claude/skills/ai-artist/references/domain-writing.md +68 -0
  122. package/templates/claude/skills/ai-artist/references/image-prompting.md +141 -0
  123. package/templates/claude/skills/ai-artist/references/llm-prompting.md +165 -0
  124. package/templates/claude/skills/ai-artist/references/nano-banana.md +59 -0
  125. package/templates/claude/skills/ai-artist/references/reasoning-techniques.md +201 -0
  126. package/templates/claude/skills/backend-development/SKILL.md +95 -0
  127. package/templates/claude/skills/backend-development/references/backend-api-design.md +495 -0
  128. package/templates/claude/skills/backend-development/references/backend-architecture.md +454 -0
  129. package/templates/claude/skills/backend-development/references/backend-authentication.md +338 -0
  130. package/templates/claude/skills/backend-development/references/backend-code-quality.md +659 -0
  131. package/templates/claude/skills/backend-development/references/backend-debugging.md +904 -0
  132. package/templates/claude/skills/backend-development/references/backend-devops.md +494 -0
  133. package/templates/claude/skills/backend-development/references/backend-mindset.md +387 -0
  134. package/templates/claude/skills/backend-development/references/backend-performance.md +397 -0
  135. package/templates/claude/skills/backend-development/references/backend-security.md +290 -0
  136. package/templates/claude/skills/backend-development/references/backend-technologies.md +256 -0
  137. package/templates/claude/skills/backend-development/references/backend-testing.md +429 -0
  138. package/templates/claude/skills/better-auth/SKILL.md +204 -0
  139. package/templates/claude/skills/better-auth/references/advanced-features.md +553 -0
  140. package/templates/claude/skills/better-auth/references/database-integration.md +577 -0
  141. package/templates/claude/skills/better-auth/references/email-password-auth.md +416 -0
  142. package/templates/claude/skills/better-auth/references/oauth-providers.md +430 -0
  143. package/templates/claude/skills/better-auth/scripts/better_auth_init.py +521 -0
  144. package/templates/claude/skills/chrome-devtools/SKILL.md +473 -0
  145. package/templates/claude/skills/chrome-devtools/references/cdp-domains.md +694 -0
  146. package/templates/claude/skills/chrome-devtools/references/performance-guide.md +940 -0
  147. package/templates/claude/skills/chrome-devtools/references/puppeteer-reference.md +953 -0
  148. package/templates/claude/skills/chrome-devtools/scripts/README.md +288 -0
  149. package/templates/claude/skills/chrome-devtools/scripts/aria-snapshot.js +368 -0
  150. package/templates/claude/skills/chrome-devtools/scripts/click.js +92 -0
  151. package/templates/claude/skills/chrome-devtools/scripts/console.js +85 -0
  152. package/templates/claude/skills/chrome-devtools/scripts/evaluate.js +59 -0
  153. package/templates/claude/skills/chrome-devtools/scripts/fill.js +84 -0
  154. package/templates/claude/skills/chrome-devtools/scripts/inject-auth.js +247 -0
  155. package/templates/claude/skills/chrome-devtools/scripts/install-deps.sh +11 -0
  156. package/templates/claude/skills/chrome-devtools/scripts/install.sh +36 -0
  157. package/templates/claude/skills/chrome-devtools/scripts/lib/browser.js +335 -0
  158. package/templates/claude/skills/chrome-devtools/scripts/lib/selector.js +183 -0
  159. package/templates/claude/skills/chrome-devtools/scripts/navigate.js +60 -0
  160. package/templates/claude/skills/chrome-devtools/scripts/network.js +113 -0
  161. package/templates/claude/skills/chrome-devtools/scripts/package.json +16 -0
  162. package/templates/claude/skills/chrome-devtools/scripts/performance.js +159 -0
  163. package/templates/claude/skills/chrome-devtools/scripts/screenshot.js +212 -0
  164. package/templates/claude/skills/chrome-devtools/scripts/select-ref.js +151 -0
  165. package/templates/claude/skills/chrome-devtools/scripts/snapshot.js +143 -0
  166. package/templates/claude/skills/chrome-devtools/scripts/ws-debug.js +47 -0
  167. package/templates/claude/skills/chrome-devtools/scripts/ws-full-debug.js +115 -0
  168. package/templates/claude/skills/claude-code/references/advanced-features.md +399 -0
  169. package/templates/claude/skills/claude-code/references/agent-skills.md +399 -0
  170. package/templates/claude/skills/claude-code/references/api-reference.md +498 -0
  171. package/templates/claude/skills/claude-code/references/best-practices.md +447 -0
  172. package/templates/claude/skills/claude-code/references/cicd-integration.md +428 -0
  173. package/templates/claude/skills/claude-code/references/common-workflows.md +107 -0
  174. package/templates/claude/skills/claude-code/references/configuration.md +480 -0
  175. package/templates/claude/skills/claude-code/references/enterprise-features.md +472 -0
  176. package/templates/claude/skills/claude-code/references/getting-started.md +244 -0
  177. package/templates/claude/skills/claude-code/references/hooks-and-plugins.md +444 -0
  178. package/templates/claude/skills/claude-code/references/hooks-comprehensive.md +622 -0
  179. package/templates/claude/skills/claude-code/references/ide-integration.md +316 -0
  180. package/templates/claude/skills/claude-code/references/mcp-integration.md +386 -0
  181. package/templates/claude/skills/claude-code/references/slash-commands.md +460 -0
  182. package/templates/claude/skills/claude-code/references/troubleshooting.md +455 -0
  183. package/templates/claude/skills/claude-code/skill.md +60 -0
  184. package/templates/claude/skills/code-review/SKILL.md +143 -0
  185. package/templates/claude/skills/code-review/references/code-review-reception.md +209 -0
  186. package/templates/claude/skills/code-review/references/requesting-code-review.md +105 -0
  187. package/templates/claude/skills/code-review/references/verification-before-completion.md +139 -0
  188. package/templates/claude/skills/context-engineering/SKILL.md +86 -0
  189. package/templates/claude/skills/context-engineering/references/context-compression.md +84 -0
  190. package/templates/claude/skills/context-engineering/references/context-degradation.md +93 -0
  191. package/templates/claude/skills/context-engineering/references/context-fundamentals.md +75 -0
  192. package/templates/claude/skills/context-engineering/references/context-optimization.md +82 -0
  193. package/templates/claude/skills/context-engineering/references/evaluation.md +89 -0
  194. package/templates/claude/skills/context-engineering/references/memory-systems.md +88 -0
  195. package/templates/claude/skills/context-engineering/references/multi-agent-patterns.md +90 -0
  196. package/templates/claude/skills/context-engineering/references/project-development.md +97 -0
  197. package/templates/claude/skills/context-engineering/references/tool-design.md +86 -0
  198. package/templates/claude/skills/context-engineering/scripts/compression_evaluator.py +329 -0
  199. package/templates/claude/skills/context-engineering/scripts/context_analyzer.py +294 -0
  200. package/templates/claude/skills/databases/SKILL.md +232 -0
  201. package/templates/claude/skills/databases/references/mongodb-aggregation.md +447 -0
  202. package/templates/claude/skills/databases/references/mongodb-atlas.md +465 -0
  203. package/templates/claude/skills/databases/references/mongodb-crud.md +408 -0
  204. package/templates/claude/skills/databases/references/mongodb-indexing.md +442 -0
  205. package/templates/claude/skills/databases/references/postgresql-administration.md +594 -0
  206. package/templates/claude/skills/databases/references/postgresql-performance.md +527 -0
  207. package/templates/claude/skills/databases/references/postgresql-psql-cli.md +467 -0
  208. package/templates/claude/skills/databases/references/postgresql-queries.md +475 -0
  209. package/templates/claude/skills/databases/scripts/db_backup.py +502 -0
  210. package/templates/claude/skills/databases/scripts/db_migrate.py +414 -0
  211. package/templates/claude/skills/databases/scripts/db_performance_check.py +445 -0
  212. package/templates/claude/skills/debugging/SKILL.md +84 -0
  213. package/templates/claude/skills/debugging/references/defense-in-depth.md +124 -0
  214. package/templates/claude/skills/debugging/references/root-cause-tracing.md +122 -0
  215. package/templates/claude/skills/debugging/references/systematic-debugging.md +102 -0
  216. package/templates/claude/skills/debugging/references/verification.md +123 -0
  217. package/templates/claude/skills/debugging/scripts/find-polluter.sh +63 -0
  218. package/templates/claude/skills/debugging/scripts/find-polluter.test.md +102 -0
  219. package/templates/claude/skills/devops/SKILL.md +293 -0
  220. package/templates/claude/skills/devops/references/browser-rendering.md +305 -0
  221. package/templates/claude/skills/devops/references/cloudflare-d1-kv.md +123 -0
  222. package/templates/claude/skills/devops/references/cloudflare-platform.md +271 -0
  223. package/templates/claude/skills/devops/references/cloudflare-r2-storage.md +280 -0
  224. package/templates/claude/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  225. package/templates/claude/skills/devops/references/cloudflare-workers-apis.md +309 -0
  226. package/templates/claude/skills/devops/references/cloudflare-workers-basics.md +418 -0
  227. package/templates/claude/skills/devops/references/docker-basics.md +297 -0
  228. package/templates/claude/skills/devops/references/docker-compose.md +292 -0
  229. package/templates/claude/skills/devops/references/gcloud-platform.md +307 -0
  230. package/templates/claude/skills/devops/references/gcloud-services.md +304 -0
  231. package/templates/claude/skills/devops/scripts/cloudflare_deploy.py +269 -0
  232. package/templates/claude/skills/devops/scripts/docker_optimize.py +320 -0
  233. package/templates/claude/skills/docs-seeker/SKILL.md +95 -0
  234. package/templates/claude/skills/docs-seeker/package.json +24 -0
  235. package/templates/claude/skills/docs-seeker/references/advanced.md +78 -0
  236. package/templates/claude/skills/docs-seeker/references/context7-patterns.md +68 -0
  237. package/templates/claude/skills/docs-seeker/references/errors.md +68 -0
  238. package/templates/claude/skills/docs-seeker/scripts/analyze-llms-txt.js +245 -0
  239. package/templates/claude/skills/docs-seeker/scripts/detect-topic.js +172 -0
  240. package/templates/claude/skills/docs-seeker/scripts/fetch-docs.js +212 -0
  241. package/templates/claude/skills/docs-seeker/workflows/library-search.md +87 -0
  242. package/templates/claude/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  243. package/templates/claude/skills/docs-seeker/workflows/topic-search.md +77 -0
  244. package/templates/claude/skills/frontend-design/SKILL.md +85 -0
  245. package/templates/claude/skills/frontend-design/references/analysis-best-practices.md +80 -0
  246. package/templates/claude/skills/frontend-design/references/analysis-prompts.md +141 -0
  247. package/templates/claude/skills/frontend-design/references/analysis-techniques.md +118 -0
  248. package/templates/claude/skills/frontend-design/references/animejs.md +396 -0
  249. package/templates/claude/skills/frontend-design/references/design-extraction-overview.md +71 -0
  250. package/templates/claude/skills/frontend-design/references/extraction-best-practices.md +141 -0
  251. package/templates/claude/skills/frontend-design/references/extraction-output-templates.md +162 -0
  252. package/templates/claude/skills/frontend-design/references/extraction-prompts.md +127 -0
  253. package/templates/claude/skills/frontend-design/references/technical-accessibility.md +119 -0
  254. package/templates/claude/skills/frontend-design/references/technical-best-practices.md +97 -0
  255. package/templates/claude/skills/frontend-design/references/technical-optimization.md +44 -0
  256. package/templates/claude/skills/frontend-design/references/technical-overview.md +90 -0
  257. package/templates/claude/skills/frontend-design/references/technical-workflows.md +150 -0
  258. package/templates/claude/skills/frontend-design/references/visual-analysis-overview.md +95 -0
  259. package/templates/claude/skills/frontend-development/SKILL.md +399 -0
  260. package/templates/claude/skills/frontend-development/resources/common-patterns.md +331 -0
  261. package/templates/claude/skills/frontend-development/resources/complete-examples.md +872 -0
  262. package/templates/claude/skills/frontend-development/resources/component-patterns.md +502 -0
  263. package/templates/claude/skills/frontend-development/resources/data-fetching.md +767 -0
  264. package/templates/claude/skills/frontend-development/resources/file-organization.md +502 -0
  265. package/templates/claude/skills/frontend-development/resources/loading-and-error-states.md +501 -0
  266. package/templates/claude/skills/frontend-development/resources/performance.md +406 -0
  267. package/templates/claude/skills/frontend-development/resources/routing-guide.md +364 -0
  268. package/templates/claude/skills/frontend-development/resources/styling-guide.md +428 -0
  269. package/templates/claude/skills/frontend-development/resources/typescript-standards.md +418 -0
  270. package/templates/claude/skills/markdown-novel-viewer/SKILL.md +272 -0
  271. package/templates/claude/skills/markdown-novel-viewer/assets/directory-browser.css +215 -0
  272. package/templates/claude/skills/markdown-novel-viewer/assets/favicon.png +0 -0
  273. package/templates/claude/skills/markdown-novel-viewer/assets/novel-theme.css +872 -0
  274. package/templates/claude/skills/markdown-novel-viewer/assets/reader.js +378 -0
  275. package/templates/claude/skills/markdown-novel-viewer/assets/template.html +85 -0
  276. package/templates/claude/skills/markdown-novel-viewer/package.json +15 -0
  277. package/templates/claude/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
  278. package/templates/claude/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +335 -0
  279. package/templates/claude/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
  280. package/templates/claude/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +49 -0
  281. package/templates/claude/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
  282. package/templates/claude/skills/markdown-novel-viewer/scripts/server.cjs +398 -0
  283. package/templates/claude/skills/mcp-builder/SKILL.md +328 -0
  284. package/templates/claude/skills/mcp-builder/reference/evaluation.md +602 -0
  285. package/templates/claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  286. package/templates/claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  287. package/templates/claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  288. package/templates/claude/skills/mcp-builder/scripts/connections.py +151 -0
  289. package/templates/claude/skills/mcp-builder/scripts/evaluation.py +381 -0
  290. package/templates/claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  291. package/templates/claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  292. package/templates/claude/skills/mcp-management/README.md +219 -0
  293. package/templates/claude/skills/mcp-management/SKILL.md +209 -0
  294. package/templates/claude/skills/mcp-management/assets/tools.json +3146 -0
  295. package/templates/claude/skills/mcp-management/references/configuration.md +114 -0
  296. package/templates/claude/skills/mcp-management/references/gemini-cli-integration.md +209 -0
  297. package/templates/claude/skills/mcp-management/references/mcp-protocol.md +116 -0
  298. package/templates/claude/skills/mcp-management/scripts/.env.example +10 -0
  299. package/templates/claude/skills/mcp-management/scripts/cli.ts +202 -0
  300. package/templates/claude/skills/mcp-management/scripts/mcp-client.ts +247 -0
  301. package/templates/claude/skills/mcp-management/scripts/package.json +20 -0
  302. package/templates/claude/skills/mcp-management/scripts/tsconfig.json +15 -0
  303. package/templates/claude/skills/media-processing/SKILL.md +91 -0
  304. package/templates/claude/skills/media-processing/references/common-workflows.md +132 -0
  305. package/templates/claude/skills/media-processing/references/ffmpeg-encoding.md +358 -0
  306. package/templates/claude/skills/media-processing/references/ffmpeg-filters.md +503 -0
  307. package/templates/claude/skills/media-processing/references/ffmpeg-streaming.md +395 -0
  308. package/templates/claude/skills/media-processing/references/format-compatibility.md +375 -0
  309. package/templates/claude/skills/media-processing/references/imagemagick-batch.md +612 -0
  310. package/templates/claude/skills/media-processing/references/imagemagick-editing.md +623 -0
  311. package/templates/claude/skills/media-processing/references/rmbg-background-removal.md +66 -0
  312. package/templates/claude/skills/media-processing/references/troubleshooting.md +109 -0
  313. package/templates/claude/skills/media-processing/scripts/README.md +102 -0
  314. package/templates/claude/skills/media-processing/scripts/batch-remove-background.sh +124 -0
  315. package/templates/claude/skills/media-processing/scripts/batch_resize.py +342 -0
  316. package/templates/claude/skills/media-processing/scripts/media_convert.py +311 -0
  317. package/templates/claude/skills/media-processing/scripts/remove-background.sh +96 -0
  318. package/templates/claude/skills/media-processing/scripts/remove-bg-node.js +181 -0
  319. package/templates/claude/skills/mermaidjs-v11/SKILL.md +115 -0
  320. package/templates/claude/skills/mermaidjs-v11/references/cli-usage.md +228 -0
  321. package/templates/claude/skills/mermaidjs-v11/references/configuration.md +232 -0
  322. package/templates/claude/skills/mermaidjs-v11/references/diagram-types.md +315 -0
  323. package/templates/claude/skills/mermaidjs-v11/references/examples.md +344 -0
  324. package/templates/claude/skills/mermaidjs-v11/references/integration.md +310 -0
  325. package/templates/claude/skills/planning/SKILL.md +115 -0
  326. package/templates/claude/skills/planning/references/codebase-understanding.md +62 -0
  327. package/templates/claude/skills/planning/references/output-standards.md +127 -0
  328. package/templates/claude/skills/planning/references/plan-organization.md +150 -0
  329. package/templates/claude/skills/planning/references/research-phase.md +49 -0
  330. package/templates/claude/skills/planning/references/solution-design.md +63 -0
  331. package/templates/claude/skills/plans-kanban/SKILL.md +157 -0
  332. package/templates/claude/skills/plans-kanban/assets/dashboard-template.html +119 -0
  333. package/templates/claude/skills/plans-kanban/assets/dashboard.css +1594 -0
  334. package/templates/claude/skills/plans-kanban/assets/dashboard.js +659 -0
  335. package/templates/claude/skills/plans-kanban/assets/favicon.png +0 -0
  336. package/templates/claude/skills/plans-kanban/package.json +13 -0
  337. package/templates/claude/skills/plans-kanban/scripts/lib/dashboard-renderer.cjs +941 -0
  338. package/templates/claude/skills/plans-kanban/scripts/lib/http-server.cjs +310 -0
  339. package/templates/claude/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +489 -0
  340. package/templates/claude/skills/plans-kanban/scripts/lib/plan-parser.cjs +194 -0
  341. package/templates/claude/skills/plans-kanban/scripts/lib/plan-scanner.cjs +277 -0
  342. package/templates/claude/skills/plans-kanban/scripts/lib/port-finder.cjs +49 -0
  343. package/templates/claude/skills/plans-kanban/scripts/lib/process-mgr.cjs +128 -0
  344. package/templates/claude/skills/plans-kanban/scripts/server.cjs +249 -0
  345. package/templates/claude/skills/problem-solving/SKILL.md +96 -0
  346. package/templates/claude/skills/problem-solving/references/attribution.md +69 -0
  347. package/templates/claude/skills/problem-solving/references/collision-zone-thinking.md +79 -0
  348. package/templates/claude/skills/problem-solving/references/inversion-exercise.md +91 -0
  349. package/templates/claude/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
  350. package/templates/claude/skills/problem-solving/references/scale-game.md +95 -0
  351. package/templates/claude/skills/problem-solving/references/simplification-cascades.md +80 -0
  352. package/templates/claude/skills/problem-solving/references/when-stuck.md +72 -0
  353. package/templates/claude/skills/registry.json +258 -0
  354. package/templates/claude/skills/repomix/SKILL.md +247 -0
  355. package/templates/claude/skills/repomix/references/configuration.md +211 -0
  356. package/templates/claude/skills/repomix/references/usage-patterns.md +232 -0
  357. package/templates/claude/skills/repomix/scripts/README.md +179 -0
  358. package/templates/claude/skills/repomix/scripts/repomix_batch.py +455 -0
  359. package/templates/claude/skills/repomix/scripts/repos.example.json +15 -0
  360. package/templates/claude/skills/research/SKILL.md +168 -0
  361. package/templates/claude/skills/sequential-thinking/.env.example +8 -0
  362. package/templates/claude/skills/sequential-thinking/README.md +183 -0
  363. package/templates/claude/skills/sequential-thinking/SKILL.md +94 -0
  364. package/templates/claude/skills/sequential-thinking/package.json +31 -0
  365. package/templates/claude/skills/sequential-thinking/references/advanced-strategies.md +79 -0
  366. package/templates/claude/skills/sequential-thinking/references/advanced-techniques.md +76 -0
  367. package/templates/claude/skills/sequential-thinking/references/core-patterns.md +95 -0
  368. package/templates/claude/skills/sequential-thinking/references/examples-api.md +88 -0
  369. package/templates/claude/skills/sequential-thinking/references/examples-architecture.md +94 -0
  370. package/templates/claude/skills/sequential-thinking/references/examples-debug.md +90 -0
  371. package/templates/claude/skills/sequential-thinking/scripts/format-thought.js +182 -0
  372. package/templates/claude/skills/sequential-thinking/scripts/process-thought.js +252 -0
  373. package/templates/claude/skills/skill-creator/LICENSE.txt +202 -0
  374. package/templates/claude/skills/skill-creator/SKILL.md +266 -0
  375. package/templates/claude/skills/skill-creator/references/agent-skills-spec.md +51 -0
  376. package/templates/claude/skills/skill-creator/scripts/encoding_utils.py +21 -0
  377. package/templates/claude/skills/skill-creator/scripts/init_skill.py +304 -0
  378. package/templates/claude/skills/skill-creator/scripts/package_skill.py +110 -0
  379. package/templates/claude/skills/skill-creator/scripts/quick_validate.py +66 -0
  380. package/templates/claude/skills/template-skill/SKILL.md +6 -0
  381. package/templates/claude/skills/vitest/SKILL.md +595 -0
  382. package/templates/claude/skills/vitest/references/async-patterns.md +82 -0
  383. package/templates/claude/skills/vitest/references/mock-patterns.md +78 -0
  384. package/templates/claude/skills/vitest/references/monorepo-setup.md +185 -0
  385. package/templates/claude/skills/vitest/references/turborepo-setup.md +332 -0
  386. package/templates/claude/skills/web-frameworks/SKILL.md +324 -0
  387. package/templates/claude/skills/web-frameworks/references/nextjs-app-router.md +465 -0
  388. package/templates/claude/skills/web-frameworks/references/nextjs-data-fetching.md +459 -0
  389. package/templates/claude/skills/web-frameworks/references/nextjs-optimization.md +511 -0
  390. package/templates/claude/skills/web-frameworks/references/nextjs-server-components.md +495 -0
  391. package/templates/claude/skills/web-frameworks/references/remix-icon-integration.md +603 -0
  392. package/templates/claude/skills/web-frameworks/references/turborepo-caching.md +551 -0
  393. package/templates/claude/skills/web-frameworks/references/turborepo-pipelines.md +517 -0
  394. package/templates/claude/skills/web-frameworks/references/turborepo-setup.md +542 -0
  395. package/templates/claude/skills/web-frameworks/scripts/nextjs_init.py +547 -0
  396. package/templates/claude/skills/web-frameworks/scripts/turborepo_migrate.py +394 -0
  397. package/templates/claude/workflows/development-rules.md +40 -0
  398. package/templates/claude/workflows/documentation-management.md +121 -0
  399. package/templates/claude/workflows/orchestration-protocol.md +16 -0
  400. package/templates/claude/workflows/primary-workflow.md +45 -0
  401. package/templates/claude/workflows/registry.json +37 -0
  402. package/templates/common/.cct.json +41 -0
  403. package/templates/common/.cctkignore +22 -0
  404. package/templates/common/.env.example +39 -0
  405. package/templates/common/.mcp.json.example +16 -0
  406. package/templates/common/metadata.json +15 -0
  407. package/templates/common/settings.json +79 -0
  408. package/templates/common/statusline.cjs +271 -0
  409. package/templates/config/.repomixignore +22 -0
  410. package/templates/config/AGENTS.md +55 -0
  411. package/templates/config/CLAUDE.md +87 -0
  412. package/templates/plans/bug-fix-template.md +69 -0
  413. package/templates/plans/feature-implementation-template.md +84 -0
  414. package/templates/plans/refactor-template.md +82 -0
  415. package/templates/plans/template-usage-guide.md +58 -0
@@ -0,0 +1,445 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Database performance analysis tool for MongoDB and PostgreSQL.
4
+ Analyzes slow queries, recommends indexes, and generates reports.
5
+ """
6
+
7
+ import argparse
8
+ import json
9
+ import sys
10
+ from dataclasses import dataclass, asdict
11
+ from datetime import datetime
12
+ from pathlib import Path
13
+ from typing import Dict, List, Optional
14
+
15
+ try:
16
+ from pymongo import MongoClient
17
+ MONGO_AVAILABLE = True
18
+ except ImportError:
19
+ MONGO_AVAILABLE = False
20
+
21
+ try:
22
+ import psycopg2
23
+ from psycopg2.extras import RealDictCursor
24
+ POSTGRES_AVAILABLE = True
25
+ except ImportError:
26
+ POSTGRES_AVAILABLE = False
27
+
28
+
29
+ @dataclass
30
+ class SlowQuery:
31
+ """Represents a slow query."""
32
+
33
+ query: str
34
+ execution_time_ms: float
35
+ count: int
36
+ collection_or_table: Optional[str] = None
37
+ index_used: Optional[str] = None
38
+
39
+
40
+ @dataclass
41
+ class IndexRecommendation:
42
+ """Index recommendation."""
43
+
44
+ collection_or_table: str
45
+ fields: List[str]
46
+ reason: str
47
+ estimated_benefit: str
48
+
49
+
50
+ @dataclass
51
+ class PerformanceReport:
52
+ """Performance analysis report."""
53
+
54
+ database_type: str
55
+ database_name: str
56
+ timestamp: datetime
57
+ slow_queries: List[SlowQuery]
58
+ index_recommendations: List[IndexRecommendation]
59
+ database_metrics: Dict[str, any]
60
+
61
+
62
+ class PerformanceAnalyzer:
63
+ """Analyzes database performance."""
64
+
65
+ def __init__(self, db_type: str, connection_string: str, threshold_ms: int = 100):
66
+ """
67
+ Initialize performance analyzer.
68
+
69
+ Args:
70
+ db_type: Database type ('mongodb' or 'postgres')
71
+ connection_string: Database connection string
72
+ threshold_ms: Slow query threshold in milliseconds
73
+ """
74
+ self.db_type = db_type.lower()
75
+ self.connection_string = connection_string
76
+ self.threshold_ms = threshold_ms
77
+
78
+ self.client = None
79
+ self.db = None
80
+ self.conn = None
81
+
82
+ def connect(self) -> bool:
83
+ """Connect to database."""
84
+ try:
85
+ if self.db_type == "mongodb":
86
+ if not MONGO_AVAILABLE:
87
+ print("Error: pymongo not installed")
88
+ return False
89
+ self.client = MongoClient(self.connection_string)
90
+ self.db = self.client.get_default_database()
91
+ self.client.server_info()
92
+ return True
93
+
94
+ elif self.db_type == "postgres":
95
+ if not POSTGRES_AVAILABLE:
96
+ print("Error: psycopg2 not installed")
97
+ return False
98
+ self.conn = psycopg2.connect(self.connection_string)
99
+ return True
100
+
101
+ else:
102
+ print(f"Error: Unsupported database type: {self.db_type}")
103
+ return False
104
+
105
+ except Exception as e:
106
+ print(f"Connection error: {e}")
107
+ return False
108
+
109
+ def disconnect(self):
110
+ """Disconnect from database."""
111
+ try:
112
+ if self.client:
113
+ self.client.close()
114
+ if self.conn:
115
+ self.conn.close()
116
+ except Exception as e:
117
+ print(f"Disconnect error: {e}")
118
+
119
+ def analyze(self) -> Optional[PerformanceReport]:
120
+ """
121
+ Analyze database performance.
122
+
123
+ Returns:
124
+ PerformanceReport if successful, None otherwise
125
+ """
126
+ try:
127
+ if self.db_type == "mongodb":
128
+ return self._analyze_mongodb()
129
+ elif self.db_type == "postgres":
130
+ return self._analyze_postgres()
131
+ else:
132
+ return None
133
+
134
+ except Exception as e:
135
+ print(f"Analysis error: {e}")
136
+ return None
137
+
138
+ def _analyze_mongodb(self) -> PerformanceReport:
139
+ """Analyze MongoDB performance."""
140
+ slow_queries = []
141
+ index_recommendations = []
142
+
143
+ # Enable profiling if not enabled
144
+ profiling_level = self.db.command("profile", -1)
145
+ if profiling_level.get("was", 0) == 0:
146
+ self.db.command("profile", 1, slowms=self.threshold_ms)
147
+
148
+ # Get slow queries from system.profile
149
+ for doc in self.db.system.profile.find(
150
+ {"millis": {"$gte": self.threshold_ms}},
151
+ limit=50
152
+ ).sort("millis", -1):
153
+
154
+ query_str = json.dumps(doc.get("command", {}), default=str)
155
+
156
+ slow_queries.append(SlowQuery(
157
+ query=query_str,
158
+ execution_time_ms=doc.get("millis", 0),
159
+ count=1,
160
+ collection_or_table=doc.get("ns", "").split(".")[-1] if "ns" in doc else None,
161
+ index_used=doc.get("planSummary")
162
+ ))
163
+
164
+ # Analyze collections for index recommendations
165
+ for coll_name in self.db.list_collection_names():
166
+ if coll_name.startswith("system."):
167
+ continue
168
+
169
+ coll = self.db[coll_name]
170
+
171
+ # Check for collections scans
172
+ stats = coll.aggregate([
173
+ {"$collStats": {"storageStats": {}}}
174
+ ]).next()
175
+
176
+ # Check if collection has indexes
177
+ indexes = list(coll.list_indexes())
178
+
179
+ if len(indexes) <= 1: # Only _id index
180
+ # Recommend indexes based on common patterns
181
+ # Sample documents to find frequently queried fields
182
+ sample = list(coll.find().limit(100))
183
+
184
+ if sample:
185
+ # Find fields that appear in most documents
186
+ field_freq = {}
187
+ for doc in sample:
188
+ for field in doc.keys():
189
+ if field != "_id":
190
+ field_freq[field] = field_freq.get(field, 0) + 1
191
+
192
+ # Recommend index on most common field
193
+ if field_freq:
194
+ top_field = max(field_freq.items(), key=lambda x: x[1])[0]
195
+ index_recommendations.append(IndexRecommendation(
196
+ collection_or_table=coll_name,
197
+ fields=[top_field],
198
+ reason="Frequently queried field without index",
199
+ estimated_benefit="High"
200
+ ))
201
+
202
+ # Get database metrics
203
+ server_status = self.client.admin.command("serverStatus")
204
+ db_stats = self.db.command("dbStats")
205
+
206
+ metrics = {
207
+ "connections": server_status.get("connections", {}).get("current", 0),
208
+ "operations_per_sec": server_status.get("opcounters", {}).get("query", 0),
209
+ "database_size_mb": db_stats.get("dataSize", 0) / (1024 * 1024),
210
+ "index_size_mb": db_stats.get("indexSize", 0) / (1024 * 1024),
211
+ "collections": db_stats.get("collections", 0)
212
+ }
213
+
214
+ return PerformanceReport(
215
+ database_type="mongodb",
216
+ database_name=self.db.name,
217
+ timestamp=datetime.now(),
218
+ slow_queries=slow_queries[:10], # Top 10
219
+ index_recommendations=index_recommendations,
220
+ database_metrics=metrics
221
+ )
222
+
223
+ def _analyze_postgres(self) -> PerformanceReport:
224
+ """Analyze PostgreSQL performance."""
225
+ slow_queries = []
226
+ index_recommendations = []
227
+
228
+ with self.conn.cursor(cursor_factory=RealDictCursor) as cur:
229
+ # Check if pg_stat_statements extension is available
230
+ cur.execute("""
231
+ SELECT EXISTS (
232
+ SELECT 1 FROM pg_extension WHERE extname = 'pg_stat_statements'
233
+ ) AS has_extension
234
+ """)
235
+ has_pg_stat_statements = cur.fetchone()["has_extension"]
236
+
237
+ if has_pg_stat_statements:
238
+ # Get slow queries from pg_stat_statements
239
+ cur.execute("""
240
+ SELECT
241
+ query,
242
+ mean_exec_time,
243
+ calls,
244
+ total_exec_time
245
+ FROM pg_stat_statements
246
+ WHERE mean_exec_time >= %s
247
+ ORDER BY mean_exec_time DESC
248
+ LIMIT 10
249
+ """, (self.threshold_ms,))
250
+
251
+ for row in cur.fetchall():
252
+ slow_queries.append(SlowQuery(
253
+ query=row["query"],
254
+ execution_time_ms=row["mean_exec_time"],
255
+ count=row["calls"]
256
+ ))
257
+
258
+ # Find tables with sequential scans (potential index candidates)
259
+ cur.execute("""
260
+ SELECT
261
+ schemaname,
262
+ tablename,
263
+ seq_scan,
264
+ seq_tup_read,
265
+ idx_scan
266
+ FROM pg_stat_user_tables
267
+ WHERE seq_scan > 1000
268
+ AND (idx_scan IS NULL OR seq_scan > idx_scan * 2)
269
+ ORDER BY seq_tup_read DESC
270
+ LIMIT 10
271
+ """)
272
+
273
+ for row in cur.fetchall():
274
+ index_recommendations.append(IndexRecommendation(
275
+ collection_or_table=f"{row['schemaname']}.{row['tablename']}",
276
+ fields=["<analyze query patterns>"],
277
+ reason=f"High sequential scans ({row['seq_scan']}) vs index scans ({row['idx_scan'] or 0})",
278
+ estimated_benefit="High" if row["seq_tup_read"] > 100000 else "Medium"
279
+ ))
280
+
281
+ # Find unused indexes
282
+ cur.execute("""
283
+ SELECT
284
+ schemaname,
285
+ tablename,
286
+ indexname,
287
+ idx_scan
288
+ FROM pg_stat_user_indexes
289
+ WHERE idx_scan = 0
290
+ AND indexname NOT LIKE '%_pkey'
291
+ ORDER BY pg_relation_size(indexrelid) DESC
292
+ """)
293
+
294
+ unused_indexes = []
295
+ for row in cur.fetchall():
296
+ unused_indexes.append(
297
+ f"{row['schemaname']}.{row['tablename']}.{row['indexname']}"
298
+ )
299
+
300
+ # Database metrics
301
+ cur.execute("""
302
+ SELECT
303
+ sum(numbackends) AS connections,
304
+ sum(xact_commit) AS commits,
305
+ sum(xact_rollback) AS rollbacks
306
+ FROM pg_stat_database
307
+ WHERE datname = current_database()
308
+ """)
309
+ stats = cur.fetchone()
310
+
311
+ cur.execute("""
312
+ SELECT pg_database_size(current_database()) AS db_size
313
+ """)
314
+ db_size = cur.fetchone()["db_size"]
315
+
316
+ cur.execute("""
317
+ SELECT
318
+ sum(heap_blks_hit) / NULLIF(sum(heap_blks_hit) + sum(heap_blks_read), 0) AS cache_hit_ratio
319
+ FROM pg_statio_user_tables
320
+ """)
321
+ cache_ratio = cur.fetchone()["cache_hit_ratio"] or 0
322
+
323
+ metrics = {
324
+ "connections": stats["connections"],
325
+ "commits": stats["commits"],
326
+ "rollbacks": stats["rollbacks"],
327
+ "database_size_mb": db_size / (1024 * 1024),
328
+ "cache_hit_ratio": float(cache_ratio),
329
+ "unused_indexes": unused_indexes
330
+ }
331
+
332
+ return PerformanceReport(
333
+ database_type="postgres",
334
+ database_name=self.conn.info.dbname,
335
+ timestamp=datetime.now(),
336
+ slow_queries=slow_queries,
337
+ index_recommendations=index_recommendations,
338
+ database_metrics=metrics
339
+ )
340
+
341
+ def print_report(self, report: PerformanceReport):
342
+ """Print performance report."""
343
+ print("=" * 80)
344
+ print(f"Database Performance Report - {report.database_type.upper()}")
345
+ print(f"Database: {report.database_name}")
346
+ print(f"Timestamp: {report.timestamp}")
347
+ print("=" * 80)
348
+
349
+ print("\n## Database Metrics")
350
+ print("-" * 80)
351
+ for key, value in report.database_metrics.items():
352
+ if isinstance(value, float):
353
+ print(f"{key}: {value:.2f}")
354
+ else:
355
+ print(f"{key}: {value}")
356
+
357
+ print("\n## Slow Queries")
358
+ print("-" * 80)
359
+ if report.slow_queries:
360
+ for i, query in enumerate(report.slow_queries, 1):
361
+ print(f"\n{i}. Execution Time: {query.execution_time_ms:.2f}ms | Count: {query.count}")
362
+ if query.collection_or_table:
363
+ print(f" Collection/Table: {query.collection_or_table}")
364
+ if query.index_used:
365
+ print(f" Index Used: {query.index_used}")
366
+ print(f" Query: {query.query[:200]}...")
367
+ else:
368
+ print("No slow queries found")
369
+
370
+ print("\n## Index Recommendations")
371
+ print("-" * 80)
372
+ if report.index_recommendations:
373
+ for i, rec in enumerate(report.index_recommendations, 1):
374
+ print(f"\n{i}. {rec.collection_or_table}")
375
+ print(f" Fields: {', '.join(rec.fields)}")
376
+ print(f" Reason: {rec.reason}")
377
+ print(f" Estimated Benefit: {rec.estimated_benefit}")
378
+
379
+ if report.database_type == "mongodb":
380
+ index_spec = {field: 1 for field in rec.fields}
381
+ print(f" Command: db.{rec.collection_or_table}.createIndex({json.dumps(index_spec)})")
382
+ elif report.database_type == "postgres":
383
+ fields_str = ", ".join(rec.fields)
384
+ print(f" Command: CREATE INDEX idx_{rec.collection_or_table.replace('.', '_')}_{rec.fields[0]} ON {rec.collection_or_table}({fields_str});")
385
+ else:
386
+ print("No index recommendations")
387
+
388
+ print("\n" + "=" * 80)
389
+
390
+ def save_report(self, report: PerformanceReport, filename: str):
391
+ """Save report to JSON file."""
392
+ # Convert dataclasses to dict
393
+ report_dict = {
394
+ "database_type": report.database_type,
395
+ "database_name": report.database_name,
396
+ "timestamp": report.timestamp.isoformat(),
397
+ "slow_queries": [asdict(q) for q in report.slow_queries],
398
+ "index_recommendations": [asdict(r) for r in report.index_recommendations],
399
+ "database_metrics": report.database_metrics
400
+ }
401
+
402
+ with open(filename, "w") as f:
403
+ json.dump(report_dict, f, indent=2, default=str)
404
+
405
+ print(f"\nReport saved to: {filename}")
406
+
407
+
408
+ def main():
409
+ """Main entry point."""
410
+ parser = argparse.ArgumentParser(description="Database performance analysis tool")
411
+ parser.add_argument("--db", required=True, choices=["mongodb", "postgres"],
412
+ help="Database type")
413
+ parser.add_argument("--uri", required=True, help="Database connection string")
414
+ parser.add_argument("--threshold", type=int, default=100,
415
+ help="Slow query threshold in milliseconds (default: 100)")
416
+ parser.add_argument("--output", help="Save report to JSON file")
417
+
418
+ args = parser.parse_args()
419
+
420
+ analyzer = PerformanceAnalyzer(args.db, args.uri, args.threshold)
421
+
422
+ if not analyzer.connect():
423
+ sys.exit(1)
424
+
425
+ try:
426
+ print(f"Analyzing {args.db} performance (threshold: {args.threshold}ms)...")
427
+ report = analyzer.analyze()
428
+
429
+ if report:
430
+ analyzer.print_report(report)
431
+
432
+ if args.output:
433
+ analyzer.save_report(report, args.output)
434
+
435
+ sys.exit(0)
436
+ else:
437
+ print("Analysis failed")
438
+ sys.exit(1)
439
+
440
+ finally:
441
+ analyzer.disconnect()
442
+
443
+
444
+ if __name__ == "__main__":
445
+ main()
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: 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
+ version: 3.0.0
5
+ languages: all
6
+ ---
7
+
8
+ # Debugging
9
+
10
+ Comprehensive debugging framework combining systematic investigation, root cause tracing, defense-in-depth validation, and verification protocols.
11
+
12
+ ## Core Principle
13
+
14
+ **NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST**
15
+
16
+ Random fixes waste time and create new bugs. Find the root cause, fix at source, validate at every layer, verify before claiming success.
17
+
18
+ ## When to Use
19
+
20
+ **Always use for:** Test failures, bugs, unexpected behavior, performance issues, build failures, integration problems, before claiming work complete
21
+
22
+ **Especially when:** Under time pressure, "quick fix" seems obvious, tried multiple fixes, don't fully understand issue, about to claim success
23
+
24
+ ## The Four Techniques
25
+
26
+ ### 1. Systematic Debugging (`references/systematic-debugging.md`)
27
+
28
+ Four-phase framework ensuring proper investigation:
29
+ - Phase 1: Root Cause Investigation (read errors, reproduce, check changes, gather evidence)
30
+ - Phase 2: Pattern Analysis (find working examples, compare, identify differences)
31
+ - Phase 3: Hypothesis and Testing (form theory, test minimally, verify)
32
+ - Phase 4: Implementation (create test, fix once, verify)
33
+
34
+ **Key rule:** Complete each phase before proceeding. No fixes without Phase 1.
35
+
36
+ **Load when:** Any bug/issue requiring investigation and fix
37
+
38
+ ### 2. Root Cause Tracing (`references/root-cause-tracing.md`)
39
+
40
+ Trace bugs backward through call stack to find original trigger.
41
+
42
+ **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.
43
+
44
+ **Includes:** `scripts/find-polluter.sh` for bisecting test pollution
45
+
46
+ **Load when:** Error deep in call stack, unclear where invalid data originated
47
+
48
+ ### 3. Defense-in-Depth (`references/defense-in-depth.md`)
49
+
50
+ Validate at every layer data passes through. Make bugs impossible.
51
+
52
+ **Four layers:** Entry validation → Business logic → Environment guards → Debug instrumentation
53
+
54
+ **Load when:** After finding root cause, need to add comprehensive validation
55
+
56
+ ### 4. Verification (`references/verification.md`)
57
+
58
+ Run verification commands and confirm output before claiming success.
59
+
60
+ **Iron law:** NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
61
+
62
+ Run the command. Read the output. Then claim the result.
63
+
64
+ **Load when:** About to claim work complete, fixed, or passing
65
+
66
+ ## Quick Reference
67
+
68
+ ```
69
+ Bug → systematic-debugging.md (Phase 1-4)
70
+ Error deep in stack? → root-cause-tracing.md (trace backward)
71
+ Found root cause? → defense-in-depth.md (add layers)
72
+ About to claim success? → verification.md (verify first)
73
+ ```
74
+
75
+ ## Red Flags
76
+
77
+ Stop and follow process if thinking:
78
+ - "Quick fix for now, investigate later"
79
+ - "Just try changing X and see if it works"
80
+ - "It's probably X, let me fix that"
81
+ - "Should work now" / "Seems fixed"
82
+ - "Tests pass, we're done"
83
+
84
+ **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.