claude-code-templates 1.21.13 → 1.22.1

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