claude-code-templates 1.21.1 → 1.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (743) hide show
  1. package/README.md +79 -77
  2. package/package.json +86 -19
  3. package/.claude/agents/agent-expert.md +0 -477
  4. package/.claude/agents/cli-ui-designer.md +0 -405
  5. package/.claude/agents/command-expert.md +0 -421
  6. package/.claude/agents/docusaurus-expert.md +0 -51
  7. package/.claude/agents/mcp-expert.md +0 -258
  8. package/.claude/commands/lint.md +0 -111
  9. package/.claude/commands/test.md +0 -73
  10. package/.claude/settings.local.json +0 -34
  11. package/.github/WORKFLOWS_REFERENCE.md +0 -88
  12. package/.github/workflows/deploy-docusaurus.yml +0 -31
  13. package/.github/workflows/deploy.yml +0 -33
  14. package/.github/workflows/publish-package.yml +0 -125
  15. package/.mcp.json +0 -4
  16. package/CLAUDE.md +0 -482
  17. package/CODE_OF_CONDUCT.md +0 -82
  18. package/CONTRIBUTING.md +0 -505
  19. package/DEPLOYMENT.md +0 -60
  20. package/LICENSE +0 -21
  21. package/ROADMAP.md +0 -278
  22. package/SECURITY.md +0 -65
  23. package/api/index.html +0 -1
  24. package/api/package.json +0 -7
  25. package/api/track-download-supabase.js +0 -150
  26. package/cli-tool/Makefile +0 -102
  27. package/cli-tool/README.md +0 -126
  28. package/cli-tool/TESTING.md +0 -262
  29. package/cli-tool/components/agents/ai-specialists/ai-ethics-advisor.md +0 -195
  30. package/cli-tool/components/agents/ai-specialists/hackathon-ai-strategist.md +0 -46
  31. package/cli-tool/components/agents/ai-specialists/llms-maintainer.md +0 -94
  32. package/cli-tool/components/agents/ai-specialists/model-evaluator.md +0 -150
  33. package/cli-tool/components/agents/ai-specialists/prompt-engineer.md +0 -112
  34. package/cli-tool/components/agents/ai-specialists/search-specialist.md +0 -59
  35. package/cli-tool/components/agents/ai-specialists/task-decomposition-expert.md +0 -97
  36. package/cli-tool/components/agents/api-graphql/graphql-architect.md +0 -208
  37. package/cli-tool/components/agents/api-graphql/graphql-performance-optimizer.md +0 -357
  38. package/cli-tool/components/agents/api-graphql/graphql-security-specialist.md +0 -519
  39. package/cli-tool/components/agents/blockchain-web3/smart-contract-auditor.md +0 -32
  40. package/cli-tool/components/agents/blockchain-web3/smart-contract-specialist.md +0 -32
  41. package/cli-tool/components/agents/blockchain-web3/web3-integration-specialist.md +0 -32
  42. package/cli-tool/components/agents/business-marketing/business-analyst.md +0 -194
  43. package/cli-tool/components/agents/business-marketing/content-marketer.md +0 -36
  44. package/cli-tool/components/agents/business-marketing/customer-support.md +0 -36
  45. package/cli-tool/components/agents/business-marketing/legal-advisor.md +0 -50
  46. package/cli-tool/components/agents/business-marketing/marketing-attribution-analyst.md +0 -352
  47. package/cli-tool/components/agents/business-marketing/payment-integration.md +0 -33
  48. package/cli-tool/components/agents/business-marketing/product-strategist.md +0 -212
  49. package/cli-tool/components/agents/business-marketing/risk-manager.md +0 -42
  50. package/cli-tool/components/agents/business-marketing/sales-automator.md +0 -36
  51. package/cli-tool/components/agents/data-ai/ai-engineer.md +0 -33
  52. package/cli-tool/components/agents/data-ai/computer-vision-engineer.md +0 -562
  53. package/cli-tool/components/agents/data-ai/data-engineer.md +0 -33
  54. package/cli-tool/components/agents/data-ai/data-scientist.md +0 -337
  55. package/cli-tool/components/agents/data-ai/ml-engineer.md +0 -33
  56. package/cli-tool/components/agents/data-ai/mlops-engineer.md +0 -58
  57. package/cli-tool/components/agents/data-ai/nlp-engineer.md +0 -680
  58. package/cli-tool/components/agents/data-ai/quant-analyst.md +0 -33
  59. package/cli-tool/components/agents/database/database-admin.md +0 -33
  60. package/cli-tool/components/agents/database/database-architect.md +0 -590
  61. package/cli-tool/components/agents/database/database-optimization.md +0 -33
  62. package/cli-tool/components/agents/database/database-optimizer.md +0 -33
  63. package/cli-tool/components/agents/database/nosql-specialist.md +0 -708
  64. package/cli-tool/components/agents/database/supabase-schema-architect.md +0 -138
  65. package/cli-tool/components/agents/deep-research-team/academic-researcher.md +0 -33
  66. package/cli-tool/components/agents/deep-research-team/agent-overview.md +0 -235
  67. package/cli-tool/components/agents/deep-research-team/competitive-intelligence-analyst.md +0 -530
  68. package/cli-tool/components/agents/deep-research-team/data-analyst.md +0 -112
  69. package/cli-tool/components/agents/deep-research-team/fact-checker.md +0 -553
  70. package/cli-tool/components/agents/deep-research-team/query-clarifier.md +0 -73
  71. package/cli-tool/components/agents/deep-research-team/report-generator.md +0 -108
  72. package/cli-tool/components/agents/deep-research-team/research-brief-generator.md +0 -108
  73. package/cli-tool/components/agents/deep-research-team/research-coordinator.md +0 -94
  74. package/cli-tool/components/agents/deep-research-team/research-orchestrator.md +0 -119
  75. package/cli-tool/components/agents/deep-research-team/research-synthesizer.md +0 -109
  76. package/cli-tool/components/agents/deep-research-team/technical-researcher.md +0 -95
  77. package/cli-tool/components/agents/development-team/backend-architect.md +0 -31
  78. package/cli-tool/components/agents/development-team/cli-ui-designer.md +0 -405
  79. package/cli-tool/components/agents/development-team/devops-engineer.md +0 -886
  80. package/cli-tool/components/agents/development-team/frontend-developer.md +0 -32
  81. package/cli-tool/components/agents/development-team/fullstack-developer.md +0 -1205
  82. package/cli-tool/components/agents/development-team/ios-developer.md +0 -36
  83. package/cli-tool/components/agents/development-team/mobile-developer.md +0 -33
  84. package/cli-tool/components/agents/development-team/ui-ux-designer.md +0 -36
  85. package/cli-tool/components/agents/development-tools/code-reviewer.md +0 -30
  86. package/cli-tool/components/agents/development-tools/command-expert.md +0 -422
  87. package/cli-tool/components/agents/development-tools/context-manager.md +0 -65
  88. package/cli-tool/components/agents/development-tools/debugger.md +0 -31
  89. package/cli-tool/components/agents/development-tools/dx-optimizer.md +0 -64
  90. package/cli-tool/components/agents/development-tools/error-detective.md +0 -33
  91. package/cli-tool/components/agents/development-tools/mcp-expert.md +0 -259
  92. package/cli-tool/components/agents/development-tools/performance-profiler.md +0 -799
  93. package/cli-tool/components/agents/development-tools/test-engineer.md +0 -936
  94. package/cli-tool/components/agents/devops-infrastructure/cloud-architect.md +0 -33
  95. package/cli-tool/components/agents/devops-infrastructure/deployment-engineer.md +0 -33
  96. package/cli-tool/components/agents/devops-infrastructure/devops-troubleshooter.md +0 -33
  97. package/cli-tool/components/agents/devops-infrastructure/monitoring-specialist.md +0 -36
  98. package/cli-tool/components/agents/devops-infrastructure/network-engineer.md +0 -33
  99. package/cli-tool/components/agents/devops-infrastructure/security-engineer.md +0 -971
  100. package/cli-tool/components/agents/devops-infrastructure/terraform-specialist.md +0 -36
  101. package/cli-tool/components/agents/devops-infrastructure/vercel-deployment-specialist.md +0 -357
  102. package/cli-tool/components/agents/documentation/api-documenter.md +0 -33
  103. package/cli-tool/components/agents/documentation/changelog-generator.md +0 -37
  104. package/cli-tool/components/agents/documentation/docusaurus-expert.md +0 -52
  105. package/cli-tool/components/agents/documentation/technical-writer.md +0 -37
  106. package/cli-tool/components/agents/expert-advisors/agent-expert.md +0 -477
  107. package/cli-tool/components/agents/expert-advisors/architect-review.md +0 -50
  108. package/cli-tool/components/agents/expert-advisors/dependency-manager.md +0 -45
  109. package/cli-tool/components/agents/expert-advisors/documentation-expert.md +0 -47
  110. package/cli-tool/components/agents/ffmpeg-clip-team/audio-mixer.md +0 -37
  111. package/cli-tool/components/agents/ffmpeg-clip-team/audio-quality-controller.md +0 -100
  112. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-content-analyzer.md +0 -60
  113. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-metadata-specialist.md +0 -46
  114. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-transcriber.md +0 -68
  115. package/cli-tool/components/agents/ffmpeg-clip-team/social-media-clip-creator.md +0 -69
  116. package/cli-tool/components/agents/ffmpeg-clip-team/timestamp-precision-specialist.md +0 -98
  117. package/cli-tool/components/agents/ffmpeg-clip-team/video-editor.md +0 -37
  118. package/cli-tool/components/agents/game-development/3d-artist.md +0 -37
  119. package/cli-tool/components/agents/game-development/game-designer.md +0 -37
  120. package/cli-tool/components/agents/game-development/unity-game-developer.md +0 -110
  121. package/cli-tool/components/agents/game-development/unreal-engine-developer.md +0 -128
  122. package/cli-tool/components/agents/mcp-dev-team/mcp-deployment-orchestrator.md +0 -101
  123. package/cli-tool/components/agents/mcp-dev-team/mcp-integration-engineer.md +0 -37
  124. package/cli-tool/components/agents/mcp-dev-team/mcp-protocol-specialist.md +0 -37
  125. package/cli-tool/components/agents/mcp-dev-team/mcp-registry-navigator.md +0 -112
  126. package/cli-tool/components/agents/mcp-dev-team/mcp-security-auditor.md +0 -70
  127. package/cli-tool/components/agents/mcp-dev-team/mcp-server-architect.md +0 -74
  128. package/cli-tool/components/agents/mcp-dev-team/mcp-testing-engineer.md +0 -106
  129. package/cli-tool/components/agents/modernization/architecture-modernizer.md +0 -37
  130. package/cli-tool/components/agents/modernization/cloud-migration-specialist.md +0 -37
  131. package/cli-tool/components/agents/modernization/legacy-modernizer.md +0 -33
  132. package/cli-tool/components/agents/obsidian-ops-team/Scripts/daily_notes_connector.py +0 -306
  133. package/cli-tool/components/agents/obsidian-ops-team/Scripts/enhance_tag_standardizer.py +0 -343
  134. package/cli-tool/components/agents/obsidian-ops-team/Scripts/find_keyword_connections.py +0 -216
  135. package/cli-tool/components/agents/obsidian-ops-team/Scripts/fix_quoted_tags.py +0 -82
  136. package/cli-tool/components/agents/obsidian-ops-team/Scripts/implement_entity_connections.py +0 -195
  137. package/cli-tool/components/agents/obsidian-ops-team/Scripts/link_suggester.py +0 -301
  138. package/cli-tool/components/agents/obsidian-ops-team/Scripts/metadata_adder.py +0 -197
  139. package/cli-tool/components/agents/obsidian-ops-team/Scripts/moc_generator.py +0 -296
  140. package/cli-tool/components/agents/obsidian-ops-team/Scripts/parse_keyword_connections.py +0 -122
  141. package/cli-tool/components/agents/obsidian-ops-team/Scripts/tag_standardizer.py +0 -387
  142. package/cli-tool/components/agents/obsidian-ops-team/connection-agent.md +0 -67
  143. package/cli-tool/components/agents/obsidian-ops-team/content-curator.md +0 -81
  144. package/cli-tool/components/agents/obsidian-ops-team/metadata-agent.md +0 -51
  145. package/cli-tool/components/agents/obsidian-ops-team/moc-agent.md +0 -112
  146. package/cli-tool/components/agents/obsidian-ops-team/review-agent.md +0 -94
  147. package/cli-tool/components/agents/obsidian-ops-team/tag-agent.md +0 -92
  148. package/cli-tool/components/agents/obsidian-ops-team/vault-optimizer.md +0 -76
  149. package/cli-tool/components/agents/ocr-extraction-team/document-structure-analyzer.md +0 -37
  150. package/cli-tool/components/agents/ocr-extraction-team/markdown-syntax-formatter.md +0 -58
  151. package/cli-tool/components/agents/ocr-extraction-team/ocr-grammar-fixer.md +0 -36
  152. package/cli-tool/components/agents/ocr-extraction-team/ocr-preprocessing-optimizer.md +0 -37
  153. package/cli-tool/components/agents/ocr-extraction-team/ocr-quality-assurance.md +0 -62
  154. package/cli-tool/components/agents/ocr-extraction-team/text-comparison-validator.md +0 -60
  155. package/cli-tool/components/agents/ocr-extraction-team/visual-analysis-ocr.md +0 -52
  156. package/cli-tool/components/agents/performance-testing/load-testing-specialist.md +0 -37
  157. package/cli-tool/components/agents/performance-testing/performance-engineer.md +0 -33
  158. package/cli-tool/components/agents/performance-testing/react-performance-optimization.md +0 -65
  159. package/cli-tool/components/agents/performance-testing/test-automator.md +0 -33
  160. package/cli-tool/components/agents/performance-testing/web-vitals-optimizer.md +0 -37
  161. package/cli-tool/components/agents/podcast-creator-team/academic-research-synthesizer.md +0 -61
  162. package/cli-tool/components/agents/podcast-creator-team/comprehensive-researcher.md +0 -49
  163. package/cli-tool/components/agents/podcast-creator-team/episode-orchestrator.md +0 -52
  164. package/cli-tool/components/agents/podcast-creator-team/guest-outreach-coordinator.md +0 -37
  165. package/cli-tool/components/agents/podcast-creator-team/market-research-analyst.md +0 -54
  166. package/cli-tool/components/agents/podcast-creator-team/podcast-editor.md +0 -37
  167. package/cli-tool/components/agents/podcast-creator-team/podcast-trend-scout.md +0 -60
  168. package/cli-tool/components/agents/podcast-creator-team/project-supervisor-orchestrator.md +0 -48
  169. package/cli-tool/components/agents/podcast-creator-team/seo-podcast-optimizer.md +0 -58
  170. package/cli-tool/components/agents/podcast-creator-team/social-media-copywriter.md +0 -57
  171. package/cli-tool/components/agents/podcast-creator-team/twitter-ai-influencer-manager.md +0 -62
  172. package/cli-tool/components/agents/programming-languages/c-pro.md +0 -36
  173. package/cli-tool/components/agents/programming-languages/c-sharp-pro.md +0 -40
  174. package/cli-tool/components/agents/programming-languages/cpp-pro.md +0 -39
  175. package/cli-tool/components/agents/programming-languages/golang-pro.md +0 -33
  176. package/cli-tool/components/agents/programming-languages/javascript-pro.md +0 -36
  177. package/cli-tool/components/agents/programming-languages/php-pro.md +0 -44
  178. package/cli-tool/components/agents/programming-languages/python-pro.md +0 -33
  179. package/cli-tool/components/agents/programming-languages/rust-pro.md +0 -36
  180. package/cli-tool/components/agents/programming-languages/shell-scripting-pro.md +0 -38
  181. package/cli-tool/components/agents/programming-languages/sql-pro.md +0 -36
  182. package/cli-tool/components/agents/programming-languages/typescript-pro.md +0 -38
  183. package/cli-tool/components/agents/realtime/supabase-realtime-optimizer.md +0 -193
  184. package/cli-tool/components/agents/security/api-security-audit.md +0 -93
  185. package/cli-tool/components/agents/security/compliance-specialist.md +0 -37
  186. package/cli-tool/components/agents/security/incident-responder.md +0 -75
  187. package/cli-tool/components/agents/security/penetration-tester.md +0 -37
  188. package/cli-tool/components/agents/security/security-auditor.md +0 -33
  189. package/cli-tool/components/agents/web-tools/nextjs-architecture-expert.md +0 -194
  190. package/cli-tool/components/agents/web-tools/react-performance-optimizer.md +0 -425
  191. package/cli-tool/components/agents/web-tools/seo-analyzer.md +0 -37
  192. package/cli-tool/components/agents/web-tools/url-context-validator.md +0 -61
  193. package/cli-tool/components/agents/web-tools/url-link-extractor.md +0 -59
  194. package/cli-tool/components/agents/web-tools/web-accessibility-checker.md +0 -37
  195. package/cli-tool/components/commands/automation/act.md +0 -57
  196. package/cli-tool/components/commands/automation/ci-pipeline.md +0 -378
  197. package/cli-tool/components/commands/automation/husky.md +0 -130
  198. package/cli-tool/components/commands/automation/workflow-orchestrator.md +0 -576
  199. package/cli-tool/components/commands/database/supabase-backup-manager.md +0 -37
  200. package/cli-tool/components/commands/database/supabase-data-explorer.md +0 -37
  201. package/cli-tool/components/commands/database/supabase-migration-assistant.md +0 -37
  202. package/cli-tool/components/commands/database/supabase-performance-optimizer.md +0 -37
  203. package/cli-tool/components/commands/database/supabase-realtime-monitor.md +0 -37
  204. package/cli-tool/components/commands/database/supabase-schema-sync.md +0 -37
  205. package/cli-tool/components/commands/database/supabase-security-audit.md +0 -37
  206. package/cli-tool/components/commands/database/supabase-type-generator.md +0 -37
  207. package/cli-tool/components/commands/deployment/add-changelog.md +0 -92
  208. package/cli-tool/components/commands/deployment/blue-green-deployment.md +0 -824
  209. package/cli-tool/components/commands/deployment/changelog-demo-command.md +0 -43
  210. package/cli-tool/components/commands/deployment/ci-setup.md +0 -323
  211. package/cli-tool/components/commands/deployment/containerize-application.md +0 -93
  212. package/cli-tool/components/commands/deployment/deployment-monitoring.md +0 -1228
  213. package/cli-tool/components/commands/deployment/hotfix-deploy.md +0 -283
  214. package/cli-tool/components/commands/deployment/prepare-release.md +0 -357
  215. package/cli-tool/components/commands/deployment/rollback-deploy.md +0 -145
  216. package/cli-tool/components/commands/deployment/setup-automated-releases.md +0 -143
  217. package/cli-tool/components/commands/deployment/setup-kubernetes-deployment.md +0 -93
  218. package/cli-tool/components/commands/documentation/create-architecture-documentation.md +0 -95
  219. package/cli-tool/components/commands/documentation/create-onboarding-guide.md +0 -93
  220. package/cli-tool/components/commands/documentation/doc-api.md +0 -242
  221. package/cli-tool/components/commands/documentation/docs-maintenance.md +0 -119
  222. package/cli-tool/components/commands/documentation/generate-api-documentation.md +0 -97
  223. package/cli-tool/components/commands/documentation/interactive-documentation.md +0 -133
  224. package/cli-tool/components/commands/documentation/load-llms-txt.md +0 -39
  225. package/cli-tool/components/commands/documentation/migration-guide.md +0 -250
  226. package/cli-tool/components/commands/documentation/troubleshooting-guide.md +0 -370
  227. package/cli-tool/components/commands/documentation/update-docs.md +0 -107
  228. package/cli-tool/components/commands/game-development/game-analytics-integration.md +0 -128
  229. package/cli-tool/components/commands/game-development/game-asset-pipeline.md +0 -108
  230. package/cli-tool/components/commands/game-development/game-performance-profiler.md +0 -78
  231. package/cli-tool/components/commands/game-development/game-testing-framework.md +0 -112
  232. package/cli-tool/components/commands/game-development/unity-project-setup.md +0 -190
  233. package/cli-tool/components/commands/git-workflow/branch-cleanup.md +0 -181
  234. package/cli-tool/components/commands/git-workflow/commit.md +0 -167
  235. package/cli-tool/components/commands/git-workflow/create-pr.md +0 -19
  236. package/cli-tool/components/commands/git-workflow/create-pull-request.md +0 -126
  237. package/cli-tool/components/commands/git-workflow/create-worktrees.md +0 -174
  238. package/cli-tool/components/commands/git-workflow/fix-github-issue.md +0 -13
  239. package/cli-tool/components/commands/git-workflow/git-bisect-helper.md +0 -261
  240. package/cli-tool/components/commands/git-workflow/pr-review.md +0 -76
  241. package/cli-tool/components/commands/git-workflow/update-branch-name.md +0 -9
  242. package/cli-tool/components/commands/nextjs-vercel/nextjs-api-tester.md +0 -480
  243. package/cli-tool/components/commands/nextjs-vercel/nextjs-bundle-analyzer.md +0 -406
  244. package/cli-tool/components/commands/nextjs-vercel/nextjs-component-generator.md +0 -489
  245. package/cli-tool/components/commands/nextjs-vercel/nextjs-middleware-creator.md +0 -712
  246. package/cli-tool/components/commands/nextjs-vercel/nextjs-migration-helper.md +0 -778
  247. package/cli-tool/components/commands/nextjs-vercel/nextjs-performance-audit.md +0 -653
  248. package/cli-tool/components/commands/nextjs-vercel/nextjs-scaffold.md +0 -237
  249. package/cli-tool/components/commands/nextjs-vercel/vercel-deploy-optimize.md +0 -341
  250. package/cli-tool/components/commands/nextjs-vercel/vercel-edge-function.md +0 -810
  251. package/cli-tool/components/commands/nextjs-vercel/vercel-env-sync.md +0 -666
  252. package/cli-tool/components/commands/orchestration/archive.md +0 -414
  253. package/cli-tool/components/commands/orchestration/commit.md +0 -305
  254. package/cli-tool/components/commands/orchestration/find.md +0 -272
  255. package/cli-tool/components/commands/orchestration/log.md +0 -355
  256. package/cli-tool/components/commands/orchestration/move.md +0 -220
  257. package/cli-tool/components/commands/orchestration/optimize.md +0 -375
  258. package/cli-tool/components/commands/orchestration/remove.md +0 -301
  259. package/cli-tool/components/commands/orchestration/report.md +0 -292
  260. package/cli-tool/components/commands/orchestration/resume.md +0 -256
  261. package/cli-tool/components/commands/orchestration/start.md +0 -169
  262. package/cli-tool/components/commands/orchestration/status.md +0 -219
  263. package/cli-tool/components/commands/orchestration/sync.md +0 -294
  264. package/cli-tool/components/commands/performance/add-performance-monitoring.md +0 -84
  265. package/cli-tool/components/commands/performance/implement-caching-strategy.md +0 -84
  266. package/cli-tool/components/commands/performance/optimize-api-performance.md +0 -119
  267. package/cli-tool/components/commands/performance/optimize-build.md +0 -139
  268. package/cli-tool/components/commands/performance/optimize-bundle-size.md +0 -84
  269. package/cli-tool/components/commands/performance/optimize-database-performance.md +0 -84
  270. package/cli-tool/components/commands/performance/optimize-memory-usage.md +0 -91
  271. package/cli-tool/components/commands/performance/performance-audit.md +0 -89
  272. package/cli-tool/components/commands/performance/setup-cdn-optimization.md +0 -84
  273. package/cli-tool/components/commands/performance/system-behavior-simulator.md +0 -415
  274. package/cli-tool/components/commands/project-management/add-package.md +0 -90
  275. package/cli-tool/components/commands/project-management/add-to-changelog.md +0 -37
  276. package/cli-tool/components/commands/project-management/create-feature.md +0 -130
  277. package/cli-tool/components/commands/project-management/create-jtbd.md +0 -37
  278. package/cli-tool/components/commands/project-management/create-prd.md +0 -36
  279. package/cli-tool/components/commands/project-management/create-prp.md +0 -37
  280. package/cli-tool/components/commands/project-management/init-project.md +0 -80
  281. package/cli-tool/components/commands/project-management/milestone-tracker.md +0 -44
  282. package/cli-tool/components/commands/project-management/pac-configure.md +0 -32
  283. package/cli-tool/components/commands/project-management/pac-create-epic.md +0 -41
  284. package/cli-tool/components/commands/project-management/pac-create-ticket.md +0 -42
  285. package/cli-tool/components/commands/project-management/pac-update-status.md +0 -39
  286. package/cli-tool/components/commands/project-management/pac-validate.md +0 -35
  287. package/cli-tool/components/commands/project-management/project-health-check.md +0 -58
  288. package/cli-tool/components/commands/project-management/project-timeline-simulator.md +0 -37
  289. package/cli-tool/components/commands/project-management/project-to-linear.md +0 -38
  290. package/cli-tool/components/commands/project-management/release.md +0 -31
  291. package/cli-tool/components/commands/project-management/todo.md +0 -62
  292. package/cli-tool/components/commands/security/add-authentication-system.md +0 -34
  293. package/cli-tool/components/commands/security/dependency-audit.md +0 -32
  294. package/cli-tool/components/commands/security/penetration-test.md +0 -40
  295. package/cli-tool/components/commands/security/secrets-scanner.md +0 -39
  296. package/cli-tool/components/commands/security/security-audit.md +0 -82
  297. package/cli-tool/components/commands/security/security-hardening.md +0 -33
  298. package/cli-tool/components/commands/setup/create-database-migrations.md +0 -35
  299. package/cli-tool/components/commands/setup/design-database-schema.md +0 -37
  300. package/cli-tool/components/commands/setup/design-rest-api.md +0 -37
  301. package/cli-tool/components/commands/setup/implement-graphql-api.md +0 -37
  302. package/cli-tool/components/commands/setup/migrate-to-typescript.md +0 -37
  303. package/cli-tool/components/commands/setup/setup-ci-cd-pipeline.md +0 -37
  304. package/cli-tool/components/commands/setup/setup-development-environment.md +0 -37
  305. package/cli-tool/components/commands/setup/setup-docker-containers.md +0 -37
  306. package/cli-tool/components/commands/setup/setup-formatting.md +0 -37
  307. package/cli-tool/components/commands/setup/setup-linting.md +0 -37
  308. package/cli-tool/components/commands/setup/setup-monitoring-observability.md +0 -37
  309. package/cli-tool/components/commands/setup/setup-monorepo.md +0 -37
  310. package/cli-tool/components/commands/setup/setup-rate-limiting.md +0 -37
  311. package/cli-tool/components/commands/setup/update-dependencies.md +0 -35
  312. package/cli-tool/components/commands/simulation/business-scenario-explorer.md +0 -37
  313. package/cli-tool/components/commands/simulation/constraint-modeler.md +0 -37
  314. package/cli-tool/components/commands/simulation/decision-tree-explorer.md +0 -37
  315. package/cli-tool/components/commands/simulation/digital-twin-creator.md +0 -37
  316. package/cli-tool/components/commands/simulation/future-scenario-generator.md +0 -37
  317. package/cli-tool/components/commands/simulation/market-response-modeler.md +0 -37
  318. package/cli-tool/components/commands/simulation/monte-carlo-simulator.md +0 -37
  319. package/cli-tool/components/commands/simulation/simulation-calibrator.md +0 -37
  320. package/cli-tool/components/commands/simulation/system-dynamics-modeler.md +0 -37
  321. package/cli-tool/components/commands/simulation/timeline-compressor.md +0 -37
  322. package/cli-tool/components/commands/svelte/svelte:a11y.md +0 -105
  323. package/cli-tool/components/commands/svelte/svelte:component.md +0 -81
  324. package/cli-tool/components/commands/svelte/svelte:debug.md +0 -48
  325. package/cli-tool/components/commands/svelte/svelte:migrate.md +0 -79
  326. package/cli-tool/components/commands/svelte/svelte:optimize.md +0 -99
  327. package/cli-tool/components/commands/svelte/svelte:scaffold.md +0 -89
  328. package/cli-tool/components/commands/svelte/svelte:storybook-migrate.md +0 -204
  329. package/cli-tool/components/commands/svelte/svelte:storybook-mock.md +0 -213
  330. package/cli-tool/components/commands/svelte/svelte:storybook-setup.md +0 -113
  331. package/cli-tool/components/commands/svelte/svelte:storybook-story.md +0 -145
  332. package/cli-tool/components/commands/svelte/svelte:storybook-troubleshoot.md +0 -191
  333. package/cli-tool/components/commands/svelte/svelte:storybook.md +0 -48
  334. package/cli-tool/components/commands/svelte/svelte:test-coverage.md +0 -77
  335. package/cli-tool/components/commands/svelte/svelte:test-fix.md +0 -74
  336. package/cli-tool/components/commands/svelte/svelte:test-setup.md +0 -85
  337. package/cli-tool/components/commands/svelte/svelte:test.md +0 -60
  338. package/cli-tool/components/commands/sync/bidirectional-sync.md +0 -37
  339. package/cli-tool/components/commands/sync/bulk-import-issues.md +0 -37
  340. package/cli-tool/components/commands/sync/cross-reference-manager.md +0 -37
  341. package/cli-tool/components/commands/sync/issue-to-linear-task.md +0 -37
  342. package/cli-tool/components/commands/sync/linear-task-to-issue.md +0 -37
  343. package/cli-tool/components/commands/sync/sync-automation-setup.md +0 -37
  344. package/cli-tool/components/commands/sync/sync-conflict-resolver.md +0 -37
  345. package/cli-tool/components/commands/sync/sync-health-monitor.md +0 -37
  346. package/cli-tool/components/commands/sync/sync-issues-to-linear.md +0 -37
  347. package/cli-tool/components/commands/sync/sync-linear-to-issues.md +0 -37
  348. package/cli-tool/components/commands/sync/sync-migration-assistant.md +0 -37
  349. package/cli-tool/components/commands/sync/sync-pr-to-task.md +0 -37
  350. package/cli-tool/components/commands/sync/sync-status.md +0 -391
  351. package/cli-tool/components/commands/sync/task-from-pr.md +0 -37
  352. package/cli-tool/components/commands/team/architecture-review.md +0 -37
  353. package/cli-tool/components/commands/team/decision-quality-analyzer.md +0 -37
  354. package/cli-tool/components/commands/team/dependency-mapper.md +0 -37
  355. package/cli-tool/components/commands/team/estimate-assistant.md +0 -37
  356. package/cli-tool/components/commands/team/issue-triage.md +0 -37
  357. package/cli-tool/components/commands/team/memory-spring-cleaning.md +0 -37
  358. package/cli-tool/components/commands/team/migration-assistant.md +0 -37
  359. package/cli-tool/components/commands/team/retrospective-analyzer.md +0 -37
  360. package/cli-tool/components/commands/team/session-learning-capture.md +0 -37
  361. package/cli-tool/components/commands/team/sprint-planning.md +0 -189
  362. package/cli-tool/components/commands/team/standup-report.md +0 -37
  363. package/cli-tool/components/commands/team/team-knowledge-mapper.md +0 -37
  364. package/cli-tool/components/commands/team/team-velocity-tracker.md +0 -37
  365. package/cli-tool/components/commands/team/team-workload-balancer.md +0 -37
  366. package/cli-tool/components/commands/testing/add-mutation-testing.md +0 -37
  367. package/cli-tool/components/commands/testing/add-property-based-testing.md +0 -37
  368. package/cli-tool/components/commands/testing/e2e-setup.md +0 -37
  369. package/cli-tool/components/commands/testing/generate-test-cases.md +0 -37
  370. package/cli-tool/components/commands/testing/generate-tests.md +0 -82
  371. package/cli-tool/components/commands/testing/setup-comprehensive-testing.md +0 -37
  372. package/cli-tool/components/commands/testing/setup-load-testing.md +0 -37
  373. package/cli-tool/components/commands/testing/setup-visual-testing.md +0 -37
  374. package/cli-tool/components/commands/testing/test-automation-orchestrator.md +0 -37
  375. package/cli-tool/components/commands/testing/test-changelog-automation.md +0 -37
  376. package/cli-tool/components/commands/testing/test-coverage.md +0 -37
  377. package/cli-tool/components/commands/testing/test-quality-analyzer.md +0 -37
  378. package/cli-tool/components/commands/testing/testing_plan_integration.md +0 -37
  379. package/cli-tool/components/commands/testing/write-tests.md +0 -37
  380. package/cli-tool/components/commands/utilities/all-tools.md +0 -31
  381. package/cli-tool/components/commands/utilities/architecture-scenario-explorer.md +0 -375
  382. package/cli-tool/components/commands/utilities/check-file.md +0 -53
  383. package/cli-tool/components/commands/utilities/clean-branches.md +0 -243
  384. package/cli-tool/components/commands/utilities/clean.md +0 -1
  385. package/cli-tool/components/commands/utilities/code-permutation-tester.md +0 -341
  386. package/cli-tool/components/commands/utilities/code-review.md +0 -70
  387. package/cli-tool/components/commands/utilities/code-to-task.md +0 -583
  388. package/cli-tool/components/commands/utilities/context-prime.md +0 -1
  389. package/cli-tool/components/commands/utilities/debug-error.md +0 -121
  390. package/cli-tool/components/commands/utilities/directory-deep-dive.md +0 -34
  391. package/cli-tool/components/commands/utilities/explain-code.md +0 -194
  392. package/cli-tool/components/commands/utilities/fix-issue.md +0 -85
  393. package/cli-tool/components/commands/utilities/generate-linear-worklog.md +0 -113
  394. package/cli-tool/components/commands/utilities/git-status.md +0 -39
  395. package/cli-tool/components/commands/utilities/initref.md +0 -3
  396. package/cli-tool/components/commands/utilities/prime.md +0 -41
  397. package/cli-tool/components/commands/utilities/refactor-code.md +0 -116
  398. package/cli-tool/components/commands/utilities/ultra-think.md +0 -153
  399. package/cli-tool/components/hooks/HOOK_PATTERNS_COMPRESSED.json +0 -1
  400. package/cli-tool/components/hooks/automation/build-on-change.json +0 -16
  401. package/cli-tool/components/hooks/automation/dependency-checker.json +0 -16
  402. package/cli-tool/components/hooks/automation/deployment-health-monitor.json +0 -29
  403. package/cli-tool/components/hooks/automation/discord-detailed-notifications.json +0 -26
  404. package/cli-tool/components/hooks/automation/discord-error-notifications.json +0 -37
  405. package/cli-tool/components/hooks/automation/discord-notifications.json +0 -25
  406. package/cli-tool/components/hooks/automation/simple-notifications.json +0 -16
  407. package/cli-tool/components/hooks/automation/slack-detailed-notifications.json +0 -26
  408. package/cli-tool/components/hooks/automation/slack-error-notifications.json +0 -37
  409. package/cli-tool/components/hooks/automation/slack-notifications.json +0 -25
  410. package/cli-tool/components/hooks/automation/telegram-detailed-notifications.json +0 -26
  411. package/cli-tool/components/hooks/automation/telegram-error-notifications.json +0 -37
  412. package/cli-tool/components/hooks/automation/telegram-notifications.json +0 -25
  413. package/cli-tool/components/hooks/automation/vercel-auto-deploy.json +0 -17
  414. package/cli-tool/components/hooks/automation/vercel-environment-sync.json +0 -29
  415. package/cli-tool/components/hooks/development-tools/change-tracker.json +0 -25
  416. package/cli-tool/components/hooks/development-tools/command-logger.json +0 -16
  417. package/cli-tool/components/hooks/development-tools/file-backup.json +0 -16
  418. package/cli-tool/components/hooks/development-tools/lint-on-save.json +0 -16
  419. package/cli-tool/components/hooks/development-tools/nextjs-code-quality-enforcer.json +0 -17
  420. package/cli-tool/components/hooks/development-tools/smart-formatting.json +0 -16
  421. package/cli-tool/components/hooks/git-workflow/auto-git-add.json +0 -16
  422. package/cli-tool/components/hooks/git-workflow/smart-commit.json +0 -25
  423. package/cli-tool/components/hooks/performance/performance-budget-guard.json +0 -27
  424. package/cli-tool/components/hooks/performance/performance-monitor.json +0 -27
  425. package/cli-tool/components/hooks/post-tool/format-javascript-files.json +0 -16
  426. package/cli-tool/components/hooks/post-tool/format-python-files.json +0 -16
  427. package/cli-tool/components/hooks/post-tool/git-add-changes.json +0 -25
  428. package/cli-tool/components/hooks/post-tool/run-tests-after-changes.json +0 -16
  429. package/cli-tool/components/hooks/pre-tool/backup-before-edit.json +0 -16
  430. package/cli-tool/components/hooks/pre-tool/notify-before-bash.json +0 -16
  431. package/cli-tool/components/hooks/security/file-protection.json +0 -16
  432. package/cli-tool/components/hooks/security/security-scanner.json +0 -16
  433. package/cli-tool/components/hooks/testing/test-runner.json +0 -16
  434. package/cli-tool/components/mcps/browser_automation/browser-use-mcp-server.json +0 -20
  435. package/cli-tool/components/mcps/browser_automation/browsermcp.json +0 -9
  436. package/cli-tool/components/mcps/browser_automation/mcp-server-browserbase.json +0 -14
  437. package/cli-tool/components/mcps/browser_automation/mcp-server-playwright.json +0 -9
  438. package/cli-tool/components/mcps/browser_automation/playwright-mcp-server.json +0 -9
  439. package/cli-tool/components/mcps/browser_automation/playwright-mcp.json +0 -11
  440. package/cli-tool/components/mcps/database/mysql-integration.json +0 -12
  441. package/cli-tool/components/mcps/database/postgresql-integration.json +0 -12
  442. package/cli-tool/components/mcps/database/supabase.json +0 -17
  443. package/cli-tool/components/mcps/deepgraph/deepgraph-nextjs.json +0 -13
  444. package/cli-tool/components/mcps/deepgraph/deepgraph-react.json +0 -13
  445. package/cli-tool/components/mcps/deepgraph/deepgraph-typescript.json +0 -13
  446. package/cli-tool/components/mcps/deepgraph/deepgraph-vue.json +0 -13
  447. package/cli-tool/components/mcps/devtools/circleci.json +0 -13
  448. package/cli-tool/components/mcps/devtools/context7.json +0 -9
  449. package/cli-tool/components/mcps/devtools/firefly-mcp.json +0 -13
  450. package/cli-tool/components/mcps/devtools/ios-simulator-mcp.json +0 -9
  451. package/cli-tool/components/mcps/devtools/just-mcp.json +0 -9
  452. package/cli-tool/components/mcps/devtools/leetcode.json +0 -8
  453. package/cli-tool/components/mcps/devtools/mcp-server-atlassian-bitbucket.json +0 -9
  454. package/cli-tool/components/mcps/devtools/mcp-server-trello.json +0 -12
  455. package/cli-tool/components/mcps/filesystem/filesystem-access.json +0 -13
  456. package/cli-tool/components/mcps/integration/github-integration.json +0 -12
  457. package/cli-tool/components/mcps/integration/memory-integration.json +0 -9
  458. package/cli-tool/components/mcps/marketing/facebook-ads-mcp-server.json +0 -13
  459. package/cli-tool/components/mcps/marketing/google-ads-mcp-server.json +0 -11
  460. package/cli-tool/components/mcps/web/web-fetch.json +0 -9
  461. package/cli-tool/components/sandbox/README.md +0 -169
  462. package/cli-tool/components/sandbox/e2b/.env.example +0 -10
  463. package/cli-tool/components/sandbox/e2b/SANDBOX_DEBUGGING.md +0 -203
  464. package/cli-tool/components/sandbox/e2b/claude-code-sandbox.md +0 -110
  465. package/cli-tool/components/sandbox/e2b/e2b-launcher.py +0 -355
  466. package/cli-tool/components/sandbox/e2b/e2b-monitor.py +0 -229
  467. package/cli-tool/components/sandbox/e2b/requirements.txt +0 -1
  468. package/cli-tool/components/settings/api/bedrock-configuration.json +0 -7
  469. package/cli-tool/components/settings/api/corporate-proxy.json +0 -7
  470. package/cli-tool/components/settings/api/custom-headers.json +0 -6
  471. package/cli-tool/components/settings/api/vertex-configuration.json +0 -8
  472. package/cli-tool/components/settings/authentication/api-key-helper.json +0 -7
  473. package/cli-tool/components/settings/authentication/force-claudeai-login.json +0 -4
  474. package/cli-tool/components/settings/authentication/force-console-login.json +0 -4
  475. package/cli-tool/components/settings/cleanup/retention-7-days.json +0 -4
  476. package/cli-tool/components/settings/cleanup/retention-90-days.json +0 -4
  477. package/cli-tool/components/settings/environment/bash-timeouts.json +0 -8
  478. package/cli-tool/components/settings/environment/development-utils.json +0 -8
  479. package/cli-tool/components/settings/environment/performance-optimization.json +0 -8
  480. package/cli-tool/components/settings/environment/privacy-focused.json +0 -10
  481. package/cli-tool/components/settings/global/aws-credentials.json +0 -5
  482. package/cli-tool/components/settings/global/custom-model.json +0 -7
  483. package/cli-tool/components/settings/global/git-commit-settings.json +0 -4
  484. package/cli-tool/components/settings/mcp/disable-risky-servers.json +0 -8
  485. package/cli-tool/components/settings/mcp/enable-all-project-servers.json +0 -4
  486. package/cli-tool/components/settings/mcp/enable-specific-servers.json +0 -8
  487. package/cli-tool/components/settings/mcp/mcp-timeouts.json +0 -8
  488. package/cli-tool/components/settings/model/use-haiku.json +0 -4
  489. package/cli-tool/components/settings/model/use-sonnet.json +0 -4
  490. package/cli-tool/components/settings/permissions/additional-directories.json +0 -11
  491. package/cli-tool/components/settings/permissions/allow-git-operations.json +0 -14
  492. package/cli-tool/components/settings/permissions/allow-npm-commands.json +0 -11
  493. package/cli-tool/components/settings/permissions/deny-sensitive-files.json +0 -11
  494. package/cli-tool/components/settings/permissions/development-mode.json +0 -31
  495. package/cli-tool/components/settings/permissions/read-only-mode.json +0 -18
  496. package/cli-tool/components/settings/statusline/asset-pipeline-controller-statusline.json +0 -7
  497. package/cli-tool/components/settings/statusline/bug-circus-statusline.json +0 -7
  498. package/cli-tool/components/settings/statusline/code-casino-statusline.json +0 -7
  499. package/cli-tool/components/settings/statusline/code-spaceship-statusline.json +0 -7
  500. package/cli-tool/components/settings/statusline/colorful-statusline.json +0 -7
  501. package/cli-tool/components/settings/statusline/command-statusline.json +0 -8
  502. package/cli-tool/components/settings/statusline/context-monitor.json +0 -7
  503. package/cli-tool/components/settings/statusline/context-monitor.py +0 -236
  504. package/cli-tool/components/settings/statusline/data-ocean-statusline.json +0 -7
  505. package/cli-tool/components/settings/statusline/emotion-theater-statusline.json +0 -7
  506. package/cli-tool/components/settings/statusline/game-performance-monitor-statusline.json +0 -7
  507. package/cli-tool/components/settings/statusline/git-branch-statusline.json +0 -7
  508. package/cli-tool/components/settings/statusline/minimal-statusline.json +0 -7
  509. package/cli-tool/components/settings/statusline/multiplatform-build-status-statusline.json +0 -7
  510. package/cli-tool/components/settings/statusline/productivity-rainbow-statusline.json +0 -7
  511. package/cli-tool/components/settings/statusline/programmer-tamagotchi-statusline.json +0 -7
  512. package/cli-tool/components/settings/statusline/programming-fitness-tracker-statusline.json +0 -7
  513. package/cli-tool/components/settings/statusline/project-info-statusline.json +0 -7
  514. package/cli-tool/components/settings/statusline/rpg-status-bar-statusline.json +0 -7
  515. package/cli-tool/components/settings/statusline/time-statusline.json +0 -7
  516. package/cli-tool/components/settings/statusline/unity-project-dashboard-statusline.json +0 -7
  517. package/cli-tool/components/settings/statusline/vercel-deployment-monitor.json +0 -7
  518. package/cli-tool/components/settings/statusline/vercel-error-alert-system.json +0 -7
  519. package/cli-tool/components/settings/statusline/vercel-multi-env-status.json +0 -7
  520. package/cli-tool/components/settings/statusline/virtual-code-garden-statusline.json +0 -7
  521. package/cli-tool/components/settings/statusline/zero-config-deployment-monitor.json +0 -7
  522. package/cli-tool/components/settings/telemetry/custom-telemetry.json +0 -7
  523. package/cli-tool/components/settings/telemetry/disable-telemetry.json +0 -6
  524. package/cli-tool/components/settings/telemetry/enable-telemetry.json +0 -6
  525. package/cli-tool/docs_to_claude/ANALYTICS_STATE_DETECTION.md +0 -183
  526. package/cli-tool/docs_to_claude/ARCHITECTURE.md +0 -472
  527. package/cli-tool/docs_to_claude/BLOG_WRITING_GUIDE.md +0 -438
  528. package/cli-tool/docs_to_claude/CLAUDE_DATA_STRUCTURE.md +0 -400
  529. package/cli-tool/docs_to_claude/COMMANDS_GUIDE.md +0 -909
  530. package/cli-tool/docs_to_claude/CONVERSATION_STATE_IMPROVEMENTS.md +0 -154
  531. package/cli-tool/docs_to_claude/DEBUG_TYPING_DETECTION.md +0 -95
  532. package/cli-tool/docs_to_claude/DOWNLOAD_TRACKING.md +0 -291
  533. package/cli-tool/docs_to_claude/ENHANCED_STATE_DETECTION.md +0 -122
  534. package/cli-tool/docs_to_claude/HEALTH_CHECK_IMPLEMENTATION.md +0 -135
  535. package/cli-tool/docs_to_claude/HOOKS_GUIDE.md +0 -1249
  536. package/cli-tool/docs_to_claude/STATUSLINE_GUIDE.md +0 -1123
  537. package/cli-tool/docs_to_claude/SUBAGENTS_GUIDE.md +0 -566
  538. package/cli-tool/docs_to_claude/SUB_AGENTS.md +0 -329
  539. package/cli-tool/jest.config.js +0 -84
  540. package/cli-tool/package-lock.json +0 -5471
  541. package/cli-tool/package.json +0 -95
  542. package/cli-tool/templates/common/.claude/commands/git-workflow.md +0 -239
  543. package/cli-tool/templates/common/.claude/commands/project-setup.md +0 -316
  544. package/cli-tool/templates/common/.mcp.json +0 -41
  545. package/cli-tool/templates/common/CLAUDE.md +0 -109
  546. package/cli-tool/templates/common/README.md +0 -96
  547. package/cli-tool/templates/go/.mcp.json +0 -78
  548. package/cli-tool/templates/go/README.md +0 -25
  549. package/cli-tool/templates/javascript-typescript/.claude/commands/api-endpoint.md +0 -51
  550. package/cli-tool/templates/javascript-typescript/.claude/commands/debug.md +0 -52
  551. package/cli-tool/templates/javascript-typescript/.claude/commands/lint.md +0 -48
  552. package/cli-tool/templates/javascript-typescript/.claude/commands/npm-scripts.md +0 -48
  553. package/cli-tool/templates/javascript-typescript/.claude/commands/refactor.md +0 -55
  554. package/cli-tool/templates/javascript-typescript/.claude/commands/test.md +0 -61
  555. package/cli-tool/templates/javascript-typescript/.claude/commands/typescript-migrate.md +0 -51
  556. package/cli-tool/templates/javascript-typescript/.claude/settings.json +0 -142
  557. package/cli-tool/templates/javascript-typescript/.mcp.json +0 -80
  558. package/cli-tool/templates/javascript-typescript/CLAUDE.md +0 -185
  559. package/cli-tool/templates/javascript-typescript/README.md +0 -259
  560. package/cli-tool/templates/javascript-typescript/examples/angular-app/.claude/commands/components.md +0 -63
  561. package/cli-tool/templates/javascript-typescript/examples/angular-app/.claude/commands/services.md +0 -62
  562. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/api-endpoint.md +0 -46
  563. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/database.md +0 -56
  564. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/middleware.md +0 -61
  565. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/route.md +0 -57
  566. package/cli-tool/templates/javascript-typescript/examples/node-api/CLAUDE.md +0 -102
  567. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/component.md +0 -29
  568. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/hooks.md +0 -44
  569. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/state-management.md +0 -45
  570. package/cli-tool/templates/javascript-typescript/examples/react-app/CLAUDE.md +0 -81
  571. package/cli-tool/templates/javascript-typescript/examples/react-app/agents/react-performance-optimization.md +0 -530
  572. package/cli-tool/templates/javascript-typescript/examples/react-app/agents/react-state-management.md +0 -295
  573. package/cli-tool/templates/javascript-typescript/examples/vue-app/.claude/commands/components.md +0 -46
  574. package/cli-tool/templates/javascript-typescript/examples/vue-app/.claude/commands/composables.md +0 -51
  575. package/cli-tool/templates/python/.claude/commands/lint.md +0 -111
  576. package/cli-tool/templates/python/.claude/commands/test.md +0 -73
  577. package/cli-tool/templates/python/.claude/settings.json +0 -153
  578. package/cli-tool/templates/python/.mcp.json +0 -78
  579. package/cli-tool/templates/python/CLAUDE.md +0 -276
  580. package/cli-tool/templates/python/examples/django-app/.claude/commands/admin.md +0 -264
  581. package/cli-tool/templates/python/examples/django-app/.claude/commands/django-model.md +0 -124
  582. package/cli-tool/templates/python/examples/django-app/.claude/commands/views.md +0 -222
  583. package/cli-tool/templates/python/examples/django-app/CLAUDE.md +0 -313
  584. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/api-endpoints.md +0 -513
  585. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/auth.md +0 -775
  586. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/database.md +0 -657
  587. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/deployment.md +0 -160
  588. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/testing.md +0 -927
  589. package/cli-tool/templates/python/examples/fastapi-app/CLAUDE.md +0 -229
  590. package/cli-tool/templates/python/examples/flask-app/.claude/commands/app-factory.md +0 -384
  591. package/cli-tool/templates/python/examples/flask-app/.claude/commands/blueprint.md +0 -243
  592. package/cli-tool/templates/python/examples/flask-app/.claude/commands/database.md +0 -410
  593. package/cli-tool/templates/python/examples/flask-app/.claude/commands/deployment.md +0 -620
  594. package/cli-tool/templates/python/examples/flask-app/.claude/commands/flask-route.md +0 -217
  595. package/cli-tool/templates/python/examples/flask-app/.claude/commands/testing.md +0 -559
  596. package/cli-tool/templates/python/examples/flask-app/CLAUDE.md +0 -391
  597. package/cli-tool/templates/ruby/.claude/commands/model.md +0 -360
  598. package/cli-tool/templates/ruby/.claude/commands/test.md +0 -480
  599. package/cli-tool/templates/ruby/.claude/settings.json +0 -146
  600. package/cli-tool/templates/ruby/.mcp.json +0 -83
  601. package/cli-tool/templates/ruby/CLAUDE.md +0 -284
  602. package/cli-tool/templates/ruby/examples/rails-app/.claude/commands/authentication.md +0 -490
  603. package/cli-tool/templates/ruby/examples/rails-app/CLAUDE.md +0 -376
  604. package/cli-tool/templates/rust/.mcp.json +0 -78
  605. package/cli-tool/templates/rust/README.md +0 -26
  606. package/cli-tool/test-commands.sh +0 -85
  607. package/cli-tool/test-detailed.sh +0 -267
  608. package/docs/CNAME +0 -1
  609. package/docs/README.md +0 -49
  610. package/docs/_config.yml +0 -43
  611. package/docs/blog/assets/aitmpl-nextjs-search.png +0 -0
  612. package/docs/blog/assets/aitmpl-supabase-search.png +0 -0
  613. package/docs/blog/assets/nextjs-vercel-claude-code-templates-cover.png +0 -0
  614. package/docs/blog/assets/supabase-claude-code-templates-cover.png +0 -0
  615. package/docs/blog/e2b-claude-code-sandbox/index.html +0 -1061
  616. package/docs/blog/index.html +0 -239
  617. package/docs/blog/nextjs-vercel-claude-code-integration/index.html +0 -1021
  618. package/docs/blog/supabase-claude-code-integration/index.html +0 -837
  619. package/docs/components-metadata.json +0 -303
  620. package/docs/components.json +0 -4072
  621. package/docs/css/blog.css +0 -821
  622. package/docs/css/stack-page.css +0 -776
  623. package/docs/css/styles.css +0 -4480
  624. package/docs/css/trending.css +0 -971
  625. package/docs/css/workflows-modal.css +0 -739
  626. package/docs/css/workflows.css +0 -1234
  627. package/docs/download-stats.html +0 -514
  628. package/docs/index.html +0 -634
  629. package/docs/js/carousel.js +0 -177
  630. package/docs/js/cart-manager.js +0 -529
  631. package/docs/js/data-loader.js +0 -626
  632. package/docs/js/generate-search-data.js +0 -82
  633. package/docs/js/index-events.js +0 -1707
  634. package/docs/js/modal-helpers.js +0 -334
  635. package/docs/js/script.js +0 -2167
  636. package/docs/js/search-functionality.js +0 -992
  637. package/docs/js/stack-router.js +0 -561
  638. package/docs/js/trending.js +0 -493
  639. package/docs/js/utils.js +0 -43
  640. package/docs/js/workflows-events.js +0 -1146
  641. package/docs/js/workflows.js +0 -627
  642. package/docs/sandbox-interface.html +0 -1406
  643. package/docs/static/img/logo.svg +0 -23
  644. package/docs/trending-data.json +0 -579
  645. package/docs/trending.html +0 -179
  646. package/docs/workflows.html +0 -379
  647. package/docu/README.md +0 -41
  648. package/docu/docs/analytics/agent-chats-manager.md +0 -33
  649. package/docu/docs/analytics/analysis-tools.md +0 -54
  650. package/docu/docs/analytics/overview.md +0 -48
  651. package/docu/docs/analytics/real-time-monitoring.md +0 -16
  652. package/docu/docs/cli-options.md +0 -90
  653. package/docu/docs/components/agents.md +0 -296
  654. package/docu/docs/components/commands.md +0 -426
  655. package/docu/docs/components/discord-notifications.md +0 -59
  656. package/docu/docs/components/hooks.md +0 -381
  657. package/docu/docs/components/mcps.md +0 -510
  658. package/docu/docs/components/overview.md +0 -287
  659. package/docu/docs/components/settings.md +0 -223
  660. package/docu/docs/components/slack-notifications.md +0 -67
  661. package/docu/docs/components/telegram-notifications.md +0 -73
  662. package/docu/docs/contributing.md +0 -11
  663. package/docu/docs/health-check/overview.md +0 -33
  664. package/docu/docs/intro.md +0 -109
  665. package/docu/docs/project-setup/automation-hooks.md +0 -14
  666. package/docu/docs/project-setup/framework-specific-setup.md +0 -86
  667. package/docu/docs/project-setup/interactive-setup.md +0 -59
  668. package/docu/docs/project-setup/mcp-integration.md +0 -17
  669. package/docu/docs/project-setup/supported-languages-frameworks.md +0 -15
  670. package/docu/docs/project-setup/what-gets-installed.md +0 -176
  671. package/docu/docs/safety-features.md +0 -13
  672. package/docu/docs/support.md +0 -13
  673. package/docu/docs/usage-examples/advanced-options.md +0 -87
  674. package/docu/docs/usage-examples/alternative-commands.md +0 -31
  675. package/docu/docs/usage-examples/framework-specific-quick-setup.md +0 -47
  676. package/docu/docs/usage-examples/interactive-setup.md +0 -16
  677. package/docu/docusaurus.config.ts +0 -163
  678. package/docu/package-lock.json +0 -16185
  679. package/docu/package.json +0 -47
  680. package/docu/sidebars.ts +0 -85
  681. package/docu/src/components/HomepageFeatures/index.tsx +0 -82
  682. package/docu/src/components/HomepageFeatures/styles.module.css +0 -131
  683. package/docu/src/css/custom.css +0 -475
  684. package/docu/src/pages/index.module.css +0 -109
  685. package/docu/src/pages/index.tsx +0 -65
  686. package/docu/src/pages/markdown-page.md +0 -7
  687. package/docu/static/img/favicon.ico +0 -0
  688. package/docu/static/img/logo.svg +0 -23
  689. package/docu/tsconfig.json +0 -8
  690. package/generate_components_json.py +0 -199
  691. package/social-preview.png +0 -0
  692. package/vercel.json +0 -75
  693. /package/{cli-tool/bin → bin}/create-claude-config.js +0 -0
  694. /package/{cli-tool/src → src}/agents.js +0 -0
  695. /package/{cli-tool/src → src}/analytics/core/AgentAnalyzer.js +0 -0
  696. /package/{cli-tool/src → src}/analytics/core/ConversationAnalyzer.js +0 -0
  697. /package/{cli-tool/src → src}/analytics/core/FileWatcher.js +0 -0
  698. /package/{cli-tool/src → src}/analytics/core/ProcessDetector.js +0 -0
  699. /package/{cli-tool/src → src}/analytics/core/SessionAnalyzer.js +0 -0
  700. /package/{cli-tool/src → src}/analytics/core/StateCalculator.js +0 -0
  701. /package/{cli-tool/src → src}/analytics/data/DataCache.js +0 -0
  702. /package/{cli-tool/src → src}/analytics/notifications/NotificationManager.js +0 -0
  703. /package/{cli-tool/src → src}/analytics/notifications/WebSocketServer.js +0 -0
  704. /package/{cli-tool/src → src}/analytics/utils/PerformanceMonitor.js +0 -0
  705. /package/{cli-tool/src → src}/analytics-web/FRONT_ARCHITECTURE.md +0 -0
  706. /package/{cli-tool/src → src}/analytics-web/assets/js/main.js.deprecated +0 -0
  707. /package/{cli-tool/src → src}/analytics-web/chats_mobile.html +0 -0
  708. /package/{cli-tool/src → src}/analytics-web/components/ActivityHeatmap.js +0 -0
  709. /package/{cli-tool/src → src}/analytics-web/components/AgentAnalytics.js +0 -0
  710. /package/{cli-tool/src → src}/analytics-web/components/App.js +0 -0
  711. /package/{cli-tool/src → src}/analytics-web/components/Charts.js +0 -0
  712. /package/{cli-tool/src → src}/analytics-web/components/ConversationTable.js +0 -0
  713. /package/{cli-tool/src → src}/analytics-web/components/DashboardPage.js +0 -0
  714. /package/{cli-tool/src → src}/analytics-web/components/HeaderComponent.js +0 -0
  715. /package/{cli-tool/src → src}/analytics-web/components/SessionTimer.js +0 -0
  716. /package/{cli-tool/src → src}/analytics-web/components/Sidebar.js +0 -0
  717. /package/{cli-tool/src → src}/analytics-web/components/ToolDisplay.js +0 -0
  718. /package/{cli-tool/src → src}/analytics-web/index.html +0 -0
  719. /package/{cli-tool/src → src}/analytics-web/index.html.original +0 -0
  720. /package/{cli-tool/src → src}/analytics-web/services/DataService.js +0 -0
  721. /package/{cli-tool/src → src}/analytics-web/services/StateService.js +0 -0
  722. /package/{cli-tool/src → src}/analytics-web/services/WebSocketService.js +0 -0
  723. /package/{cli-tool/src → src}/analytics.js +0 -0
  724. /package/{docu/static/.nojekyll → src/analytics.log} +0 -0
  725. /package/{cli-tool/src → src}/chats-mobile.js +0 -0
  726. /package/{cli-tool/src → src}/claude-api-proxy.js +0 -0
  727. /package/{cli-tool/src → src}/command-scanner.js +0 -0
  728. /package/{cli-tool/src → src}/command-stats.js +0 -0
  729. /package/{cli-tool/src → src}/console-bridge.js +0 -0
  730. /package/{cli-tool/src → src}/file-operations.js +0 -0
  731. /package/{cli-tool/src → src}/health-check.js +0 -0
  732. /package/{cli-tool/src → src}/hook-scanner.js +0 -0
  733. /package/{cli-tool/src → src}/hook-stats.js +0 -0
  734. /package/{cli-tool/src → src}/index.js +0 -0
  735. /package/{cli-tool/src → src}/mcp-stats.js +0 -0
  736. /package/{cli-tool/src → src}/prompts.js +0 -0
  737. /package/{cli-tool/src → src}/sandbox-server.js +0 -0
  738. /package/{cli-tool/src → src}/sdk/global-agent-manager.js +0 -0
  739. /package/{cli-tool/src → src}/templates.js +0 -0
  740. /package/{cli-tool/src → src}/test-activity-data.json +0 -0
  741. /package/{cli-tool/src → src}/test-console-bridge.js +0 -0
  742. /package/{cli-tool/src → src}/tracking-service.js +0 -0
  743. /package/{cli-tool/src → src}/utils.js +0 -0
