claude-code-templates 1.21.11 → 1.21.13

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 (797) 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 +56 -0
  10. package/.env.example +26 -0
  11. package/.github/WORKFLOWS_REFERENCE.md +88 -0
  12. package/.github/workflows/deploy-docusaurus.yml +31 -0
  13. package/.github/workflows/deploy.yml +33 -0
  14. package/.github/workflows/publish-package.yml +125 -0
  15. package/.mcp.json +4 -0
  16. package/AGENTS.md +4 -0
  17. package/CLAUDE.md +482 -0
  18. package/CLAUDE_JOBS_README.md +148 -0
  19. package/CODE_OF_CONDUCT.md +82 -0
  20. package/CONTRIBUTING.md +505 -0
  21. package/DEPLOYMENT.md +60 -0
  22. package/LICENSE +21 -0
  23. package/README.md +77 -79
  24. package/ROADMAP.md +278 -0
  25. package/SECURITY.md +65 -0
  26. package/api/index.html +1 -0
  27. package/api/package.json +7 -0
  28. package/api/track-download-supabase.js +150 -0
  29. package/cli-tool/Makefile +102 -0
  30. package/cli-tool/README.md +126 -0
  31. package/cli-tool/TESTING.md +262 -0
  32. package/cli-tool/components/agents/ai-specialists/ai-ethics-advisor.md +195 -0
  33. package/cli-tool/components/agents/ai-specialists/hackathon-ai-strategist.md +46 -0
  34. package/cli-tool/components/agents/ai-specialists/llms-maintainer.md +94 -0
  35. package/cli-tool/components/agents/ai-specialists/model-evaluator.md +150 -0
  36. package/cli-tool/components/agents/ai-specialists/prompt-engineer.md +112 -0
  37. package/cli-tool/components/agents/ai-specialists/search-specialist.md +59 -0
  38. package/cli-tool/components/agents/ai-specialists/task-decomposition-expert.md +97 -0
  39. package/cli-tool/components/agents/api-graphql/graphql-architect.md +208 -0
  40. package/cli-tool/components/agents/api-graphql/graphql-performance-optimizer.md +357 -0
  41. package/cli-tool/components/agents/api-graphql/graphql-security-specialist.md +519 -0
  42. package/cli-tool/components/agents/blockchain-web3/smart-contract-auditor.md +32 -0
  43. package/cli-tool/components/agents/blockchain-web3/smart-contract-specialist.md +32 -0
  44. package/cli-tool/components/agents/blockchain-web3/web3-integration-specialist.md +32 -0
  45. package/cli-tool/components/agents/business-marketing/business-analyst.md +194 -0
  46. package/cli-tool/components/agents/business-marketing/content-marketer.md +36 -0
  47. package/cli-tool/components/agents/business-marketing/customer-support.md +36 -0
  48. package/cli-tool/components/agents/business-marketing/legal-advisor.md +50 -0
  49. package/cli-tool/components/agents/business-marketing/marketing-attribution-analyst.md +352 -0
  50. package/cli-tool/components/agents/business-marketing/payment-integration.md +33 -0
  51. package/cli-tool/components/agents/business-marketing/product-strategist.md +212 -0
  52. package/cli-tool/components/agents/business-marketing/risk-manager.md +42 -0
  53. package/cli-tool/components/agents/business-marketing/sales-automator.md +36 -0
  54. package/cli-tool/components/agents/data-ai/ai-engineer.md +33 -0
  55. package/cli-tool/components/agents/data-ai/computer-vision-engineer.md +562 -0
  56. package/cli-tool/components/agents/data-ai/data-engineer.md +33 -0
  57. package/cli-tool/components/agents/data-ai/data-scientist.md +337 -0
  58. package/cli-tool/components/agents/data-ai/ml-engineer.md +33 -0
  59. package/cli-tool/components/agents/data-ai/mlops-engineer.md +58 -0
  60. package/cli-tool/components/agents/data-ai/nlp-engineer.md +680 -0
  61. package/cli-tool/components/agents/data-ai/quant-analyst.md +33 -0
  62. package/cli-tool/components/agents/database/database-admin.md +33 -0
  63. package/cli-tool/components/agents/database/database-architect.md +590 -0
  64. package/cli-tool/components/agents/database/database-optimization.md +33 -0
  65. package/cli-tool/components/agents/database/database-optimizer.md +33 -0
  66. package/cli-tool/components/agents/database/neon-auth-specialist.md +175 -0
  67. package/cli-tool/components/agents/database/neon-database-architect.md +141 -0
  68. package/cli-tool/components/agents/database/neon-expert.md +846 -0
  69. package/cli-tool/components/agents/database/nosql-specialist.md +708 -0
  70. package/cli-tool/components/agents/database/supabase-schema-architect.md +138 -0
  71. package/cli-tool/components/agents/deep-research-team/academic-researcher.md +33 -0
  72. package/cli-tool/components/agents/deep-research-team/agent-overview.md +235 -0
  73. package/cli-tool/components/agents/deep-research-team/competitive-intelligence-analyst.md +530 -0
  74. package/cli-tool/components/agents/deep-research-team/data-analyst.md +112 -0
  75. package/cli-tool/components/agents/deep-research-team/fact-checker.md +553 -0
  76. package/cli-tool/components/agents/deep-research-team/query-clarifier.md +73 -0
  77. package/cli-tool/components/agents/deep-research-team/report-generator.md +108 -0
  78. package/cli-tool/components/agents/deep-research-team/research-brief-generator.md +108 -0
  79. package/cli-tool/components/agents/deep-research-team/research-coordinator.md +94 -0
  80. package/cli-tool/components/agents/deep-research-team/research-orchestrator.md +119 -0
  81. package/cli-tool/components/agents/deep-research-team/research-synthesizer.md +109 -0
  82. package/cli-tool/components/agents/deep-research-team/technical-researcher.md +95 -0
  83. package/cli-tool/components/agents/development-team/backend-architect.md +31 -0
  84. package/cli-tool/components/agents/development-team/cli-ui-designer.md +405 -0
  85. package/cli-tool/components/agents/development-team/devops-engineer.md +886 -0
  86. package/cli-tool/components/agents/development-team/frontend-developer.md +32 -0
  87. package/cli-tool/components/agents/development-team/fullstack-developer.md +1205 -0
  88. package/cli-tool/components/agents/development-team/ios-developer.md +36 -0
  89. package/cli-tool/components/agents/development-team/mobile-developer.md +33 -0
  90. package/cli-tool/components/agents/development-team/ui-ux-designer.md +36 -0
  91. package/cli-tool/components/agents/development-tools/code-reviewer.md +30 -0
  92. package/cli-tool/components/agents/development-tools/command-expert.md +422 -0
  93. package/cli-tool/components/agents/development-tools/context-manager.md +65 -0
  94. package/cli-tool/components/agents/development-tools/debugger.md +31 -0
  95. package/cli-tool/components/agents/development-tools/dx-optimizer.md +64 -0
  96. package/cli-tool/components/agents/development-tools/error-detective.md +33 -0
  97. package/cli-tool/components/agents/development-tools/mcp-expert.md +259 -0
  98. package/cli-tool/components/agents/development-tools/performance-profiler.md +799 -0
  99. package/cli-tool/components/agents/development-tools/test-engineer.md +936 -0
  100. package/cli-tool/components/agents/devops-infrastructure/cloud-architect.md +33 -0
  101. package/cli-tool/components/agents/devops-infrastructure/deployment-engineer.md +33 -0
  102. package/cli-tool/components/agents/devops-infrastructure/devops-troubleshooter.md +33 -0
  103. package/cli-tool/components/agents/devops-infrastructure/monitoring-specialist.md +36 -0
  104. package/cli-tool/components/agents/devops-infrastructure/network-engineer.md +33 -0
  105. package/cli-tool/components/agents/devops-infrastructure/security-engineer.md +971 -0
  106. package/cli-tool/components/agents/devops-infrastructure/terraform-specialist.md +36 -0
  107. package/cli-tool/components/agents/devops-infrastructure/vercel-deployment-specialist.md +357 -0
  108. package/cli-tool/components/agents/documentation/api-documenter.md +33 -0
  109. package/cli-tool/components/agents/documentation/changelog-generator.md +37 -0
  110. package/cli-tool/components/agents/documentation/docusaurus-expert.md +175 -0
  111. package/cli-tool/components/agents/documentation/technical-writer.md +37 -0
  112. package/cli-tool/components/agents/expert-advisors/agent-expert.md +491 -0
  113. package/cli-tool/components/agents/expert-advisors/architect-review.md +50 -0
  114. package/cli-tool/components/agents/expert-advisors/dependency-manager.md +45 -0
  115. package/cli-tool/components/agents/expert-advisors/documentation-expert.md +47 -0
  116. package/cli-tool/components/agents/ffmpeg-clip-team/audio-mixer.md +37 -0
  117. package/cli-tool/components/agents/ffmpeg-clip-team/audio-quality-controller.md +100 -0
  118. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-content-analyzer.md +60 -0
  119. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-metadata-specialist.md +46 -0
  120. package/cli-tool/components/agents/ffmpeg-clip-team/podcast-transcriber.md +68 -0
  121. package/cli-tool/components/agents/ffmpeg-clip-team/social-media-clip-creator.md +69 -0
  122. package/cli-tool/components/agents/ffmpeg-clip-team/timestamp-precision-specialist.md +98 -0
  123. package/cli-tool/components/agents/ffmpeg-clip-team/video-editor.md +37 -0
  124. package/cli-tool/components/agents/game-development/3d-artist.md +37 -0
  125. package/cli-tool/components/agents/game-development/game-designer.md +37 -0
  126. package/cli-tool/components/agents/game-development/unity-game-developer.md +110 -0
  127. package/cli-tool/components/agents/game-development/unreal-engine-developer.md +128 -0
  128. package/cli-tool/components/agents/git/git-flow-manager.md +329 -0
  129. package/cli-tool/components/agents/mcp-dev-team/mcp-deployment-orchestrator.md +101 -0
  130. package/cli-tool/components/agents/mcp-dev-team/mcp-integration-engineer.md +37 -0
  131. package/cli-tool/components/agents/mcp-dev-team/mcp-protocol-specialist.md +37 -0
  132. package/cli-tool/components/agents/mcp-dev-team/mcp-registry-navigator.md +112 -0
  133. package/cli-tool/components/agents/mcp-dev-team/mcp-security-auditor.md +70 -0
  134. package/cli-tool/components/agents/mcp-dev-team/mcp-server-architect.md +74 -0
  135. package/cli-tool/components/agents/mcp-dev-team/mcp-testing-engineer.md +106 -0
  136. package/cli-tool/components/agents/modernization/architecture-modernizer.md +37 -0
  137. package/cli-tool/components/agents/modernization/cloud-migration-specialist.md +37 -0
  138. package/cli-tool/components/agents/modernization/legacy-modernizer.md +33 -0
  139. package/cli-tool/components/agents/obsidian-ops-team/Scripts/daily_notes_connector.py +306 -0
  140. package/cli-tool/components/agents/obsidian-ops-team/Scripts/enhance_tag_standardizer.py +343 -0
  141. package/cli-tool/components/agents/obsidian-ops-team/Scripts/find_keyword_connections.py +216 -0
  142. package/cli-tool/components/agents/obsidian-ops-team/Scripts/fix_quoted_tags.py +82 -0
  143. package/cli-tool/components/agents/obsidian-ops-team/Scripts/implement_entity_connections.py +195 -0
  144. package/cli-tool/components/agents/obsidian-ops-team/Scripts/link_suggester.py +301 -0
  145. package/cli-tool/components/agents/obsidian-ops-team/Scripts/metadata_adder.py +197 -0
  146. package/cli-tool/components/agents/obsidian-ops-team/Scripts/moc_generator.py +296 -0
  147. package/cli-tool/components/agents/obsidian-ops-team/Scripts/parse_keyword_connections.py +122 -0
  148. package/cli-tool/components/agents/obsidian-ops-team/Scripts/tag_standardizer.py +387 -0
  149. package/cli-tool/components/agents/obsidian-ops-team/connection-agent.md +67 -0
  150. package/cli-tool/components/agents/obsidian-ops-team/content-curator.md +81 -0
  151. package/cli-tool/components/agents/obsidian-ops-team/metadata-agent.md +51 -0
  152. package/cli-tool/components/agents/obsidian-ops-team/moc-agent.md +112 -0
  153. package/cli-tool/components/agents/obsidian-ops-team/review-agent.md +94 -0
  154. package/cli-tool/components/agents/obsidian-ops-team/tag-agent.md +92 -0
  155. package/cli-tool/components/agents/obsidian-ops-team/vault-optimizer.md +76 -0
  156. package/cli-tool/components/agents/ocr-extraction-team/document-structure-analyzer.md +37 -0
  157. package/cli-tool/components/agents/ocr-extraction-team/markdown-syntax-formatter.md +58 -0
  158. package/cli-tool/components/agents/ocr-extraction-team/ocr-grammar-fixer.md +36 -0
  159. package/cli-tool/components/agents/ocr-extraction-team/ocr-preprocessing-optimizer.md +37 -0
  160. package/cli-tool/components/agents/ocr-extraction-team/ocr-quality-assurance.md +62 -0
  161. package/cli-tool/components/agents/ocr-extraction-team/text-comparison-validator.md +60 -0
  162. package/cli-tool/components/agents/ocr-extraction-team/visual-analysis-ocr.md +52 -0
  163. package/cli-tool/components/agents/performance-testing/load-testing-specialist.md +37 -0
  164. package/cli-tool/components/agents/performance-testing/performance-engineer.md +33 -0
  165. package/cli-tool/components/agents/performance-testing/react-performance-optimization.md +65 -0
  166. package/cli-tool/components/agents/performance-testing/test-automator.md +33 -0
  167. package/cli-tool/components/agents/performance-testing/web-vitals-optimizer.md +37 -0
  168. package/cli-tool/components/agents/podcast-creator-team/academic-research-synthesizer.md +61 -0
  169. package/cli-tool/components/agents/podcast-creator-team/comprehensive-researcher.md +49 -0
  170. package/cli-tool/components/agents/podcast-creator-team/episode-orchestrator.md +52 -0
  171. package/cli-tool/components/agents/podcast-creator-team/guest-outreach-coordinator.md +37 -0
  172. package/cli-tool/components/agents/podcast-creator-team/market-research-analyst.md +54 -0
  173. package/cli-tool/components/agents/podcast-creator-team/podcast-editor.md +37 -0
  174. package/cli-tool/components/agents/podcast-creator-team/podcast-trend-scout.md +60 -0
  175. package/cli-tool/components/agents/podcast-creator-team/project-supervisor-orchestrator.md +48 -0
  176. package/cli-tool/components/agents/podcast-creator-team/seo-podcast-optimizer.md +58 -0
  177. package/cli-tool/components/agents/podcast-creator-team/social-media-copywriter.md +57 -0
  178. package/cli-tool/components/agents/podcast-creator-team/twitter-ai-influencer-manager.md +62 -0
  179. package/cli-tool/components/agents/programming-languages/c-pro.md +36 -0
  180. package/cli-tool/components/agents/programming-languages/c-sharp-pro.md +40 -0
  181. package/cli-tool/components/agents/programming-languages/cpp-pro.md +39 -0
  182. package/cli-tool/components/agents/programming-languages/golang-pro.md +33 -0
  183. package/cli-tool/components/agents/programming-languages/javascript-pro.md +36 -0
  184. package/cli-tool/components/agents/programming-languages/php-pro.md +44 -0
  185. package/cli-tool/components/agents/programming-languages/python-pro.md +33 -0
  186. package/cli-tool/components/agents/programming-languages/rust-pro.md +36 -0
  187. package/cli-tool/components/agents/programming-languages/shell-scripting-pro.md +38 -0
  188. package/cli-tool/components/agents/programming-languages/sql-pro.md +36 -0
  189. package/cli-tool/components/agents/programming-languages/typescript-pro.md +38 -0
  190. package/cli-tool/components/agents/realtime/supabase-realtime-optimizer.md +193 -0
  191. package/cli-tool/components/agents/security/api-security-audit.md +93 -0
  192. package/cli-tool/components/agents/security/compliance-specialist.md +37 -0
  193. package/cli-tool/components/agents/security/incident-responder.md +75 -0
  194. package/cli-tool/components/agents/security/penetration-tester.md +37 -0
  195. package/cli-tool/components/agents/security/security-auditor.md +33 -0
  196. package/cli-tool/components/agents/web-tools/nextjs-architecture-expert.md +194 -0
  197. package/cli-tool/components/agents/web-tools/react-performance-optimizer.md +425 -0
  198. package/cli-tool/components/agents/web-tools/seo-analyzer.md +37 -0
  199. package/cli-tool/components/agents/web-tools/url-context-validator.md +61 -0
  200. package/cli-tool/components/agents/web-tools/url-link-extractor.md +59 -0
  201. package/cli-tool/components/agents/web-tools/web-accessibility-checker.md +37 -0
  202. package/cli-tool/components/commands/automation/act.md +57 -0
  203. package/cli-tool/components/commands/automation/ci-pipeline.md +378 -0
  204. package/cli-tool/components/commands/automation/husky.md +130 -0
  205. package/cli-tool/components/commands/automation/workflow-orchestrator.md +576 -0
  206. package/cli-tool/components/commands/database/supabase-backup-manager.md +37 -0
  207. package/cli-tool/components/commands/database/supabase-data-explorer.md +37 -0
  208. package/cli-tool/components/commands/database/supabase-migration-assistant.md +37 -0
  209. package/cli-tool/components/commands/database/supabase-performance-optimizer.md +37 -0
  210. package/cli-tool/components/commands/database/supabase-realtime-monitor.md +37 -0
  211. package/cli-tool/components/commands/database/supabase-schema-sync.md +37 -0
  212. package/cli-tool/components/commands/database/supabase-security-audit.md +37 -0
  213. package/cli-tool/components/commands/database/supabase-type-generator.md +37 -0
  214. package/cli-tool/components/commands/deployment/add-changelog.md +92 -0
  215. package/cli-tool/components/commands/deployment/blue-green-deployment.md +824 -0
  216. package/cli-tool/components/commands/deployment/changelog-demo-command.md +43 -0
  217. package/cli-tool/components/commands/deployment/ci-setup.md +323 -0
  218. package/cli-tool/components/commands/deployment/containerize-application.md +93 -0
  219. package/cli-tool/components/commands/deployment/deployment-monitoring.md +1228 -0
  220. package/cli-tool/components/commands/deployment/hotfix-deploy.md +283 -0
  221. package/cli-tool/components/commands/deployment/prepare-release.md +357 -0
  222. package/cli-tool/components/commands/deployment/rollback-deploy.md +145 -0
  223. package/cli-tool/components/commands/deployment/setup-automated-releases.md +143 -0
  224. package/cli-tool/components/commands/deployment/setup-kubernetes-deployment.md +93 -0
  225. package/cli-tool/components/commands/documentation/create-architecture-documentation.md +95 -0
  226. package/cli-tool/components/commands/documentation/create-onboarding-guide.md +93 -0
  227. package/cli-tool/components/commands/documentation/doc-api.md +242 -0
  228. package/cli-tool/components/commands/documentation/docs-maintenance.md +119 -0
  229. package/cli-tool/components/commands/documentation/generate-api-documentation.md +97 -0
  230. package/cli-tool/components/commands/documentation/interactive-documentation.md +133 -0
  231. package/cli-tool/components/commands/documentation/load-llms-txt.md +39 -0
  232. package/cli-tool/components/commands/documentation/migration-guide.md +250 -0
  233. package/cli-tool/components/commands/documentation/troubleshooting-guide.md +370 -0
  234. package/cli-tool/components/commands/documentation/update-docs.md +107 -0
  235. package/cli-tool/components/commands/game-development/game-analytics-integration.md +128 -0
  236. package/cli-tool/components/commands/game-development/game-asset-pipeline.md +108 -0
  237. package/cli-tool/components/commands/game-development/game-performance-profiler.md +78 -0
  238. package/cli-tool/components/commands/game-development/game-testing-framework.md +112 -0
  239. package/cli-tool/components/commands/game-development/unity-project-setup.md +190 -0
  240. package/cli-tool/components/commands/git/feature.md +196 -0
  241. package/cli-tool/components/commands/git/finish.md +528 -0
  242. package/cli-tool/components/commands/git/flow-status.md +438 -0
  243. package/cli-tool/components/commands/git/hotfix.md +456 -0
  244. package/cli-tool/components/commands/git/release.md +381 -0
  245. package/cli-tool/components/commands/git-workflow/branch-cleanup.md +181 -0
  246. package/cli-tool/components/commands/git-workflow/commit.md +167 -0
  247. package/cli-tool/components/commands/git-workflow/create-pr.md +19 -0
  248. package/cli-tool/components/commands/git-workflow/create-pull-request.md +126 -0
  249. package/cli-tool/components/commands/git-workflow/create-worktrees.md +174 -0
  250. package/cli-tool/components/commands/git-workflow/fix-github-issue.md +13 -0
  251. package/cli-tool/components/commands/git-workflow/git-bisect-helper.md +261 -0
  252. package/cli-tool/components/commands/git-workflow/pr-review.md +76 -0
  253. package/cli-tool/components/commands/git-workflow/update-branch-name.md +9 -0
  254. package/cli-tool/components/commands/nextjs-vercel/nextjs-api-tester.md +480 -0
  255. package/cli-tool/components/commands/nextjs-vercel/nextjs-bundle-analyzer.md +406 -0
  256. package/cli-tool/components/commands/nextjs-vercel/nextjs-component-generator.md +489 -0
  257. package/cli-tool/components/commands/nextjs-vercel/nextjs-middleware-creator.md +712 -0
  258. package/cli-tool/components/commands/nextjs-vercel/nextjs-migration-helper.md +778 -0
  259. package/cli-tool/components/commands/nextjs-vercel/nextjs-performance-audit.md +653 -0
  260. package/cli-tool/components/commands/nextjs-vercel/nextjs-scaffold.md +237 -0
  261. package/cli-tool/components/commands/nextjs-vercel/vercel-deploy-optimize.md +341 -0
  262. package/cli-tool/components/commands/nextjs-vercel/vercel-edge-function.md +810 -0
  263. package/cli-tool/components/commands/nextjs-vercel/vercel-env-sync.md +666 -0
  264. package/cli-tool/components/commands/orchestration/archive.md +414 -0
  265. package/cli-tool/components/commands/orchestration/commit.md +305 -0
  266. package/cli-tool/components/commands/orchestration/find.md +272 -0
  267. package/cli-tool/components/commands/orchestration/log.md +355 -0
  268. package/cli-tool/components/commands/orchestration/move.md +220 -0
  269. package/cli-tool/components/commands/orchestration/optimize.md +375 -0
  270. package/cli-tool/components/commands/orchestration/remove.md +301 -0
  271. package/cli-tool/components/commands/orchestration/report.md +292 -0
  272. package/cli-tool/components/commands/orchestration/resume.md +256 -0
  273. package/cli-tool/components/commands/orchestration/start.md +169 -0
  274. package/cli-tool/components/commands/orchestration/status.md +219 -0
  275. package/cli-tool/components/commands/orchestration/sync.md +294 -0
  276. package/cli-tool/components/commands/performance/add-performance-monitoring.md +84 -0
  277. package/cli-tool/components/commands/performance/implement-caching-strategy.md +84 -0
  278. package/cli-tool/components/commands/performance/optimize-api-performance.md +119 -0
  279. package/cli-tool/components/commands/performance/optimize-build.md +139 -0
  280. package/cli-tool/components/commands/performance/optimize-bundle-size.md +84 -0
  281. package/cli-tool/components/commands/performance/optimize-database-performance.md +84 -0
  282. package/cli-tool/components/commands/performance/optimize-memory-usage.md +91 -0
  283. package/cli-tool/components/commands/performance/performance-audit.md +89 -0
  284. package/cli-tool/components/commands/performance/setup-cdn-optimization.md +84 -0
  285. package/cli-tool/components/commands/performance/system-behavior-simulator.md +415 -0
  286. package/cli-tool/components/commands/project-management/add-package.md +90 -0
  287. package/cli-tool/components/commands/project-management/add-to-changelog.md +37 -0
  288. package/cli-tool/components/commands/project-management/create-feature.md +130 -0
  289. package/cli-tool/components/commands/project-management/create-jtbd.md +37 -0
  290. package/cli-tool/components/commands/project-management/create-prd.md +36 -0
  291. package/cli-tool/components/commands/project-management/create-prp.md +37 -0
  292. package/cli-tool/components/commands/project-management/init-project.md +80 -0
  293. package/cli-tool/components/commands/project-management/milestone-tracker.md +44 -0
  294. package/cli-tool/components/commands/project-management/pac-configure.md +32 -0
  295. package/cli-tool/components/commands/project-management/pac-create-epic.md +41 -0
  296. package/cli-tool/components/commands/project-management/pac-create-ticket.md +42 -0
  297. package/cli-tool/components/commands/project-management/pac-update-status.md +39 -0
  298. package/cli-tool/components/commands/project-management/pac-validate.md +35 -0
  299. package/cli-tool/components/commands/project-management/project-health-check.md +58 -0
  300. package/cli-tool/components/commands/project-management/project-timeline-simulator.md +37 -0
  301. package/cli-tool/components/commands/project-management/project-to-linear.md +38 -0
  302. package/cli-tool/components/commands/project-management/release.md +31 -0
  303. package/cli-tool/components/commands/project-management/todo.md +62 -0
  304. package/cli-tool/components/commands/security/add-authentication-system.md +34 -0
  305. package/cli-tool/components/commands/security/dependency-audit.md +32 -0
  306. package/cli-tool/components/commands/security/penetration-test.md +40 -0
  307. package/cli-tool/components/commands/security/secrets-scanner.md +39 -0
  308. package/cli-tool/components/commands/security/security-audit.md +82 -0
  309. package/cli-tool/components/commands/security/security-hardening.md +33 -0
  310. package/cli-tool/components/commands/setup/create-database-migrations.md +35 -0
  311. package/cli-tool/components/commands/setup/design-database-schema.md +37 -0
  312. package/cli-tool/components/commands/setup/design-rest-api.md +37 -0
  313. package/cli-tool/components/commands/setup/implement-graphql-api.md +37 -0
  314. package/cli-tool/components/commands/setup/migrate-to-typescript.md +37 -0
  315. package/cli-tool/components/commands/setup/setup-ci-cd-pipeline.md +37 -0
  316. package/cli-tool/components/commands/setup/setup-development-environment.md +37 -0
  317. package/cli-tool/components/commands/setup/setup-docker-containers.md +37 -0
  318. package/cli-tool/components/commands/setup/setup-formatting.md +37 -0
  319. package/cli-tool/components/commands/setup/setup-linting.md +37 -0
  320. package/cli-tool/components/commands/setup/setup-monitoring-observability.md +37 -0
  321. package/cli-tool/components/commands/setup/setup-monorepo.md +37 -0
  322. package/cli-tool/components/commands/setup/setup-rate-limiting.md +37 -0
  323. package/cli-tool/components/commands/setup/update-dependencies.md +35 -0
  324. package/cli-tool/components/commands/simulation/business-scenario-explorer.md +37 -0
  325. package/cli-tool/components/commands/simulation/constraint-modeler.md +37 -0
  326. package/cli-tool/components/commands/simulation/decision-tree-explorer.md +37 -0
  327. package/cli-tool/components/commands/simulation/digital-twin-creator.md +37 -0
  328. package/cli-tool/components/commands/simulation/future-scenario-generator.md +37 -0
  329. package/cli-tool/components/commands/simulation/market-response-modeler.md +37 -0
  330. package/cli-tool/components/commands/simulation/monte-carlo-simulator.md +37 -0
  331. package/cli-tool/components/commands/simulation/simulation-calibrator.md +37 -0
  332. package/cli-tool/components/commands/simulation/system-dynamics-modeler.md +37 -0
  333. package/cli-tool/components/commands/simulation/timeline-compressor.md +37 -0
  334. package/cli-tool/components/commands/svelte/svelte:a11y.md +105 -0
  335. package/cli-tool/components/commands/svelte/svelte:component.md +81 -0
  336. package/cli-tool/components/commands/svelte/svelte:debug.md +48 -0
  337. package/cli-tool/components/commands/svelte/svelte:migrate.md +79 -0
  338. package/cli-tool/components/commands/svelte/svelte:optimize.md +99 -0
  339. package/cli-tool/components/commands/svelte/svelte:scaffold.md +89 -0
  340. package/cli-tool/components/commands/svelte/svelte:storybook-migrate.md +204 -0
  341. package/cli-tool/components/commands/svelte/svelte:storybook-mock.md +213 -0
  342. package/cli-tool/components/commands/svelte/svelte:storybook-setup.md +113 -0
  343. package/cli-tool/components/commands/svelte/svelte:storybook-story.md +145 -0
  344. package/cli-tool/components/commands/svelte/svelte:storybook-troubleshoot.md +191 -0
  345. package/cli-tool/components/commands/svelte/svelte:storybook.md +48 -0
  346. package/cli-tool/components/commands/svelte/svelte:test-coverage.md +77 -0
  347. package/cli-tool/components/commands/svelte/svelte:test-fix.md +74 -0
  348. package/cli-tool/components/commands/svelte/svelte:test-setup.md +85 -0
  349. package/cli-tool/components/commands/svelte/svelte:test.md +60 -0
  350. package/cli-tool/components/commands/sync/bidirectional-sync.md +37 -0
  351. package/cli-tool/components/commands/sync/bulk-import-issues.md +37 -0
  352. package/cli-tool/components/commands/sync/cross-reference-manager.md +37 -0
  353. package/cli-tool/components/commands/sync/issue-to-linear-task.md +37 -0
  354. package/cli-tool/components/commands/sync/linear-task-to-issue.md +37 -0
  355. package/cli-tool/components/commands/sync/sync-automation-setup.md +37 -0
  356. package/cli-tool/components/commands/sync/sync-conflict-resolver.md +37 -0
  357. package/cli-tool/components/commands/sync/sync-health-monitor.md +37 -0
  358. package/cli-tool/components/commands/sync/sync-issues-to-linear.md +37 -0
  359. package/cli-tool/components/commands/sync/sync-linear-to-issues.md +37 -0
  360. package/cli-tool/components/commands/sync/sync-migration-assistant.md +37 -0
  361. package/cli-tool/components/commands/sync/sync-pr-to-task.md +37 -0
  362. package/cli-tool/components/commands/sync/sync-status.md +391 -0
  363. package/cli-tool/components/commands/sync/task-from-pr.md +37 -0
  364. package/cli-tool/components/commands/team/architecture-review.md +37 -0
  365. package/cli-tool/components/commands/team/decision-quality-analyzer.md +37 -0
  366. package/cli-tool/components/commands/team/dependency-mapper.md +37 -0
  367. package/cli-tool/components/commands/team/estimate-assistant.md +37 -0
  368. package/cli-tool/components/commands/team/issue-triage.md +37 -0
  369. package/cli-tool/components/commands/team/memory-spring-cleaning.md +37 -0
  370. package/cli-tool/components/commands/team/migration-assistant.md +37 -0
  371. package/cli-tool/components/commands/team/retrospective-analyzer.md +37 -0
  372. package/cli-tool/components/commands/team/session-learning-capture.md +37 -0
  373. package/cli-tool/components/commands/team/sprint-planning.md +189 -0
  374. package/cli-tool/components/commands/team/standup-report.md +37 -0
  375. package/cli-tool/components/commands/team/team-knowledge-mapper.md +37 -0
  376. package/cli-tool/components/commands/team/team-velocity-tracker.md +37 -0
  377. package/cli-tool/components/commands/team/team-workload-balancer.md +37 -0
  378. package/cli-tool/components/commands/testing/add-mutation-testing.md +37 -0
  379. package/cli-tool/components/commands/testing/add-property-based-testing.md +37 -0
  380. package/cli-tool/components/commands/testing/e2e-setup.md +37 -0
  381. package/cli-tool/components/commands/testing/generate-test-cases.md +37 -0
  382. package/cli-tool/components/commands/testing/generate-tests.md +82 -0
  383. package/cli-tool/components/commands/testing/setup-comprehensive-testing.md +37 -0
  384. package/cli-tool/components/commands/testing/setup-load-testing.md +37 -0
  385. package/cli-tool/components/commands/testing/setup-visual-testing.md +37 -0
  386. package/cli-tool/components/commands/testing/test-automation-orchestrator.md +37 -0
  387. package/cli-tool/components/commands/testing/test-changelog-automation.md +37 -0
  388. package/cli-tool/components/commands/testing/test-coverage.md +37 -0
  389. package/cli-tool/components/commands/testing/test-quality-analyzer.md +37 -0
  390. package/cli-tool/components/commands/testing/testing_plan_integration.md +37 -0
  391. package/cli-tool/components/commands/testing/write-tests.md +37 -0
  392. package/cli-tool/components/commands/utilities/all-tools.md +31 -0
  393. package/cli-tool/components/commands/utilities/architecture-scenario-explorer.md +375 -0
  394. package/cli-tool/components/commands/utilities/check-file.md +53 -0
  395. package/cli-tool/components/commands/utilities/clean-branches.md +243 -0
  396. package/cli-tool/components/commands/utilities/clean.md +1 -0
  397. package/cli-tool/components/commands/utilities/code-permutation-tester.md +341 -0
  398. package/cli-tool/components/commands/utilities/code-review.md +70 -0
  399. package/cli-tool/components/commands/utilities/code-to-task.md +583 -0
  400. package/cli-tool/components/commands/utilities/context-prime.md +1 -0
  401. package/cli-tool/components/commands/utilities/debug-error.md +121 -0
  402. package/cli-tool/components/commands/utilities/directory-deep-dive.md +34 -0
  403. package/cli-tool/components/commands/utilities/explain-code.md +194 -0
  404. package/cli-tool/components/commands/utilities/fix-issue.md +85 -0
  405. package/cli-tool/components/commands/utilities/generate-linear-worklog.md +113 -0
  406. package/cli-tool/components/commands/utilities/git-status.md +39 -0
  407. package/cli-tool/components/commands/utilities/initref.md +3 -0
  408. package/cli-tool/components/commands/utilities/prime.md +41 -0
  409. package/cli-tool/components/commands/utilities/refactor-code.md +116 -0
  410. package/cli-tool/components/commands/utilities/ultra-think.md +153 -0
  411. package/cli-tool/components/hooks/HOOK_PATTERNS_COMPRESSED.json +1 -0
  412. package/cli-tool/components/hooks/automation/agents-md-loader.json +17 -0
  413. package/cli-tool/components/hooks/automation/build-on-change.json +16 -0
  414. package/cli-tool/components/hooks/automation/dependency-checker.json +16 -0
  415. package/cli-tool/components/hooks/automation/deployment-health-monitor.json +29 -0
  416. package/cli-tool/components/hooks/automation/discord-detailed-notifications.json +26 -0
  417. package/cli-tool/components/hooks/automation/discord-error-notifications.json +37 -0
  418. package/cli-tool/components/hooks/automation/discord-notifications.json +25 -0
  419. package/cli-tool/components/hooks/automation/simple-notifications.json +16 -0
  420. package/cli-tool/components/hooks/automation/slack-detailed-notifications.json +26 -0
  421. package/cli-tool/components/hooks/automation/slack-error-notifications.json +37 -0
  422. package/cli-tool/components/hooks/automation/slack-notifications.json +25 -0
  423. package/cli-tool/components/hooks/automation/telegram-detailed-notifications.json +26 -0
  424. package/cli-tool/components/hooks/automation/telegram-error-notifications.json +37 -0
  425. package/cli-tool/components/hooks/automation/telegram-notifications.json +25 -0
  426. package/cli-tool/components/hooks/automation/vercel-auto-deploy.json +17 -0
  427. package/cli-tool/components/hooks/automation/vercel-environment-sync.json +29 -0
  428. package/cli-tool/components/hooks/development-tools/change-tracker.json +25 -0
  429. package/cli-tool/components/hooks/development-tools/command-logger.json +16 -0
  430. package/cli-tool/components/hooks/development-tools/file-backup.json +16 -0
  431. package/cli-tool/components/hooks/development-tools/lint-on-save.json +16 -0
  432. package/cli-tool/components/hooks/development-tools/nextjs-code-quality-enforcer.json +17 -0
  433. package/cli-tool/components/hooks/development-tools/smart-formatting.json +16 -0
  434. package/cli-tool/components/hooks/git/conventional-commits.json +16 -0
  435. package/cli-tool/components/hooks/git/conventional-commits.py +84 -0
  436. package/cli-tool/components/hooks/git/prevent-direct-push.json +16 -0
  437. package/cli-tool/components/hooks/git/prevent-direct-push.py +86 -0
  438. package/cli-tool/components/hooks/git/validate-branch-name.json +16 -0
  439. package/cli-tool/components/hooks/git/validate-branch-name.py +96 -0
  440. package/cli-tool/components/hooks/git-workflow/auto-git-add.json +16 -0
  441. package/cli-tool/components/hooks/git-workflow/smart-commit.json +25 -0
  442. package/cli-tool/components/hooks/performance/performance-budget-guard.json +27 -0
  443. package/cli-tool/components/hooks/performance/performance-monitor.json +27 -0
  444. package/cli-tool/components/hooks/post-tool/format-javascript-files.json +16 -0
  445. package/cli-tool/components/hooks/post-tool/format-python-files.json +16 -0
  446. package/cli-tool/components/hooks/post-tool/git-add-changes.json +25 -0
  447. package/cli-tool/components/hooks/post-tool/run-tests-after-changes.json +16 -0
  448. package/cli-tool/components/hooks/pre-tool/backup-before-edit.json +16 -0
  449. package/cli-tool/components/hooks/pre-tool/notify-before-bash.json +16 -0
  450. package/cli-tool/components/hooks/pre-tool/update-search-year.json +17 -0
  451. package/cli-tool/components/hooks/security/file-protection.json +16 -0
  452. package/cli-tool/components/hooks/security/security-scanner.json +16 -0
  453. package/cli-tool/components/hooks/testing/test-runner.json +16 -0
  454. package/cli-tool/components/mcps/browser_automation/browser-use-mcp-server.json +20 -0
  455. package/cli-tool/components/mcps/browser_automation/browsermcp.json +9 -0
  456. package/cli-tool/components/mcps/browser_automation/mcp-server-browserbase.json +14 -0
  457. package/cli-tool/components/mcps/browser_automation/mcp-server-playwright.json +9 -0
  458. package/cli-tool/components/mcps/browser_automation/playwright-mcp-server.json +9 -0
  459. package/cli-tool/components/mcps/browser_automation/playwright-mcp.json +11 -0
  460. package/cli-tool/components/mcps/database/mysql-integration.json +12 -0
  461. package/cli-tool/components/mcps/database/neon.json +9 -0
  462. package/cli-tool/components/mcps/database/postgresql-integration.json +12 -0
  463. package/cli-tool/components/mcps/database/supabase.json +17 -0
  464. package/cli-tool/components/mcps/deepgraph/deepgraph-nextjs.json +13 -0
  465. package/cli-tool/components/mcps/deepgraph/deepgraph-react.json +13 -0
  466. package/cli-tool/components/mcps/deepgraph/deepgraph-typescript.json +13 -0
  467. package/cli-tool/components/mcps/deepgraph/deepgraph-vue.json +13 -0
  468. package/cli-tool/components/mcps/devtools/azure-kubernetes-service.json +11 -0
  469. package/cli-tool/components/mcps/devtools/box.json +14 -0
  470. package/cli-tool/components/mcps/devtools/circleci.json +13 -0
  471. package/cli-tool/components/mcps/devtools/codacy.json +12 -0
  472. package/cli-tool/components/mcps/devtools/context7.json +9 -0
  473. package/cli-tool/components/mcps/devtools/dynatrace.json +13 -0
  474. package/cli-tool/components/mcps/devtools/elasticsearch.json +18 -0
  475. package/cli-tool/components/mcps/devtools/figma-dev-mode.json +8 -0
  476. package/cli-tool/components/mcps/devtools/firecrawl.json +12 -0
  477. package/cli-tool/components/mcps/devtools/firefly-mcp.json +13 -0
  478. package/cli-tool/components/mcps/devtools/huggingface.json +11 -0
  479. package/cli-tool/components/mcps/devtools/imagesorcery.json +11 -0
  480. package/cli-tool/components/mcps/devtools/ios-simulator-mcp.json +9 -0
  481. package/cli-tool/components/mcps/devtools/jfrog.json +8 -0
  482. package/cli-tool/components/mcps/devtools/just-mcp.json +9 -0
  483. package/cli-tool/components/mcps/devtools/launchdarkly.json +12 -0
  484. package/cli-tool/components/mcps/devtools/leetcode.json +8 -0
  485. package/cli-tool/components/mcps/devtools/logfire.json +9 -0
  486. package/cli-tool/components/mcps/devtools/markitdown.json +14 -0
  487. package/cli-tool/components/mcps/devtools/mcp-server-atlassian-bitbucket.json +9 -0
  488. package/cli-tool/components/mcps/devtools/mcp-server-trello.json +12 -0
  489. package/cli-tool/components/mcps/devtools/microsoft-clarity.json +11 -0
  490. package/cli-tool/components/mcps/devtools/microsoft-dev-box.json +9 -0
  491. package/cli-tool/components/mcps/devtools/mongodb.json +12 -0
  492. package/cli-tool/components/mcps/devtools/postman.json +12 -0
  493. package/cli-tool/components/mcps/devtools/sentry.json +8 -0
  494. package/cli-tool/components/mcps/devtools/serena.json +9 -0
  495. package/cli-tool/components/mcps/devtools/stripe.json +12 -0
  496. package/cli-tool/components/mcps/devtools/terraform.json +14 -0
  497. package/cli-tool/components/mcps/devtools/webflow.json +8 -0
  498. package/cli-tool/components/mcps/filesystem/filesystem-access.json +13 -0
  499. package/cli-tool/components/mcps/integration/github-integration.json +12 -0
  500. package/cli-tool/components/mcps/integration/memory-integration.json +9 -0
  501. package/cli-tool/components/mcps/marketing/facebook-ads-mcp-server.json +13 -0
  502. package/cli-tool/components/mcps/marketing/google-ads-mcp-server.json +11 -0
  503. package/cli-tool/components/mcps/productivity/monday.json +14 -0
  504. package/cli-tool/components/mcps/productivity/notion.json +12 -0
  505. package/cli-tool/components/mcps/web/web-fetch.json +9 -0
  506. package/cli-tool/components/settings/api/bedrock-configuration.json +7 -0
  507. package/cli-tool/components/settings/api/corporate-proxy.json +7 -0
  508. package/cli-tool/components/settings/api/custom-headers.json +6 -0
  509. package/cli-tool/components/settings/api/vertex-configuration.json +17 -0
  510. package/cli-tool/components/settings/authentication/api-key-helper.json +7 -0
  511. package/cli-tool/components/settings/authentication/force-claudeai-login.json +4 -0
  512. package/cli-tool/components/settings/authentication/force-console-login.json +4 -0
  513. package/cli-tool/components/settings/cleanup/retention-7-days.json +4 -0
  514. package/cli-tool/components/settings/cleanup/retention-90-days.json +4 -0
  515. package/cli-tool/components/settings/environment/bash-timeouts.json +8 -0
  516. package/cli-tool/components/settings/environment/development-utils.json +8 -0
  517. package/cli-tool/components/settings/environment/performance-optimization.json +8 -0
  518. package/cli-tool/components/settings/environment/privacy-focused.json +10 -0
  519. package/cli-tool/components/settings/git/git-flow-settings.json +79 -0
  520. package/cli-tool/components/settings/global/aws-credentials.json +5 -0
  521. package/cli-tool/components/settings/global/custom-model.json +7 -0
  522. package/cli-tool/components/settings/global/git-commit-settings.json +4 -0
  523. package/cli-tool/components/settings/mcp/disable-risky-servers.json +8 -0
  524. package/cli-tool/components/settings/mcp/enable-all-project-servers.json +4 -0
  525. package/cli-tool/components/settings/mcp/enable-specific-servers.json +8 -0
  526. package/cli-tool/components/settings/mcp/mcp-timeouts.json +8 -0
  527. package/cli-tool/components/settings/model/use-haiku.json +4 -0
  528. package/cli-tool/components/settings/model/use-sonnet.json +4 -0
  529. package/cli-tool/components/settings/permissions/additional-directories.json +11 -0
  530. package/cli-tool/components/settings/permissions/allow-git-operations.json +14 -0
  531. package/cli-tool/components/settings/permissions/allow-npm-commands.json +11 -0
  532. package/cli-tool/components/settings/permissions/deny-sensitive-files.json +11 -0
  533. package/cli-tool/components/settings/permissions/development-mode.json +31 -0
  534. package/cli-tool/components/settings/permissions/read-only-mode.json +18 -0
  535. package/cli-tool/components/settings/statusline/asset-pipeline-controller-statusline.json +7 -0
  536. package/cli-tool/components/settings/statusline/bug-circus-statusline.json +7 -0
  537. package/cli-tool/components/settings/statusline/code-casino-statusline.json +7 -0
  538. package/cli-tool/components/settings/statusline/code-spaceship-statusline.json +7 -0
  539. package/cli-tool/components/settings/statusline/colorful-statusline.json +7 -0
  540. package/cli-tool/components/settings/statusline/command-statusline.json +8 -0
  541. package/cli-tool/components/settings/statusline/context-monitor.json +7 -0
  542. package/cli-tool/components/settings/statusline/context-monitor.py +236 -0
  543. package/cli-tool/components/settings/statusline/data-ocean-statusline.json +7 -0
  544. package/cli-tool/components/settings/statusline/emotion-theater-statusline.json +7 -0
  545. package/cli-tool/components/settings/statusline/game-performance-monitor-statusline.json +7 -0
  546. package/cli-tool/components/settings/statusline/git-branch-statusline.json +7 -0
  547. package/cli-tool/components/settings/statusline/git-flow-status.json +7 -0
  548. package/cli-tool/components/settings/statusline/minimal-statusline.json +7 -0
  549. package/cli-tool/components/settings/statusline/multiplatform-build-status-statusline.json +7 -0
  550. package/cli-tool/components/settings/statusline/neon-database-dev.json +7 -0
  551. package/cli-tool/components/settings/statusline/neon-database-resources.json +7 -0
  552. package/cli-tool/components/settings/statusline/productivity-rainbow-statusline.json +7 -0
  553. package/cli-tool/components/settings/statusline/programmer-tamagotchi-statusline.json +7 -0
  554. package/cli-tool/components/settings/statusline/programming-fitness-tracker-statusline.json +7 -0
  555. package/cli-tool/components/settings/statusline/project-info-statusline.json +7 -0
  556. package/cli-tool/components/settings/statusline/rpg-status-bar-statusline.json +7 -0
  557. package/cli-tool/components/settings/statusline/time-statusline.json +7 -0
  558. package/cli-tool/components/settings/statusline/unity-project-dashboard-statusline.json +7 -0
  559. package/cli-tool/components/settings/statusline/vercel-deployment-monitor.json +7 -0
  560. package/cli-tool/components/settings/statusline/vercel-error-alert-system.json +7 -0
  561. package/cli-tool/components/settings/statusline/vercel-multi-env-status.json +7 -0
  562. package/cli-tool/components/settings/statusline/virtual-code-garden-statusline.json +7 -0
  563. package/cli-tool/components/settings/statusline/zero-config-deployment-monitor.json +7 -0
  564. package/cli-tool/components/settings/telemetry/custom-telemetry.json +7 -0
  565. package/cli-tool/components/settings/telemetry/disable-telemetry.json +6 -0
  566. package/cli-tool/components/settings/telemetry/enable-telemetry.json +6 -0
  567. package/cli-tool/docs_to_claude/ANALYTICS_STATE_DETECTION.md +183 -0
  568. package/cli-tool/docs_to_claude/ARCHITECTURE.md +472 -0
  569. package/cli-tool/docs_to_claude/BLOG_WRITING_GUIDE.md +438 -0
  570. package/cli-tool/docs_to_claude/CLAUDE_DATA_STRUCTURE.md +400 -0
  571. package/cli-tool/docs_to_claude/COMMANDS_GUIDE.md +1035 -0
  572. package/cli-tool/docs_to_claude/CONVERSATION_STATE_IMPROVEMENTS.md +154 -0
  573. package/cli-tool/docs_to_claude/DEBUG_TYPING_DETECTION.md +95 -0
  574. package/cli-tool/docs_to_claude/DOWNLOAD_TRACKING.md +291 -0
  575. package/cli-tool/docs_to_claude/ENHANCED_STATE_DETECTION.md +122 -0
  576. package/cli-tool/docs_to_claude/HEALTH_CHECK_IMPLEMENTATION.md +135 -0
  577. package/cli-tool/docs_to_claude/HOOKS_GUIDE.md +1249 -0
  578. package/cli-tool/docs_to_claude/STATUSLINE_GUIDE.md +1123 -0
  579. package/cli-tool/docs_to_claude/SUBAGENTS_GUIDE.md +566 -0
  580. package/cli-tool/docs_to_claude/SUB_AGENTS.md +329 -0
  581. package/cli-tool/jest.config.js +84 -0
  582. package/cli-tool/package-lock.json +5471 -0
  583. package/cli-tool/package.json +96 -0
  584. package/{src → cli-tool/src}/index.js +41 -1
  585. package/cli-tool/templates/common/.claude/commands/git-workflow.md +239 -0
  586. package/cli-tool/templates/common/.claude/commands/project-setup.md +316 -0
  587. package/cli-tool/templates/common/.mcp.json +41 -0
  588. package/cli-tool/templates/common/CLAUDE.md +109 -0
  589. package/cli-tool/templates/common/README.md +96 -0
  590. package/cli-tool/templates/go/.mcp.json +78 -0
  591. package/cli-tool/templates/go/README.md +25 -0
  592. package/cli-tool/templates/javascript-typescript/.claude/commands/api-endpoint.md +51 -0
  593. package/cli-tool/templates/javascript-typescript/.claude/commands/debug.md +52 -0
  594. package/cli-tool/templates/javascript-typescript/.claude/commands/lint.md +48 -0
  595. package/cli-tool/templates/javascript-typescript/.claude/commands/npm-scripts.md +48 -0
  596. package/cli-tool/templates/javascript-typescript/.claude/commands/refactor.md +55 -0
  597. package/cli-tool/templates/javascript-typescript/.claude/commands/test.md +61 -0
  598. package/cli-tool/templates/javascript-typescript/.claude/commands/typescript-migrate.md +51 -0
  599. package/cli-tool/templates/javascript-typescript/.claude/settings.json +142 -0
  600. package/cli-tool/templates/javascript-typescript/.mcp.json +80 -0
  601. package/cli-tool/templates/javascript-typescript/CLAUDE.md +185 -0
  602. package/cli-tool/templates/javascript-typescript/README.md +259 -0
  603. package/cli-tool/templates/javascript-typescript/examples/angular-app/.claude/commands/components.md +63 -0
  604. package/cli-tool/templates/javascript-typescript/examples/angular-app/.claude/commands/services.md +62 -0
  605. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/api-endpoint.md +46 -0
  606. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/database.md +56 -0
  607. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/middleware.md +61 -0
  608. package/cli-tool/templates/javascript-typescript/examples/node-api/.claude/commands/route.md +57 -0
  609. package/cli-tool/templates/javascript-typescript/examples/node-api/CLAUDE.md +102 -0
  610. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/component.md +29 -0
  611. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/hooks.md +44 -0
  612. package/cli-tool/templates/javascript-typescript/examples/react-app/.claude/commands/state-management.md +45 -0
  613. package/cli-tool/templates/javascript-typescript/examples/react-app/CLAUDE.md +81 -0
  614. package/cli-tool/templates/javascript-typescript/examples/react-app/agents/react-performance-optimization.md +530 -0
  615. package/cli-tool/templates/javascript-typescript/examples/react-app/agents/react-state-management.md +295 -0
  616. package/cli-tool/templates/javascript-typescript/examples/vue-app/.claude/commands/components.md +46 -0
  617. package/cli-tool/templates/javascript-typescript/examples/vue-app/.claude/commands/composables.md +51 -0
  618. package/cli-tool/templates/python/.claude/commands/lint.md +111 -0
  619. package/cli-tool/templates/python/.claude/commands/test.md +73 -0
  620. package/cli-tool/templates/python/.claude/settings.json +153 -0
  621. package/cli-tool/templates/python/.mcp.json +78 -0
  622. package/cli-tool/templates/python/CLAUDE.md +276 -0
  623. package/cli-tool/templates/python/examples/django-app/.claude/commands/admin.md +264 -0
  624. package/cli-tool/templates/python/examples/django-app/.claude/commands/django-model.md +124 -0
  625. package/cli-tool/templates/python/examples/django-app/.claude/commands/views.md +222 -0
  626. package/cli-tool/templates/python/examples/django-app/CLAUDE.md +313 -0
  627. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/api-endpoints.md +513 -0
  628. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/auth.md +775 -0
  629. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/database.md +657 -0
  630. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/deployment.md +160 -0
  631. package/cli-tool/templates/python/examples/fastapi-app/.claude/commands/testing.md +927 -0
  632. package/cli-tool/templates/python/examples/fastapi-app/CLAUDE.md +229 -0
  633. package/cli-tool/templates/python/examples/flask-app/.claude/commands/app-factory.md +384 -0
  634. package/cli-tool/templates/python/examples/flask-app/.claude/commands/blueprint.md +243 -0
  635. package/cli-tool/templates/python/examples/flask-app/.claude/commands/database.md +410 -0
  636. package/cli-tool/templates/python/examples/flask-app/.claude/commands/deployment.md +620 -0
  637. package/cli-tool/templates/python/examples/flask-app/.claude/commands/flask-route.md +217 -0
  638. package/cli-tool/templates/python/examples/flask-app/.claude/commands/testing.md +559 -0
  639. package/cli-tool/templates/python/examples/flask-app/CLAUDE.md +391 -0
  640. package/cli-tool/templates/ruby/.claude/commands/model.md +360 -0
  641. package/cli-tool/templates/ruby/.claude/commands/test.md +480 -0
  642. package/cli-tool/templates/ruby/.claude/settings.json +146 -0
  643. package/cli-tool/templates/ruby/.mcp.json +83 -0
  644. package/cli-tool/templates/ruby/CLAUDE.md +284 -0
  645. package/cli-tool/templates/ruby/examples/rails-app/.claude/commands/authentication.md +490 -0
  646. package/cli-tool/templates/ruby/examples/rails-app/CLAUDE.md +376 -0
  647. package/cli-tool/templates/rust/.mcp.json +78 -0
  648. package/cli-tool/templates/rust/README.md +26 -0
  649. package/cli-tool/test-commands.sh +85 -0
  650. package/cli-tool/test-detailed.sh +267 -0
  651. package/dev-server.js +46 -0
  652. package/docs/CNAME +1 -0
  653. package/docs/README.md +49 -0
  654. package/docs/_config.yml +43 -0
  655. package/docs/api/agents.json +942 -0
  656. package/docs/blog/assets/aitmpl-nextjs-search.png +0 -0
  657. package/docs/blog/assets/aitmpl-supabase-search.png +0 -0
  658. package/docs/blog/assets/e2b-claude-code-sandbox-cover.png +0 -0
  659. package/docs/blog/assets/nextjs-vercel-claude-code-templates-cover.png +0 -0
  660. package/docs/blog/assets/supabase-claude-code-templates-cover.png +0 -0
  661. package/docs/blog/e2b-claude-code-sandbox/index.html +908 -0
  662. package/docs/blog/index.html +274 -0
  663. package/docs/blog/nextjs-vercel-claude-code-integration/index.html +1032 -0
  664. package/docs/blog/supabase-claude-code-integration/index.html +848 -0
  665. package/docs/claude-jobs.json +163 -0
  666. package/docs/component.html +506 -0
  667. package/docs/components-metadata.json +303 -0
  668. package/docs/components.json +4952 -0
  669. package/docs/css/blog.css +821 -0
  670. package/docs/css/component-page.css +1063 -0
  671. package/docs/css/stack-page.css +776 -0
  672. package/docs/css/styles.css +4540 -0
  673. package/docs/css/trending.css +1441 -0
  674. package/docs/css/workflows-modal.css +739 -0
  675. package/docs/css/workflows.css +1234 -0
  676. package/docs/download-stats.html +527 -0
  677. package/docs/index.html +627 -0
  678. package/docs/jobs.html +1059 -0
  679. package/docs/js/carousel.js +177 -0
  680. package/docs/js/cart-manager.js +658 -0
  681. package/docs/js/component-page.js +808 -0
  682. package/docs/js/data-loader.js +633 -0
  683. package/docs/js/generate-search-data.js +82 -0
  684. package/docs/js/index-events.js +1812 -0
  685. package/docs/js/modal-helpers.js +345 -0
  686. package/docs/js/script.js +2167 -0
  687. package/docs/js/search-functionality.js +1165 -0
  688. package/docs/js/stack-router.js +561 -0
  689. package/docs/js/trending.js +752 -0
  690. package/docs/js/utils.js +43 -0
  691. package/docs/js/workflows-events.js +1146 -0
  692. package/docs/js/workflows.js +627 -0
  693. package/docs/robots.txt +28 -0
  694. package/docs/sandbox-interface.html +1418 -0
  695. package/docs/sitemap.xml +193 -0
  696. package/docs/static/img/logo.png +0 -0
  697. package/docs/static/img/logo.svg +23 -0
  698. package/docs/trending-data.json +885 -0
  699. package/docs/trending.html +238 -0
  700. package/docs/vercel.json +36 -0
  701. package/docs/workflows.html +391 -0
  702. package/docu/README.md +41 -0
  703. package/docu/docs/cli-options.md +90 -0
  704. package/docu/docs/components/agents.md +113 -0
  705. package/docu/docs/components/commands.md +90 -0
  706. package/docu/docs/components/hooks.md +114 -0
  707. package/docu/docs/components/mcps.md +109 -0
  708. package/docu/docs/components/overview.md +73 -0
  709. package/docu/docs/components/settings.md +105 -0
  710. package/docu/docs/components/templates.md +119 -0
  711. package/docu/docs/intro.md +40 -0
  712. package/docu/docs/safety-features.md +13 -0
  713. package/docu/docs/support.md +13 -0
  714. package/docu/docs/tools/analytics.md +23 -0
  715. package/docu/docs/tools/chats.md +33 -0
  716. package/docu/docs/tools/health-check.md +60 -0
  717. package/docu/docs/tools/overview.md +39 -0
  718. package/docu/docs/tools/sandbox.md +61 -0
  719. package/docu/docs/tools/tunnel.md +38 -0
  720. package/docu/docusaurus.config.ts +169 -0
  721. package/docu/package-lock.json +16185 -0
  722. package/docu/package.json +47 -0
  723. package/docu/sidebars.ts +49 -0
  724. package/docu/src/components/HomepageFeatures/index.tsx +82 -0
  725. package/docu/src/components/HomepageFeatures/styles.module.css +131 -0
  726. package/docu/src/css/custom.css +849 -0
  727. package/docu/src/pages/index.module.css +111 -0
  728. package/docu/src/pages/index.tsx +65 -0
  729. package/docu/src/pages/markdown-page.md +7 -0
  730. package/docu/static/img/favicon.ico +0 -0
  731. package/docu/static/img/logo.svg +23 -0
  732. package/docu/tsconfig.json +8 -0
  733. package/docu/vercel.json +11 -0
  734. package/generate_agents_api.py +65 -0
  735. package/generate_claude_jobs.py +985 -0
  736. package/generate_components_json.py +391 -0
  737. package/package.json +21 -74
  738. package/social-preview.png +0 -0
  739. package/test_serpapi.py +36 -0
  740. package/vercel.json +111 -0
  741. /package/{bin → cli-tool/bin}/create-claude-config.js +0 -0
  742. /package/{components → cli-tool/components}/sandbox/README.md +0 -0
  743. /package/{components → cli-tool/components}/sandbox/e2b/.env.example +0 -0
  744. /package/{components → cli-tool/components}/sandbox/e2b/SANDBOX_DEBUGGING.md +0 -0
  745. /package/{components → cli-tool/components}/sandbox/e2b/claude-code-sandbox.md +0 -0
  746. /package/{components → cli-tool/components}/sandbox/e2b/e2b-launcher.py +0 -0
  747. /package/{components → cli-tool/components}/sandbox/e2b/e2b-monitor.py +0 -0
  748. /package/{components → cli-tool/components}/sandbox/e2b/requirements.txt +0 -0
  749. /package/{src → cli-tool/src}/agents.js +0 -0
  750. /package/{src → cli-tool/src}/analytics/core/AgentAnalyzer.js +0 -0
  751. /package/{src → cli-tool/src}/analytics/core/ConversationAnalyzer.js +0 -0
  752. /package/{src → cli-tool/src}/analytics/core/FileWatcher.js +0 -0
  753. /package/{src → cli-tool/src}/analytics/core/ProcessDetector.js +0 -0
  754. /package/{src → cli-tool/src}/analytics/core/SessionAnalyzer.js +0 -0
  755. /package/{src → cli-tool/src}/analytics/core/StateCalculator.js +0 -0
  756. /package/{src → cli-tool/src}/analytics/data/DataCache.js +0 -0
  757. /package/{src → cli-tool/src}/analytics/notifications/NotificationManager.js +0 -0
  758. /package/{src → cli-tool/src}/analytics/notifications/WebSocketServer.js +0 -0
  759. /package/{src → cli-tool/src}/analytics/utils/PerformanceMonitor.js +0 -0
  760. /package/{src → cli-tool/src}/analytics-web/FRONT_ARCHITECTURE.md +0 -0
  761. /package/{src → cli-tool/src}/analytics-web/assets/js/main.js.deprecated +0 -0
  762. /package/{src → cli-tool/src}/analytics-web/chats_mobile.html +0 -0
  763. /package/{src → cli-tool/src}/analytics-web/components/ActivityHeatmap.js +0 -0
  764. /package/{src → cli-tool/src}/analytics-web/components/AgentAnalytics.js +0 -0
  765. /package/{src → cli-tool/src}/analytics-web/components/App.js +0 -0
  766. /package/{src → cli-tool/src}/analytics-web/components/Charts.js +0 -0
  767. /package/{src → cli-tool/src}/analytics-web/components/ConversationTable.js +0 -0
  768. /package/{src → cli-tool/src}/analytics-web/components/DashboardPage.js +0 -0
  769. /package/{src → cli-tool/src}/analytics-web/components/HeaderComponent.js +0 -0
  770. /package/{src → cli-tool/src}/analytics-web/components/SessionTimer.js +0 -0
  771. /package/{src → cli-tool/src}/analytics-web/components/Sidebar.js +0 -0
  772. /package/{src → cli-tool/src}/analytics-web/components/ToolDisplay.js +0 -0
  773. /package/{src → cli-tool/src}/analytics-web/index.html +0 -0
  774. /package/{src → cli-tool/src}/analytics-web/index.html.original +0 -0
  775. /package/{src → cli-tool/src}/analytics-web/services/DataService.js +0 -0
  776. /package/{src → cli-tool/src}/analytics-web/services/StateService.js +0 -0
  777. /package/{src → cli-tool/src}/analytics-web/services/WebSocketService.js +0 -0
  778. /package/{src → cli-tool/src}/analytics.js +0 -0
  779. /package/{src → cli-tool/src}/chats-mobile.js +0 -0
  780. /package/{src → cli-tool/src}/claude-api-proxy.js +0 -0
  781. /package/{src → cli-tool/src}/command-scanner.js +0 -0
  782. /package/{src → cli-tool/src}/command-stats.js +0 -0
  783. /package/{src → cli-tool/src}/console-bridge.js +0 -0
  784. /package/{src → cli-tool/src}/file-operations.js +0 -0
  785. /package/{src → cli-tool/src}/health-check.js +0 -0
  786. /package/{src → cli-tool/src}/hook-scanner.js +0 -0
  787. /package/{src → cli-tool/src}/hook-stats.js +0 -0
  788. /package/{src → cli-tool/src}/mcp-stats.js +0 -0
  789. /package/{src → cli-tool/src}/prompts.js +0 -0
  790. /package/{src → cli-tool/src}/sandbox-interface.html +0 -0
  791. /package/{src → cli-tool/src}/sandbox-server.js +0 -0
  792. /package/{src → cli-tool/src}/sdk/global-agent-manager.js +0 -0
  793. /package/{src → cli-tool/src}/templates.js +0 -0
  794. /package/{src → cli-tool/src}/test-console-bridge.js +0 -0
  795. /package/{src → cli-tool/src}/tracking-service.js +0 -0
  796. /package/{src → cli-tool/src}/utils.js +0 -0
  797. /package/{src/analytics.log → docu/static/.nojekyll} +0 -0
