claude-code-templates 1.21.12 → 1.21.14

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