@@ -1,1707 +0,0 @@
1
- // Index Events - Handles events specific to index.html
2
- console.log('index-events.js loaded successfully');
3
-
4
- // Global function to focus search input when clicking wrapper
5
- function focusSearchInput() {
6
- const searchInput = document.getElementById('searchInput');
7
- if (searchInput) {
8
- searchInput.focus();
9
- }
10
- }
11
-
12
- class IndexPageManager {
13
- constructor() {
14
- this.currentFilter = 'agents';
15
- this.currentCategoryFilter = 'all';
16
- this.templatesData = null;
17
- this.componentsData = null;
18
- this.availableCategories = {
19
- agents: new Set(),
20
- commands: new Set(),
21
- mcps: new Set(),
22
- settings: new Set(),
23
- hooks: new Set(),
24
- templates: new Set()
25
- };
26
-
27
- // Pagination settings
28
- this.currentPage = 1;
29
- this.itemsPerPage = 24; // 3x3 grid
30
- this.totalPages = 1;
31
-
32
- // Framework icons mapping (from script.js)
33
- this.FRAMEWORK_ICONS = {
34
- // Languages
35
- 'common': 'devicon-gear-plain',
36
- 'javascript-typescript': 'devicon-javascript-plain',
37
- 'python': 'devicon-python-plain',
38
- 'ruby': 'devicon-ruby-plain',
39
- 'rust': 'devicon-rust-plain',
40
- 'go': 'devicon-go-plain',
41
-
42
- // JavaScript/TypeScript frameworks
43
- 'react': 'devicon-react-original',
44
- 'vue': 'devicon-vuejs-plain',
45
- 'angular': 'devicon-angularjs-plain',
46
- 'node': 'devicon-nodejs-plain',
47
-
48
- // Python frameworks
49
- 'django': 'devicon-django-plain',
50
- 'flask': 'devicon-flask-original',
51
- 'fastapi': 'devicon-fastapi-plain',
52
-
53
- // Ruby frameworks
54
- 'rails': 'devicon-rails-plain',
55
- 'sinatra': 'devicon-ruby-plain',
56
-
57
- // Default fallback
58
- 'default': 'devicon-devicon-plain'
59
- };
60
- }
61
-
62
- async init() {
63
- try {
64
- // Setup event listeners first (they don't depend on data)
65
- this.setupEventListeners();
66
-
67
- // Show loading state
68
- this.showLoadingState(true);
69
-
70
- // Load all components and templates at once
71
- await this.loadComponentsData();
72
- await this.loadTemplatesData();
73
-
74
- // Display components
75
- this.displayCurrentFilter();
76
-
77
- } catch (error) {
78
- console.error('Error initializing index page:', error);
79
- this.showError('Failed to load data. Please refresh the page.');
80
- } finally {
81
- this.showLoadingState(false);
82
- }
83
- }
84
-
85
- async loadTemplatesData() {
86
- try {
87
- // Templates are now loaded from components.json, not GitHub
88
- this.templatesData = await window.dataLoader.loadTemplates();
89
-
90
- // Update display if templates were found
91
- if (this.templatesData && Object.keys(this.templatesData).length > 0) {
92
- this.displayCurrentFilter();
93
- }
94
- } catch (error) {
95
- console.warn('Templates not available in components.json:', error);
96
- // Continue without templates - this is not critical
97
- }
98
- }
99
-
100
- async loadComponentsData() {
101
- try {
102
- // Load all components at once - the performance issue was mostly due to GitHub fetching
103
- // Now that we only use components.json, we can load all data safely
104
- this.componentsData = await window.dataLoader.loadAllComponents();
105
- this.collectAvailableCategories();
106
- } catch (error) {
107
- console.error('Error loading components:', error);
108
- // Use fallback data
109
- this.componentsData = window.dataLoader.getFallbackComponentData();
110
- this.collectAvailableCategories();
111
- }
112
- }
113
-
114
- // This method is no longer needed since we load all components at once
115
- // Kept for backward compatibility but does nothing
116
- async loadMoreComponentsInBackground() {
117
- // No-op: All components are now loaded in the initial request
118
- console.log('All components loaded in initial request - background loading not needed');
119
- }
120
-
121
- // Check if data object is empty
122
- isDataEmpty(data) {
123
- return !data || ((!data.agents || data.agents.length === 0) &&
124
- (!data.commands || data.commands.length === 0) &&
125
- (!data.mcps || data.mcps.length === 0) &&
126
- (!data.settings || data.settings.length === 0) &&
127
- (!data.hooks || data.hooks.length === 0));
128
- }
129
-
130
- // Show/hide loading state
131
- showLoadingState(isLoading) {
132
- const loadingElements = document.querySelectorAll('.loading-indicator, .loading-spinner');
133
- const contentElements = document.querySelectorAll('#unifiedGrid, .filter-controls');
134
-
135
- loadingElements.forEach(el => {
136
- el.style.display = isLoading ? 'flex' : 'none';
137
- });
138
-
139
- contentElements.forEach(el => {
140
- el.style.opacity = isLoading ? '0.7' : '1';
141
- });
142
- }
143
-
144
- setupEventListeners() {
145
- // Filter buttons
146
- document.querySelectorAll('.filter-btn').forEach(btn => {
147
- btn.addEventListener('click', (e) => {
148
- const filter = e.target.dataset.filter;
149
- this.setFilter(filter);
150
- });
151
- });
152
-
153
- // Copy buttons
154
- document.addEventListener('click', (e) => {
155
- if (e.target.classList.contains('copy-btn')) {
156
- const command = e.target.previousElementSibling.textContent;
157
- this.copyToClipboard(command);
158
- }
159
- });
160
-
161
- // Card flip functionality for template cards
162
- document.addEventListener('click', (e) => {
163
- const card = e.target.closest('.template-card');
164
- // Prevent flipping for "add new" cards or if a button is clicked
165
- if (card && !card.classList.contains('add-template-card') && !e.target.closest('button')) {
166
- console.log('Global template card clicked, toggling flip');
167
- card.classList.toggle('flipped');
168
- }
169
- });
170
-
171
- // ESC key to close all flipped cards
172
- document.addEventListener('keydown', (e) => {
173
- if (e.key === 'Escape') {
174
- document.querySelectorAll('.template-card.flipped').forEach(card => {
175
- card.classList.remove('flipped');
176
- });
177
- }
178
- });
179
- }
180
-
181
- setFilter(filter) {
182
- this.currentFilter = filter;
183
- this.currentPage = 1; // Reset to first page when changing filter
184
- this.currentCategoryFilter = 'all'; // Reset category filter to show all items
185
-
186
- // Update active button
187
- document.querySelectorAll('.filter-btn').forEach(btn => {
188
- btn.classList.toggle('active', btn.dataset.filter === filter);
189
- });
190
-
191
- this.displayCurrentFilter();
192
- }
193
-
194
- // Set category filter
195
- setCategoryFilter(category) {
196
- this.currentCategoryFilter = category;
197
- this.currentPage = 1; // Reset to first page when changing category
198
-
199
- // Update category filter buttons
200
- document.querySelectorAll('.category-filter-btn').forEach(btn => {
201
- btn.classList.remove('active');
202
- });
203
- const targetBtn = document.querySelector(`[data-category="${category}"]`);
204
- if (targetBtn) {
205
- targetBtn.classList.add('active');
206
- }
207
-
208
- // Regenerate the component display
209
- this.displayCurrentFilter();
210
- }
211
-
212
- // Update category sub-filters in the unified-filter-bar
213
- updateCategorySubFilters() {
214
- const unifiedFilterBar = document.querySelector('.unified-filter-bar');
215
- if (!unifiedFilterBar) return;
216
-
217
- // Remove existing category filters
218
- const existingCategoryFilters = unifiedFilterBar.querySelector('.category-filter-row');
219
- if (existingCategoryFilters) {
220
- existingCategoryFilters.remove();
221
- }
222
-
223
- // Get categories for current filter type
224
- const currentCategories = Array.from(this.availableCategories[this.currentFilter] || []).sort();
225
-
226
- if (currentCategories.length <= 1) {
227
- // Don't show sub-filters if there's only one category or none
228
- return;
229
- }
230
-
231
- // Create category filter row
232
- const categoryFilterRow = document.createElement('div');
233
- categoryFilterRow.className = 'category-filter-row';
234
- categoryFilterRow.innerHTML = `
235
- <div class="category-filter-label">Categories:</div>
236
- <div class="category-filter-buttons">
237
- <button class="category-filter-btn ${this.currentCategoryFilter === 'all' ? 'active' : ''}"
238
- data-category="all">
239
- All
240
- </button>
241
- ${currentCategories.map(category => `
242
- <button class="category-filter-btn ${this.currentCategoryFilter === category ? 'active' : ''}"
243
- data-category="${category}">
244
- ${this.formatComponentName(category)}
245
- </button>
246
- `).join('')}
247
- </div>
248
- `;
249
-
250
- // Add click event listeners
251
- categoryFilterRow.querySelectorAll('.category-filter-btn').forEach(btn => {
252
- btn.addEventListener('click', () => {
253
- this.setCategoryFilter(btn.getAttribute('data-category'));
254
- });
255
- });
256
-
257
- // Append to unified filter bar
258
- unifiedFilterBar.appendChild(categoryFilterRow);
259
- }
260
-
261
- // Get filtered components based on current filter and category filter
262
- getFilteredComponents(type) {
263
- if (!type) type = this.currentFilter;
264
- if (type === 'templates') {
265
- return [];
266
- }
267
-
268
- let components = this.componentsData[type] || [];
269
-
270
- // Apply category filter if not 'all'
271
- if (this.currentCategoryFilter !== 'all') {
272
- components = components.filter(component => {
273
- const category = component.category || 'general';
274
- return category === this.currentCategoryFilter;
275
- });
276
- }
277
-
278
- return components;
279
- }
280
-
281
- // Collect available categories from loaded components
282
- collectAvailableCategories() {
283
- // Reset categories
284
- this.availableCategories.agents.clear();
285
- this.availableCategories.commands.clear();
286
- this.availableCategories.mcps.clear();
287
- this.availableCategories.settings.clear();
288
- this.availableCategories.hooks.clear();
289
- this.availableCategories.templates.clear();
290
-
291
- // Collect categories from each component type
292
- if (this.componentsData.agents && Array.isArray(this.componentsData.agents)) {
293
- this.componentsData.agents.forEach(component => {
294
- const category = component.category || 'general';
295
- this.availableCategories.agents.add(category);
296
- });
297
- }
298
-
299
- if (this.componentsData.commands && Array.isArray(this.componentsData.commands)) {
300
- this.componentsData.commands.forEach(component => {
301
- const category = component.category || 'general';
302
- this.availableCategories.commands.add(category);
303
- });
304
- }
305
-
306
- if (this.componentsData.mcps && Array.isArray(this.componentsData.mcps)) {
307
- this.componentsData.mcps.forEach(component => {
308
- const category = component.category || 'general';
309
- this.availableCategories.mcps.add(category);
310
- });
311
- }
312
-
313
- if (this.componentsData.settings && Array.isArray(this.componentsData.settings)) {
314
- this.componentsData.settings.forEach(component => {
315
- const category = component.category || 'general';
316
- this.availableCategories.settings.add(category);
317
- });
318
- }
319
-
320
- if (this.componentsData.hooks && Array.isArray(this.componentsData.hooks)) {
321
- this.componentsData.hooks.forEach(component => {
322
- const category = component.category || 'general';
323
- this.availableCategories.hooks.add(category);
324
- });
325
- }
326
-
327
- // Collect categories from templates (use language as category for language templates)
328
- if (this.componentsData.templates && Array.isArray(this.componentsData.templates)) {
329
- this.componentsData.templates.forEach(template => {
330
- if (template.subtype === 'language') {
331
- this.availableCategories.templates.add(template.name);
332
- } else if (template.subtype === 'framework' && template.language) {
333
- this.availableCategories.templates.add(template.language);
334
- }
335
- });
336
- }
337
- }
338
-
339
- displayCurrentFilter() {
340
- const grid = document.getElementById('unifiedGrid');
341
- if (!grid) return;
342
-
343
- // Set proper grid class based on current filter
344
- if (this.currentFilter === 'templates') {
345
- grid.className = 'unified-grid templates-mode';
346
- } else {
347
- grid.className = 'unified-grid components-mode';
348
- }
349
-
350
- // Update filter button counts
351
- this.updateFilterCounts();
352
-
353
- switch (this.currentFilter) {
354
- case 'templates':
355
- this.displayTemplates(grid);
356
- break;
357
- case 'agents':
358
- case 'commands':
359
- case 'mcps':
360
- case 'settings':
361
- case 'hooks':
362
- this.displayComponents(grid, this.currentFilter);
363
- break;
364
- default:
365
- grid.innerHTML = '<div class="error">Unknown filter</div>';
366
- }
367
- }
368
-
369
- displayTemplates(grid) {
370
- if (!this.componentsData || !this.componentsData.templates) {
371
- grid.innerHTML = '<div class="loading">Loading templates...</div>';
372
- return;
373
- }
374
-
375
- // Update category sub-filters for templates
376
- this.updateCategorySubFilters();
377
-
378
- // Clear the grid
379
- grid.innerHTML = '';
380
-
381
- // Add the "Add New Template" card first
382
- const addTemplateCard = this.createAddTemplateCard();
383
- grid.appendChild(addTemplateCard);
384
-
385
- // Filter templates based on category selection
386
- let filteredTemplates = this.componentsData.templates;
387
- if (this.currentCategoryFilter !== 'all') {
388
- filteredTemplates = this.componentsData.templates.filter(template => {
389
- if (template.subtype === 'language') {
390
- return template.name === this.currentCategoryFilter;
391
- } else if (template.subtype === 'framework') {
392
- return template.language === this.currentCategoryFilter;
393
- }
394
- return false;
395
- });
396
- }
397
-
398
- // Create template cards from the filtered list
399
- filteredTemplates.forEach(template => {
400
- const templateCard = this.createTemplateCardFromJSON(template);
401
- grid.appendChild(templateCard);
402
- });
403
- }
404
-
405
- displayComponents(grid, type) {
406
- if (!this.componentsData) {
407
- grid.innerHTML = '<div class="loading">Loading components...</div>';
408
- return;
409
- }
410
-
411
- // Update category sub-filters in the unified-filter-bar
412
- this.updateCategorySubFilters();
413
-
414
- const allComponents = this.getFilteredComponents(type);
415
-
416
- // Calculate pagination
417
- const totalItems = allComponents.length + 1; // +1 for "Add New" card
418
- this.totalPages = Math.ceil(totalItems / this.itemsPerPage);
419
-
420
- // Get components for current page
421
- const startIndex = (this.currentPage - 1) * this.itemsPerPage;
422
- const endIndex = startIndex + this.itemsPerPage;
423
-
424
- let html = '';
425
- let itemsToShow = [];
426
-
427
- // Add "Add New" card to the beginning
428
- itemsToShow.push({ type: 'add-new', data: type });
429
-
430
- // Add components
431
- allComponents.forEach(component => {
432
- itemsToShow.push({ type: 'component', data: component });
433
- });
434
-
435
- // Get items for current page
436
- const pageItems = itemsToShow.slice(startIndex, endIndex);
437
-
438
- // Generate HTML for page items
439
- pageItems.forEach(item => {
440
- if (item.type === 'add-new') {
441
- html += this.createAddComponentCard(item.data);
442
- } else {
443
- html += this.generateComponentCard(item.data);
444
- }
445
- });
446
-
447
- // Create pagination controls
448
- const paginationHTML = this.createPaginationControls();
449
-
450
- grid.innerHTML = html || '<div class="no-data">No components available</div>';
451
-
452
- // Add pagination after the grid
453
- this.updatePagination(paginationHTML);
454
- }
455
-
456
-
457
- generateComponentCard(component) {
458
- // Generate install command - remove .md extension from path
459
- let componentPath = component.path || component.name;
460
- // Remove .md or .json extensions from path
461
- if (componentPath.endsWith('.md') || componentPath.endsWith('.json')) {
462
- componentPath = componentPath.replace(/\.(md|json)$/, '');
463
- }
464
- if (componentPath.endsWith('.json')) {
465
- componentPath = componentPath.replace(/\.json$/, '');
466
- }
467
- const installCommand = `npx claude-code-templates@latest --${component.type}=${componentPath} --yes`;
468
-
469
- const typeConfig = {
470
- agent: { icon: '🤖', color: '#ff6b6b' },
471
- command: { icon: '⚡', color: '#4ecdc4' },
472
- mcp: { icon: '🔌', color: '#45b7d1' },
473
- setting: { icon: '⚙️', color: '#9c88ff' },
474
- hook: { icon: '🪝', color: '#ff8c42' }
475
- };
476
-
477
- const config = typeConfig[component.type];
478
-
479
- // Escape quotes and special characters for onclick attributes
480
- const escapedType = component.type.replace(/'/g, "\\'");
481
- const escapedName = (component.name || '').replace(/'/g, "\\'");
482
- const escapedPath = (component.path || component.name || '').replace(/'/g, "\\'");
483
- const escapedCategory = (component.category || 'general').replace(/'/g, "\\'");
484
- const escapedCommand = installCommand.replace(/'/g, "\\'");
485
-
486
- // Create category label (use "General" if no category)
487
- const categoryName = component.category || 'general';
488
- const categoryLabel = `<div class="category-label">${this.formatComponentName(categoryName)}</div>`;
489
-
490
- return `
491
- <div class="template-card" data-type="${component.type}">
492
- <div class="card-inner">
493
- <div class="card-front">
494
- ${categoryLabel}
495
- <div class="framework-logo" style="color: ${config.color}">
496
- <span class="component-icon">${config.icon}</span>
497
- </div>
498
- <h3 class="template-title">${this.formatComponentName(component.name)}</h3>
499
- ${component.type === 'mcp' ?
500
- `<p class="template-description">${this.truncateDescription(component.description || 'MCP integration for enhanced development workflow', 80)}</p>` :
501
- `<p class="template-description">${this.getComponentDescription(component)}</p>`
502
- }
503
- </div>
504
- <div class="card-back">
505
- <div class="command-display">
506
- <h3>Installation Command</h3>
507
- <div class="command-code-container">
508
- <div class="command-code">${installCommand}</div>
509
- <button class="copy-overlay-btn" onclick="copyToClipboard('${escapedCommand}'); event.stopPropagation();" title="Copy command">
510
- <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
511
- <path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/>
512
- </svg>
513
- Copy Command
514
- </button>
515
- </div>
516
- <div class="card-actions">
517
- <button class="view-files-btn" onclick="showComponentDetails('${escapedType}', '${escapedName}', '${escapedPath}', '${escapedCategory}')">
518
- 📁 View Details
519
- </button>
520
- <button class="add-to-cart-btn"
521
- data-type="${component.type}s"
522
- data-path="${componentPath}"
523
- onclick="handleAddToCart('${escapedName}', '${componentPath}', '${component.type}s', '${escapedCategory}', this)">
524
- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
525
- <path d="M19,7H18V6A2,2 0 0,0 16,4H8A2,2 0 0,0 6,6V7H5A1,1 0 0,0 4,8A1,1 0 0,0 5,9H6V19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V9H19A1,1 0 0,0 20,8A1,1 0 0,0 19,7M8,6H16V7H8V6M16,19H8V9H16V19Z"/>
526
- </svg>
527
- Add to Stack
528
- </button>
529
- </div>
530
- </div>
531
- </div>
532
- </div>
533
- </div>
534
- `;
535
- }
536
-
537
- copyToClipboard(text) {
538
- // Use the global function from utils.js
539
- if (typeof window.copyToClipboard === 'function') {
540
- window.copyToClipboard(text);
541
- } else {
542
- copyToClipboard(text);
543
- }
544
- }
545
-
546
- showNotification(message, type = 'info') {
547
- const notification = document.createElement('div');
548
- notification.textContent = message;
549
- notification.className = `notification notification-${type}`;
550
- notification.style.cssText = `
551
- position: fixed;
552
- top: 20px;
553
- right: 20px;
554
- background: ${type === 'success' ? '#10b981' : type === 'error' ? '#ef4444' : '#3b82f6'};
555
- color: white;
556
- padding: 12px 24px;
557
- border-radius: 6px;
558
- z-index: 10000;
559
- font-family: system-ui, -apple-system, sans-serif;
560
- animation: slideIn 0.3s ease;
561
- `;
562
-
563
- document.body.appendChild(notification);
564
- setTimeout(() => {
565
- if (notification.parentNode) {
566
- notification.parentNode.removeChild(notification);
567
- }
568
- }, 3000);
569
- }
570
-
571
- formatComponentName(name) {
572
- return name.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
573
- }
574
-
575
- truncateDescription(description, maxLength = 80) {
576
- if (!description) return '';
577
- if (description.length <= maxLength) return description;
578
- return description.substring(0, maxLength).trim() + '...';
579
- }
580
-
581
- getComponentDescription(component) {
582
- let description = '';
583
-
584
- if (component.description) {
585
- description = component.description;
586
- } else if (component.content) {
587
- // Try to extract description from frontmatter
588
- const descMatch = component.content.match(/description:\s*(.+?)(?:\n|$)/);
589
- if (descMatch) {
590
- description = descMatch[1].trim().replace(/^["']|["']$/g, '');
591
- } else {
592
- // Use first paragraph if no frontmatter description
593
- const lines = component.content.split('\n');
594
- const firstParagraph = lines.find(line => line.trim() && !line.startsWith('---') && !line.startsWith('#'));
595
- if (firstParagraph) {
596
- description = firstParagraph.trim();
597
- }
598
- }
599
- }
600
-
601
- if (!description) {
602
- description = `A ${component.type} component for Claude Code.`;
603
- }
604
-
605
- // Truncate description to max 120 characters for proper card display
606
- if (description.length > 120) {
607
- description = description.substring(0, 117) + '...';
608
- }
609
-
610
- return description;
611
- }
612
-
613
- // Update filter button counts
614
- updateFilterCounts() {
615
- // Get accurate total counts from data loader (includes full data counts)
616
- const totalCounts = window.dataLoader.getTotalCounts();
617
- if (!totalCounts) return;
618
-
619
- // Update each filter button with accurate total count
620
- const agentsBtn = document.querySelector('[data-filter="agents"]');
621
- const commandsBtn = document.querySelector('[data-filter="commands"]');
622
- const mcpsBtn = document.querySelector('[data-filter="mcps"]');
623
- const settingsBtn = document.querySelector('[data-filter="settings"]');
624
- const hooksBtn = document.querySelector('[data-filter="hooks"]');
625
- const templatesBtn = document.querySelector('[data-filter="templates"]');
626
-
627
- if (agentsBtn) {
628
- agentsBtn.innerHTML = `🤖 Agents (${totalCounts.agents})`;
629
- }
630
- if (commandsBtn) {
631
- commandsBtn.innerHTML = `⚡ Commands (${totalCounts.commands})`;
632
- }
633
- if (mcpsBtn) {
634
- mcpsBtn.innerHTML = `🔌 MCPs (${totalCounts.mcps})`;
635
- }
636
- if (settingsBtn) {
637
- settingsBtn.innerHTML = `⚙️ Settings (${totalCounts.settings})`;
638
- }
639
- if (hooksBtn) {
640
- hooksBtn.innerHTML = `🪝 Hooks (${totalCounts.hooks})`;
641
- }
642
- if (templatesBtn) {
643
- templatesBtn.innerHTML = `📦 Templates (${totalCounts.templates})`;
644
- }
645
- }
646
-
647
- // Create Add Component card
648
- createAddComponentCard(type) {
649
- const typeConfig = {
650
- agents: {
651
- icon: '🤖',
652
- name: 'Agent',
653
- description: 'Create a new AI specialist agent',
654
- color: '#ff6b6b'
655
- },
656
- commands: {
657
- icon: '⚡',
658
- name: 'Command',
659
- description: 'Add a custom slash command',
660
- color: '#4ecdc4'
661
- },
662
- mcps: {
663
- icon: '🔌',
664
- name: 'MCP',
665
- description: 'Build a Model Context Protocol integration',
666
- color: '#45b7d1'
667
- },
668
- settings: {
669
- icon: '⚙️',
670
- name: 'Setting',
671
- description: 'Configure Claude Code behavior',
672
- color: '#9c88ff'
673
- },
674
- hooks: {
675
- icon: '🪝',
676
- name: 'Hook',
677
- description: 'Automate tool execution workflows',
678
- color: '#ff8c42'
679
- }
680
- };
681
-
682
- const config = typeConfig[type];
683
- if (!config) return '';
684
-
685
- return `
686
- <div class="template-card add-template-card add-component-card" onclick="showComponentContributeModal('${type}')">
687
- <div class="card-inner">
688
- <div class="card-front">
689
- <div class="framework-logo" style="color: ${config.color}">
690
- <svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor">
691
- <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"/>
692
- </svg>
693
- </div>
694
- <h3 class="template-title">Add New ${config.name}</h3>
695
- <p class="template-description">${config.description}</p>
696
- </div>
697
- </div>
698
- </div>
699
- `;
700
- }
701
-
702
- showError(message) {
703
- const grid = document.getElementById('unifiedGrid');
704
- if (grid) {
705
- grid.innerHTML = `
706
- <div class="error-message">
707
- <h3>Error</h3>
708
- <p>${message}</p>
709
- <button onclick="location.reload()" class="btn-primary">Retry</button>
710
- </div>
711
- `;
712
- }
713
- }
714
-
715
- // Get framework icon from mapping
716
- getFrameworkIcon(framework) {
717
- return this.FRAMEWORK_ICONS[framework] || this.FRAMEWORK_ICONS['default'];
718
- }
719
-
720
- // Create Add Template card
721
- createAddTemplateCard() {
722
- const card = document.createElement('div');
723
- card.className = 'template-card add-template-card';
724
-
725
- card.innerHTML = `
726
- <div class="card-inner">
727
- <div class="card-front">
728
- <div class="framework-logo">
729
- <svg width="32" height="32" viewBox="0 0 24 24" fill="currentColor">
730
- <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"/>
731
- </svg>
732
- </div>
733
- <h3 class="template-title">Add New Template</h3>
734
- <p class="template-description">Contribute a new language or framework to the community</p>
735
- </div>
736
- </div>
737
- `;
738
-
739
- // Add click handler
740
- card.addEventListener('click', () => {
741
- showComponentContributeModal('templates');
742
- });
743
-
744
- return card;
745
- }
746
-
747
- // Create template card from JSON structure
748
- createTemplateCardFromJSON(template) {
749
- const card = document.createElement('div');
750
- card.className = 'template-card';
751
-
752
- // Determine the icon based on template name/type
753
- const icon = this.getFrameworkIcon(template.name);
754
-
755
- // Create the display name
756
- const displayName = template.subtype === 'framework'
757
- ? `${template.language}/${template.name}`
758
- : template.name;
759
-
760
- card.innerHTML = `
761
- <div class="card-inner">
762
- <div class="card-front">
763
- <div class="framework-logo">
764
- <i class="${icon} colored"></i>
765
- </div>
766
- <h3 class="template-title">${displayName}</h3>
767
- <p class="template-description">${template.description}</p>
768
- </div>
769
- <div class="card-back">
770
- <div class="command-display">
771
- <h3>Installation Command</h3>
772
- <div class="command-code">${template.installCommand}</div>
773
- <div class="action-buttons">
774
- <button class="view-files-btn" onclick="showTemplateDetails('${template.id}', '${template.name}', '${template.subtype}')">
775
- 📁 View Files
776
- </button>
777
- <button class="copy-command-btn" onclick="copyToClipboard('${template.installCommand}')">
778
- 📋 Copy Command
779
- </button>
780
- </div>
781
- </div>
782
- </div>
783
- </div>
784
- `;
785
-
786
- // Card flip is handled by global event listener in setupEventListeners
787
-
788
- return card;
789
- }
790
-
791
- // Create individual template card (legacy method, keep for compatibility)
792
- createTemplateCard(languageKey, languageData, frameworkKey, frameworkData) {
793
- const card = document.createElement('div');
794
- card.className = `template-card ${languageData.comingSoon ? 'coming-soon' : ''}`;
795
-
796
- const displayName = frameworkKey === 'none' ?
797
- frameworkData.name :
798
- `${languageData.name.split('/')[0]}/${frameworkData.name}`;
799
-
800
- card.innerHTML = `
801
- <div class="card-inner">
802
- <div class="card-front">
803
- ${languageData.comingSoon ? '<div class="coming-soon-badge">Coming Soon</div>' : ''}
804
- <div class="framework-logo">
805
- <i class="${frameworkData.icon} colored"></i>
806
- </div>
807
- <h3 class="template-title">${displayName}</h3>
808
- <p class="template-description">${(languageData.description || '').substring(0, 120)}${(languageData.description || '').length > 120 ? '...' : ''}</p>
809
- </div>
810
- <div class="card-back">
811
- <div class="command-display">
812
- <h3>Installation Options</h3>
813
- <div class="command-code">${frameworkData.command}</div>
814
- <div class="action-buttons">
815
- <button class="view-files-btn" onclick="showInstallationFiles('${languageKey}', '${frameworkKey}', '${displayName}')">
816
- 📁 View Files
817
- </button>
818
- <button class="copy-command-btn" onclick="copyToClipboard('${frameworkData.command}')">
819
- 📋 Copy Command
820
- </button>
821
- </div>
822
- </div>
823
- </div>
824
- </div>
825
- `;
826
-
827
- // Add click handler for card flip (only if not coming soon)
828
- if (!languageData.comingSoon) {
829
- card.addEventListener('click', (e) => {
830
- // Don't flip if clicking on buttons
831
- if (!e.target.closest('button')) {
832
- card.classList.toggle('flipped');
833
- }
834
- });
835
- }
836
-
837
- return card;
838
- }
839
-
840
- // Fetch templates configuration from GitHub
841
- async fetchTemplatesConfig() {
842
- const GITHUB_CONFIG = {
843
- owner: 'davila7',
844
- repo: 'claude-code-templates',
845
- branch: 'main',
846
- templatesPath: 'cli-tool/src/templates.js'
847
- };
848
-
849
- try {
850
- const url = `https://raw.githubusercontent.com/${GITHUB_CONFIG.owner}/${GITHUB_CONFIG.repo}/${GITHUB_CONFIG.branch}/${GITHUB_CONFIG.templatesPath}?t=${Date.now()}`;
851
- const response = await fetch(url);
852
-
853
- if (!response.ok) {
854
- throw new Error(`HTTP error! status: ${response.status}`);
855
- }
856
-
857
- const templateFileContent = await response.text();
858
- this.templatesData = this.parseTemplatesConfig(templateFileContent);
859
-
860
- return this.templatesData;
861
- } catch (error) {
862
- console.error('Error fetching templates:', error);
863
- throw error;
864
- }
865
- }
866
-
867
- // Parse templates configuration
868
- parseTemplatesConfig(fileContent) {
869
- try {
870
- const configMatch = fileContent.match(/const TEMPLATES_CONFIG = ({[\s\S]*?});/);
871
- if (!configMatch) {
872
- throw new Error('TEMPLATES_CONFIG not found in file');
873
- }
874
-
875
- let configString = configMatch[1];
876
- configString = configString.replace(/'/g, '"');
877
- configString = configString.replace(/(\w+):/g, '"$1":');
878
- configString = configString.replace(/,(\s*[}\]])/g, '$1');
879
-
880
- return JSON.parse(configString);
881
- } catch (error) {
882
- console.error('Error parsing templates config:', error);
883
- return null;
884
- }
885
- }
886
-
887
- // Show contribute modal
888
- showContributeModal() {
889
- alert('Contribute modal would open here - this needs to be implemented with the full modal HTML from script.js');
890
- }
891
-
892
- // Create pagination controls
893
- createPaginationControls() {
894
- if (this.totalPages <= 1) return '';
895
-
896
- let paginationHTML = '<div class="pagination-container">';
897
- paginationHTML += '<div class="pagination">';
898
-
899
- // Previous button
900
- const prevDisabled = this.currentPage === 1 ? 'disabled' : '';
901
- paginationHTML += `<button class="pagination-btn prev-btn ${prevDisabled}" onclick="goToPage(${this.currentPage - 1})" ${prevDisabled ? 'disabled' : ''}>`;
902
- paginationHTML += '<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg>';
903
- paginationHTML += '</button>';
904
-
905
- // Page numbers
906
- const startPage = Math.max(1, this.currentPage - 2);
907
- const endPage = Math.min(this.totalPages, this.currentPage + 2);
908
-
909
- if (startPage > 1) {
910
- paginationHTML += `<button class="pagination-btn page-btn" onclick="goToPage(1)">1</button>`;
911
- if (startPage > 2) {
912
- paginationHTML += '<span class="pagination-dots">...</span>';
913
- }
914
- }
915
-
916
- for (let i = startPage; i <= endPage; i++) {
917
- const activeClass = i === this.currentPage ? 'active' : '';
918
- paginationHTML += `<button class="pagination-btn page-btn ${activeClass}" onclick="goToPage(${i})">${i}</button>`;
919
- }
920
-
921
- if (endPage < this.totalPages) {
922
- if (endPage < this.totalPages - 1) {
923
- paginationHTML += '<span class="pagination-dots">...</span>';
924
- }
925
- paginationHTML += `<button class="pagination-btn page-btn" onclick="goToPage(${this.totalPages})">${this.totalPages}</button>`;
926
- }
927
-
928
- // Next button
929
- const nextDisabled = this.currentPage === this.totalPages ? 'disabled' : '';
930
- paginationHTML += `<button class="pagination-btn next-btn ${nextDisabled}" onclick="goToPage(${this.currentPage + 1})" ${nextDisabled ? 'disabled' : ''}>`;
931
- paginationHTML += '<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M10.02 6L8.61 7.41 13.19 12l-4.58 4.59L10.02 18l6-6z"/></svg>';
932
- paginationHTML += '</button>';
933
-
934
- paginationHTML += '</div>';
935
- paginationHTML += `<div class="pagination-info">Page ${this.currentPage} of ${this.totalPages}</div>`;
936
- paginationHTML += '</div>';
937
-
938
- return paginationHTML;
939
- }
940
-
941
- // Navigate to specific page
942
- goToPage(page) {
943
- if (page < 1 || page > this.totalPages || page === this.currentPage) return;
944
-
945
- this.currentPage = page;
946
- this.displayCurrentFilter();
947
-
948
- // Scroll to top of content grid
949
- const contentGrid = document.getElementById('contentGrid');
950
- if (contentGrid) {
951
- contentGrid.scrollIntoView({ behavior: 'smooth', block: 'start' });
952
- }
953
- }
954
-
955
- // Update pagination controls
956
- updatePagination(paginationHTML) {
957
- // Remove any existing pagination containers from the entire document
958
- const existingPaginations = document.querySelectorAll('.pagination-container');
959
- existingPaginations.forEach(pagination => pagination.remove());
960
-
961
- // Add new pagination if needed
962
- if (this.totalPages > 1 && paginationHTML) {
963
- const contentGrid = document.getElementById('contentGrid');
964
- if (contentGrid) {
965
- contentGrid.insertAdjacentHTML('afterend', paginationHTML);
966
- }
967
- }
968
- }
969
- }
970
-
971
- // Global function for component details is now handled by modal-helpers.js
972
-
973
- // Global function for copying is now handled by utils.js
974
-
975
- // Global function for setting filter (called from onclick)
976
- function setUnifiedFilter(filter) {
977
- if (window.indexManager) {
978
- window.indexManager.setFilter(filter);
979
- }
980
-
981
- // Update filter buttons - remove active from ALL filter buttons
982
- document.querySelectorAll('.component-type-filters .filter-chip').forEach(btn => {
983
- btn.classList.remove('active');
984
- });
985
-
986
- // Add active class only to the clicked filter button
987
- const activeBtn = document.querySelector(`[data-filter="${filter}"]`);
988
- if (activeBtn) {
989
- activeBtn.classList.add('active');
990
- }
991
-
992
- console.log('Component type filter selected:', filter);
993
-
994
- // Show category filters for the selected component type
995
- showCategoryFilters(filter);
996
- }
997
-
998
- // Function to show category filters based on component type
999
- function showCategoryFilters(componentType) {
1000
- const categoryContainer = document.getElementById('componentCategories');
1001
- const categoryChips = document.getElementById('categoryChips');
1002
-
1003
- if (!categoryContainer || !categoryChips) return;
1004
-
1005
- // Get categories from actual component data
1006
- let categories = [];
1007
-
1008
- if (window.dataLoader) {
1009
- const dataLoader = window.dataLoader;
1010
-
1011
- console.log('DataLoader available, getting categories for:', componentType);
1012
- console.log('DataLoader componentsData:', dataLoader.componentsData);
1013
-
1014
- switch(componentType) {
1015
- case 'agents':
1016
- const agents = dataLoader.getComponentsByType('agent');
1017
- console.log('Agents data:', agents);
1018
- categories = getUniqueCategories(agents);
1019
- break;
1020
- case 'commands':
1021
- const commands = dataLoader.getComponentsByType('command');
1022
- console.log('Commands data:', commands);
1023
- categories = getUniqueCategories(commands);
1024
- break;
1025
- case 'settings':
1026
- try {
1027
- categories = dataLoader.getSettingCategories ? dataLoader.getSettingCategories() : getUniqueCategories(dataLoader.getSettings());
1028
- } catch (e) {
1029
- const settings = dataLoader.getComponentsByType('setting') || dataLoader.getSettings();
1030
- categories = getUniqueCategories(settings);
1031
- }
1032
- break;
1033
- case 'hooks':
1034
- try {
1035
- categories = dataLoader.getHookCategories ? dataLoader.getHookCategories() : getUniqueCategories(dataLoader.getHooks());
1036
- } catch (e) {
1037
- const hooks = dataLoader.getComponentsByType('hook') || dataLoader.getHooks();
1038
- categories = getUniqueCategories(hooks);
1039
- }
1040
- break;
1041
- case 'mcps':
1042
- const mcps = dataLoader.getComponentsByType('mcp');
1043
- console.log('MCPs data:', mcps);
1044
- categories = getUniqueCategories(mcps);
1045
- break;
1046
- case 'templates':
1047
- const templates = dataLoader.getComponentsByType('template');
1048
- console.log('Templates data:', templates);
1049
- categories = getUniqueCategories(templates);
1050
- break;
1051
- default:
1052
- categories = [];
1053
- }
1054
-
1055
- console.log('Found categories for', componentType, ':', categories);
1056
- } else {
1057
- console.log('DataLoader not available yet');
1058
- }
1059
-
1060
- // Add "All" option at the beginning
1061
- if (categories.length > 0) {
1062
- categories.unshift('All');
1063
- }
1064
-
1065
- if (categories.length > 0) {
1066
- categoryChips.innerHTML = categories.map((category, index) => {
1067
- const displayName = formatCategoryName(category);
1068
- // Only the first item (All) should be active by default
1069
- const isActive = index === 0 ? 'active' : '';
1070
- return `
1071
- <button class="filter-chip ${isActive}" data-category="${category.toLowerCase()}" onclick="setCategoryFilter('${category.toLowerCase()}')">
1072
- ${displayName}
1073
- </button>
1074
- `;
1075
- }).join('');
1076
-
1077
- categoryContainer.style.display = 'block';
1078
- } else {
1079
- categoryContainer.style.display = 'none';
1080
- }
1081
- }
1082
-
1083
- // Helper function to extract unique categories from component data
1084
- function getUniqueCategories(components) {
1085
- if (!components || !Array.isArray(components)) return [];
1086
-
1087
- const categories = new Set();
1088
- components.forEach(component => {
1089
- if (component.category && component.category.trim() !== '') {
1090
- categories.add(component.category);
1091
- }
1092
- });
1093
-
1094
- return Array.from(categories).sort();
1095
- }
1096
-
1097
- // Helper function to format category names for display
1098
- function formatCategoryName(category) {
1099
- if (category === 'All') return 'All';
1100
-
1101
- // Convert category names to proper case
1102
- return category
1103
- .split(/[-_\s]+/)
1104
- .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
1105
- .join(' ');
1106
- }
1107
-
1108
- // Function to handle category filter selection
1109
- // Enhanced setCategoryFilter function that handles both old and new category systems
1110
- window.setCategoryFilter = function setCategoryFilter(category) {
1111
- console.log('setCategoryFilter called with:', category);
1112
-
1113
- // Handle the new category chips in #categoryChips
1114
- const categoryButtons = document.querySelectorAll('#categoryChips button.filter-chip');
1115
- if (categoryButtons.length > 0) {
1116
- console.log('Found new category buttons:', categoryButtons.length);
1117
-
1118
- categoryButtons.forEach((btn, index) => {
1119
- console.log(`Button ${index}:`, btn.getAttribute('data-category'), 'has active:', btn.classList.contains('active'));
1120
- btn.classList.remove('active');
1121
- });
1122
-
1123
- // Add active class only to the clicked button
1124
- const activeBtn = document.querySelector(`#categoryChips button[data-category="${category}"]`);
1125
- console.log('Target button found:', activeBtn);
1126
-
1127
- if (activeBtn) {
1128
- activeBtn.classList.add('active');
1129
- console.log('Added active class to:', category);
1130
- }
1131
- }
1132
-
1133
- // Also call the existing IndexManager setCategoryFilter method for actual filtering
1134
- if (window.indexManager && window.indexManager.setCategoryFilter) {
1135
- console.log('Calling IndexManager setCategoryFilter with:', category);
1136
- window.indexManager.setCategoryFilter(category);
1137
- }
1138
-
1139
- // Force re-render of the current filter to apply category filtering
1140
- if (window.indexManager && window.indexManager.displayCurrentFilter) {
1141
- console.log('Re-displaying current filter to apply category filter');
1142
- window.indexManager.displayCurrentFilter();
1143
- }
1144
- }
1145
-
1146
- // Test function to debug category filters
1147
- window.testCategoryFilter = function() {
1148
- console.log('=== Category Filter Debug ===');
1149
- const categoryChips = document.getElementById('categoryChips');
1150
- console.log('Category chips container:', categoryChips);
1151
-
1152
- if (categoryChips) {
1153
- const buttons = categoryChips.querySelectorAll('button.filter-chip');
1154
- console.log('Found buttons:', buttons.length);
1155
-
1156
- buttons.forEach((btn, index) => {
1157
- console.log(`Button ${index}:`, {
1158
- category: btn.getAttribute('data-category'),
1159
- hasActive: btn.classList.contains('active'),
1160
- onclick: btn.getAttribute('onclick')
1161
- });
1162
- });
1163
- }
1164
-
1165
- console.log('setCategoryFilter function exists:', typeof window.setCategoryFilter);
1166
- }
1167
-
1168
- // Global helper functions for template cards
1169
- function showInstallationFiles(languageKey, frameworkKey, displayName) {
1170
- console.log('Show installation files for:', displayName);
1171
- // For now, just show a simple alert - could be enhanced later with full modal
1172
- alert(`Installation files for ${displayName} would be shown here.`);
1173
- }
1174
-
1175
- // Global function for template details
1176
- function showTemplateDetails(templateId, templateName, subtype) {
1177
- if (!window.indexManager || !window.indexManager.componentsData) {
1178
- console.error('IndexManager or components data not available');
1179
- return;
1180
- }
1181
-
1182
- // Find the template in the data
1183
- const template = window.indexManager.componentsData.templates.find(t => t.id === templateId);
1184
- if (!template) {
1185
- console.error('Template not found:', templateId);
1186
- return;
1187
- }
1188
-
1189
- // Create modal to show template files
1190
- const modalHTML = `
1191
- <div class="modal-overlay" onclick="closeComponentModal()">
1192
- <div class="modal-content component-modal" onclick="event.stopPropagation()">
1193
- <div class="modal-header">
1194
- <div class="component-modal-title">
1195
- <span class="component-icon">📦</span>
1196
- <h3>${templateName} Template</h3>
1197
- </div>
1198
- <div class="component-type-badge" style="background-color: #f9a825;">TEMPLATE</div>
1199
- <button class="modal-close" onclick="closeComponentModal()">×</button>
1200
- </div>
1201
- <div class="modal-body">
1202
- <div class="component-details">
1203
- <div class="component-description">
1204
- ${template.description}
1205
- </div>
1206
-
1207
- <div class="installation-section">
1208
- <h4>📦 Installation</h4>
1209
- <div class="command-line">
1210
- <code>${template.installCommand}</code>
1211
- <button class="copy-btn" onclick="copyToClipboard('${template.installCommand}')">Copy</button>
1212
- </div>
1213
- </div>
1214
-
1215
- <div class="component-content">
1216
- <h4>📁 Template Files (${template.files ? template.files.length : 0} files)</h4>
1217
- ${template.files && template.files.length > 0 ? `
1218
- <div class="template-files-list">
1219
- ${template.files.map(file => `
1220
- <div class="template-file-item">
1221
- <span class="file-icon">📄</span>
1222
- <span class="file-name">${file}</span>
1223
- </div>
1224
- `).join('')}
1225
- </div>
1226
- ` : '<p>No files listed for this template.</p>'}
1227
- </div>
1228
- </div>
1229
- </div>
1230
- <div class="modal-actions">
1231
- <a href="https://github.com/davila7/claude-code-templates/tree/main/cli-tool/templates/${subtype === 'framework' ? `${template.language}/examples/${templateName}` : templateName}" target="_blank" class="github-folder-link">
1232
- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
1233
- <path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.30.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
1234
- </svg>
1235
- View on GitHub
1236
- </a>
1237
- </div>
1238
- </div>
1239
- </div>
1240
- `;
1241
-
1242
- // Remove existing modal if present
1243
- const existingModal = document.querySelector('.modal-overlay');
1244
- if (existingModal) {
1245
- existingModal.remove();
1246
- }
1247
-
1248
- // Add modal to body
1249
- document.body.insertAdjacentHTML('beforeend', modalHTML);
1250
- }
1251
-
1252
- // Global function for setting category filter (called from onclick)
1253
- // setCategoryFilter function is now defined globally above as window.setCategoryFilter
1254
-
1255
- // Show component contribute modal (copied from script.js)
1256
- function showComponentContributeModal(type) {
1257
- const typeConfig = {
1258
- agents: {
1259
- name: 'Agent',
1260
- description: 'AI specialist that handles specific development tasks',
1261
- example: 'python-testing-specialist',
1262
- structure: '- Agent metadata (name, description, color)\n- Core expertise areas\n- When to use guidelines\n- Code examples and patterns'
1263
- },
1264
- commands: {
1265
- name: 'Command',
1266
- description: 'Custom slash command for Claude Code',
1267
- example: 'optimize-bundle',
1268
- structure: '- Command description and usage\n- Task breakdown\n- Process steps\n- Best practices and examples'
1269
- },
1270
- mcps: {
1271
- name: 'MCP',
1272
- description: 'Model Context Protocol integration',
1273
- example: 'redis-integration',
1274
- structure: '- MCP server configuration\n- Connection parameters\n- Environment variables\n- Usage examples'
1275
- },
1276
- settings: {
1277
- name: 'Setting',
1278
- description: 'Claude Code configuration setting',
1279
- example: 'custom-model-config',
1280
- structure: '- Setting description\n- Configuration options\n- Environment variables\n- Usage examples and best practices'
1281
- },
1282
- hooks: {
1283
- name: 'Hook',
1284
- description: 'Automation hook for tool execution',
1285
- example: 'format-on-save',
1286
- structure: '- Hook description and trigger\n- Command to execute\n- PreToolUse or PostToolUse configuration\n- Error handling and examples'
1287
- },
1288
- templates: {
1289
- name: 'Template',
1290
- description: 'Project template with language or framework setup',
1291
- example: 'python or django-app',
1292
- structure: 'For Languages: Create folder with base files\nFor Frameworks: Add to examples/ subfolder with specific setup'
1293
- }
1294
- };
1295
-
1296
- const config = typeConfig[type];
1297
-
1298
- let modalHTML = '';
1299
-
1300
- if (type === 'templates') {
1301
- // Special modal for templates
1302
- modalHTML = `
1303
- <div class="modal-overlay" onclick="closeComponentModal()">
1304
- <div class="modal-content contribute-modal" onclick="event.stopPropagation()">
1305
- <div class="modal-header">
1306
- <h3>📦 Contribute a New Template</h3>
1307
- <button class="modal-close" onclick="closeComponentModal()">×</button>
1308
- </div>
1309
- <div class="modal-body">
1310
- <div class="contribute-intro">
1311
- <p>Help expand Claude Code by contributing a new project template! Choose between contributing a new <strong>Language</strong> or a <strong>Framework</strong>:</p>
1312
- </div>
1313
-
1314
- <div class="template-types">
1315
- <div class="template-type-section">
1316
- <h3>🏗️ Contributing a New Language</h3>
1317
- <p>Add support for a completely new programming language (e.g., Kotlin, PHP, Swift)</p>
1318
-
1319
- <div class="contribute-steps">
1320
- <div class="contribute-step">
1321
- <div class="step-number-contrib">1</div>
1322
- <div class="step-content-contrib">
1323
- <h4>Create Language Folder</h4>
1324
- <p>Create a new folder in <code>cli-tool/templates/</code> with your language name:</p>
1325
- <div class="step-command">
1326
- <code>mkdir cli-tool/templates/kotlin</code>
1327
- <button class="copy-btn" onclick="copyToClipboard('mkdir cli-tool/templates/kotlin')">Copy</button>
1328
- </div>
1329
- </div>
1330
- </div>
1331
-
1332
- <div class="contribute-step">
1333
- <div class="step-number-contrib">2</div>
1334
- <div class="step-content-contrib">
1335
- <h4>Add Base Files</h4>
1336
- <p>Add the essential files for your language. <strong>Required Claude Code files:</strong></p>
1337
- <div class="claude-files-info">
1338
- <ul>
1339
- <li><code>CLAUDE.md</code> - Project documentation and Claude Code instructions</li>
1340
- <li><code>.mcp.json</code> - MCP server configuration if needed</li>
1341
- <li><code>.claude/</code> - Claude Code configuration folder with agents, commands, and settings</li>
1342
- </ul>
1343
- </div>
1344
- <div class="component-structure">
1345
- <strong>Required structure:</strong>
1346
- <pre>cli-tool/templates/kotlin/
1347
- ├── CLAUDE.md # Claude Code configuration
1348
- ├── .mcp.json # MCP server configuration
1349
- └── .claude/ # Claude Code settings
1350
- ├── agents/ # Language-specific agents
1351
- ├── commands/ # Language-specific commands
1352
- └── settings.json # Claude settings
1353
- </pre>
1354
- </div>
1355
- </div>
1356
- </div>
1357
-
1358
- <div class="contribute-step">
1359
- <div class="step-number-contrib">3</div>
1360
- <div class="step-content-contrib">
1361
- <h4>Create Examples Folder (Optional)</h4>
1362
- <p>If your language has popular frameworks, create an examples folder:</p>
1363
- <div class="step-command">
1364
- <code>mkdir cli-tool/templates/kotlin/examples</code>
1365
- <button class="copy-btn" onclick="copyToClipboard('mkdir cli-tool/templates/kotlin/examples')">Copy</button>
1366
- </div>
1367
- </div>
1368
- </div>
1369
- </div>
1370
- </div>
1371
-
1372
- <div class="template-type-section">
1373
- <h3>⚡ Contributing a Framework</h3>
1374
- <p>Add a framework variation to an existing language (e.g., Spring Boot for Java)</p>
1375
-
1376
- <div class="contribute-steps">
1377
- <div class="contribute-step">
1378
- <div class="step-number-contrib">1</div>
1379
- <div class="step-content-contrib">
1380
- <h4>Choose Existing Language</h4>
1381
- <p>Navigate to an existing language's examples folder:</p>
1382
- <div class="step-command">
1383
- <code>cd cli-tool/templates/javascript-typescript/examples</code>
1384
- <button class="copy-btn" onclick="copyToClipboard('cd cli-tool/templates/javascript-typescript/examples')">Copy</button>
1385
- </div>
1386
- </div>
1387
- </div>
1388
-
1389
- <div class="contribute-step">
1390
- <div class="step-number-contrib">2</div>
1391
- <div class="step-content-contrib">
1392
- <h4>Create Framework Folder</h4>
1393
- <p>Create a folder with your framework name:</p>
1394
- <div class="step-command">
1395
- <code>mkdir nextjs-app</code>
1396
- <button class="copy-btn" onclick="copyToClipboard('mkdir nextjs-app')">Copy</button>
1397
- </div>
1398
- </div>
1399
- </div>
1400
-
1401
- <div class="contribute-step">
1402
- <div class="step-number-contrib">3</div>
1403
- <div class="step-content-contrib">
1404
- <h4>Add Framework Files</h4>
1405
- <p>Add all necessary files for your framework setup. <strong>Required Claude Code files:</strong></p>
1406
- <div class="claude-files-info">
1407
- <ul>
1408
- <li><code>CLAUDE.md</code> - Framework documentation and Claude Code instructions</li>
1409
- <li><code>.mcp.json</code> - MCP server configuration for framework-specific tools</li>
1410
- <li><code>.claude/</code> - Claude Code configuration folder with framework-specific agents and commands</li>
1411
- </ul>
1412
- </div>
1413
- <div class="component-structure">
1414
- <strong>Required structure:</strong>
1415
- <pre>nextjs-app/
1416
- ├── CLAUDE.md # Claude Code configuration
1417
- ├── .mcp.json # MCP server configuration
1418
- └── .claude/ # Claude Code settings
1419
- ├── agents/ # Framework-specific agents
1420
- ├── commands/ # Framework-specific commands
1421
- └── settings.json # Claude settings
1422
- </pre>
1423
- </div>
1424
- </div>
1425
- </div>
1426
- </div>
1427
- </div>
1428
- </div>
1429
-
1430
- <div class="contribute-step">
1431
- <div class="step-number-contrib">4</div>
1432
- <div class="step-content-contrib">
1433
- <h4>Test Your Template</h4>
1434
- <p>Test your template installation:</p>
1435
- <div class="step-command">
1436
- <code>npx claude-code-templates@latest --template=your-template-name --yes</code>
1437
- <button class="copy-btn" onclick="copyToClipboard('npx claude-code-templates@latest --template=your-template-name --yes')">Copy</button>
1438
- </div>
1439
- </div>
1440
- </div>
1441
-
1442
- <div class="contribute-step">
1443
- <div class="step-number-contrib">5</div>
1444
- <div class="step-content-contrib">
1445
- <h4>Submit Pull Request</h4>
1446
- <p>Submit your template contribution:</p>
1447
- <div class="step-command">
1448
- <code>git add cli-tool/templates/</code>
1449
- <button class="copy-btn" onclick="copyToClipboard('git add cli-tool/templates/')">Copy</button>
1450
- </div>
1451
- <div class="step-command">
1452
- <code>git commit -m "feat: Add [language/framework] template"</code>
1453
- <button class="copy-btn" onclick="copyToClipboard('git commit -m \\"feat: Add [language/framework] template\\"')">Copy</button>
1454
- </div>
1455
- </div>
1456
- </div>
1457
-
1458
- <div class="contribute-footer">
1459
- <div class="help-section">
1460
- <h4>Need Help?</h4>
1461
- <p>Check <a href="https://github.com/davila7/claude-code-templates/tree/main/cli-tool/templates" target="_blank">existing templates</a> for examples or open an issue on GitHub for guidance.</p>
1462
- </div>
1463
- </div>
1464
- </div>
1465
- </div>
1466
- </div>
1467
- `;
1468
- } else {
1469
- // Default modal for other component types
1470
- modalHTML = `
1471
- <div class="modal-overlay" onclick="closeComponentModal()">
1472
- <div class="modal-content contribute-modal" onclick="event.stopPropagation()">
1473
- <div class="modal-header">
1474
- <h3>📝 Contribute a New ${config.name}</h3>
1475
- <button class="modal-close" onclick="closeComponentModal()">×</button>
1476
- </div>
1477
- <div class="modal-body">
1478
- <div class="contribute-intro">
1479
- <p>Help expand Claude Code by contributing a new ${config.name.toLowerCase()}! Follow these steps:</p>
1480
- </div>
1481
-
1482
- <div class="contribute-steps">
1483
- <div class="contribute-step">
1484
- <div class="step-number-contrib">1</div>
1485
- <div class="step-content-contrib">
1486
- <h4>Create Your ${config.name}</h4>
1487
- <p>Add your ${config.name.toLowerCase()} to: <code>cli-tool/components/${type}/</code></p>
1488
- <div class="component-structure">
1489
- <strong>Structure should include:</strong>
1490
- <pre>${config.structure}</pre>
1491
- </div>
1492
- <div class="step-command">
1493
- <strong>Example filename:</strong> <code>${config.example}.${(type === 'mcps' || type === 'settings' || type === 'hooks') ? 'json' : 'md'}</code>
1494
- </div>
1495
- </div>
1496
- </div>
1497
-
1498
- <div class="contribute-step">
1499
- <div class="step-number-contrib">2</div>
1500
- <div class="step-content-contrib">
1501
- <h4>Follow the Pattern</h4>
1502
- <p>Check existing ${type} in the repository to understand the structure and conventions.</p>
1503
- <div class="step-command">
1504
- <a href="https://github.com/davila7/claude-code-templates/tree/main/cli-tool/components/${type}" target="_blank" class="github-folder-link">
1505
- 📁 View existing ${type}
1506
- </a>
1507
- </div>
1508
- </div>
1509
- </div>
1510
-
1511
- <div class="contribute-step">
1512
- <div class="step-number-contrib">3</div>
1513
- <div class="step-content-contrib">
1514
- <h4>Test Your Component</h4>
1515
- <p>Ensure your ${config.name.toLowerCase()} works correctly with Claude Code.</p>
1516
- <div class="step-command">
1517
- <code>cd cli-tool && npm test</code>
1518
- <button class="copy-btn" onclick="copyToClipboard('cd cli-tool && npm test')">Copy</button>
1519
- </div>
1520
- </div>
1521
- </div>
1522
-
1523
- <div class="contribute-step">
1524
- <div class="step-number-contrib">4</div>
1525
- <div class="step-content-contrib">
1526
- <h4>Submit Pull Request</h4>
1527
- <p>Submit your contribution with proper documentation:</p>
1528
- <div class="step-command">
1529
- <code>git add cli-tool/components/${type}/${config.example}.${(type === 'mcps' || type === 'settings' || type === 'hooks') ? 'json' : 'md'}</code>
1530
- <button class="copy-btn" onclick="copyToClipboard('git add cli-tool/components/${type}/${config.example}.${(type === 'mcps' || type === 'settings' || type === 'hooks') ? 'json' : 'md'}')">Copy</button>
1531
- </div>
1532
- <div class="step-command">
1533
- <code>git commit -m "feat: Add ${config.example} ${config.name.toLowerCase()}"</code>
1534
- <button class="copy-btn" onclick="copyToClipboard('git commit -m \\"feat: Add ${config.example} ${config.name.toLowerCase()}\\"')">Copy</button>
1535
- </div>
1536
- </div>
1537
- </div>
1538
- </div>
1539
-
1540
- <div class="contribute-footer">
1541
- <div class="help-section">
1542
- <h4>Need Help?</h4>
1543
- <p>Check existing ${type} for examples or open an issue on GitHub for guidance.</p>
1544
- </div>
1545
- </div>
1546
- </div>
1547
- </div>
1548
- </div>
1549
- `;
1550
- }
1551
-
1552
- // Remove existing modal if present
1553
- const existingModal = document.querySelector('.modal-overlay');
1554
- if (existingModal) {
1555
- existingModal.remove();
1556
- }
1557
-
1558
- // Add modal to body
1559
- document.body.insertAdjacentHTML('beforeend', modalHTML);
1560
-
1561
- // Add event listener for ESC key
1562
- const handleEscape = (e) => {
1563
- if (e.key === 'Escape') {
1564
- closeComponentModal();
1565
- document.removeEventListener('keydown', handleEscape);
1566
- }
1567
- };
1568
- document.addEventListener('keydown', handleEscape);
1569
- }
1570
-
1571
- // Global functions for templates functionality
1572
- function showInstallationFiles(languageKey, frameworkKey, displayName) {
1573
- alert(`Installation files for ${displayName} would be shown here`);
1574
- }
1575
-
1576
- // Close modal (from script.js)
1577
- function closeModal() {
1578
- const modal = document.querySelector('.modal');
1579
- if (modal) {
1580
- modal.remove();
1581
- }
1582
- }
1583
-
1584
- // Close component modal
1585
- function closeComponentModal() {
1586
- const modalOverlay = document.querySelector('.modal-overlay');
1587
- if (modalOverlay) {
1588
- modalOverlay.remove();
1589
- }
1590
- }
1591
-
1592
- // Global pagination function (called from onclick)
1593
- function goToPage(page) {
1594
- if (window.indexManager) {
1595
- window.indexManager.goToPage(page);
1596
- }
1597
- }
1598
-
1599
- // Handle Add to Cart button click
1600
- function handleAddToCart(name, path, type, category, buttonElement) {
1601
- // Prevent event propagation to avoid card flip
1602
- if (window.event) {
1603
- window.event.stopPropagation();
1604
- }
1605
-
1606
- const item = {
1607
- name: name,
1608
- path: path,
1609
- category: category,
1610
- description: `${name} - ${category}`
1611
- };
1612
-
1613
- // Add to cart using the cart manager
1614
- const success = addToCart(item, type);
1615
-
1616
- if (success) {
1617
- // Update button state
1618
- buttonElement.classList.add('added');
1619
- buttonElement.innerHTML = `
1620
- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
1621
- <path d="M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"/>
1622
- </svg>
1623
- Added to Stack
1624
- `;
1625
-
1626
- // Show a brief animation
1627
- buttonElement.style.transform = 'scale(0.95)';
1628
- setTimeout(() => {
1629
- buttonElement.style.transform = 'scale(1)';
1630
- }, 150);
1631
-
1632
- // Show notification (the cart manager already handles this, but we can add extra visual feedback)
1633
- console.log(`✅ ${name} added to stack successfully!`);
1634
- }
1635
- }
1636
-
1637
- // Initialize when DOM is ready
1638
- document.addEventListener('DOMContentLoaded', () => {
1639
- window.indexManager = new IndexPageManager();
1640
- window.indexManager.init();
1641
-
1642
- // Initialize category filters for default selection (agents)
1643
- // Wait for components to load, then show categories
1644
- const initCategories = () => {
1645
- if (window.dataLoader && window.dataLoader.componentsData) {
1646
- showCategoryFilters('agents');
1647
- } else {
1648
- setTimeout(initCategories, 200);
1649
- }
1650
- };
1651
-
1652
- setTimeout(initCategories, 100);
1653
-
1654
- // Focus search input on page load and setup terminal cursor
1655
- setTimeout(() => {
1656
- const searchInput = document.getElementById('searchInput');
1657
- if (searchInput) {
1658
- searchInput.focus();
1659
- setupTerminalCursor();
1660
- }
1661
- }, 300); // Small delay to ensure DOM is fully loaded
1662
- });
1663
-
1664
- // Terminal cursor functionality
1665
- function setupTerminalCursor() {
1666
- const searchInput = document.getElementById('searchInput');
1667
- const cursor = document.getElementById('terminalCursor');
1668
-
1669
- if (!searchInput || !cursor) return;
1670
-
1671
- function updateCursorPosition() {
1672
- const promptWidth = 26; // Width of ">" prompt + extra space
1673
-
1674
- // If input has text, position cursor at the end of the text
1675
- if (searchInput.value.length > 0) {
1676
- // Create a temporary span to measure text width
1677
- const temp = document.createElement('span');
1678
- temp.style.visibility = 'hidden';
1679
- temp.style.position = 'absolute';
1680
- temp.style.whiteSpace = 'pre';
1681
- temp.style.font = window.getComputedStyle(searchInput).font;
1682
- temp.textContent = searchInput.value;
1683
-
1684
- document.body.appendChild(temp);
1685
- const textWidth = temp.getBoundingClientRect().width;
1686
- document.body.removeChild(temp);
1687
-
1688
- cursor.style.left = `${promptWidth + textWidth + 2}px`;
1689
- } else {
1690
- // If input is empty, position cursor right after the prompt with space
1691
- cursor.style.left = `${promptWidth}px`;
1692
- }
1693
- }
1694
-
1695
- // Update cursor position on input
1696
- searchInput.addEventListener('input', updateCursorPosition);
1697
- searchInput.addEventListener('focus', () => {
1698
- cursor.style.display = 'block';
1699
- updateCursorPosition();
1700
- });
1701
- searchInput.addEventListener('blur', () => {
1702
- cursor.style.display = 'none';
1703
- });
1704
-
1705
- // Initial position
1706
- updateCursorPosition();
1707
- }