@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,318 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * Generate skill and command catalogs for Claude Code.
6
+ * Usage:
7
+ * node generate-catalogs.cjs --skills # Skills catalog only
8
+ * node generate-catalogs.cjs --commands # Commands catalog only
9
+ * node generate-catalogs.cjs --json # Output as JSON
10
+ * node generate-catalogs.cjs # Both catalogs (YAML-like)
11
+ */
12
+
13
+ const fs = require('node:fs');
14
+ const path = require('node:path');
15
+
16
+ // ═══════════════════════════════════════════════════════════════════════════
17
+ // CONSTANTS
18
+ // ═══════════════════════════════════════════════════════════════════════════
19
+
20
+ // Resolves from cwd — script must be invoked from project root
21
+ const CLAUDE_DIR = path.resolve(process.cwd(), '.claude');
22
+ const SKILLS_DIR = path.join(CLAUDE_DIR, 'skills');
23
+ const COMMANDS_DIR = path.join(CLAUDE_DIR, 'commands');
24
+
25
+ const CATEGORY_KEYWORDS = {
26
+ 'ai-ml': ['ai-', 'gemini', 'multimodal', 'adk'],
27
+ frontend: ['frontend', 'ui', 'design', 'aesthetic', 'threejs'],
28
+ backend: ['backend', 'auth', 'payment'],
29
+ infrastructure: ['devops', 'docker', 'cloudflare', 'gcloud'],
30
+ database: ['database', 'mongodb', 'postgresql', 'sql'],
31
+ 'dev-tools': ['mcp', 'skill-creator', 'claude-code', 'repomix', 'docs-seeker'],
32
+ multimedia: ['media', 'chrome-devtools'],
33
+ frameworks: ['web-frameworks', 'mobile', 'shopify'],
34
+ utilities: ['debug', 'problem', 'code-review', 'planning', 'research', 'sequential'],
35
+ };
36
+
37
+ const CATEGORY_NAMES = {
38
+ 'ai-ml': 'AI & Machine Learning',
39
+ frontend: 'Frontend & Design',
40
+ backend: 'Backend Development',
41
+ infrastructure: 'Infrastructure & DevOps',
42
+ database: 'Database & Storage',
43
+ 'dev-tools': 'Development Tools',
44
+ multimedia: 'Multimedia & Processing',
45
+ frameworks: 'Frameworks & Platforms',
46
+ utilities: 'Utilities & Helpers',
47
+ other: 'Other',
48
+ };
49
+
50
+ const COMMAND_CATEGORY_NAMES = {
51
+ core: 'Core Commands',
52
+ bootstrap: 'Bootstrap Commands',
53
+ content: 'Content Creation',
54
+ design: 'Design Commands',
55
+ docs: 'Documentation',
56
+ fix: 'Fix & Debug',
57
+ git: 'Git Commands',
58
+ integrate: 'Integrations',
59
+ plan: 'Planning',
60
+ review: 'Code Review',
61
+ scout: 'Scout Commands',
62
+ skill: 'Skill Management',
63
+ };
64
+
65
+ // ═══════════════════════════════════════════════════════════════════════════
66
+ // UTILITIES
67
+ // ═══════════════════════════════════════════════════════════════════════════
68
+
69
+ /**
70
+ * Extract YAML frontmatter from markdown content.
71
+ * Parses simple key: value pairs (no nested YAML).
72
+ */
73
+ function extractFrontmatter(content) {
74
+ const match = content.match(/^---\s*\n([\s\S]*?)\n---/);
75
+ if (!match) return {};
76
+
77
+ const result = {};
78
+ for (const line of match[1].split('\n')) {
79
+ const colonIdx = line.indexOf(':');
80
+ if (colonIdx === -1) continue;
81
+ const key = line.slice(0, colonIdx).trim();
82
+ let value = line.slice(colonIdx + 1).trim();
83
+ // Strip surrounding quotes (single or double)
84
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
85
+ value = value.slice(1, -1);
86
+ }
87
+ if (key) result[key] = value;
88
+ }
89
+ return result;
90
+ }
91
+
92
+ /**
93
+ * Recursively find files matching a pattern.
94
+ */
95
+ function findFiles(dir, filename) {
96
+ if (!fs.existsSync(dir)) return [];
97
+
98
+ const results = [];
99
+ const entries = fs.readdirSync(dir, { withFileTypes: true, recursive: true });
100
+
101
+ for (const entry of entries) {
102
+ if (!entry.isFile()) continue;
103
+
104
+ const matchesPattern =
105
+ typeof filename === 'string' ? entry.name === filename : filename.test(entry.name);
106
+
107
+ if (matchesPattern) {
108
+ // parentPath added in Node 20.12, entry.path is the legacy fallback
109
+ const fullPath = path.join(entry.parentPath || entry.path, entry.name);
110
+ results.push(fullPath);
111
+ }
112
+ }
113
+ return results.sort();
114
+ }
115
+
116
+ /**
117
+ * Group array of objects by a key.
118
+ */
119
+ function groupBy(items, key) {
120
+ const groups = {};
121
+ for (const item of items) {
122
+ const group = item[key] || 'other';
123
+ if (!groups[group]) groups[group] = [];
124
+ groups[group].push(item);
125
+ }
126
+ return groups;
127
+ }
128
+
129
+ // ═══════════════════════════════════════════════════════════════════════════
130
+ // SKILL SCANNING
131
+ // ═══════════════════════════════════════════════════════════════════════════
132
+
133
+ function categorizeSkill(name) {
134
+ const lower = name.toLowerCase();
135
+ for (const [category, keywords] of Object.entries(CATEGORY_KEYWORDS)) {
136
+ if (keywords.some((kw) => lower.includes(kw))) return category;
137
+ }
138
+ return 'other';
139
+ }
140
+
141
+ function scanSkills() {
142
+ const files = findFiles(SKILLS_DIR, 'SKILL.md');
143
+ const skills = [];
144
+
145
+ for (const filePath of files) {
146
+ try {
147
+ const skillDir = path.dirname(filePath);
148
+ let skillName = path.basename(skillDir);
149
+
150
+ // Skip template
151
+ if (skillName === 'template-skill') continue;
152
+
153
+ // Handle nested skills (parent/child)
154
+ const parentDir = path.basename(path.dirname(skillDir));
155
+ if (parentDir !== 'skills') {
156
+ skillName = `${parentDir}/${skillName}`;
157
+ }
158
+
159
+ const content = fs.readFileSync(filePath, 'utf8');
160
+ const frontmatter = extractFrontmatter(content);
161
+ const description = frontmatter.description || '';
162
+ const category = categorizeSkill(skillName);
163
+ const hasScripts = fs.existsSync(path.join(skillDir, 'scripts'));
164
+ const hasReferences = fs.existsSync(path.join(skillDir, 'references'));
165
+ const relPath = path.relative(SKILLS_DIR, filePath);
166
+
167
+ skills.push({ name: skillName, path: relPath, description, category, hasScripts, hasReferences });
168
+ } catch (err) {
169
+ process.stderr.write(`Warning: Failed to read ${filePath}: ${err.message}\n`);
170
+ }
171
+ }
172
+
173
+ return skills;
174
+ }
175
+
176
+ // ═══════════════════════════════════════════════════════════════════════════
177
+ // COMMAND SCANNING
178
+ // ═══════════════════════════════════════════════════════════════════════════
179
+
180
+ function scanCommands() {
181
+ const files = findFiles(COMMANDS_DIR, /\.md$/);
182
+ const commands = [];
183
+
184
+ for (const filePath of files) {
185
+ try {
186
+ const relPath = path.relative(COMMANDS_DIR, filePath);
187
+ const parsed = path.parse(relPath);
188
+ const parts = [...parsed.dir.split(path.sep).filter(Boolean), parsed.name];
189
+ const commandName = '/ck:' + parts.join(':');
190
+
191
+ const content = fs.readFileSync(filePath, 'utf8');
192
+ const frontmatter = extractFrontmatter(content);
193
+ const rawDesc = frontmatter.description || '';
194
+ const powerLevel = (rawDesc.match(/⚡/g) || []).length;
195
+ const description = rawDesc.replace(/⚡/g, '').trim();
196
+ const argumentHint = frontmatter['argument-hint'] || '';
197
+ const category = parts.length > 1 ? parts[0] : 'core';
198
+
199
+ commands.push({ name: commandName, path: relPath, description, argumentHint, powerLevel, category });
200
+ } catch (err) {
201
+ process.stderr.write(`Warning: Failed to read ${filePath}: ${err.message}\n`);
202
+ }
203
+ }
204
+
205
+ return commands;
206
+ }
207
+
208
+ // ═══════════════════════════════════════════════════════════════════════════
209
+ // OUTPUT FORMATTING
210
+ // ═══════════════════════════════════════════════════════════════════════════
211
+
212
+ function formatSkillsCatalog(skills) {
213
+ const today = new Date().toISOString().slice(0, 10);
214
+ const categories = groupBy(skills, 'category');
215
+
216
+ const lines = [
217
+ 'metadata:',
218
+ ' title: Skills Catalog',
219
+ ' description: Auto-generated catalog of all available skills',
220
+ ` last_updated: ${today}`,
221
+ ` total_skills: ${skills.length}`,
222
+ '',
223
+ 'categories:',
224
+ ];
225
+
226
+ for (const [key, label] of Object.entries(CATEGORY_NAMES)) {
227
+ lines.push(` ${key}: "${label}"`);
228
+ }
229
+
230
+ lines.push('', 'skills:');
231
+
232
+ for (const [cat, catSkills] of Object.entries(categories).sort()) {
233
+ const catName = CATEGORY_NAMES[cat] || cat;
234
+ lines.push(` # ${catName}`);
235
+ lines.push(` ${cat}:`);
236
+
237
+ for (const skill of catSkills.sort((a, b) => a.name.localeCompare(b.name))) {
238
+ const scripts = skill.hasScripts ? ' [scripts]' : '';
239
+ const refs = skill.hasReferences ? ' [refs]' : '';
240
+ lines.push(` - name: ${skill.name}`);
241
+ lines.push(` description: "${skill.description}"`);
242
+ lines.push(` path: ${skill.path}`);
243
+ if (scripts || refs) lines.push(` features:${scripts}${refs}`);
244
+ }
245
+ }
246
+
247
+ return lines.join('\n');
248
+ }
249
+
250
+ function formatCommandsCatalog(commands) {
251
+ const today = new Date().toISOString().slice(0, 10);
252
+ const categories = groupBy(commands, 'category');
253
+
254
+ const lines = [
255
+ 'metadata:',
256
+ ' title: Commands Catalog',
257
+ ' description: Auto-generated catalog of all available commands',
258
+ ` last_updated: ${today}`,
259
+ ` total_commands: ${commands.length}`,
260
+ '',
261
+ 'categories:',
262
+ ];
263
+
264
+ for (const [key, label] of Object.entries(COMMAND_CATEGORY_NAMES)) {
265
+ lines.push(` ${key}: "${label}"`);
266
+ }
267
+
268
+ lines.push('', 'commands:');
269
+
270
+ for (const [cat, catCmds] of Object.entries(categories).sort()) {
271
+ const catName = COMMAND_CATEGORY_NAMES[cat] || cat;
272
+ lines.push(` # ${catName}`);
273
+ lines.push(` ${cat}:`);
274
+
275
+ for (const cmd of catCmds.sort((a, b) => a.name.localeCompare(b.name))) {
276
+ const power = cmd.powerLevel > 0 ? ' ' + '⚡'.repeat(cmd.powerLevel) : '';
277
+ lines.push(` - name: ${cmd.name}${power}`);
278
+ lines.push(` description: "${cmd.description}"`);
279
+ if (cmd.argumentHint) lines.push(` argument_hint: "${cmd.argumentHint}"`);
280
+ }
281
+ }
282
+
283
+ return lines.join('\n');
284
+ }
285
+
286
+ // ═══════════════════════════════════════════════════════════════════════════
287
+ // MAIN
288
+ // ═══════════════════════════════════════════════════════════════════════════
289
+
290
+ function main() {
291
+ const args = process.argv.slice(2);
292
+ const showSkills = args.includes('--skills');
293
+ const showCommands = args.includes('--commands');
294
+ const jsonOutput = args.includes('--json');
295
+ const showBoth = !showSkills && !showCommands;
296
+
297
+ if (jsonOutput) {
298
+ const result = {};
299
+ if (showCommands || showBoth) result.commands = scanCommands();
300
+ if (showSkills || showBoth) result.skills = scanSkills();
301
+ console.log(JSON.stringify(result, null, 2));
302
+ return;
303
+ }
304
+
305
+ if (showCommands || showBoth) {
306
+ if (showBoth) console.log('# === COMMANDS CATALOG ===');
307
+ const commands = scanCommands();
308
+ console.log(formatCommandsCatalog(commands));
309
+ }
310
+
311
+ if (showSkills || showBoth) {
312
+ if (showBoth) console.log('\n# === SKILLS CATALOG ===');
313
+ const skills = scanSkills();
314
+ console.log(formatSkillsCatalog(skills));
315
+ }
316
+ }
317
+
318
+ main();
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "scripts",
3
+ "version": "1.0.0",
4
+ "items": [
5
+ {
6
+ "name": "catalog-generators",
7
+ "title": "Catalog Generators",
8
+ "description": "Generate skill and command catalogs for Claude Code",
9
+ "files": ["scripts/generate-catalogs.cjs"],
10
+ "dependencies": {},
11
+ "meta": {
12
+ "runtime": "node"
13
+ }
14
+ },
15
+ {
16
+ "name": "worktree",
17
+ "title": "Git Worktree Manager",
18
+ "description": "Git worktree management utilities",
19
+ "files": ["scripts/worktree.cjs"],
20
+ "dependencies": {},
21
+ "meta": {
22
+ "runtime": "node"
23
+ }
24
+ },
25
+ {
26
+ "name": "plan-manager",
27
+ "title": "Plan Manager",
28
+ "description": "Set and manage active development plans",
29
+ "files": ["scripts/set-active-plan.cjs"],
30
+ "dependencies": {
31
+ "hooks": ["core-libs"]
32
+ },
33
+ "meta": {
34
+ "runtime": "node"
35
+ }
36
+ },
37
+ {
38
+ "name": "validate-docs",
39
+ "title": "Documentation Validator",
40
+ "description": "Validate documentation files",
41
+ "files": ["scripts/validate-docs.cjs"],
42
+ "dependencies": {},
43
+ "meta": {
44
+ "runtime": "node"
45
+ }
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Update session state with new active plan
4
+ *
5
+ * Usage: node .claude/scripts/set-active-plan.cjs <plan-path>
6
+ *
7
+ * This script updates the session temp file with the new active plan path,
8
+ * allowing subagents to receive the latest plan context via SubagentStart hook.
9
+ *
10
+ * The session temp file (/tmp/cctk-session-{id}.json) is the source of truth
11
+ * for plan context within a session. Env vars ($CCTK_ACTIVE_PLAN) are just
12
+ * the initial snapshot from session start.
13
+ */
14
+
15
+ const { writeSessionState, readSessionState } = require('../hooks/lib/cctk-config-utils.cjs');
16
+
17
+ const sessionId = process.env.CCTK_SESSION_ID;
18
+ const newPlan = process.argv[2];
19
+
20
+ if (!newPlan) {
21
+ console.error('Error: Plan path required');
22
+ console.log('Usage: node .claude/scripts/set-active-plan.cjs <plan-path>');
23
+ console.log('Example: node .claude/scripts/set-active-plan.cjs plans/251207-1030-feature-name');
24
+ process.exit(1);
25
+ }
26
+
27
+ if (!sessionId) {
28
+ console.warn('Warning: CCTK_SESSION_ID not set - session state will not persist');
29
+ console.log(`Would set active plan to: ${newPlan}`);
30
+ process.exit(0);
31
+ }
32
+
33
+ const current = readSessionState(sessionId) || {};
34
+ const success = writeSessionState(sessionId, {
35
+ ...current,
36
+ activePlan: newPlan,
37
+ timestamp: Date.now(),
38
+ });
39
+
40
+ if (success) {
41
+ console.log(`Active plan set to: ${newPlan}`);
42
+ } else {
43
+ console.error('Failed to update session state');
44
+ process.exit(1);
45
+ }