@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,106 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * Claude Code Toolkit Paths - Centralized path constants for all temporary/runtime files
6
+ *
7
+ * All Claude Code Toolkit temp files consolidated under /tmp/cctk/ namespace for:
8
+ * - Cleaner /tmp directory (single namespace)
9
+ * - Easier cleanup (rm -rf /tmp/cctk/)
10
+ * - Debugging (all state in one place)
11
+ * - No collisions with other tools
12
+ *
13
+ * @module cctk-paths
14
+ */
15
+
16
+ const path = require('node:path');
17
+ const os = require('node:os');
18
+ const fs = require('node:fs');
19
+
20
+ // Root directory for all Claude Code Toolkit temp files
21
+ const CCTK_TMP_DIR = path.join(os.tmpdir(), 'cctk');
22
+
23
+ // Session-specific marker files (per-session, no race conditions)
24
+ const MARKERS_DIR = path.join(CCTK_TMP_DIR, 'markers');
25
+
26
+ // Global calibration data (shared by design - records compact thresholds)
27
+ const CALIBRATION_PATH = path.join(CCTK_TMP_DIR, 'calibration.json');
28
+
29
+ // Debug logs directory
30
+ const DEBUG_DIR = path.join(CCTK_TMP_DIR, 'debug');
31
+
32
+ /**
33
+ * Ensure directory exists
34
+ * @param {string} dirPath - Directory path to create
35
+ */
36
+ function ensureDir(dirPath) {
37
+ try {
38
+ if (!fs.existsSync(dirPath)) {
39
+ fs.mkdirSync(dirPath, { recursive: true });
40
+ }
41
+ } catch (error) {
42
+ // Silent fail - non-critical, but log for debugging
43
+ if (process.env.CCTK_DEBUG) {
44
+ console.error(`[CK] Failed to create ${dirPath}: ${error.message}`);
45
+ }
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Get marker file path for a session
51
+ * @param {string} sessionId - Session ID
52
+ * @returns {string} Full path to marker file
53
+ */
54
+ function getMarkerPath(sessionId) {
55
+ return path.join(MARKERS_DIR, `${sessionId}.json`);
56
+ }
57
+
58
+ /**
59
+ * Get debug log path for a session
60
+ * @param {string} sessionId - Session ID
61
+ * @returns {string} Full path to debug log
62
+ */
63
+ function getDebugLogPath(sessionId) {
64
+ return path.join(DEBUG_DIR, `${sessionId}.log`);
65
+ }
66
+
67
+ /**
68
+ * Initialize Claude Code Toolkit temp directories
69
+ * Call this at startup to ensure directories exist
70
+ */
71
+ function initDirs() {
72
+ ensureDir(CCTK_TMP_DIR);
73
+ ensureDir(MARKERS_DIR);
74
+ ensureDir(DEBUG_DIR);
75
+ }
76
+
77
+ /**
78
+ * Clean up all Claude Code Toolkit temp files
79
+ * Useful for testing or manual cleanup
80
+ */
81
+ function cleanAll() {
82
+ try {
83
+ if (fs.existsSync(CCTK_TMP_DIR)) {
84
+ fs.rmSync(CCTK_TMP_DIR, { recursive: true, force: true });
85
+ }
86
+ } catch {
87
+ // Silent fail
88
+ }
89
+ }
90
+
91
+ module.exports = {
92
+ // Directories
93
+ CCTK_TMP_DIR,
94
+ MARKERS_DIR,
95
+ DEBUG_DIR,
96
+
97
+ // Files
98
+ CALIBRATION_PATH,
99
+
100
+ // Helpers
101
+ ensureDir,
102
+ getMarkerPath,
103
+ getDebugLogPath,
104
+ initDirs,
105
+ cleanAll,
106
+ };
@@ -0,0 +1,346 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * Context Window Tracker - Self-healing context reset detection
6
+ *
7
+ * Marker schema:
8
+ * {
9
+ * sessionId: string,
10
+ * trigger: string, // 'session_start_clear', 'manual', 'auto', 'new_session', 'token_drop'
11
+ * baselineRecorded: boolean,
12
+ * baseline: number, // Token count at baseline
13
+ * lastTokenTotal: number, // For token drop detection (replaces global state)
14
+ * timestamp: number
15
+ * }
16
+ *
17
+ * @module context-tracker
18
+ */
19
+
20
+ const fs = require('node:fs');
21
+ const { MARKERS_DIR, CALIBRATION_PATH, ensureDir, getMarkerPath } = require('./cctk-paths.cjs');
22
+
23
+ // Token drop threshold for Layer 2 detection (50%)
24
+ // Rationale: /compact typically reduces tokens by 60-80%, so 50% catches
25
+ // context resets while avoiding false positives from normal token accumulation.
26
+ // Exclusive: drops below (<) 50% trigger reset
27
+ const TOKEN_DROP_THRESHOLD = 0.5;
28
+
29
+ /**
30
+ * Get smart default compact threshold based on context window size
31
+ * Estimated defaults:
32
+ * - 200k window: ~77.5% (155k)
33
+ * - 1M window: ~33% (330k)
34
+ *
35
+ * @param {number} contextWindowSize - Model's context window size
36
+ * @returns {number} Estimated compact threshold in tokens
37
+ */
38
+ function getDefaultCompactThreshold(contextWindowSize) {
39
+ const KNOWN_THRESHOLDS = {
40
+ 200_000: 155_000,
41
+ 1_000_000: 330_000,
42
+ };
43
+
44
+ if (KNOWN_THRESHOLDS[contextWindowSize]) {
45
+ return KNOWN_THRESHOLDS[contextWindowSize];
46
+ }
47
+
48
+ // Tiered defaults based on window size
49
+ if (contextWindowSize >= 1_000_000) {
50
+ return Math.floor(contextWindowSize * 0.33);
51
+ }
52
+
53
+
54
+ return Math.floor(contextWindowSize * 0.775);
55
+ }
56
+
57
+ /**
58
+ * Read calibration data from file (recorded by PreCompact hook)
59
+ * @returns {Object} Calibration data keyed by context window size
60
+ */
61
+ function readCalibration() {
62
+ try {
63
+ if (fs.existsSync(CALIBRATION_PATH)) {
64
+ return JSON.parse(fs.readFileSync(CALIBRATION_PATH, 'utf8'));
65
+ }
66
+ } catch {
67
+ // Silent fail - use defaults
68
+ }
69
+
70
+
71
+ return {};
72
+ }
73
+
74
+ /**
75
+ * Get compact threshold, preferring calibrated value over default
76
+ * @param {number} contextWindowSize - Model's context window size
77
+ * @returns {number} Compact threshold in tokens
78
+ */
79
+ function getCompactThreshold(contextWindowSize) {
80
+ const calibration = readCalibration();
81
+ const key = String(contextWindowSize);
82
+
83
+ if (calibration[key] && calibration[key].threshold > 0) {
84
+ return calibration[key].threshold;
85
+ }
86
+
87
+
88
+ return getDefaultCompactThreshold(contextWindowSize);
89
+ }
90
+
91
+ /**
92
+ * Read marker file for a session
93
+ * Defensive: handles missing/empty/corrupt files gracefully
94
+ * @param {string} sessionId - Session ID
95
+ * @returns {Object|null} Marker data or null
96
+ */
97
+ function readMarker(sessionId) {
98
+ try {
99
+ const markerPath = getMarkerPath(sessionId);
100
+
101
+
102
+ if (!fs.existsSync(markerPath)) return null;
103
+ const data = fs.readFileSync(markerPath, 'utf8');
104
+
105
+
106
+ if (!data.trim()) return null; // Catch empty/corrupt files
107
+ const marker = JSON.parse(data);
108
+
109
+ if (!marker || typeof marker.sessionId !== 'string') {
110
+ return null;
111
+ }
112
+
113
+
114
+ return marker;
115
+ } catch {
116
+ // Silent fail - corrupt JSON or read error
117
+ }
118
+
119
+
120
+ return null;
121
+ }
122
+
123
+ /**
124
+ * Write marker file for a session
125
+ * @param {string} sessionId - Session ID
126
+ * @param {Object} marker - Marker data
127
+ */
128
+ function writeMarker(sessionId, marker) {
129
+ try {
130
+ ensureDir(MARKERS_DIR);
131
+ const markerPath = getMarkerPath(sessionId);
132
+
133
+
134
+ fs.writeFileSync(markerPath, JSON.stringify(marker));
135
+ } catch {
136
+ // Silent fail
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Delete marker file for a session
142
+ * @param {string} sessionId - Session ID
143
+ */
144
+ function deleteMarker(sessionId) {
145
+ try {
146
+ const markerPath = getMarkerPath(sessionId);
147
+
148
+
149
+ if (fs.existsSync(markerPath)) {
150
+ fs.unlinkSync(markerPath);
151
+ }
152
+ } catch {
153
+ // Silent fail
154
+ }
155
+ }
156
+
157
+ /**
158
+ * Layer 2: Detect significant token drop (50%+ reduction)
159
+ * Uses session-specific lastTokenTotal from marker (no global state)
160
+ * @param {number} currentTotal - Current cumulative token total
161
+ * @param {Object|null} marker - Session marker with lastTokenTotal
162
+ * @returns {boolean} True if token drop detected
163
+ */
164
+ function detectTokenDrop(currentTotal, marker) {
165
+ if (!marker || !marker.lastTokenTotal || marker.lastTokenTotal <= 0 || currentTotal <= 0) {
166
+ return false;
167
+ }
168
+
169
+ // Token total dropped by more than 50%
170
+ const dropRatio = currentTotal / marker.lastTokenTotal;
171
+
172
+
173
+
174
+ return dropRatio < TOKEN_DROP_THRESHOLD;
175
+ }
176
+
177
+ /**
178
+ * Layer 1: Check for explicit reset marker from hooks
179
+ * @param {Object|null} marker - Session marker
180
+ * @returns {{ shouldReset: boolean, trigger: string|null }}
181
+ */
182
+ function checkResetMarker(marker) {
183
+ if (!marker) {
184
+ return { shouldReset: false, trigger: null };
185
+ }
186
+
187
+ // Check if marker indicates a reset (clear/compact)
188
+ const resetTriggers = ['clear', 'session_start_clear'];
189
+
190
+
191
+ if (resetTriggers.includes(marker.trigger)) {
192
+ return { shouldReset: true, trigger: marker.trigger };
193
+ }
194
+
195
+ return { shouldReset: false, trigger: marker.trigger };
196
+ }
197
+
198
+ /**
199
+ * Main context tracking function with 2-layer self-healing detection
200
+ *
201
+ * Layer 1: Hook markers (explicit reset from PreCompact/SessionStart)
202
+ * Layer 2: Token drop detection (50% threshold fallback)
203
+ *
204
+ * NO global state - all state is session-specific in marker files
205
+ *
206
+ * @param {Object} params - Tracking parameters
207
+ * @param {string} params.sessionId - Current session ID
208
+ * @param {number} params.contextInput - Input tokens
209
+ * @param {number} params.contextOutput - Output tokens
210
+ * @param {number} params.contextWindowSize - Model's context window size
211
+ * @returns {Object} { percentage, baseline, showCompactIndicator, resetLayer }
212
+ */
213
+ function trackContext({ sessionId, contextInput, contextOutput, contextWindowSize }) {
214
+ const currentTotal = contextInput + contextOutput;
215
+ const compactThreshold = getCompactThreshold(contextWindowSize);
216
+ const effectiveSessionId = sessionId || 'default';
217
+
218
+ // Read session-specific marker (no global state!)
219
+ let marker = readMarker(effectiveSessionId);
220
+
221
+ // Track which layer triggered reset (for debugging)
222
+ let resetLayer = null;
223
+ let baseline = 0;
224
+ let showCompactIndicator = false;
225
+
226
+ // --- Layer 1: Hook marker system ---
227
+ // Markers from PreCompact/SessionStart hooks are explicit signals
228
+ const { shouldReset, trigger } = checkResetMarker(marker);
229
+
230
+
231
+ if (shouldReset) {
232
+ resetLayer = `marker_${trigger}`;
233
+ baseline = currentTotal;
234
+ // Clear the reset trigger after processing
235
+ marker = null; // Force fresh marker creation below
236
+ }
237
+
238
+ // --- Layer 2: Token drop detection (fallback for hook failures) ---
239
+ if (!resetLayer && detectTokenDrop(currentTotal, marker)) {
240
+ resetLayer = 'token_drop';
241
+ baseline = currentTotal;
242
+ marker = null; // Force fresh marker creation below
243
+ }
244
+
245
+ // --- No reset triggered - use existing marker/baseline ---
246
+ if (!resetLayer && marker) {
247
+ if (marker.baselineRecorded) {
248
+ // Use stored baseline
249
+ baseline = marker.baseline || 0;
250
+ } else {
251
+ // Marker exists but baseline not recorded yet (from PreCompact)
252
+ marker.baselineRecorded = true;
253
+ marker.baseline = currentTotal;
254
+ marker.lastTokenTotal = currentTotal;
255
+ writeMarker(effectiveSessionId, marker);
256
+ baseline = currentTotal;
257
+ // PreCompact triggers: "manual" (from /compact) or "auto" (from auto-compact)
258
+ showCompactIndicator = ['compact', 'manual', 'auto'].includes(marker.trigger);
259
+ }
260
+ }
261
+
262
+ // --- Create fresh marker if needed ---
263
+ if (!marker || resetLayer) {
264
+ const newMarker = {
265
+ sessionId: effectiveSessionId,
266
+ trigger: resetLayer || 'new_session',
267
+ baselineRecorded: true,
268
+ baseline: currentTotal,
269
+ lastTokenTotal: currentTotal,
270
+ timestamp: Date.now(),
271
+ };
272
+
273
+
274
+ writeMarker(effectiveSessionId, newMarker);
275
+ if (!resetLayer) {
276
+ baseline = currentTotal;
277
+ }
278
+ } else {
279
+ // Update lastTokenTotal for next token drop detection
280
+ marker.lastTokenTotal = currentTotal;
281
+ writeMarker(effectiveSessionId, marker);
282
+ }
283
+
284
+ // Calculate effective tokens (since baseline)
285
+ let effectiveTotal = baseline > 0 ? currentTotal - baseline : currentTotal;
286
+
287
+
288
+ if (effectiveTotal < 0) effectiveTotal = 0;
289
+
290
+ // Calculate percentage against compact threshold (not model limit)
291
+ const percentage = Math.min(100, Math.floor((effectiveTotal * 100) / compactThreshold));
292
+
293
+ return {
294
+ percentage,
295
+ baseline,
296
+ effectiveTotal,
297
+ compactThreshold,
298
+ showCompactIndicator,
299
+ resetLayer,
300
+ };
301
+ }
302
+
303
+ /**
304
+ * Write reset marker for session (called by SessionStart hook on /clear)
305
+ * @param {string} sessionId - Session ID
306
+ * @param {string} trigger - Reset trigger ('clear', 'compact', etc.)
307
+ */
308
+ function writeResetMarker(sessionId, trigger = 'clear') {
309
+ const effectiveSessionId = sessionId || 'default';
310
+
311
+
312
+ ensureDir(MARKERS_DIR);
313
+ writeMarker(effectiveSessionId, {
314
+ sessionId: effectiveSessionId,
315
+ trigger: `session_start_${trigger}`,
316
+ baselineRecorded: false,
317
+ baseline: 0,
318
+ lastTokenTotal: 0,
319
+ timestamp: Date.now(),
320
+ });
321
+ }
322
+
323
+ /**
324
+ * Clear all markers (for testing/cleanup)
325
+ */
326
+ function clearAllState() {
327
+ const { cleanAll } = require('./cctk-paths.cjs');
328
+
329
+
330
+ cleanAll();
331
+ }
332
+
333
+ module.exports = {
334
+ trackContext,
335
+ writeResetMarker,
336
+ clearAllState,
337
+ getCompactThreshold,
338
+ // Export for testing
339
+ detectTokenDrop,
340
+ checkResetMarker,
341
+ readMarker,
342
+ writeMarker,
343
+ deleteMarker,
344
+ TOKEN_DROP_THRESHOLD,
345
+ MARKERS_DIR,
346
+ };