claude-code-templates 1.21.5 → 1.21.6

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 (498) hide show
  1. package/components/agents/ai-specialists/ai-ethics-advisor.md +195 -0
  2. package/components/agents/ai-specialists/hackathon-ai-strategist.md +46 -0
  3. package/components/agents/ai-specialists/llms-maintainer.md +94 -0
  4. package/components/agents/ai-specialists/model-evaluator.md +150 -0
  5. package/components/agents/ai-specialists/prompt-engineer.md +112 -0
  6. package/components/agents/ai-specialists/search-specialist.md +59 -0
  7. package/components/agents/ai-specialists/task-decomposition-expert.md +97 -0
  8. package/components/agents/api-graphql/graphql-architect.md +208 -0
  9. package/components/agents/api-graphql/graphql-performance-optimizer.md +357 -0
  10. package/components/agents/api-graphql/graphql-security-specialist.md +519 -0
  11. package/components/agents/blockchain-web3/smart-contract-auditor.md +32 -0
  12. package/components/agents/blockchain-web3/smart-contract-specialist.md +32 -0
  13. package/components/agents/blockchain-web3/web3-integration-specialist.md +32 -0
  14. package/components/agents/business-marketing/business-analyst.md +194 -0
  15. package/components/agents/business-marketing/content-marketer.md +36 -0
  16. package/components/agents/business-marketing/customer-support.md +36 -0
  17. package/components/agents/business-marketing/legal-advisor.md +50 -0
  18. package/components/agents/business-marketing/marketing-attribution-analyst.md +352 -0
  19. package/components/agents/business-marketing/payment-integration.md +33 -0
  20. package/components/agents/business-marketing/product-strategist.md +212 -0
  21. package/components/agents/business-marketing/risk-manager.md +42 -0
  22. package/components/agents/business-marketing/sales-automator.md +36 -0
  23. package/components/agents/data-ai/ai-engineer.md +33 -0
  24. package/components/agents/data-ai/computer-vision-engineer.md +562 -0
  25. package/components/agents/data-ai/data-engineer.md +33 -0
  26. package/components/agents/data-ai/data-scientist.md +337 -0
  27. package/components/agents/data-ai/ml-engineer.md +33 -0
  28. package/components/agents/data-ai/mlops-engineer.md +58 -0
  29. package/components/agents/data-ai/nlp-engineer.md +680 -0
  30. package/components/agents/data-ai/quant-analyst.md +33 -0
  31. package/components/agents/database/database-admin.md +33 -0
  32. package/components/agents/database/database-architect.md +590 -0
  33. package/components/agents/database/database-optimization.md +33 -0
  34. package/components/agents/database/database-optimizer.md +33 -0
  35. package/components/agents/database/nosql-specialist.md +708 -0
  36. package/components/agents/database/supabase-schema-architect.md +138 -0
  37. package/components/agents/deep-research-team/academic-researcher.md +33 -0
  38. package/components/agents/deep-research-team/agent-overview.md +235 -0
  39. package/components/agents/deep-research-team/competitive-intelligence-analyst.md +530 -0
  40. package/components/agents/deep-research-team/data-analyst.md +112 -0
  41. package/components/agents/deep-research-team/fact-checker.md +553 -0
  42. package/components/agents/deep-research-team/query-clarifier.md +73 -0
  43. package/components/agents/deep-research-team/report-generator.md +108 -0
  44. package/components/agents/deep-research-team/research-brief-generator.md +108 -0
  45. package/components/agents/deep-research-team/research-coordinator.md +94 -0
  46. package/components/agents/deep-research-team/research-orchestrator.md +119 -0
  47. package/components/agents/deep-research-team/research-synthesizer.md +109 -0
  48. package/components/agents/deep-research-team/technical-researcher.md +95 -0
  49. package/components/agents/development-team/backend-architect.md +31 -0
  50. package/components/agents/development-team/cli-ui-designer.md +405 -0
  51. package/components/agents/development-team/devops-engineer.md +886 -0
  52. package/components/agents/development-team/frontend-developer.md +32 -0
  53. package/components/agents/development-team/fullstack-developer.md +1205 -0
  54. package/components/agents/development-team/ios-developer.md +36 -0
  55. package/components/agents/development-team/mobile-developer.md +33 -0
  56. package/components/agents/development-team/ui-ux-designer.md +36 -0
  57. package/components/agents/development-tools/code-reviewer.md +30 -0
  58. package/components/agents/development-tools/command-expert.md +422 -0
  59. package/components/agents/development-tools/context-manager.md +65 -0
  60. package/components/agents/development-tools/debugger.md +31 -0
  61. package/components/agents/development-tools/dx-optimizer.md +64 -0
  62. package/components/agents/development-tools/error-detective.md +33 -0
  63. package/components/agents/development-tools/mcp-expert.md +259 -0
  64. package/components/agents/development-tools/performance-profiler.md +799 -0
  65. package/components/agents/development-tools/test-engineer.md +936 -0
  66. package/components/agents/devops-infrastructure/cloud-architect.md +33 -0
  67. package/components/agents/devops-infrastructure/deployment-engineer.md +33 -0
  68. package/components/agents/devops-infrastructure/devops-troubleshooter.md +33 -0
  69. package/components/agents/devops-infrastructure/monitoring-specialist.md +36 -0
  70. package/components/agents/devops-infrastructure/network-engineer.md +33 -0
  71. package/components/agents/devops-infrastructure/security-engineer.md +971 -0
  72. package/components/agents/devops-infrastructure/terraform-specialist.md +36 -0
  73. package/components/agents/devops-infrastructure/vercel-deployment-specialist.md +357 -0
  74. package/components/agents/documentation/api-documenter.md +33 -0
  75. package/components/agents/documentation/changelog-generator.md +37 -0
  76. package/components/agents/documentation/docusaurus-expert.md +52 -0
  77. package/components/agents/documentation/technical-writer.md +37 -0
  78. package/components/agents/expert-advisors/agent-expert.md +477 -0
  79. package/components/agents/expert-advisors/architect-review.md +50 -0
  80. package/components/agents/expert-advisors/dependency-manager.md +45 -0
  81. package/components/agents/expert-advisors/documentation-expert.md +47 -0
  82. package/components/agents/ffmpeg-clip-team/audio-mixer.md +37 -0
  83. package/components/agents/ffmpeg-clip-team/audio-quality-controller.md +100 -0
  84. package/components/agents/ffmpeg-clip-team/podcast-content-analyzer.md +60 -0
  85. package/components/agents/ffmpeg-clip-team/podcast-metadata-specialist.md +46 -0
  86. package/components/agents/ffmpeg-clip-team/podcast-transcriber.md +68 -0
  87. package/components/agents/ffmpeg-clip-team/social-media-clip-creator.md +69 -0
  88. package/components/agents/ffmpeg-clip-team/timestamp-precision-specialist.md +98 -0
  89. package/components/agents/ffmpeg-clip-team/video-editor.md +37 -0
  90. package/components/agents/game-development/3d-artist.md +37 -0
  91. package/components/agents/game-development/game-designer.md +37 -0
  92. package/components/agents/game-development/unity-game-developer.md +110 -0
  93. package/components/agents/game-development/unreal-engine-developer.md +128 -0
  94. package/components/agents/mcp-dev-team/mcp-deployment-orchestrator.md +101 -0
  95. package/components/agents/mcp-dev-team/mcp-integration-engineer.md +37 -0
  96. package/components/agents/mcp-dev-team/mcp-protocol-specialist.md +37 -0
  97. package/components/agents/mcp-dev-team/mcp-registry-navigator.md +112 -0
  98. package/components/agents/mcp-dev-team/mcp-security-auditor.md +70 -0
  99. package/components/agents/mcp-dev-team/mcp-server-architect.md +74 -0
  100. package/components/agents/mcp-dev-team/mcp-testing-engineer.md +106 -0
  101. package/components/agents/modernization/architecture-modernizer.md +37 -0
  102. package/components/agents/modernization/cloud-migration-specialist.md +37 -0
  103. package/components/agents/modernization/legacy-modernizer.md +33 -0
  104. package/components/agents/obsidian-ops-team/Scripts/daily_notes_connector.py +306 -0
  105. package/components/agents/obsidian-ops-team/Scripts/enhance_tag_standardizer.py +343 -0
  106. package/components/agents/obsidian-ops-team/Scripts/find_keyword_connections.py +216 -0
  107. package/components/agents/obsidian-ops-team/Scripts/fix_quoted_tags.py +82 -0
  108. package/components/agents/obsidian-ops-team/Scripts/implement_entity_connections.py +195 -0
  109. package/components/agents/obsidian-ops-team/Scripts/link_suggester.py +301 -0
  110. package/components/agents/obsidian-ops-team/Scripts/metadata_adder.py +197 -0
  111. package/components/agents/obsidian-ops-team/Scripts/moc_generator.py +296 -0
  112. package/components/agents/obsidian-ops-team/Scripts/parse_keyword_connections.py +122 -0
  113. package/components/agents/obsidian-ops-team/Scripts/tag_standardizer.py +387 -0
  114. package/components/agents/obsidian-ops-team/connection-agent.md +67 -0
  115. package/components/agents/obsidian-ops-team/content-curator.md +81 -0
  116. package/components/agents/obsidian-ops-team/metadata-agent.md +51 -0
  117. package/components/agents/obsidian-ops-team/moc-agent.md +112 -0
  118. package/components/agents/obsidian-ops-team/review-agent.md +94 -0
  119. package/components/agents/obsidian-ops-team/tag-agent.md +92 -0
  120. package/components/agents/obsidian-ops-team/vault-optimizer.md +76 -0
  121. package/components/agents/ocr-extraction-team/document-structure-analyzer.md +37 -0
  122. package/components/agents/ocr-extraction-team/markdown-syntax-formatter.md +58 -0
  123. package/components/agents/ocr-extraction-team/ocr-grammar-fixer.md +36 -0
  124. package/components/agents/ocr-extraction-team/ocr-preprocessing-optimizer.md +37 -0
  125. package/components/agents/ocr-extraction-team/ocr-quality-assurance.md +62 -0
  126. package/components/agents/ocr-extraction-team/text-comparison-validator.md +60 -0
  127. package/components/agents/ocr-extraction-team/visual-analysis-ocr.md +52 -0
  128. package/components/agents/performance-testing/load-testing-specialist.md +37 -0
  129. package/components/agents/performance-testing/performance-engineer.md +33 -0
  130. package/components/agents/performance-testing/react-performance-optimization.md +65 -0
  131. package/components/agents/performance-testing/test-automator.md +33 -0
  132. package/components/agents/performance-testing/web-vitals-optimizer.md +37 -0
  133. package/components/agents/podcast-creator-team/academic-research-synthesizer.md +61 -0
  134. package/components/agents/podcast-creator-team/comprehensive-researcher.md +49 -0
  135. package/components/agents/podcast-creator-team/episode-orchestrator.md +52 -0
  136. package/components/agents/podcast-creator-team/guest-outreach-coordinator.md +37 -0
  137. package/components/agents/podcast-creator-team/market-research-analyst.md +54 -0
  138. package/components/agents/podcast-creator-team/podcast-editor.md +37 -0
  139. package/components/agents/podcast-creator-team/podcast-trend-scout.md +60 -0
  140. package/components/agents/podcast-creator-team/project-supervisor-orchestrator.md +48 -0
  141. package/components/agents/podcast-creator-team/seo-podcast-optimizer.md +58 -0
  142. package/components/agents/podcast-creator-team/social-media-copywriter.md +57 -0
  143. package/components/agents/podcast-creator-team/twitter-ai-influencer-manager.md +62 -0
  144. package/components/agents/programming-languages/c-pro.md +36 -0
  145. package/components/agents/programming-languages/c-sharp-pro.md +40 -0
  146. package/components/agents/programming-languages/cpp-pro.md +39 -0
  147. package/components/agents/programming-languages/golang-pro.md +33 -0
  148. package/components/agents/programming-languages/javascript-pro.md +36 -0
  149. package/components/agents/programming-languages/php-pro.md +44 -0
  150. package/components/agents/programming-languages/python-pro.md +33 -0
  151. package/components/agents/programming-languages/rust-pro.md +36 -0
  152. package/components/agents/programming-languages/shell-scripting-pro.md +38 -0
  153. package/components/agents/programming-languages/sql-pro.md +36 -0
  154. package/components/agents/programming-languages/typescript-pro.md +38 -0
  155. package/components/agents/realtime/supabase-realtime-optimizer.md +193 -0
  156. package/components/agents/security/api-security-audit.md +93 -0
  157. package/components/agents/security/compliance-specialist.md +37 -0
  158. package/components/agents/security/incident-responder.md +75 -0
  159. package/components/agents/security/penetration-tester.md +37 -0
  160. package/components/agents/security/security-auditor.md +33 -0
  161. package/components/agents/web-tools/nextjs-architecture-expert.md +194 -0
  162. package/components/agents/web-tools/react-performance-optimizer.md +425 -0
  163. package/components/agents/web-tools/seo-analyzer.md +37 -0
  164. package/components/agents/web-tools/url-context-validator.md +61 -0
  165. package/components/agents/web-tools/url-link-extractor.md +59 -0
  166. package/components/agents/web-tools/web-accessibility-checker.md +37 -0
  167. package/components/commands/automation/act.md +57 -0
  168. package/components/commands/automation/ci-pipeline.md +378 -0
  169. package/components/commands/automation/husky.md +130 -0
  170. package/components/commands/automation/workflow-orchestrator.md +576 -0
  171. package/components/commands/database/supabase-backup-manager.md +37 -0
  172. package/components/commands/database/supabase-data-explorer.md +37 -0
  173. package/components/commands/database/supabase-migration-assistant.md +37 -0
  174. package/components/commands/database/supabase-performance-optimizer.md +37 -0
  175. package/components/commands/database/supabase-realtime-monitor.md +37 -0
  176. package/components/commands/database/supabase-schema-sync.md +37 -0
  177. package/components/commands/database/supabase-security-audit.md +37 -0
  178. package/components/commands/database/supabase-type-generator.md +37 -0
  179. package/components/commands/deployment/add-changelog.md +92 -0
  180. package/components/commands/deployment/blue-green-deployment.md +824 -0
  181. package/components/commands/deployment/changelog-demo-command.md +43 -0
  182. package/components/commands/deployment/ci-setup.md +323 -0
  183. package/components/commands/deployment/containerize-application.md +93 -0
  184. package/components/commands/deployment/deployment-monitoring.md +1228 -0
  185. package/components/commands/deployment/hotfix-deploy.md +283 -0
  186. package/components/commands/deployment/prepare-release.md +357 -0
  187. package/components/commands/deployment/rollback-deploy.md +145 -0
  188. package/components/commands/deployment/setup-automated-releases.md +143 -0
  189. package/components/commands/deployment/setup-kubernetes-deployment.md +93 -0
  190. package/components/commands/documentation/create-architecture-documentation.md +95 -0
  191. package/components/commands/documentation/create-onboarding-guide.md +93 -0
  192. package/components/commands/documentation/doc-api.md +242 -0
  193. package/components/commands/documentation/docs-maintenance.md +119 -0
  194. package/components/commands/documentation/generate-api-documentation.md +97 -0
  195. package/components/commands/documentation/interactive-documentation.md +133 -0
  196. package/components/commands/documentation/load-llms-txt.md +39 -0
  197. package/components/commands/documentation/migration-guide.md +250 -0
  198. package/components/commands/documentation/troubleshooting-guide.md +370 -0
  199. package/components/commands/documentation/update-docs.md +107 -0
  200. package/components/commands/game-development/game-analytics-integration.md +128 -0
  201. package/components/commands/game-development/game-asset-pipeline.md +108 -0
  202. package/components/commands/game-development/game-performance-profiler.md +78 -0
  203. package/components/commands/game-development/game-testing-framework.md +112 -0
  204. package/components/commands/game-development/unity-project-setup.md +190 -0
  205. package/components/commands/git-workflow/branch-cleanup.md +181 -0
  206. package/components/commands/git-workflow/commit.md +167 -0
  207. package/components/commands/git-workflow/create-pr.md +19 -0
  208. package/components/commands/git-workflow/create-pull-request.md +126 -0
  209. package/components/commands/git-workflow/create-worktrees.md +174 -0
  210. package/components/commands/git-workflow/fix-github-issue.md +13 -0
  211. package/components/commands/git-workflow/git-bisect-helper.md +261 -0
  212. package/components/commands/git-workflow/pr-review.md +76 -0
  213. package/components/commands/git-workflow/update-branch-name.md +9 -0
  214. package/components/commands/nextjs-vercel/nextjs-api-tester.md +480 -0
  215. package/components/commands/nextjs-vercel/nextjs-bundle-analyzer.md +406 -0
  216. package/components/commands/nextjs-vercel/nextjs-component-generator.md +489 -0
  217. package/components/commands/nextjs-vercel/nextjs-middleware-creator.md +712 -0
  218. package/components/commands/nextjs-vercel/nextjs-migration-helper.md +778 -0
  219. package/components/commands/nextjs-vercel/nextjs-performance-audit.md +653 -0
  220. package/components/commands/nextjs-vercel/nextjs-scaffold.md +237 -0
  221. package/components/commands/nextjs-vercel/vercel-deploy-optimize.md +341 -0
  222. package/components/commands/nextjs-vercel/vercel-edge-function.md +810 -0
  223. package/components/commands/nextjs-vercel/vercel-env-sync.md +666 -0
  224. package/components/commands/orchestration/archive.md +414 -0
  225. package/components/commands/orchestration/commit.md +305 -0
  226. package/components/commands/orchestration/find.md +272 -0
  227. package/components/commands/orchestration/log.md +355 -0
  228. package/components/commands/orchestration/move.md +220 -0
  229. package/components/commands/orchestration/optimize.md +375 -0
  230. package/components/commands/orchestration/remove.md +301 -0
  231. package/components/commands/orchestration/report.md +292 -0
  232. package/components/commands/orchestration/resume.md +256 -0
  233. package/components/commands/orchestration/start.md +169 -0
  234. package/components/commands/orchestration/status.md +219 -0
  235. package/components/commands/orchestration/sync.md +294 -0
  236. package/components/commands/performance/add-performance-monitoring.md +84 -0
  237. package/components/commands/performance/implement-caching-strategy.md +84 -0
  238. package/components/commands/performance/optimize-api-performance.md +119 -0
  239. package/components/commands/performance/optimize-build.md +139 -0
  240. package/components/commands/performance/optimize-bundle-size.md +84 -0
  241. package/components/commands/performance/optimize-database-performance.md +84 -0
  242. package/components/commands/performance/optimize-memory-usage.md +91 -0
  243. package/components/commands/performance/performance-audit.md +89 -0
  244. package/components/commands/performance/setup-cdn-optimization.md +84 -0
  245. package/components/commands/performance/system-behavior-simulator.md +415 -0
  246. package/components/commands/project-management/add-package.md +90 -0
  247. package/components/commands/project-management/add-to-changelog.md +37 -0
  248. package/components/commands/project-management/create-feature.md +130 -0
  249. package/components/commands/project-management/create-jtbd.md +37 -0
  250. package/components/commands/project-management/create-prd.md +36 -0
  251. package/components/commands/project-management/create-prp.md +37 -0
  252. package/components/commands/project-management/init-project.md +80 -0
  253. package/components/commands/project-management/milestone-tracker.md +44 -0
  254. package/components/commands/project-management/pac-configure.md +32 -0
  255. package/components/commands/project-management/pac-create-epic.md +41 -0
  256. package/components/commands/project-management/pac-create-ticket.md +42 -0
  257. package/components/commands/project-management/pac-update-status.md +39 -0
  258. package/components/commands/project-management/pac-validate.md +35 -0
  259. package/components/commands/project-management/project-health-check.md +58 -0
  260. package/components/commands/project-management/project-timeline-simulator.md +37 -0
  261. package/components/commands/project-management/project-to-linear.md +38 -0
  262. package/components/commands/project-management/release.md +31 -0
  263. package/components/commands/project-management/todo.md +62 -0
  264. package/components/commands/security/add-authentication-system.md +34 -0
  265. package/components/commands/security/dependency-audit.md +32 -0
  266. package/components/commands/security/penetration-test.md +40 -0
  267. package/components/commands/security/secrets-scanner.md +39 -0
  268. package/components/commands/security/security-audit.md +82 -0
  269. package/components/commands/security/security-hardening.md +33 -0
  270. package/components/commands/setup/create-database-migrations.md +35 -0
  271. package/components/commands/setup/design-database-schema.md +37 -0
  272. package/components/commands/setup/design-rest-api.md +37 -0
  273. package/components/commands/setup/implement-graphql-api.md +37 -0
  274. package/components/commands/setup/migrate-to-typescript.md +37 -0
  275. package/components/commands/setup/setup-ci-cd-pipeline.md +37 -0
  276. package/components/commands/setup/setup-development-environment.md +37 -0
  277. package/components/commands/setup/setup-docker-containers.md +37 -0
  278. package/components/commands/setup/setup-formatting.md +37 -0
  279. package/components/commands/setup/setup-linting.md +37 -0
  280. package/components/commands/setup/setup-monitoring-observability.md +37 -0
  281. package/components/commands/setup/setup-monorepo.md +37 -0
  282. package/components/commands/setup/setup-rate-limiting.md +37 -0
  283. package/components/commands/setup/update-dependencies.md +35 -0
  284. package/components/commands/simulation/business-scenario-explorer.md +37 -0
  285. package/components/commands/simulation/constraint-modeler.md +37 -0
  286. package/components/commands/simulation/decision-tree-explorer.md +37 -0
  287. package/components/commands/simulation/digital-twin-creator.md +37 -0
  288. package/components/commands/simulation/future-scenario-generator.md +37 -0
  289. package/components/commands/simulation/market-response-modeler.md +37 -0
  290. package/components/commands/simulation/monte-carlo-simulator.md +37 -0
  291. package/components/commands/simulation/simulation-calibrator.md +37 -0
  292. package/components/commands/simulation/system-dynamics-modeler.md +37 -0
  293. package/components/commands/simulation/timeline-compressor.md +37 -0
  294. package/components/commands/svelte/svelte:a11y.md +105 -0
  295. package/components/commands/svelte/svelte:component.md +81 -0
  296. package/components/commands/svelte/svelte:debug.md +48 -0
  297. package/components/commands/svelte/svelte:migrate.md +79 -0
  298. package/components/commands/svelte/svelte:optimize.md +99 -0
  299. package/components/commands/svelte/svelte:scaffold.md +89 -0
  300. package/components/commands/svelte/svelte:storybook-migrate.md +204 -0
  301. package/components/commands/svelte/svelte:storybook-mock.md +213 -0
  302. package/components/commands/svelte/svelte:storybook-setup.md +113 -0
  303. package/components/commands/svelte/svelte:storybook-story.md +145 -0
  304. package/components/commands/svelte/svelte:storybook-troubleshoot.md +191 -0
  305. package/components/commands/svelte/svelte:storybook.md +48 -0
  306. package/components/commands/svelte/svelte:test-coverage.md +77 -0
  307. package/components/commands/svelte/svelte:test-fix.md +74 -0
  308. package/components/commands/svelte/svelte:test-setup.md +85 -0
  309. package/components/commands/svelte/svelte:test.md +60 -0
  310. package/components/commands/sync/bidirectional-sync.md +37 -0
  311. package/components/commands/sync/bulk-import-issues.md +37 -0
  312. package/components/commands/sync/cross-reference-manager.md +37 -0
  313. package/components/commands/sync/issue-to-linear-task.md +37 -0
  314. package/components/commands/sync/linear-task-to-issue.md +37 -0
  315. package/components/commands/sync/sync-automation-setup.md +37 -0
  316. package/components/commands/sync/sync-conflict-resolver.md +37 -0
  317. package/components/commands/sync/sync-health-monitor.md +37 -0
  318. package/components/commands/sync/sync-issues-to-linear.md +37 -0
  319. package/components/commands/sync/sync-linear-to-issues.md +37 -0
  320. package/components/commands/sync/sync-migration-assistant.md +37 -0
  321. package/components/commands/sync/sync-pr-to-task.md +37 -0
  322. package/components/commands/sync/sync-status.md +391 -0
  323. package/components/commands/sync/task-from-pr.md +37 -0
  324. package/components/commands/team/architecture-review.md +37 -0
  325. package/components/commands/team/decision-quality-analyzer.md +37 -0
  326. package/components/commands/team/dependency-mapper.md +37 -0
  327. package/components/commands/team/estimate-assistant.md +37 -0
  328. package/components/commands/team/issue-triage.md +37 -0
  329. package/components/commands/team/memory-spring-cleaning.md +37 -0
  330. package/components/commands/team/migration-assistant.md +37 -0
  331. package/components/commands/team/retrospective-analyzer.md +37 -0
  332. package/components/commands/team/session-learning-capture.md +37 -0
  333. package/components/commands/team/sprint-planning.md +189 -0
  334. package/components/commands/team/standup-report.md +37 -0
  335. package/components/commands/team/team-knowledge-mapper.md +37 -0
  336. package/components/commands/team/team-velocity-tracker.md +37 -0
  337. package/components/commands/team/team-workload-balancer.md +37 -0
  338. package/components/commands/testing/add-mutation-testing.md +37 -0
  339. package/components/commands/testing/add-property-based-testing.md +37 -0
  340. package/components/commands/testing/e2e-setup.md +37 -0
  341. package/components/commands/testing/generate-test-cases.md +37 -0
  342. package/components/commands/testing/generate-tests.md +82 -0
  343. package/components/commands/testing/setup-comprehensive-testing.md +37 -0
  344. package/components/commands/testing/setup-load-testing.md +37 -0
  345. package/components/commands/testing/setup-visual-testing.md +37 -0
  346. package/components/commands/testing/test-automation-orchestrator.md +37 -0
  347. package/components/commands/testing/test-changelog-automation.md +37 -0
  348. package/components/commands/testing/test-coverage.md +37 -0
  349. package/components/commands/testing/test-quality-analyzer.md +37 -0
  350. package/components/commands/testing/testing_plan_integration.md +37 -0
  351. package/components/commands/testing/write-tests.md +37 -0
  352. package/components/commands/utilities/all-tools.md +31 -0
  353. package/components/commands/utilities/architecture-scenario-explorer.md +375 -0
  354. package/components/commands/utilities/check-file.md +53 -0
  355. package/components/commands/utilities/clean-branches.md +243 -0
  356. package/components/commands/utilities/clean.md +1 -0
  357. package/components/commands/utilities/code-permutation-tester.md +341 -0
  358. package/components/commands/utilities/code-review.md +70 -0
  359. package/components/commands/utilities/code-to-task.md +583 -0
  360. package/components/commands/utilities/context-prime.md +1 -0
  361. package/components/commands/utilities/debug-error.md +121 -0
  362. package/components/commands/utilities/directory-deep-dive.md +34 -0
  363. package/components/commands/utilities/explain-code.md +194 -0
  364. package/components/commands/utilities/fix-issue.md +85 -0
  365. package/components/commands/utilities/generate-linear-worklog.md +113 -0
  366. package/components/commands/utilities/git-status.md +39 -0
  367. package/components/commands/utilities/initref.md +3 -0
  368. package/components/commands/utilities/prime.md +41 -0
  369. package/components/commands/utilities/refactor-code.md +116 -0
  370. package/components/commands/utilities/ultra-think.md +153 -0
  371. package/components/hooks/HOOK_PATTERNS_COMPRESSED.json +1 -0
  372. package/components/hooks/automation/build-on-change.json +16 -0
  373. package/components/hooks/automation/dependency-checker.json +16 -0
  374. package/components/hooks/automation/deployment-health-monitor.json +29 -0
  375. package/components/hooks/automation/discord-detailed-notifications.json +26 -0
  376. package/components/hooks/automation/discord-error-notifications.json +37 -0
  377. package/components/hooks/automation/discord-notifications.json +25 -0
  378. package/components/hooks/automation/simple-notifications.json +16 -0
  379. package/components/hooks/automation/slack-detailed-notifications.json +26 -0
  380. package/components/hooks/automation/slack-error-notifications.json +37 -0
  381. package/components/hooks/automation/slack-notifications.json +25 -0
  382. package/components/hooks/automation/telegram-detailed-notifications.json +26 -0
  383. package/components/hooks/automation/telegram-error-notifications.json +37 -0
  384. package/components/hooks/automation/telegram-notifications.json +25 -0
  385. package/components/hooks/automation/vercel-auto-deploy.json +17 -0
  386. package/components/hooks/automation/vercel-environment-sync.json +29 -0
  387. package/components/hooks/development-tools/change-tracker.json +25 -0
  388. package/components/hooks/development-tools/command-logger.json +16 -0
  389. package/components/hooks/development-tools/file-backup.json +16 -0
  390. package/components/hooks/development-tools/lint-on-save.json +16 -0
  391. package/components/hooks/development-tools/nextjs-code-quality-enforcer.json +17 -0
  392. package/components/hooks/development-tools/smart-formatting.json +16 -0
  393. package/components/hooks/git-workflow/auto-git-add.json +16 -0
  394. package/components/hooks/git-workflow/smart-commit.json +25 -0
  395. package/components/hooks/performance/performance-budget-guard.json +27 -0
  396. package/components/hooks/performance/performance-monitor.json +27 -0
  397. package/components/hooks/post-tool/format-javascript-files.json +16 -0
  398. package/components/hooks/post-tool/format-python-files.json +16 -0
  399. package/components/hooks/post-tool/git-add-changes.json +25 -0
  400. package/components/hooks/post-tool/run-tests-after-changes.json +16 -0
  401. package/components/hooks/pre-tool/backup-before-edit.json +16 -0
  402. package/components/hooks/pre-tool/notify-before-bash.json +16 -0
  403. package/components/hooks/security/file-protection.json +16 -0
  404. package/components/hooks/security/security-scanner.json +16 -0
  405. package/components/hooks/testing/test-runner.json +16 -0
  406. package/components/mcps/browser_automation/browser-use-mcp-server.json +20 -0
  407. package/components/mcps/browser_automation/browsermcp.json +9 -0
  408. package/components/mcps/browser_automation/mcp-server-browserbase.json +14 -0
  409. package/components/mcps/browser_automation/mcp-server-playwright.json +9 -0
  410. package/components/mcps/browser_automation/playwright-mcp-server.json +9 -0
  411. package/components/mcps/browser_automation/playwright-mcp.json +11 -0
  412. package/components/mcps/database/mysql-integration.json +12 -0
  413. package/components/mcps/database/postgresql-integration.json +12 -0
  414. package/components/mcps/database/supabase.json +17 -0
  415. package/components/mcps/deepgraph/deepgraph-nextjs.json +13 -0
  416. package/components/mcps/deepgraph/deepgraph-react.json +13 -0
  417. package/components/mcps/deepgraph/deepgraph-typescript.json +13 -0
  418. package/components/mcps/deepgraph/deepgraph-vue.json +13 -0
  419. package/components/mcps/devtools/circleci.json +13 -0
  420. package/components/mcps/devtools/context7.json +9 -0
  421. package/components/mcps/devtools/firefly-mcp.json +13 -0
  422. package/components/mcps/devtools/ios-simulator-mcp.json +9 -0
  423. package/components/mcps/devtools/just-mcp.json +9 -0
  424. package/components/mcps/devtools/leetcode.json +8 -0
  425. package/components/mcps/devtools/mcp-server-atlassian-bitbucket.json +9 -0
  426. package/components/mcps/devtools/mcp-server-trello.json +12 -0
  427. package/components/mcps/filesystem/filesystem-access.json +13 -0
  428. package/components/mcps/integration/github-integration.json +12 -0
  429. package/components/mcps/integration/memory-integration.json +9 -0
  430. package/components/mcps/marketing/facebook-ads-mcp-server.json +13 -0
  431. package/components/mcps/marketing/google-ads-mcp-server.json +11 -0
  432. package/components/mcps/web/web-fetch.json +9 -0
  433. package/components/sandbox/README.md +169 -0
  434. package/components/sandbox/e2b/.env.example +10 -0
  435. package/components/sandbox/e2b/SANDBOX_DEBUGGING.md +203 -0
  436. package/components/sandbox/e2b/claude-code-sandbox.md +110 -0
  437. package/components/sandbox/e2b/e2b-launcher.py +426 -0
  438. package/components/sandbox/e2b/e2b-monitor.py +229 -0
  439. package/components/sandbox/e2b/requirements.txt +1 -0
  440. package/components/settings/api/bedrock-configuration.json +7 -0
  441. package/components/settings/api/corporate-proxy.json +7 -0
  442. package/components/settings/api/custom-headers.json +6 -0
  443. package/components/settings/api/vertex-configuration.json +8 -0
  444. package/components/settings/authentication/api-key-helper.json +7 -0
  445. package/components/settings/authentication/force-claudeai-login.json +4 -0
  446. package/components/settings/authentication/force-console-login.json +4 -0
  447. package/components/settings/cleanup/retention-7-days.json +4 -0
  448. package/components/settings/cleanup/retention-90-days.json +4 -0
  449. package/components/settings/environment/bash-timeouts.json +8 -0
  450. package/components/settings/environment/development-utils.json +8 -0
  451. package/components/settings/environment/performance-optimization.json +8 -0
  452. package/components/settings/environment/privacy-focused.json +10 -0
  453. package/components/settings/global/aws-credentials.json +5 -0
  454. package/components/settings/global/custom-model.json +7 -0
  455. package/components/settings/global/git-commit-settings.json +4 -0
  456. package/components/settings/mcp/disable-risky-servers.json +8 -0
  457. package/components/settings/mcp/enable-all-project-servers.json +4 -0
  458. package/components/settings/mcp/enable-specific-servers.json +8 -0
  459. package/components/settings/mcp/mcp-timeouts.json +8 -0
  460. package/components/settings/model/use-haiku.json +4 -0
  461. package/components/settings/model/use-sonnet.json +4 -0
  462. package/components/settings/permissions/additional-directories.json +11 -0
  463. package/components/settings/permissions/allow-git-operations.json +14 -0
  464. package/components/settings/permissions/allow-npm-commands.json +11 -0
  465. package/components/settings/permissions/deny-sensitive-files.json +11 -0
  466. package/components/settings/permissions/development-mode.json +31 -0
  467. package/components/settings/permissions/read-only-mode.json +18 -0
  468. package/components/settings/statusline/asset-pipeline-controller-statusline.json +7 -0
  469. package/components/settings/statusline/bug-circus-statusline.json +7 -0
  470. package/components/settings/statusline/code-casino-statusline.json +7 -0
  471. package/components/settings/statusline/code-spaceship-statusline.json +7 -0
  472. package/components/settings/statusline/colorful-statusline.json +7 -0
  473. package/components/settings/statusline/command-statusline.json +8 -0
  474. package/components/settings/statusline/context-monitor.json +7 -0
  475. package/components/settings/statusline/context-monitor.py +236 -0
  476. package/components/settings/statusline/data-ocean-statusline.json +7 -0
  477. package/components/settings/statusline/emotion-theater-statusline.json +7 -0
  478. package/components/settings/statusline/game-performance-monitor-statusline.json +7 -0
  479. package/components/settings/statusline/git-branch-statusline.json +7 -0
  480. package/components/settings/statusline/minimal-statusline.json +7 -0
  481. package/components/settings/statusline/multiplatform-build-status-statusline.json +7 -0
  482. package/components/settings/statusline/productivity-rainbow-statusline.json +7 -0
  483. package/components/settings/statusline/programmer-tamagotchi-statusline.json +7 -0
  484. package/components/settings/statusline/programming-fitness-tracker-statusline.json +7 -0
  485. package/components/settings/statusline/project-info-statusline.json +7 -0
  486. package/components/settings/statusline/rpg-status-bar-statusline.json +7 -0
  487. package/components/settings/statusline/time-statusline.json +7 -0
  488. package/components/settings/statusline/unity-project-dashboard-statusline.json +7 -0
  489. package/components/settings/statusline/vercel-deployment-monitor.json +7 -0
  490. package/components/settings/statusline/vercel-error-alert-system.json +7 -0
  491. package/components/settings/statusline/vercel-multi-env-status.json +7 -0
  492. package/components/settings/statusline/virtual-code-garden-statusline.json +7 -0
  493. package/components/settings/statusline/zero-config-deployment-monitor.json +7 -0
  494. package/components/settings/telemetry/custom-telemetry.json +7 -0
  495. package/components/settings/telemetry/disable-telemetry.json +6 -0
  496. package/components/settings/telemetry/enable-telemetry.json +6 -0
  497. package/package.json +2 -1
  498. package/src/index.js +59 -24