@@ -0,0 +1,985 @@
1
+ import os
2
+ import json
3
+ import requests
4
+ from datetime import datetime
5
+ from dotenv import load_dotenv
6
+ import time
7
+ import re
8
+
9
+ # Load environment variables
10
+ load_dotenv()
11
+
12
+ def scrape_with_rapidapi_jobs():
13
+ """
14
+ Use RapidAPI Jobs Search to find Claude-related positions
15
+ """
16
+ jobs = []
17
+ try:
18
+ print("🔍 Searching with RapidAPI Jobs API for Claude positions...")
19
+
20
+ rapidapi_key = os.getenv("RAPIDAPI_KEY")
21
+ if not rapidapi_key:
22
+ print("⚠️ Warning: No RapidAPI key found, skipping")
23
+ return jobs
24
+
25
+ url = "https://jobs-search-realtime-data-api.p.rapidapi.com/jobs/search"
26
+
27
+ # Search for Claude-specific terms
28
+ search_queries = [
29
+ "Claude Code",
30
+ "Anthropic Claude",
31
+ "Claude AI developer",
32
+ "Claude assistant engineer"
33
+ ]
34
+
35
+ headers = {
36
+ "x-rapidapi-key": rapidapi_key,
37
+ "x-rapidapi-host": "jobs-search-realtime-data-api.p.rapidapi.com"
38
+ }
39
+
40
+ for query in search_queries:
41
+ querystring = {
42
+ "query": query,
43
+ "location": "Remote",
44
+ "num_results": "20"
45
+ }
46
+
47
+ response = requests.get(url, headers=headers, params=querystring)
48
+
49
+ if response.status_code == 200:
50
+ data = response.json()
51
+ job_results = data.get('jobs', [])
52
+
53
+ for job_data in job_results:
54
+ # Extract job information
55
+ job = {
56
+ 'company': job_data.get('company_name', 'Unknown'),
57
+ 'company_icon': job_data.get('company_logo', get_company_icon(job_data.get('company_name', ''))),
58
+ 'location': job_data.get('location', 'Remote'),
59
+ 'description': truncate_description(job_data.get('description', job_data.get('title', ''))),
60
+ 'job_link': job_data.get('url', ''),
61
+ 'source': 'RapidAPI Jobs',
62
+ 'date_posted': job_data.get('date_posted', ''),
63
+ 'salary': extract_salary_from_text(job_data.get('description', ''))
64
+ }
65
+
66
+ # Validate it actually mentions Claude
67
+ full_text = f"{job_data.get('title', '')} {job_data.get('description', '')}"
68
+ if is_claude_code_related(full_text):
69
+ jobs.append(job)
70
+
71
+ time.sleep(1) # Rate limiting
72
+
73
+ print(f"✅ Found {len(jobs)} jobs from RapidAPI")
74
+
75
+ except Exception as e:
76
+ print(f"⚠️ Error with RapidAPI: {e}")
77
+
78
+ return jobs
79
+
80
+ def scrape_with_serper_jobs():
81
+ """
82
+ Use Google Serper API to find Claude positions
83
+ """
84
+ jobs = []
85
+ try:
86
+ print("🔍 Searching with Google Serper API for Claude positions...")
87
+
88
+ serper_key = os.getenv("SERPER_API_KEY")
89
+ if not serper_key:
90
+ print("⚠️ Warning: No Serper API key found, skipping")
91
+ return jobs
92
+
93
+ print(f" 🔑 Using Serper key: {serper_key[:8]}...{serper_key[-4:]}")
94
+
95
+ import http.client
96
+
97
+ search_queries = [
98
+ "Claude Code developer jobs",
99
+ "Anthropic Claude engineer hiring",
100
+ "Claude AI programming job",
101
+ "Claude assistant developer position",
102
+ "Anthropic engineer jobs",
103
+ "Claude developer careers"
104
+ ]
105
+
106
+ conn = http.client.HTTPSConnection("google.serper.dev")
107
+
108
+ for query in search_queries:
109
+ print(f" 🔍 Searching: '{query}'")
110
+
111
+ payload = json.dumps({
112
+ "q": f"{query} site:linkedin.com OR site:indeed.com OR site:glassdoor.com OR site:jobs.anthropic.com",
113
+ "type": "search",
114
+ "num": 20
115
+ })
116
+
117
+ headers = {
118
+ 'X-API-KEY': serper_key,
119
+ 'Content-Type': 'application/json'
120
+ }
121
+
122
+ conn.request("POST", "/search", payload, headers)
123
+ res = conn.getresponse()
124
+ data_raw = res.read()
125
+
126
+ if res.status == 200:
127
+ try:
128
+ data = json.loads(data_raw.decode("utf-8"))
129
+ search_results = data.get('organic', [])
130
+ print(f" Found {len(search_results)} search results")
131
+
132
+ for result in search_results:
133
+ title = result.get('title', '')
134
+ snippet = result.get('snippet', '')
135
+ link = result.get('link', '')
136
+
137
+ # Check if this looks like a job posting
138
+ full_text = f"{title} {snippet}"
139
+ if is_claude_code_related(full_text) and is_job_posting(full_text):
140
+
141
+ # Extract better job information
142
+ job_info = extract_job_info_from_serper(title, snippet, link)
143
+
144
+ if job_info: # Only add if we could extract meaningful info
145
+ jobs.append(job_info)
146
+
147
+ except json.JSONDecodeError as e:
148
+ print(f" ❌ JSON decode error: {e}")
149
+ else:
150
+ print(f" ❌ Error {res.status}: {data_raw.decode('utf-8')[:200]}...")
151
+
152
+ time.sleep(1) # Rate limiting
153
+
154
+ conn.close()
155
+ print(f"✅ Found {len(jobs)} jobs from Google Serper")
156
+
157
+ except Exception as e:
158
+ print(f"⚠️ Error with Google Serper API: {e}")
159
+
160
+ return jobs
161
+
162
+ def is_job_posting(text):
163
+ """Check if text looks like a job posting"""
164
+ job_indicators = [
165
+ 'hiring', 'job', 'position', 'career', 'apply', 'join',
166
+ 'engineer', 'developer', 'programmer', 'architect',
167
+ 'we are looking', 'seeking', 'opportunity', 'role'
168
+ ]
169
+ text_lower = text.lower()
170
+ return any(indicator in text_lower for indicator in job_indicators)
171
+
172
+ def extract_job_info_from_serper(title, snippet, link):
173
+ """Extract clean job information from Serper search result"""
174
+
175
+ # Skip generic search results
176
+ if any(skip in title.lower() for skip in ['jobs, employment', 'jobs available', 'browse', 'discover']):
177
+ return None
178
+
179
+ # Extract company name
180
+ company = extract_company_name_improved(title, snippet, link)
181
+
182
+ # Extract job title
183
+ job_title = extract_job_title(title, snippet)
184
+
185
+ # Extract location
186
+ location = extract_location_improved(title, snippet)
187
+
188
+ # Only return if we have meaningful data
189
+ if not job_title or len(job_title) < 5:
190
+ return None
191
+
192
+ return {
193
+ 'company': company,
194
+ 'company_icon': get_company_icon(company),
195
+ 'job_title': job_title,
196
+ 'location': location,
197
+ 'description': truncate_description(snippet),
198
+ 'job_link': link,
199
+ 'source': 'Google Serper',
200
+ 'date_posted': '',
201
+ 'salary': extract_salary_from_text(snippet)
202
+ }
203
+
204
+ def extract_company_name_improved(title, snippet, link):
205
+ """Improved company name extraction"""
206
+
207
+ # Priority: Check for Anthropic first (most common)
208
+ if 'anthropic' in (title + snippet + link).lower():
209
+ return 'Anthropic'
210
+
211
+ # LinkedIn specific extraction
212
+ if 'linkedin.com/jobs/view/' in link:
213
+ # Extract from URL - LinkedIn URLs often contain company info
214
+ # Format: linkedin.com/jobs/view/job-title-at-company-name-jobid
215
+ url_parts = link.split('-at-')
216
+ if len(url_parts) > 1:
217
+ company_part = url_parts[1].split('-')[0] # Get first part after -at-
218
+ if company_part and len(company_part) > 2:
219
+ return company_part.replace('-', ' ').title()
220
+
221
+ # Extract from title patterns like "Job Title at Company Name"
222
+ at_match = re.search(r'\s+at\s+([^-\d]+)', title)
223
+ if at_match:
224
+ company = at_match.group(1).strip()
225
+ # Clean up common LinkedIn patterns
226
+ company = re.sub(r'\s*\d+$', '', company) # Remove trailing numbers
227
+ company = re.sub(r'\s+\d+$', '', company) # Remove numbers at end
228
+ if len(company) > 2 and company.lower() not in ['view', 'join', 'apply']:
229
+ return company
230
+
231
+ # Extract from title patterns
232
+ hiring_patterns = [
233
+ r'([A-Z][a-zA-Z\s&.]+)\s+hiring\s+',
234
+ r'^([A-Z][a-zA-Z\s&.]+):\s+',
235
+ r'Join\s+([A-Z][a-zA-Z\s&.]+)',
236
+ r'([A-Z][a-zA-Z\s&.]+)\s+is\s+looking',
237
+ r'([A-Z][a-zA-Z\s&.]+)\s+seeks?',
238
+ ]
239
+
240
+ for pattern in hiring_patterns:
241
+ match = re.search(pattern, title)
242
+ if match:
243
+ company = match.group(1).strip()
244
+ if len(company) > 2 and company not in ['View', 'Join', 'Apply', 'Software', 'Senior']:
245
+ return company
246
+
247
+ # Extract from snippet
248
+ snippet_patterns = [
249
+ r'Jobs at ([A-Z][a-zA-Z\s&.]+)',
250
+ r'([A-Z][a-zA-Z\s&.]+) is hiring',
251
+ r'Work at ([A-Z][a-zA-Z\s&.]+)',
252
+ r'Join ([A-Z][a-zA-Z\s&.]+)',
253
+ ]
254
+
255
+ for pattern in snippet_patterns:
256
+ match = re.search(pattern, snippet)
257
+ if match:
258
+ company = match.group(1).strip()
259
+ if len(company) > 2:
260
+ return company
261
+
262
+ # Check if it's a well-known company based on domain or context
263
+ known_companies = {
264
+ 'google': 'Google',
265
+ 'microsoft': 'Microsoft',
266
+ 'meta': 'Meta',
267
+ 'apple': 'Apple',
268
+ 'amazon': 'Amazon',
269
+ 'openai': 'OpenAI',
270
+ 'github': 'GitHub',
271
+ 'stripe': 'Stripe',
272
+ 'shopify': 'Shopify'
273
+ }
274
+
275
+ text_lower = (title + snippet + link).lower()
276
+ for keyword, company_name in known_companies.items():
277
+ if keyword in text_lower:
278
+ return company_name
279
+
280
+ return 'Unknown Company'
281
+
282
+ def extract_job_title(title, snippet):
283
+ """Extract job title from search result"""
284
+
285
+ # LinkedIn format: "Job Title at Company"
286
+ at_match = re.search(r'^(.+?)\s+at\s+', title)
287
+ if at_match:
288
+ return at_match.group(1).strip()
289
+
290
+ # Anthropic hiring format: "Anthropic hiring Job Title in Location"
291
+ hiring_match = re.search(r'hiring\s+(.+?)\s+in\s+', title)
292
+ if hiring_match:
293
+ return hiring_match.group(1).strip()
294
+
295
+ # Company: Job Title format
296
+ colon_match = re.search(r':\s+(.+?)\s+-', title)
297
+ if colon_match:
298
+ return colon_match.group(1).strip()
299
+
300
+ # Extract from title before dash
301
+ dash_match = re.search(r'^(.+?)\s+-\s+', title)
302
+ if dash_match:
303
+ job_title = dash_match.group(1).strip()
304
+ # Clean up common patterns
305
+ job_title = re.sub(r'^(View|Apply to|Join)\s+', '', job_title)
306
+ if len(job_title) > 5:
307
+ return job_title
308
+
309
+ # Fallback: use full title if it looks like a job title
310
+ if any(keyword in title.lower() for keyword in ['engineer', 'developer', 'manager', 'analyst', 'scientist', 'architect']):
311
+ return title.strip()
312
+
313
+ return None
314
+
315
+ def extract_location_improved(title, snippet):
316
+ """Improved location extraction"""
317
+ text = f"{title} {snippet}"
318
+
319
+ # Remote indicators
320
+ if any(keyword in text.lower() for keyword in ['remote', 'anywhere', 'distributed', 'work from home']):
321
+ return 'Remote'
322
+
323
+ # City, State patterns
324
+ city_state_patterns = [
325
+ r'in\s+([A-Z][a-z]+,\s*[A-Z]{2})', # "in Seattle, WA"
326
+ r'([A-Z][a-z]+,\s*[A-Z]{2})\s+', # "Seattle, WA "
327
+ r'([San Francisco|New York|Los Angeles|Chicago|Boston|Austin|Denver],\s*[A-Z]{2})',
328
+ ]
329
+
330
+ for pattern in city_state_patterns:
331
+ match = re.search(pattern, text)
332
+ if match:
333
+ return match.group(1)
334
+
335
+ # Major cities without state
336
+ major_cities = ['Seattle', 'Francisco', 'Chicago', 'Boston', 'Austin', 'Denver', 'Portland', 'Miami']
337
+ for city in major_cities:
338
+ if city in text:
339
+ return f"{city}"
340
+
341
+ return 'On-site'
342
+
343
+ def extract_salary_from_text(text):
344
+ """Extract salary information from job description text"""
345
+ if not text:
346
+ return 0
347
+
348
+ # Look for common salary patterns
349
+ salary_patterns = [
350
+ r'\$(\d{1,3}(?:,\d{3})*(?:\.\d{2})?)\s*(?:k|thousand)',
351
+ r'\$(\d{1,3}(?:,\d{3})*)',
352
+ r'(\d{1,3})k',
353
+ ]
354
+
355
+ for pattern in salary_patterns:
356
+ matches = re.findall(pattern, text.lower())
357
+ if matches:
358
+ try:
359
+ salary = int(matches[0].replace(',', '').replace('.', ''))
360
+ if 'k' in text.lower() or 'thousand' in text.lower():
361
+ salary *= 1000
362
+ return salary
363
+ except:
364
+ continue
365
+
366
+ return 0
367
+
368
+ def extract_salary_from_google_job(job_data):
369
+ """Extract salary from Google Jobs specific structure"""
370
+ salary_info = job_data.get('detected_extensions', {})
371
+
372
+ # Look for salary in extensions
373
+ if 'salary' in salary_info:
374
+ salary_text = salary_info['salary']
375
+ return extract_salary_from_text(salary_text)
376
+
377
+ return 0
378
+
379
+ def scrape_github_jobs():
380
+ """
381
+ Scrape GitHub Jobs for Claude Code positions
382
+ """
383
+ jobs = []
384
+ try:
385
+ # GitHub Jobs API is deprecated, but we can search GitHub Issues/Discussions
386
+ # or use GitHub's search API for job repositories
387
+ print("🔍 Searching GitHub for Claude Code job postings...")
388
+
389
+ # Search in common job posting repositories
390
+ job_repos = [
391
+ "remoteintech/remote-jobs",
392
+ "lukasz-madon/awesome-remote-job",
393
+ "yanirs/established-remote"
394
+ ]
395
+
396
+ headers = {
397
+ 'Accept': 'application/vnd.github.v3+json',
398
+ 'User-Agent': 'claude-code-templates-job-scraper'
399
+ }
400
+
401
+ github_token = os.getenv("GITHUB_TOKEN")
402
+ if github_token:
403
+ headers['Authorization'] = f'token {github_token}'
404
+
405
+ # Search ONLY for Claude-specific job postings
406
+ search_url = "https://api.github.com/search/issues"
407
+ search_params = {
408
+ 'q': '("claude code" OR "anthropic claude" OR "claude ai" OR "claude") AND (hiring OR job OR position OR engineer OR developer) NOT pull NOT merge NOT bug NOT feature',
409
+ 'sort': 'updated',
410
+ 'order': 'desc',
411
+ 'per_page': 50
412
+ }
413
+
414
+ response = requests.get(search_url, headers=headers, params=search_params)
415
+ if response.status_code == 200:
416
+ results = response.json()
417
+ for item in results.get('items', []):
418
+ job = extract_job_from_github_issue(item)
419
+ if job:
420
+ jobs.append(job)
421
+
422
+ print(f"✅ Found {len(jobs)} potential jobs from GitHub")
423
+
424
+ except Exception as e:
425
+ print(f"⚠️ Error scraping GitHub jobs: {e}")
426
+
427
+ return jobs
428
+
429
+ def scrape_ycombinator_jobs():
430
+ """
431
+ Scrape YCombinator Who's Hiring threads for Claude Code mentions
432
+ """
433
+ jobs = []
434
+ try:
435
+ print("🔍 Searching YC Who's Hiring for Claude Code positions...")
436
+
437
+ # Search HackerNews API for recent "Who is hiring" threads
438
+ hn_search_url = "https://hn.algolia.com/api/v1/search"
439
+ search_params = {
440
+ 'query': 'who is hiring',
441
+ 'tags': 'story',
442
+ 'hitsPerPage': 5,
443
+ 'numericFilters': f'created_at_i>{int(time.time()) - 86400*60}' # Last 60 days
444
+ }
445
+
446
+ response = requests.get(hn_search_url, params=search_params)
447
+ if response.status_code == 200:
448
+ threads = response.json().get('hits', [])
449
+
450
+ for thread in threads:
451
+ story_id = thread.get('objectID')
452
+ if story_id:
453
+ # Get comments from this hiring thread
454
+ comments_url = f"https://hn.algolia.com/api/v1/search"
455
+ comment_params = {
456
+ 'query': 'claude code OR anthropic claude OR claude ai OR claude',
457
+ 'tags': f'comment,story_{story_id}',
458
+ 'hitsPerPage': 50
459
+ }
460
+
461
+ comment_response = requests.get(comments_url, params=comment_params)
462
+ if comment_response.status_code == 200:
463
+ comments = comment_response.json().get('hits', [])
464
+
465
+ for comment in comments:
466
+ job = extract_job_from_hn_comment(comment, thread.get('title', ''))
467
+ if job:
468
+ jobs.append(job)
469
+
470
+ time.sleep(0.5) # Rate limiting
471
+
472
+ print(f"✅ Found {len(jobs)} jobs from YC Who's Hiring")
473
+
474
+ except Exception as e:
475
+ print(f"⚠️ Error scraping YC jobs: {e}")
476
+
477
+ return jobs
478
+
479
+ def extract_job_from_hn_comment(comment, thread_title):
480
+ """
481
+ Extract job information from HackerNews comment
482
+ """
483
+ text = comment.get('comment_text', '') or ''
484
+
485
+ if not is_claude_code_related(text):
486
+ return None
487
+
488
+ # Extract basic info from comment
489
+ company = extract_company_from_hn_comment(text)
490
+ location = extract_location_from_hn_comment(text)
491
+
492
+ return {
493
+ 'company': company,
494
+ 'company_icon': get_company_icon(company),
495
+ 'location': location,
496
+ 'description': truncate_description(text.replace('<p>', ' ').replace('</p>', ' ')),
497
+ 'job_link': f"https://news.ycombinator.com/item?id={comment.get('objectID', '')}",
498
+ 'source': 'YCombinator',
499
+ 'date_posted': comment.get('created_at', ''),
500
+ 'salary': 0
501
+ }
502
+
503
+ def extract_company_from_hn_comment(text):
504
+ """Extract company name from HN comment"""
505
+ patterns = [
506
+ r'([A-Z][a-zA-Z]+)\s+is\s+hiring',
507
+ r'We\s+are\s+([A-Z][a-zA-Z]+)',
508
+ r'Join\s+([A-Z][a-zA-Z]+)',
509
+ r'([A-Z][a-zA-Z]+)\s+\-\s+',
510
+ r'Company:\s+([A-Z][a-zA-Z]+)',
511
+ ]
512
+
513
+ for pattern in patterns:
514
+ match = re.search(pattern, text)
515
+ if match:
516
+ return match.group(1)
517
+
518
+ return 'Startup'
519
+
520
+ def extract_location_from_hn_comment(text):
521
+ """Extract location from HN comment"""
522
+ if any(keyword in text.lower() for keyword in ['remote', 'anywhere', 'distributed']):
523
+ return 'Remote'
524
+
525
+ # Look for city patterns
526
+ location_patterns = [
527
+ r'Location:\s*([^.\n]+)',
528
+ r'Based in ([^,\n]+)',
529
+ r'([A-Z][a-z]+,\s*[A-Z]{2,3})', # City, State/Country
530
+ ]
531
+
532
+ for pattern in location_patterns:
533
+ match = re.search(pattern, text)
534
+ if match:
535
+ return match.group(1).strip()
536
+
537
+ return 'On-site'
538
+
539
+ def scrape_remote_ok():
540
+ """
541
+ Scrape Remote OK for Claude Code positions
542
+ """
543
+ jobs = []
544
+ try:
545
+ print("🔍 Searching Remote OK for Claude Code positions...")
546
+
547
+ # Remote OK has an API but might be rate limited
548
+ url = "https://remoteok.io/api"
549
+ headers = {
550
+ 'User-Agent': 'claude-code-templates-job-scraper'
551
+ }
552
+
553
+ response = requests.get(url, headers=headers)
554
+ if response.status_code == 200:
555
+ data = response.json()
556
+ for job_data in data[1:]: # First item is metadata
557
+ description = job_data.get('description', '')
558
+ tags = job_data.get('tags', [])
559
+ tags_str = ' '.join(tags) if isinstance(tags, list) else str(tags)
560
+
561
+ if is_claude_code_related(description + ' ' + tags_str):
562
+ job = {
563
+ 'company': job_data.get('company', 'Unknown'),
564
+ 'company_icon': job_data.get('company_logo', ''),
565
+ 'location': 'Remote' if job_data.get('location') == 'Worldwide' else job_data.get('location', 'Remote'),
566
+ 'description': truncate_description(job_data.get('description', '')),
567
+ 'job_link': f"https://remoteok.io/remote-jobs/{job_data.get('id', '')}",
568
+ 'source': 'RemoteOK',
569
+ 'date_posted': job_data.get('date', ''),
570
+ 'salary': job_data.get('salary_min', 0)
571
+ }
572
+ jobs.append(job)
573
+
574
+ print(f"✅ Found {len(jobs)} jobs from Remote OK")
575
+
576
+ except Exception as e:
577
+ print(f"⚠️ Error scraping Remote OK: {e}")
578
+
579
+ return jobs
580
+
581
+ def scrape_weworkremotely():
582
+ """
583
+ Scrape We Work Remotely for Claude Code positions
584
+ """
585
+ jobs = []
586
+ try:
587
+ print("🔍 Searching We Work Remotely for Claude Code positions...")
588
+
589
+ # We Work Remotely RSS feed approach
590
+ import xml.etree.ElementTree as ET
591
+
592
+ rss_url = "https://weworkremotely.com/categories/remote-programming-jobs.rss"
593
+ headers = {
594
+ 'User-Agent': 'claude-code-templates-job-scraper'
595
+ }
596
+
597
+ response = requests.get(rss_url, headers=headers)
598
+ if response.status_code == 200:
599
+ root = ET.fromstring(response.content)
600
+
601
+ for item in root.findall('.//item'):
602
+ title = item.find('title').text if item.find('title') is not None else ''
603
+ description = item.find('description').text if item.find('description') is not None else ''
604
+ link = item.find('link').text if item.find('link') is not None else ''
605
+ pub_date = item.find('pubDate').text if item.find('pubDate') is not None else ''
606
+
607
+ full_text = title + ' ' + description
608
+
609
+ if is_claude_code_related(full_text):
610
+ # Extract company from title (usually format: "Company: Job Title")
611
+ company_match = re.match(r'^([^:]+):', title)
612
+ company = company_match.group(1).strip() if company_match else 'Remote Company'
613
+
614
+ job = {
615
+ 'company': company,
616
+ 'company_icon': get_company_icon(company),
617
+ 'location': 'Remote', # WWR is all remote
618
+ 'description': truncate_description(title),
619
+ 'job_link': link,
620
+ 'source': 'WeWorkRemotely',
621
+ 'date_posted': pub_date,
622
+ 'salary': 0
623
+ }
624
+ jobs.append(job)
625
+
626
+ print(f"✅ Found {len(jobs)} jobs from We Work Remotely")
627
+
628
+ except Exception as e:
629
+ print(f"⚠️ Error scraping WWR: {e}")
630
+
631
+ return jobs
632
+
633
+ def scrape_indie_hackers():
634
+ """
635
+ Scrape Indie Hackers for Claude Code positions
636
+ """
637
+ jobs = []
638
+ try:
639
+ print("🔍 Searching Indie Hackers for Claude Code positions...")
640
+
641
+ # Use general web search for Indie Hackers job posts mentioning Claude Code
642
+ search_terms = [
643
+ 'site:indiehackers.com "claude code" hiring',
644
+ 'site:indiehackers.com "anthropic claude" job',
645
+ 'site:indiehackers.com "claude ai" developer'
646
+ ]
647
+
648
+ # This would require a web search API like Google Custom Search
649
+ # For now, placeholder but structure is ready
650
+
651
+ print(f"✅ Indie Hackers scraping structure ready")
652
+
653
+ except Exception as e:
654
+ print(f"⚠️ Error scraping Indie Hackers: {e}")
655
+
656
+ return jobs
657
+
658
+ def extract_job_from_github_issue(item):
659
+ """
660
+ Extract job information from a GitHub issue/discussion
661
+ """
662
+ title = item.get('title', '') or ''
663
+ body = item.get('body', '') or ''
664
+
665
+ # Check if it's actually a job posting mentioning Claude Code
666
+ if not is_claude_code_related(title + ' ' + body):
667
+ return None
668
+
669
+ # Extract company name from repository or issue title
670
+ repo_name = item.get('repository_url', '').split('/')[-1] if item.get('repository_url') else 'Unknown'
671
+
672
+ return {
673
+ 'company': extract_company_name(title, body, repo_name),
674
+ 'company_icon': get_company_icon(extract_company_name(title, body, repo_name)),
675
+ 'location': extract_location(title, body),
676
+ 'description': truncate_description(title),
677
+ 'job_link': item.get('html_url', ''),
678
+ 'source': 'GitHub',
679
+ 'date_posted': item.get('updated_at', ''),
680
+ 'salary': 0
681
+ }
682
+
683
+ def is_claude_code_related(text):
684
+ """
685
+ Check if text specifically mentions Claude (very strict filtering)
686
+ """
687
+ if not text:
688
+ return False
689
+
690
+ text_lower = str(text).lower()
691
+
692
+ # ONLY Claude-specific keywords - must contain "claude"
693
+ claude_keywords = [
694
+ 'claude code', 'claude-code', 'anthropic claude', 'claude ai',
695
+ 'claude coder', 'claude assistant', 'claude developer', 'claude engineer',
696
+ 'work with claude', 'using claude', 'claude experience', 'claude integration'
697
+ ]
698
+
699
+ # Must explicitly mention Claude in some form
700
+ has_claude_mention = any(keyword in text_lower for keyword in claude_keywords)
701
+
702
+ # Additional check: just "claude" + job context
703
+ has_claude_word = 'claude' in text_lower
704
+ job_words = ['hiring', 'position', 'engineer', 'developer', 'role', 'job', 'career', 'experience', 'skills']
705
+ has_job_context = any(word in text_lower for word in job_words)
706
+
707
+ # Return True only if Claude is mentioned AND it's in a job context
708
+ return has_claude_mention or (has_claude_word and has_job_context)
709
+
710
+ def extract_company_name(title, body, fallback):
711
+ """
712
+ Extract company name from job posting
713
+ """
714
+ # Common patterns in job titles
715
+ patterns = [
716
+ r'(\w+)\s+is\s+hiring',
717
+ r'(\w+)\s+hiring',
718
+ r'join\s+(\w+)',
719
+ r'(\w+)\s+looking\s+for',
720
+ r'(\w+)\s+seeks?',
721
+ ]
722
+
723
+ for pattern in patterns:
724
+ match = re.search(pattern, title + ' ' + body, re.IGNORECASE)
725
+ if match:
726
+ return match.group(1).title()
727
+
728
+ return fallback.title()
729
+
730
+ def extract_location(title, body):
731
+ """
732
+ Extract location from job posting
733
+ """
734
+ remote_keywords = ['remote', 'anywhere', 'distributed', 'work from home']
735
+ location_patterns = [
736
+ r'location[:\s]+([^,\n]+)',
737
+ r'based in ([^,\n]+)',
738
+ r'(\w+,\s*\w+)', # City, State/Country
739
+ ]
740
+
741
+ text = (title + ' ' + body).lower()
742
+
743
+ # Check for remote first
744
+ if any(keyword in text for keyword in remote_keywords):
745
+ return 'Remote'
746
+
747
+ # Look for specific locations
748
+ for pattern in location_patterns:
749
+ match = re.search(pattern, text, re.IGNORECASE)
750
+ if match:
751
+ return match.group(1).strip().title()
752
+
753
+ return 'On-site'
754
+
755
+ def get_company_icon(company_name):
756
+ """
757
+ Get company icon URL with comprehensive company icon dictionary
758
+ """
759
+ # Comprehensive company icons dictionary
760
+ company_icons = {
761
+ # AI/Tech Companies
762
+ 'anthropic': 'https://www.anthropic.com/favicon.ico',
763
+ 'openai': 'https://openai.com/favicon.ico',
764
+ 'claude code': 'https://www.anthropic.com/favicon.ico',
765
+
766
+ # Major Tech Companies
767
+ 'google': 'https://www.google.com/favicon.ico',
768
+ 'microsoft': 'https://www.microsoft.com/favicon.ico',
769
+ 'meta': 'https://www.facebook.com/favicon.ico',
770
+ 'apple': 'https://www.apple.com/favicon.ico',
771
+ 'amazon': 'https://www.amazon.com/favicon.ico',
772
+ 'netflix': 'https://www.netflix.com/favicon.ico',
773
+ 'tesla': 'https://www.tesla.com/favicon.ico',
774
+ 'nvidia': 'https://www.nvidia.com/favicon.ico',
775
+
776
+ # Startups/Scale-ups
777
+ 'stripe': 'https://stripe.com/favicon.ico',
778
+ 'airbnb': 'https://airbnb.com/favicon.ico',
779
+ 'uber': 'https://uber.com/favicon.ico',
780
+ 'shopify': 'https://shopify.com/favicon.ico',
781
+ 'twilio': 'https://twilio.com/favicon.ico',
782
+ 'github': 'https://github.com/favicon.ico',
783
+ 'gitlab': 'https://gitlab.com/favicon.ico',
784
+ 'atlassian': 'https://atlassian.com/favicon.ico',
785
+ 'slack': 'https://slack.com/favicon.ico',
786
+ 'discord': 'https://discord.com/favicon.ico',
787
+ 'notion': 'https://notion.so/favicon.ico',
788
+ 'figma': 'https://figma.com/favicon.ico',
789
+ 'vercel': 'https://vercel.com/favicon.ico',
790
+ 'supabase': 'https://supabase.com/favicon.ico',
791
+
792
+ # Consulting/Services
793
+ 'accenture': 'https://accenture.com/favicon.ico',
794
+ 'deloitte': 'https://deloitte.com/favicon.ico',
795
+ 'mckinsey': 'https://mckinsey.com/favicon.ico',
796
+
797
+ # Finance/Fintech
798
+ 'goldman sachs': 'https://goldmansachs.com/favicon.ico',
799
+ 'jpmorgan': 'https://jpmorgan.com/favicon.ico',
800
+ 'coinbase': 'https://coinbase.com/favicon.ico',
801
+ 'robinhood': 'https://robinhood.com/favicon.ico',
802
+
803
+ # Generic/Fallback companies
804
+ 'unknown company': 'https://www.aitmpl.com/static/img/logo.png',
805
+ 'company': 'https://www.aitmpl.com/static/img/logo.png',
806
+ }
807
+
808
+ company_lower = company_name.lower().strip()
809
+
810
+ # Direct match first
811
+ if company_lower in company_icons:
812
+ return company_icons[company_lower]
813
+
814
+ # Partial match for company names containing key terms
815
+ for key, icon in company_icons.items():
816
+ if key in company_lower or company_lower in key:
817
+ return icon
818
+
819
+ # Default fallback to our custom icon
820
+ return 'https://www.aitmpl.com/static/img/logo.png'
821
+
822
+ def truncate_description(description, max_length=100):
823
+ """
824
+ Truncate description to specified length
825
+ """
826
+ if not description:
827
+ return ''
828
+
829
+ # Clean HTML tags and extra whitespace
830
+ clean_desc = re.sub(r'<[^>]+>', '', description)
831
+ clean_desc = re.sub(r'\s+', ' ', clean_desc).strip()
832
+
833
+ if len(clean_desc) <= max_length:
834
+ return clean_desc
835
+
836
+ # Truncate at word boundary
837
+ truncated = clean_desc[:max_length].rsplit(' ', 1)[0]
838
+ return truncated + '...'
839
+
840
+ def generate_sample_jobs():
841
+ """
842
+ Generate sample jobs for demonstration purposes
843
+ """
844
+ sample_jobs = [
845
+ {
846
+ 'company': 'Anthropic',
847
+ 'company_icon': 'https://anthropic.com/favicon.ico',
848
+ 'location': 'Remote',
849
+ 'description': 'Senior AI Developer to enhance Claude Code capabilities and integrations...',
850
+ 'job_link': 'https://anthropic.com/careers/claude-code-developer',
851
+ 'source': 'Company Website',
852
+ 'date_posted': '2025-09-10T10:00:00Z',
853
+ 'salary': 150000
854
+ },
855
+ {
856
+ 'company': 'OpenAI',
857
+ 'company_icon': 'https://openai.com/favicon.ico',
858
+ 'location': 'San Francisco, CA',
859
+ 'description': 'Looking for engineers experienced with Claude Code and AI development tools...',
860
+ 'job_link': 'https://openai.com/careers/claude-integration-engineer',
861
+ 'source': 'LinkedIn',
862
+ 'date_posted': '2025-09-09T14:30:00Z',
863
+ 'salary': 140000
864
+ },
865
+ {
866
+ 'company': 'StartupTech',
867
+ 'company_icon': 'https://logo.clearbit.com/startuptech.com',
868
+ 'location': 'Remote',
869
+ 'description': 'Full-stack developer with Claude Code experience for AI-powered development team...',
870
+ 'job_link': 'https://jobs.startuptech.com/claude-developer-2025',
871
+ 'source': 'AngelList',
872
+ 'date_posted': '2025-09-08T09:15:00Z',
873
+ 'salary': 90000
874
+ },
875
+ {
876
+ 'company': 'TechCorp',
877
+ 'company_icon': 'https://logo.clearbit.com/techcorp.com',
878
+ 'location': 'New York, NY',
879
+ 'description': 'Senior Software Engineer - AI Tools (Claude Code, GitHub Copilot, etc.)...',
880
+ 'job_link': 'https://careers.techcorp.com/positions/senior-ai-tools-engineer',
881
+ 'source': 'Indeed',
882
+ 'date_posted': '2025-09-07T16:45:00Z',
883
+ 'salary': 120000
884
+ }
885
+ ]
886
+
887
+ return sample_jobs
888
+
889
+ def generate_claude_jobs_json():
890
+ """
891
+ Main function to scrape and generate Claude Code jobs JSON
892
+ """
893
+ print("🚀 Starting Claude Code jobs scraping...")
894
+
895
+ all_jobs = []
896
+
897
+ # Skip sample jobs - looking for real results only
898
+
899
+ # Use professional job APIs (more reliable than scraping)
900
+ api_scrapers = [
901
+ scrape_with_rapidapi_jobs,
902
+ scrape_with_serper_jobs,
903
+ ]
904
+
905
+ # Fallback to traditional scraping if APIs are not available
906
+ scraping_sources = [
907
+ scrape_github_jobs,
908
+ scrape_ycombinator_jobs,
909
+ scrape_weworkremotely,
910
+ ]
911
+
912
+ # Try API sources first
913
+ for scraper in api_scrapers:
914
+ try:
915
+ jobs = scraper()
916
+ all_jobs.extend(jobs)
917
+ time.sleep(1)
918
+ except Exception as e:
919
+ print(f"⚠️ Error with API scraper {scraper.__name__}: {e}")
920
+
921
+ # If no jobs from APIs, try traditional scraping
922
+ if len(all_jobs) == 0:
923
+ print("📡 No results from APIs, trying traditional scraping...")
924
+ print("💡 Tip: Add valid API keys to .env for better results")
925
+ scrapers = scraping_sources
926
+ else:
927
+ print(f"🎯 Got {len(all_jobs)} jobs from APIs, skipping traditional scraping")
928
+ scrapers = []
929
+
930
+ for scraper in scrapers:
931
+ try:
932
+ jobs = scraper()
933
+ all_jobs.extend(jobs)
934
+ time.sleep(1) # Rate limiting
935
+ except Exception as e:
936
+ print(f"⚠️ Error with scraper {scraper.__name__}: {e}")
937
+
938
+ # Remove duplicates based on job_link
939
+ seen_links = set()
940
+ unique_jobs = []
941
+ for job in all_jobs:
942
+ if job['job_link'] not in seen_links:
943
+ seen_links.add(job['job_link'])
944
+ unique_jobs.append(job)
945
+
946
+ # Sort by date_posted (most recent first)
947
+ unique_jobs.sort(key=lambda x: x.get('date_posted', ''), reverse=True)
948
+
949
+ # Structure the final data
950
+ jobs_data = {
951
+ 'jobs': unique_jobs,
952
+ 'generated_at': datetime.now().isoformat(),
953
+ 'total_count': len(unique_jobs),
954
+ 'sources': list(set([job['source'] for job in unique_jobs]))
955
+ }
956
+
957
+ # Save to docs directory
958
+ output_path = 'docs/claude-jobs.json'
959
+ try:
960
+ with open(output_path, 'w', encoding='utf-8') as f:
961
+ json.dump(jobs_data, f, indent=2, ensure_ascii=False)
962
+ print(f"✅ Successfully generated {output_path}")
963
+
964
+ # Log summary
965
+ print("\n--- Scraping Summary ---")
966
+ print(f"Total unique jobs found: {len(unique_jobs)}")
967
+
968
+ sources_count = {}
969
+ for job in unique_jobs:
970
+ source = job['source']
971
+ sources_count[source] = sources_count.get(source, 0) + 1
972
+
973
+ for source, count in sources_count.items():
974
+ print(f" - {source}: {count} jobs")
975
+
976
+ remote_jobs = len([job for job in unique_jobs if 'remote' in job['location'].lower()])
977
+ onsite_jobs = len(unique_jobs) - remote_jobs
978
+ print(f" - Remote: {remote_jobs}, On-site: {onsite_jobs}")
979
+ print("-----------------------")
980
+
981
+ except IOError as e:
982
+ print(f"❌ Error writing to {output_path}: {e}")
983
+
984
+ if __name__ == '__main__':
985
+ generate_claude_jobs_json()