@@ -0,0 +1,195 @@
1
+ #!/usr/bin/env python3
2
+ """Implement entity-based connections from Link Suggestions Report."""
3
+
4
+ import re
5
+ import os
6
+ from pathlib import Path
7
+
8
+ # Priority entities to focus on
9
+ PRIORITY_ENTITIES = {
10
+ 'langchain', 'langgraph', 'llm', 'rag', 'embedding', 'vector',
11
+ 'mcp', 'model context protocol', 'api integration', 'function calling',
12
+ 'anthropic', 'openai', 'google', 'claude', 'gpt',
13
+ 'autonomous agent', 'ai agent', 'chain of thought', 'prompt engineering',
14
+ 'retrieval augmented', 'graphrag', 'multimodal', 'tool use'
15
+ }
16
+
17
+ def read_file(file_path):
18
+ """Read file content."""
19
+ try:
20
+ with open(file_path, 'r', encoding='utf-8') as f:
21
+ return f.read()
22
+ except:
23
+ return None
24
+
25
+ def write_file(file_path, content):
26
+ """Write content to file."""
27
+ try:
28
+ with open(file_path, 'w', encoding='utf-8') as f:
29
+ f.write(content)
30
+ return True
31
+ except:
32
+ return False
33
+
34
+ def find_file(filename, search_dirs):
35
+ """Find a file in the vault."""
36
+ for dir_path in search_dirs:
37
+ for root, dirs, files in os.walk(dir_path):
38
+ for file in files:
39
+ if file == filename or file == filename + '.md':
40
+ return os.path.join(root, file)
41
+ return None
42
+
43
+ def add_link_to_file(file_path, link_to_add, link_text=None):
44
+ """Add a link to a file if it doesn't already exist."""
45
+ content = read_file(file_path)
46
+ if not content:
47
+ return False
48
+
49
+ # Check if link already exists
50
+ if f'[[{link_to_add}]]' in content:
51
+ return False
52
+
53
+ # Find a good place to add the link
54
+ # Look for existing "Related:" or "See also:" sections
55
+ related_patterns = [
56
+ r'^#+\s*Related.*?$',
57
+ r'^#+\s*See also.*?$',
58
+ r'^#+\s*Links.*?$',
59
+ r'^#+\s*References.*?$'
60
+ ]
61
+
62
+ insert_pos = None
63
+ for pattern in related_patterns:
64
+ match = re.search(pattern, content, re.MULTILINE | re.IGNORECASE)
65
+ if match:
66
+ # Find the end of this section
67
+ insert_pos = match.end()
68
+ # Skip to next line
69
+ next_line = content.find('\n', insert_pos)
70
+ if next_line != -1:
71
+ insert_pos = next_line + 1
72
+ break
73
+
74
+ # If no related section found, add at the end of frontmatter
75
+ if insert_pos is None:
76
+ # Find end of frontmatter
77
+ frontmatter_end = content.find('---', 3)
78
+ if frontmatter_end != -1:
79
+ insert_pos = content.find('\n', frontmatter_end + 3) + 1
80
+ else:
81
+ # No frontmatter, add at beginning
82
+ insert_pos = 0
83
+
84
+ # Create the link line
85
+ if link_text:
86
+ link_line = f"- [[{link_to_add}]] - {link_text}\n"
87
+ else:
88
+ link_line = f"- [[{link_to_add}]]\n"
89
+
90
+ # If we're not in a list section, create one
91
+ if insert_pos is None or (insert_pos > 0 and content[insert_pos-2:insert_pos] != '\n\n'):
92
+ # Check if we need to add a Related section
93
+ needs_section = True
94
+ for pattern in related_patterns:
95
+ if re.search(pattern, content, re.MULTILINE | re.IGNORECASE):
96
+ needs_section = False
97
+ break
98
+
99
+ if needs_section:
100
+ # Add at end of file with new Related section
101
+ if not content.endswith('\n'):
102
+ content += '\n'
103
+ content += '\n## Related\n'
104
+ content += link_line
105
+ else:
106
+ # Insert in existing section
107
+ new_content = content[:insert_pos] + link_line + content[insert_pos:]
108
+ content = new_content
109
+ else:
110
+ # Insert at found position
111
+ new_content = content[:insert_pos] + link_line + content[insert_pos:]
112
+ content = new_content
113
+
114
+ return write_file(file_path, content)
115
+
116
+ def implement_connections():
117
+ """Implement priority entity connections."""
118
+ vault_root = Path("/Users/cam/VAULT01")
119
+ search_dirs = [
120
+ vault_root / "AI Development",
121
+ vault_root / "AI Articles and Research",
122
+ vault_root / "AI IDEAS",
123
+ vault_root / "AI Courses",
124
+ vault_root / "CamRohn LLC",
125
+ vault_root / "Clippings"
126
+ ]
127
+
128
+ # Read the report
129
+ report_path = vault_root / "System_Files" / "Link_Suggestions_Report.md"
130
+ report_content = read_file(report_path)
131
+
132
+ if not report_content:
133
+ print("Could not read report")
134
+ return
135
+
136
+ # Parse entity connections
137
+ connections_made = 0
138
+ connections_by_entity = {}
139
+
140
+ # Find entity sections
141
+ entity_pattern = r'^### (.+)$'
142
+ connection_pattern = r'- \[\[([^\]]+)\]\] ↔ \[\[([^\]]+)\]\]'
143
+
144
+ current_entity = None
145
+ for line in report_content.split('\n'):
146
+ # Check for entity header
147
+ entity_match = re.match(entity_pattern, line)
148
+ if entity_match:
149
+ current_entity = entity_match.group(1).strip().lower()
150
+ continue
151
+
152
+ # Check for connection
153
+ if current_entity and current_entity in [e.lower() for e in PRIORITY_ENTITIES]:
154
+ conn_match = re.match(connection_pattern, line)
155
+ if conn_match:
156
+ file1 = conn_match.group(1).strip()
157
+ file2 = conn_match.group(2).strip()
158
+
159
+ # Skip self-connections
160
+ if file1 == file2:
161
+ continue
162
+
163
+ # Find actual file paths
164
+ file1_path = find_file(file1 + '.md', search_dirs)
165
+ file2_path = find_file(file2 + '.md', search_dirs)
166
+
167
+ if file1_path and file2_path:
168
+ # Add bidirectional links
169
+ if add_link_to_file(file1_path, file2, f"Related to {current_entity}"):
170
+ connections_made += 1
171
+ if current_entity not in connections_by_entity:
172
+ connections_by_entity[current_entity] = 0
173
+ connections_by_entity[current_entity] += 1
174
+ print(f"Added link from {file1} to {file2}")
175
+
176
+ if add_link_to_file(file2_path, file1, f"Related to {current_entity}"):
177
+ connections_made += 1
178
+ if current_entity not in connections_by_entity:
179
+ connections_by_entity[current_entity] = 0
180
+ connections_by_entity[current_entity] += 1
181
+ print(f"Added link from {file2} to {file1}")
182
+
183
+ # Generate report
184
+ print("\n=== Connection Implementation Report ===")
185
+ print(f"Total connections made: {connections_made}")
186
+ print("\nConnections by entity:")
187
+ for entity, count in sorted(connections_by_entity.items(), key=lambda x: x[1], reverse=True):
188
+ print(f" {entity}: {count} connections")
189
+
190
+ # Find cross-domain connections
191
+ print("\nCross-domain connections created:")
192
+ # This would require more complex analysis of file paths
193
+
194
+ if __name__ == "__main__":
195
+ implement_connections()
@@ -0,0 +1,301 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Link Suggester for Obsidian Vault
4
+ Identifies potential connections between notes based on content analysis.
5
+ """
6
+
7
+ import os
8
+ import re
9
+ from pathlib import Path
10
+ from collections import defaultdict, Counter
11
+ import argparse
12
+ import json
13
+
14
+ class LinkSuggester:
15
+ def __init__(self, vault_path):
16
+ self.vault_path = Path(vault_path)
17
+ self.notes = {}
18
+ self.entity_mentions = defaultdict(set)
19
+ self.potential_links = []
20
+
21
+ # Common entities to look for
22
+ self.entities = {
23
+ 'technologies': [
24
+ 'langchain', 'langgraph', 'mcp', 'model context protocol',
25
+ 'graphrag', 'openai', 'anthropic', 'claude', 'gpt', 'llm',
26
+ 'ollama', 'huggingface', 'github', 'python', 'javascript',
27
+ 'cloudflare', 'supabase', 'vector database', 'embedding',
28
+ 'ai agent', 'autonomous agent', 'rag', 'retrieval augmented'
29
+ ],
30
+ 'concepts': [
31
+ 'machine learning', 'deep learning', 'neural network',
32
+ 'transformer', 'attention mechanism', 'fine-tuning',
33
+ 'prompt engineering', 'chain of thought', 'reasoning',
34
+ 'multimodal', 'text generation', 'code generation',
35
+ 'tool use', 'function calling', 'api integration'
36
+ ],
37
+ 'companies': [
38
+ 'google', 'microsoft', 'amazon', 'meta', 'apple',
39
+ 'nvidia', 'intel', 'amd', 'tesla', 'stripe',
40
+ 'y combinator', 'techstars', 'propel', 'dental'
41
+ ],
42
+ 'people': [
43
+ 'andrew ng', 'geoffrey hinton', 'yann lecun', 'ilya sutskever',
44
+ 'sam altman', 'dario amodei', 'demis hassabis', 'jensen huang'
45
+ ]
46
+ }
47
+
48
+ # Flatten entities for easier searching
49
+ self.all_entities = []
50
+ for category, entities in self.entities.items():
51
+ self.all_entities.extend(entities)
52
+
53
+ def load_notes(self):
54
+ """Load all markdown files and their content."""
55
+ skip_dirs = {'.obsidian', '.trash', 'System_Files', '.git'}
56
+
57
+ for file_path in self.vault_path.rglob('*.md'):
58
+ if any(skip_dir in file_path.parts for skip_dir in skip_dirs):
59
+ continue
60
+
61
+ try:
62
+ with open(file_path, 'r', encoding='utf-8') as f:
63
+ content = f.read()
64
+
65
+ # Extract title
66
+ title_match = re.search(r'^#\s+(.+)$', content, re.MULTILINE)
67
+ title = title_match.group(1) if title_match else file_path.stem
68
+
69
+ # Extract existing links
70
+ existing_links = set(re.findall(r'\[\[([^\]]+)\]\]', content))
71
+
72
+ self.notes[file_path] = {
73
+ 'title': title,
74
+ 'content': content.lower(),
75
+ 'existing_links': existing_links,
76
+ 'word_count': len(content.split())
77
+ }
78
+
79
+ except Exception as e:
80
+ print(f"Error reading {file_path}: {e}")
81
+
82
+ def find_entity_mentions(self):
83
+ """Find mentions of entities across all notes."""
84
+ for file_path, note_data in self.notes.items():
85
+ content = note_data['content']
86
+
87
+ for entity in self.all_entities:
88
+ if entity in content:
89
+ self.entity_mentions[entity].add(file_path)
90
+
91
+ def suggest_links_by_entities(self):
92
+ """Suggest links based on common entity mentions."""
93
+ suggestions = []
94
+
95
+ for entity, files in self.entity_mentions.items():
96
+ if len(files) >= 2: # Entity mentioned in at least 2 files
97
+ file_list = list(files)
98
+
99
+ for i, file1 in enumerate(file_list):
100
+ for file2 in file_list[i+1:]:
101
+ # Check if files don't already link to each other
102
+ note1 = self.notes[file1]
103
+ note2 = self.notes[file2]
104
+
105
+ if (note2['title'] not in note1['existing_links'] and
106
+ note1['title'] not in note2['existing_links']):
107
+
108
+ suggestions.append({
109
+ 'file1': file1,
110
+ 'file2': file2,
111
+ 'title1': note1['title'],
112
+ 'title2': note2['title'],
113
+ 'common_entity': entity,
114
+ 'type': 'entity_mention',
115
+ 'confidence': len(files) / 10 # Simple confidence score
116
+ })
117
+
118
+ return suggestions
119
+
120
+ def suggest_links_by_keywords(self):
121
+ """Suggest links based on keyword overlap."""
122
+ suggestions = []
123
+
124
+ # Extract keywords from titles and content
125
+ for file_path, note_data in self.notes.items():
126
+ if note_data['word_count'] < 100: # Skip very short notes
127
+ continue
128
+
129
+ # Get keywords from title
130
+ title_words = set(re.findall(r'\b\w{4,}\b', note_data['title'].lower()))
131
+
132
+ # Find other notes with similar keywords
133
+ for other_path, other_data in self.notes.items():
134
+ if file_path == other_path:
135
+ continue
136
+
137
+ other_title_words = set(re.findall(r'\b\w{4,}\b', other_data['title'].lower()))
138
+
139
+ # Check for keyword overlap
140
+ common_words = title_words.intersection(other_title_words)
141
+ if len(common_words) >= 2: # At least 2 common significant words
142
+
143
+ # Check if files don't already link to each other
144
+ if (other_data['title'] not in note_data['existing_links'] and
145
+ note_data['title'] not in other_data['existing_links']):
146
+
147
+ suggestions.append({
148
+ 'file1': file_path,
149
+ 'file2': other_path,
150
+ 'title1': note_data['title'],
151
+ 'title2': other_data['title'],
152
+ 'common_words': list(common_words),
153
+ 'type': 'keyword_overlap',
154
+ 'confidence': len(common_words) / 5
155
+ })
156
+
157
+ return suggestions
158
+
159
+ def find_orphaned_notes(self):
160
+ """Find notes with no incoming or outgoing links."""
161
+ orphaned = []
162
+
163
+ for file_path, note_data in self.notes.items():
164
+ if len(note_data['existing_links']) == 0:
165
+ # Check if any other notes link to this one
166
+ mentioned_in = []
167
+ for other_path, other_data in self.notes.items():
168
+ if note_data['title'] in other_data['existing_links']:
169
+ mentioned_in.append(other_path)
170
+
171
+ if not mentioned_in:
172
+ orphaned.append({
173
+ 'file': file_path,
174
+ 'title': note_data['title'],
175
+ 'word_count': note_data['word_count']
176
+ })
177
+
178
+ return orphaned
179
+
180
+ def analyze_vault(self):
181
+ """Perform complete analysis of the vault."""
182
+ print("Loading notes...")
183
+ self.load_notes()
184
+ print(f"Loaded {len(self.notes)} notes")
185
+
186
+ print("Finding entity mentions...")
187
+ self.find_entity_mentions()
188
+
189
+ print("Generating link suggestions...")
190
+ entity_suggestions = self.suggest_links_by_entities()
191
+ keyword_suggestions = self.suggest_links_by_keywords()
192
+ orphaned_notes = self.find_orphaned_notes()
193
+
194
+ return {
195
+ 'entity_suggestions': entity_suggestions,
196
+ 'keyword_suggestions': keyword_suggestions,
197
+ 'orphaned_notes': orphaned_notes,
198
+ 'stats': {
199
+ 'total_notes': len(self.notes),
200
+ 'entity_suggestions': len(entity_suggestions),
201
+ 'keyword_suggestions': len(keyword_suggestions),
202
+ 'orphaned_notes': len(orphaned_notes)
203
+ }
204
+ }
205
+
206
+ def generate_report(self, results, output_file=None):
207
+ """Generate a human-readable report."""
208
+ report = []
209
+
210
+ report.append("# Link Suggestions Report")
211
+ report.append(f"Generated for vault: {self.vault_path}")
212
+ report.append(f"Total notes analyzed: {results['stats']['total_notes']}")
213
+ report.append("")
214
+
215
+ # Entity-based suggestions
216
+ report.append("## Entity-Based Link Suggestions")
217
+ report.append(f"Found {len(results['entity_suggestions'])} potential connections")
218
+ report.append("")
219
+
220
+ # Group by entity
221
+ entity_groups = defaultdict(list)
222
+ for suggestion in results['entity_suggestions']:
223
+ entity_groups[suggestion['common_entity']].append(suggestion)
224
+
225
+ for entity, suggestions in sorted(entity_groups.items()):
226
+ report.append(f"### {entity.title()}")
227
+ for suggestion in suggestions[:5]: # Top 5 per entity
228
+ report.append(f"- [[{suggestion['title1']}]] ↔ [[{suggestion['title2']}]]")
229
+ report.append("")
230
+
231
+ # Keyword-based suggestions
232
+ report.append("## Keyword-Based Link Suggestions")
233
+ report.append(f"Found {len(results['keyword_suggestions'])} potential connections")
234
+ report.append("")
235
+
236
+ # Sort by confidence
237
+ sorted_keywords = sorted(results['keyword_suggestions'],
238
+ key=lambda x: x['confidence'], reverse=True)
239
+
240
+ for suggestion in sorted_keywords[:20]: # Top 20
241
+ common_words = ', '.join(suggestion['common_words'])
242
+ report.append(f"- [[{suggestion['title1']}]] ↔ [[{suggestion['title2']}]]")
243
+ report.append(f" Common words: {common_words}")
244
+ report.append("")
245
+
246
+ # Orphaned notes
247
+ report.append("## Orphaned Notes (No Links)")
248
+ report.append(f"Found {len(results['orphaned_notes'])} notes with no connections")
249
+ report.append("")
250
+
251
+ # Sort by word count (longer notes first)
252
+ sorted_orphaned = sorted(results['orphaned_notes'],
253
+ key=lambda x: x['word_count'], reverse=True)
254
+
255
+ for note in sorted_orphaned[:30]: # Top 30
256
+ report.append(f"- [[{note['title']}]] ({note['word_count']} words)")
257
+
258
+ report_text = '\n'.join(report)
259
+
260
+ if output_file:
261
+ with open(output_file, 'w', encoding='utf-8') as f:
262
+ f.write(report_text)
263
+ print(f"Report saved to: {output_file}")
264
+
265
+ return report_text
266
+
267
+ def main():
268
+ parser = argparse.ArgumentParser(description='Suggest links for Obsidian vault')
269
+ parser.add_argument('--vault', default='/Users/cam/VAULT01',
270
+ help='Path to Obsidian vault')
271
+ parser.add_argument('--output',
272
+ default='/Users/cam/VAULT01/System_Files/Link_Suggestions_Report.md',
273
+ help='Output file for report')
274
+ parser.add_argument('--json',
275
+ help='Output JSON file for programmatic use')
276
+
277
+ args = parser.parse_args()
278
+
279
+ suggester = LinkSuggester(args.vault)
280
+ results = suggester.analyze_vault()
281
+
282
+ # Generate report
283
+ report = suggester.generate_report(results, args.output)
284
+
285
+ # Save JSON if requested
286
+ if args.json:
287
+ with open(args.json, 'w') as f:
288
+ json.dump(results, f, indent=2, default=str)
289
+ print(f"JSON data saved to: {args.json}")
290
+
291
+ # Print summary
292
+ print("\n" + "="*50)
293
+ print("LINK SUGGESTIONS SUMMARY")
294
+ print("="*50)
295
+ print(f"Total notes: {results['stats']['total_notes']}")
296
+ print(f"Entity-based suggestions: {results['stats']['entity_suggestions']}")
297
+ print(f"Keyword-based suggestions: {results['stats']['keyword_suggestions']}")
298
+ print(f"Orphaned notes: {results['stats']['orphaned_notes']}")
299
+
300
+ if __name__ == '__main__':
301
+ main()
@@ -0,0 +1,197 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Metadata Adder for Obsidian Vault
4
+ Adds standardized frontmatter to markdown files that lack it.
5
+ """
6
+
7
+ import os
8
+ import re
9
+ from datetime import datetime
10
+ from pathlib import Path
11
+ import argparse
12
+
13
+ class MetadataAdder:
14
+ def __init__(self, vault_path):
15
+ self.vault_path = Path(vault_path)
16
+ self.stats = {
17
+ 'processed': 0,
18
+ 'updated': 0,
19
+ 'skipped': 0,
20
+ 'errors': 0
21
+ }
22
+
23
+ def get_file_creation_date(self, file_path):
24
+ """Get file creation date from filesystem."""
25
+ try:
26
+ stat = os.stat(file_path)
27
+ # Use birthtime on macOS, ctime on others
28
+ timestamp = stat.st_birthtime if hasattr(stat, 'st_birthtime') else stat.st_ctime
29
+ return datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d')
30
+ except:
31
+ return datetime.now().strftime('%Y-%m-%d')
32
+
33
+ def determine_file_type(self, file_path):
34
+ """Determine the type of note based on path and content."""
35
+ path_str = str(file_path).lower()
36
+
37
+ if 'moc' in path_str or 'map of content' in path_str:
38
+ return 'map-of-content'
39
+ elif 'daily notes' in path_str or 'daily note' in path_str:
40
+ return 'daily'
41
+ elif 'research' in path_str or 'articles' in path_str:
42
+ return 'research'
43
+ elif 'client' in path_str or 'camrohn llc' in path_str:
44
+ return 'client-work'
45
+ elif 'tutorial' in path_str or 'course' in path_str:
46
+ return 'tutorial'
47
+ elif 'idea' in path_str:
48
+ return 'idea'
49
+ elif 'meeting' in path_str:
50
+ return 'meeting'
51
+ elif 'email' in path_str:
52
+ return 'email'
53
+ else:
54
+ return 'note'
55
+
56
+ def generate_tags_from_path(self, file_path):
57
+ """Generate tags based on file path."""
58
+ tags = []
59
+ path_parts = file_path.relative_to(self.vault_path).parts[:-1] # Exclude filename
60
+
61
+ # Map directory names to tags
62
+ tag_mapping = {
63
+ 'ai development': 'ai/development',
64
+ 'ai articles': 'ai/research',
65
+ 'ai courses': 'tutorial/course',
66
+ 'ai ideas': 'idea',
67
+ 'camrohn llc': 'client',
68
+ 'daily notes': 'daily',
69
+ 'clippings': 'clippings',
70
+ 'mcp': 'mcp',
71
+ 'langchain': 'langchain',
72
+ 'graphrag': 'graphrag'
73
+ }
74
+
75
+ for part in path_parts:
76
+ part_lower = part.lower()
77
+ for key, tag in tag_mapping.items():
78
+ if key in part_lower:
79
+ tags.append(tag)
80
+ break
81
+
82
+ # Add date tags for daily notes
83
+ if 'daily' in tags:
84
+ created_date = self.get_file_creation_date(file_path)
85
+ year_month = datetime.strptime(created_date, '%Y-%m-%d').strftime('%Y/%m')
86
+ tags.append(f'daily/{year_month}')
87
+
88
+ return list(set(tags)) # Remove duplicates
89
+
90
+ def has_frontmatter(self, content):
91
+ """Check if content already has frontmatter."""
92
+ return content.strip().startswith('---')
93
+
94
+ def create_frontmatter(self, file_path, existing_content):
95
+ """Create appropriate frontmatter for the file."""
96
+ created_date = self.get_file_creation_date(file_path)
97
+ file_type = self.determine_file_type(file_path)
98
+ tags = self.generate_tags_from_path(file_path)
99
+
100
+ # Extract title from first heading or filename
101
+ title_match = re.search(r'^#\s+(.+)$', existing_content, re.MULTILINE)
102
+ if title_match:
103
+ title = title_match.group(1)
104
+ else:
105
+ title = file_path.stem.replace('_', ' ').replace('-', ' ')
106
+
107
+ frontmatter = f"""---
108
+ tags: {tags}
109
+ type: {file_type}
110
+ created: {created_date}
111
+ modified: {datetime.now().strftime('%Y-%m-%d')}
112
+ status: active
113
+ related: []
114
+ aliases: []
115
+ ---
116
+
117
+ """
118
+
119
+ return frontmatter
120
+
121
+ def process_file(self, file_path):
122
+ """Process a single markdown file."""
123
+ try:
124
+ with open(file_path, 'r', encoding='utf-8') as f:
125
+ content = f.read()
126
+
127
+ if self.has_frontmatter(content):
128
+ self.stats['skipped'] += 1
129
+ return False
130
+
131
+ # Create and prepend frontmatter
132
+ frontmatter = self.create_frontmatter(file_path, content)
133
+ new_content = frontmatter + content
134
+
135
+ # Write back to file
136
+ with open(file_path, 'w', encoding='utf-8') as f:
137
+ f.write(new_content)
138
+
139
+ self.stats['updated'] += 1
140
+ return True
141
+
142
+ except Exception as e:
143
+ print(f"Error processing {file_path}: {e}")
144
+ self.stats['errors'] += 1
145
+ return False
146
+
147
+ def process_vault(self, dry_run=False):
148
+ """Process all markdown files in the vault."""
149
+ # Directories to skip
150
+ skip_dirs = {'.obsidian', '.trash', 'System_Files', '.git'}
151
+
152
+ for file_path in self.vault_path.rglob('*.md'):
153
+ # Skip files in excluded directories
154
+ if any(skip_dir in file_path.parts for skip_dir in skip_dirs):
155
+ continue
156
+
157
+ self.stats['processed'] += 1
158
+
159
+ if dry_run:
160
+ with open(file_path, 'r', encoding='utf-8') as f:
161
+ content = f.read()
162
+
163
+ if not self.has_frontmatter(content):
164
+ print(f"Would update: {file_path.relative_to(self.vault_path)}")
165
+ self.stats['updated'] += 1
166
+ else:
167
+ self.stats['skipped'] += 1
168
+ else:
169
+ if self.process_file(file_path):
170
+ print(f"Updated: {file_path.relative_to(self.vault_path)}")
171
+
172
+ return self.stats
173
+
174
+ def main():
175
+ parser = argparse.ArgumentParser(description='Add metadata to Obsidian vault files')
176
+ parser.add_argument('--vault', default='/Users/cam/VAULT01',
177
+ help='Path to Obsidian vault')
178
+ parser.add_argument('--dry-run', action='store_true',
179
+ help='Show what would be updated without making changes')
180
+
181
+ args = parser.parse_args()
182
+
183
+ adder = MetadataAdder(args.vault)
184
+ print(f"Processing vault at: {args.vault}")
185
+ print("Dry run mode" if args.dry_run else "Making changes")
186
+ print("-" * 50)
187
+
188
+ stats = adder.process_vault(dry_run=args.dry_run)
189
+
190
+ print("-" * 50)
191
+ print(f"Files processed: {stats['processed']}")
192
+ print(f"Files updated: {stats['updated']}")
193
+ print(f"Files skipped (already have metadata): {stats['skipped']}")
194
+ print(f"Errors: {stats['errors']}")
195
+
196
+ if __name__ == '__main__':
197
+ main()