forge-server 0.1.0

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 (412) hide show
  1. package/.claude/hooks/worktree-create.sh +64 -0
  2. package/.claude/hooks/worktree-remove.sh +57 -0
  3. package/.claude/settings.local.json +29 -0
  4. package/.forge/knowledge/conventions.yaml +1 -0
  5. package/.forge/knowledge/decisions.yaml +1 -0
  6. package/.forge/knowledge/gotchas.yaml +1 -0
  7. package/.forge/knowledge/patterns.yaml +1 -0
  8. package/.forge/manifest.yaml +6 -0
  9. package/CLAUDE.md +144 -0
  10. package/bin/setup-forge.sh +132 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +553 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/context/codebase.d.ts +57 -0
  16. package/dist/context/codebase.d.ts.map +1 -0
  17. package/dist/context/codebase.js +301 -0
  18. package/dist/context/codebase.js.map +1 -0
  19. package/dist/context/injector.d.ts +147 -0
  20. package/dist/context/injector.d.ts.map +1 -0
  21. package/dist/context/injector.js +533 -0
  22. package/dist/context/injector.js.map +1 -0
  23. package/dist/context/memory.d.ts +32 -0
  24. package/dist/context/memory.d.ts.map +1 -0
  25. package/dist/context/memory.js +140 -0
  26. package/dist/context/memory.js.map +1 -0
  27. package/dist/context/session-index.d.ts +54 -0
  28. package/dist/context/session-index.d.ts.map +1 -0
  29. package/dist/context/session-index.js +265 -0
  30. package/dist/context/session-index.js.map +1 -0
  31. package/dist/context/session.d.ts +42 -0
  32. package/dist/context/session.d.ts.map +1 -0
  33. package/dist/context/session.js +121 -0
  34. package/dist/context/session.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +37 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/ingestion/chunker.d.ts +19 -0
  40. package/dist/ingestion/chunker.d.ts.map +1 -0
  41. package/dist/ingestion/chunker.js +189 -0
  42. package/dist/ingestion/chunker.js.map +1 -0
  43. package/dist/ingestion/embedder.d.ts +45 -0
  44. package/dist/ingestion/embedder.d.ts.map +1 -0
  45. package/dist/ingestion/embedder.js +152 -0
  46. package/dist/ingestion/embedder.js.map +1 -0
  47. package/dist/ingestion/git-analyzer.d.ts +77 -0
  48. package/dist/ingestion/git-analyzer.d.ts.map +1 -0
  49. package/dist/ingestion/git-analyzer.js +437 -0
  50. package/dist/ingestion/git-analyzer.js.map +1 -0
  51. package/dist/ingestion/indexer.d.ts +79 -0
  52. package/dist/ingestion/indexer.d.ts.map +1 -0
  53. package/dist/ingestion/indexer.js +766 -0
  54. package/dist/ingestion/indexer.js.map +1 -0
  55. package/dist/ingestion/markdown-chunker.d.ts +19 -0
  56. package/dist/ingestion/markdown-chunker.d.ts.map +1 -0
  57. package/dist/ingestion/markdown-chunker.js +243 -0
  58. package/dist/ingestion/markdown-chunker.js.map +1 -0
  59. package/dist/ingestion/markdown-knowledge.d.ts +21 -0
  60. package/dist/ingestion/markdown-knowledge.d.ts.map +1 -0
  61. package/dist/ingestion/markdown-knowledge.js +129 -0
  62. package/dist/ingestion/markdown-knowledge.js.map +1 -0
  63. package/dist/ingestion/parser.d.ts +20 -0
  64. package/dist/ingestion/parser.d.ts.map +1 -0
  65. package/dist/ingestion/parser.js +429 -0
  66. package/dist/ingestion/parser.js.map +1 -0
  67. package/dist/ingestion/watcher.d.ts +28 -0
  68. package/dist/ingestion/watcher.d.ts.map +1 -0
  69. package/dist/ingestion/watcher.js +147 -0
  70. package/dist/ingestion/watcher.js.map +1 -0
  71. package/dist/knowledge/hydrator.d.ts +37 -0
  72. package/dist/knowledge/hydrator.d.ts.map +1 -0
  73. package/dist/knowledge/hydrator.js +220 -0
  74. package/dist/knowledge/hydrator.js.map +1 -0
  75. package/dist/knowledge/registry.d.ts +129 -0
  76. package/dist/knowledge/registry.d.ts.map +1 -0
  77. package/dist/knowledge/registry.js +361 -0
  78. package/dist/knowledge/registry.js.map +1 -0
  79. package/dist/knowledge/search.d.ts +114 -0
  80. package/dist/knowledge/search.d.ts.map +1 -0
  81. package/dist/knowledge/search.js +428 -0
  82. package/dist/knowledge/search.js.map +1 -0
  83. package/dist/knowledge/store.d.ts +76 -0
  84. package/dist/knowledge/store.d.ts.map +1 -0
  85. package/dist/knowledge/store.js +230 -0
  86. package/dist/knowledge/store.js.map +1 -0
  87. package/dist/learning/confidence.d.ts +30 -0
  88. package/dist/learning/confidence.d.ts.map +1 -0
  89. package/dist/learning/confidence.js +165 -0
  90. package/dist/learning/confidence.js.map +1 -0
  91. package/dist/learning/patterns.d.ts +52 -0
  92. package/dist/learning/patterns.d.ts.map +1 -0
  93. package/dist/learning/patterns.js +290 -0
  94. package/dist/learning/patterns.js.map +1 -0
  95. package/dist/learning/trajectory.d.ts +55 -0
  96. package/dist/learning/trajectory.d.ts.map +1 -0
  97. package/dist/learning/trajectory.js +200 -0
  98. package/dist/learning/trajectory.js.map +1 -0
  99. package/dist/memory/memory-compat.d.ts +100 -0
  100. package/dist/memory/memory-compat.d.ts.map +1 -0
  101. package/dist/memory/memory-compat.js +146 -0
  102. package/dist/memory/memory-compat.js.map +1 -0
  103. package/dist/memory/observation-store.d.ts +57 -0
  104. package/dist/memory/observation-store.d.ts.map +1 -0
  105. package/dist/memory/observation-store.js +154 -0
  106. package/dist/memory/observation-store.js.map +1 -0
  107. package/dist/memory/session-tracker.d.ts +81 -0
  108. package/dist/memory/session-tracker.d.ts.map +1 -0
  109. package/dist/memory/session-tracker.js +262 -0
  110. package/dist/memory/session-tracker.js.map +1 -0
  111. package/dist/pipeline/engine.d.ts +179 -0
  112. package/dist/pipeline/engine.d.ts.map +1 -0
  113. package/dist/pipeline/engine.js +691 -0
  114. package/dist/pipeline/engine.js.map +1 -0
  115. package/dist/pipeline/events.d.ts +54 -0
  116. package/dist/pipeline/events.d.ts.map +1 -0
  117. package/dist/pipeline/events.js +157 -0
  118. package/dist/pipeline/events.js.map +1 -0
  119. package/dist/pipeline/parallel.d.ts +83 -0
  120. package/dist/pipeline/parallel.d.ts.map +1 -0
  121. package/dist/pipeline/parallel.js +277 -0
  122. package/dist/pipeline/parallel.js.map +1 -0
  123. package/dist/pipeline/state-machine.d.ts +65 -0
  124. package/dist/pipeline/state-machine.d.ts.map +1 -0
  125. package/dist/pipeline/state-machine.js +176 -0
  126. package/dist/pipeline/state-machine.js.map +1 -0
  127. package/dist/query/graph-queries.d.ts +84 -0
  128. package/dist/query/graph-queries.d.ts.map +1 -0
  129. package/dist/query/graph-queries.js +216 -0
  130. package/dist/query/graph-queries.js.map +1 -0
  131. package/dist/query/hybrid-search.d.ts +34 -0
  132. package/dist/query/hybrid-search.d.ts.map +1 -0
  133. package/dist/query/hybrid-search.js +263 -0
  134. package/dist/query/hybrid-search.js.map +1 -0
  135. package/dist/query/intent-detector.d.ts +35 -0
  136. package/dist/query/intent-detector.d.ts.map +1 -0
  137. package/dist/query/intent-detector.js +115 -0
  138. package/dist/query/intent-detector.js.map +1 -0
  139. package/dist/query/ranking.d.ts +57 -0
  140. package/dist/query/ranking.d.ts.map +1 -0
  141. package/dist/query/ranking.js +109 -0
  142. package/dist/query/ranking.js.map +1 -0
  143. package/dist/server.d.ts +3 -0
  144. package/dist/server.d.ts.map +1 -0
  145. package/dist/server.js +291 -0
  146. package/dist/server.js.map +1 -0
  147. package/dist/storage/falkordb-store.d.ts +73 -0
  148. package/dist/storage/falkordb-store.d.ts.map +1 -0
  149. package/dist/storage/falkordb-store.js +346 -0
  150. package/dist/storage/falkordb-store.js.map +1 -0
  151. package/dist/storage/file-cache.d.ts +32 -0
  152. package/dist/storage/file-cache.d.ts.map +1 -0
  153. package/dist/storage/file-cache.js +115 -0
  154. package/dist/storage/file-cache.js.map +1 -0
  155. package/dist/storage/interfaces.d.ts +151 -0
  156. package/dist/storage/interfaces.d.ts.map +1 -0
  157. package/dist/storage/interfaces.js +7 -0
  158. package/dist/storage/interfaces.js.map +1 -0
  159. package/dist/storage/qdrant-store.d.ts +110 -0
  160. package/dist/storage/qdrant-store.d.ts.map +1 -0
  161. package/dist/storage/qdrant-store.js +467 -0
  162. package/dist/storage/qdrant-store.js.map +1 -0
  163. package/dist/storage/schema.d.ts +4 -0
  164. package/dist/storage/schema.d.ts.map +1 -0
  165. package/dist/storage/schema.js +136 -0
  166. package/dist/storage/schema.js.map +1 -0
  167. package/dist/storage/sqlite.d.ts +35 -0
  168. package/dist/storage/sqlite.d.ts.map +1 -0
  169. package/dist/storage/sqlite.js +132 -0
  170. package/dist/storage/sqlite.js.map +1 -0
  171. package/dist/tools/collaboration-tools.d.ts +111 -0
  172. package/dist/tools/collaboration-tools.d.ts.map +1 -0
  173. package/dist/tools/collaboration-tools.js +174 -0
  174. package/dist/tools/collaboration-tools.js.map +1 -0
  175. package/dist/tools/context-tools.d.ts +293 -0
  176. package/dist/tools/context-tools.d.ts.map +1 -0
  177. package/dist/tools/context-tools.js +437 -0
  178. package/dist/tools/context-tools.js.map +1 -0
  179. package/dist/tools/graph-tools.d.ts +129 -0
  180. package/dist/tools/graph-tools.d.ts.map +1 -0
  181. package/dist/tools/graph-tools.js +237 -0
  182. package/dist/tools/graph-tools.js.map +1 -0
  183. package/dist/tools/ingestion-tools.d.ts +96 -0
  184. package/dist/tools/ingestion-tools.d.ts.map +1 -0
  185. package/dist/tools/ingestion-tools.js +90 -0
  186. package/dist/tools/ingestion-tools.js.map +1 -0
  187. package/dist/tools/learning-tools.d.ts +168 -0
  188. package/dist/tools/learning-tools.d.ts.map +1 -0
  189. package/dist/tools/learning-tools.js +158 -0
  190. package/dist/tools/learning-tools.js.map +1 -0
  191. package/dist/tools/memory-tools.d.ts +183 -0
  192. package/dist/tools/memory-tools.d.ts.map +1 -0
  193. package/dist/tools/memory-tools.js +197 -0
  194. package/dist/tools/memory-tools.js.map +1 -0
  195. package/dist/tools/phase-tools.d.ts +954 -0
  196. package/dist/tools/phase-tools.d.ts.map +1 -0
  197. package/dist/tools/phase-tools.js +1215 -0
  198. package/dist/tools/phase-tools.js.map +1 -0
  199. package/dist/tools/pipeline-tools.d.ts +140 -0
  200. package/dist/tools/pipeline-tools.d.ts.map +1 -0
  201. package/dist/tools/pipeline-tools.js +162 -0
  202. package/dist/tools/pipeline-tools.js.map +1 -0
  203. package/dist/tools/registration-tools.d.ts +220 -0
  204. package/dist/tools/registration-tools.d.ts.map +1 -0
  205. package/dist/tools/registration-tools.js +391 -0
  206. package/dist/tools/registration-tools.js.map +1 -0
  207. package/dist/util/circuit-breaker.d.ts +75 -0
  208. package/dist/util/circuit-breaker.d.ts.map +1 -0
  209. package/dist/util/circuit-breaker.js +159 -0
  210. package/dist/util/circuit-breaker.js.map +1 -0
  211. package/dist/util/config.d.ts +23 -0
  212. package/dist/util/config.d.ts.map +1 -0
  213. package/dist/util/config.js +164 -0
  214. package/dist/util/config.js.map +1 -0
  215. package/dist/util/logger.d.ts +13 -0
  216. package/dist/util/logger.d.ts.map +1 -0
  217. package/dist/util/logger.js +45 -0
  218. package/dist/util/logger.js.map +1 -0
  219. package/dist/util/token-counter.d.ts +24 -0
  220. package/dist/util/token-counter.d.ts.map +1 -0
  221. package/dist/util/token-counter.js +48 -0
  222. package/dist/util/token-counter.js.map +1 -0
  223. package/dist/util/types.d.ts +525 -0
  224. package/dist/util/types.d.ts.map +1 -0
  225. package/dist/util/types.js +5 -0
  226. package/dist/util/types.js.map +1 -0
  227. package/docker-compose.yml +20 -0
  228. package/docs/plans/2026-02-27-swarm-coordination/architecture.md +203 -0
  229. package/docs/plans/2026-02-27-swarm-coordination/vision.md +57 -0
  230. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +1 -0
  231. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +300 -0
  232. package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +480 -0
  233. package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +462 -0
  234. package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +181 -0
  235. package/package.json +39 -0
  236. package/plugin/.claude-plugin/plugin.json +8 -0
  237. package/plugin/.mcp.json +15 -0
  238. package/plugin/README.md +134 -0
  239. package/plugin/agents/architect.md +367 -0
  240. package/plugin/agents/backend-specialist.md +263 -0
  241. package/plugin/agents/brainstormer.md +122 -0
  242. package/plugin/agents/data-specialist.md +266 -0
  243. package/plugin/agents/designer.md +408 -0
  244. package/plugin/agents/frontend-specialist.md +241 -0
  245. package/plugin/agents/inspector.md +406 -0
  246. package/plugin/agents/knowledge-keeper.md +443 -0
  247. package/plugin/agents/platform-engineer.md +326 -0
  248. package/plugin/agents/product-manager.md +268 -0
  249. package/plugin/agents/product-owner.md +438 -0
  250. package/plugin/agents/pulse-checker.md +73 -0
  251. package/plugin/agents/qa-strategist.md +500 -0
  252. package/plugin/agents/self-improver.md +310 -0
  253. package/plugin/agents/strategist.md +360 -0
  254. package/plugin/agents/supervisor.md +380 -0
  255. package/plugin/commands/brainstorm.md +25 -0
  256. package/plugin/commands/forge.md +88 -0
  257. package/plugin/docs/atlassian-integration.md +110 -0
  258. package/plugin/docs/workflow.md +126 -0
  259. package/plugin/skills/agent-development/.skillfish.json +10 -0
  260. package/plugin/skills/agent-development/SKILL.md +415 -0
  261. package/plugin/skills/agent-development/examples/agent-creation-prompt.md +238 -0
  262. package/plugin/skills/agent-development/examples/complete-agent-examples.md +427 -0
  263. package/plugin/skills/agent-development/references/agent-creation-system-prompt.md +207 -0
  264. package/plugin/skills/agent-development/references/system-prompt-design.md +411 -0
  265. package/plugin/skills/agent-development/references/triggering-examples.md +491 -0
  266. package/plugin/skills/agent-development/scripts/validate-agent.sh +217 -0
  267. package/plugin/skills/agent-handoff/SKILL.md +335 -0
  268. package/plugin/skills/anti-stub/SKILL.md +317 -0
  269. package/plugin/skills/brainstorm/SKILL.md +31 -0
  270. package/plugin/skills/debugging/SKILL.md +276 -0
  271. package/plugin/skills/fix/SKILL.md +62 -0
  272. package/plugin/skills/frontend-design/.skillfish.json +10 -0
  273. package/plugin/skills/frontend-design/SKILL.md +42 -0
  274. package/plugin/skills/gotchas/SKILL.md +61 -0
  275. package/plugin/skills/graph-orchestrator/SKILL.md +38 -0
  276. package/plugin/skills/history/SKILL.md +58 -0
  277. package/plugin/skills/impact/SKILL.md +59 -0
  278. package/plugin/skills/implementation-execution/SKILL.md +291 -0
  279. package/plugin/skills/index-repo/SKILL.md +55 -0
  280. package/plugin/skills/interviewing/SKILL.md +225 -0
  281. package/plugin/skills/knowledge-curation/SKILL.md +393 -0
  282. package/plugin/skills/learn/SKILL.md +69 -0
  283. package/plugin/skills/mcp-integration/.skillfish.json +10 -0
  284. package/plugin/skills/mcp-integration/SKILL.md +554 -0
  285. package/plugin/skills/mcp-integration/examples/http-server.json +20 -0
  286. package/plugin/skills/mcp-integration/examples/sse-server.json +19 -0
  287. package/plugin/skills/mcp-integration/examples/stdio-server.json +26 -0
  288. package/plugin/skills/mcp-integration/references/authentication.md +549 -0
  289. package/plugin/skills/mcp-integration/references/server-types.md +536 -0
  290. package/plugin/skills/mcp-integration/references/tool-usage.md +538 -0
  291. package/plugin/skills/nestjs/.skillfish.json +10 -0
  292. package/plugin/skills/nestjs/SKILL.md +669 -0
  293. package/plugin/skills/nestjs/drizzle-reference.md +1894 -0
  294. package/plugin/skills/nestjs/reference.md +1447 -0
  295. package/plugin/skills/nestjs/workflow-optimization.md +229 -0
  296. package/plugin/skills/parallel-dispatch/SKILL.md +308 -0
  297. package/plugin/skills/project-discovery/SKILL.md +304 -0
  298. package/plugin/skills/search/SKILL.md +56 -0
  299. package/plugin/skills/security-audit/SKILL.md +362 -0
  300. package/plugin/skills/skill-development/.skillfish.json +10 -0
  301. package/plugin/skills/skill-development/SKILL.md +637 -0
  302. package/plugin/skills/skill-development/references/skill-creator-original.md +209 -0
  303. package/plugin/skills/tdd/SKILL.md +273 -0
  304. package/plugin/skills/terminal-presentation/SKILL.md +395 -0
  305. package/plugin/skills/test-strategy/SKILL.md +365 -0
  306. package/plugin/skills/verification-protocol/SKILL.md +256 -0
  307. package/plugin/skills/visual-explainer/CHANGELOG.md +97 -0
  308. package/plugin/skills/visual-explainer/LICENSE +21 -0
  309. package/plugin/skills/visual-explainer/README.md +137 -0
  310. package/plugin/skills/visual-explainer/SKILL.md +352 -0
  311. package/plugin/skills/visual-explainer/banner.png +0 -0
  312. package/plugin/skills/visual-explainer/package.json +11 -0
  313. package/plugin/skills/visual-explainer/prompts/diff-review.md +68 -0
  314. package/plugin/skills/visual-explainer/prompts/fact-check.md +63 -0
  315. package/plugin/skills/visual-explainer/prompts/generate-slides.md +18 -0
  316. package/plugin/skills/visual-explainer/prompts/generate-web-diagram.md +10 -0
  317. package/plugin/skills/visual-explainer/prompts/plan-review.md +86 -0
  318. package/plugin/skills/visual-explainer/prompts/project-recap.md +61 -0
  319. package/plugin/skills/visual-explainer/references/css-patterns.md +1188 -0
  320. package/plugin/skills/visual-explainer/references/libraries.md +470 -0
  321. package/plugin/skills/visual-explainer/references/responsive-nav.md +212 -0
  322. package/plugin/skills/visual-explainer/references/slide-patterns.md +1403 -0
  323. package/plugin/skills/visual-explainer/templates/architecture.html +596 -0
  324. package/plugin/skills/visual-explainer/templates/data-table.html +540 -0
  325. package/plugin/skills/visual-explainer/templates/mermaid-flowchart.html +435 -0
  326. package/plugin/skills/visual-explainer/templates/slide-deck.html +913 -0
  327. package/src/cli.ts +655 -0
  328. package/src/context/.gitkeep +0 -0
  329. package/src/context/codebase.ts +393 -0
  330. package/src/context/injector.ts +797 -0
  331. package/src/context/memory.ts +187 -0
  332. package/src/context/session-index.ts +327 -0
  333. package/src/context/session.ts +152 -0
  334. package/src/index.ts +47 -0
  335. package/src/ingestion/.gitkeep +0 -0
  336. package/src/ingestion/chunker.ts +277 -0
  337. package/src/ingestion/embedder.ts +167 -0
  338. package/src/ingestion/git-analyzer.ts +545 -0
  339. package/src/ingestion/indexer.ts +984 -0
  340. package/src/ingestion/markdown-chunker.ts +337 -0
  341. package/src/ingestion/markdown-knowledge.ts +175 -0
  342. package/src/ingestion/parser.ts +475 -0
  343. package/src/ingestion/watcher.ts +182 -0
  344. package/src/knowledge/.gitkeep +0 -0
  345. package/src/knowledge/hydrator.ts +246 -0
  346. package/src/knowledge/registry.ts +463 -0
  347. package/src/knowledge/search.ts +565 -0
  348. package/src/knowledge/store.ts +262 -0
  349. package/src/learning/.gitkeep +0 -0
  350. package/src/learning/confidence.ts +193 -0
  351. package/src/learning/patterns.ts +360 -0
  352. package/src/learning/trajectory.ts +268 -0
  353. package/src/memory/.gitkeep +0 -0
  354. package/src/memory/memory-compat.ts +233 -0
  355. package/src/memory/observation-store.ts +224 -0
  356. package/src/memory/session-tracker.ts +332 -0
  357. package/src/pipeline/.gitkeep +0 -0
  358. package/src/pipeline/engine.ts +1139 -0
  359. package/src/pipeline/events.ts +253 -0
  360. package/src/pipeline/parallel.ts +394 -0
  361. package/src/pipeline/state-machine.ts +199 -0
  362. package/src/query/.gitkeep +0 -0
  363. package/src/query/graph-queries.ts +262 -0
  364. package/src/query/hybrid-search.ts +337 -0
  365. package/src/query/intent-detector.ts +131 -0
  366. package/src/query/ranking.ts +161 -0
  367. package/src/server.ts +352 -0
  368. package/src/storage/.gitkeep +0 -0
  369. package/src/storage/falkordb-store.ts +388 -0
  370. package/src/storage/file-cache.ts +141 -0
  371. package/src/storage/interfaces.ts +201 -0
  372. package/src/storage/qdrant-store.ts +557 -0
  373. package/src/storage/schema.ts +139 -0
  374. package/src/storage/sqlite.ts +168 -0
  375. package/src/tools/.gitkeep +0 -0
  376. package/src/tools/collaboration-tools.ts +208 -0
  377. package/src/tools/context-tools.ts +493 -0
  378. package/src/tools/graph-tools.ts +295 -0
  379. package/src/tools/ingestion-tools.ts +122 -0
  380. package/src/tools/learning-tools.ts +181 -0
  381. package/src/tools/memory-tools.ts +234 -0
  382. package/src/tools/phase-tools.ts +1452 -0
  383. package/src/tools/pipeline-tools.ts +188 -0
  384. package/src/tools/registration-tools.ts +450 -0
  385. package/src/util/.gitkeep +0 -0
  386. package/src/util/circuit-breaker.ts +193 -0
  387. package/src/util/config.ts +177 -0
  388. package/src/util/logger.ts +53 -0
  389. package/src/util/token-counter.ts +52 -0
  390. package/src/util/types.ts +710 -0
  391. package/tests/context/.gitkeep +0 -0
  392. package/tests/integration/.gitkeep +0 -0
  393. package/tests/knowledge/.gitkeep +0 -0
  394. package/tests/learning/.gitkeep +0 -0
  395. package/tests/pipeline/.gitkeep +0 -0
  396. package/tests/tools/.gitkeep +0 -0
  397. package/tsconfig.json +21 -0
  398. package/vitest.config.ts +10 -0
  399. package/vscode-extension/.vscodeignore +7 -0
  400. package/vscode-extension/README.md +43 -0
  401. package/vscode-extension/out/edge-collector.js +274 -0
  402. package/vscode-extension/out/edge-collector.js.map +1 -0
  403. package/vscode-extension/out/extension.js +264 -0
  404. package/vscode-extension/out/extension.js.map +1 -0
  405. package/vscode-extension/out/forge-client.js +318 -0
  406. package/vscode-extension/out/forge-client.js.map +1 -0
  407. package/vscode-extension/package-lock.json +59 -0
  408. package/vscode-extension/package.json +71 -0
  409. package/vscode-extension/src/edge-collector.ts +320 -0
  410. package/vscode-extension/src/extension.ts +269 -0
  411. package/vscode-extension/src/forge-client.ts +364 -0
  412. package/vscode-extension/tsconfig.json +19 -0
@@ -0,0 +1,554 @@
1
+ ---
2
+ name: MCP Integration
3
+ description: This skill should be used when the user asks to "add MCP server", "integrate MCP", "configure MCP in plugin", "use .mcp.json", "set up Model Context Protocol", "connect external service", mentions "${CLAUDE_PLUGIN_ROOT} with MCP", or discusses MCP server types (SSE, stdio, HTTP, WebSocket). Provides comprehensive guidance for integrating Model Context Protocol servers into Claude Code plugins for external tool and service integration.
4
+ version: 0.1.0
5
+ ---
6
+
7
+ # MCP Integration for Claude Code Plugins
8
+
9
+ ## Overview
10
+
11
+ Model Context Protocol (MCP) enables Claude Code plugins to integrate with external services and APIs by providing structured tool access. Use MCP integration to expose external service capabilities as tools within Claude Code.
12
+
13
+ **Key capabilities:**
14
+ - Connect to external services (databases, APIs, file systems)
15
+ - Provide 10+ related tools from a single service
16
+ - Handle OAuth and complex authentication flows
17
+ - Bundle MCP servers with plugins for automatic setup
18
+
19
+ ## MCP Server Configuration Methods
20
+
21
+ Plugins can bundle MCP servers in two ways:
22
+
23
+ ### Method 1: Dedicated .mcp.json (Recommended)
24
+
25
+ Create `.mcp.json` at plugin root:
26
+
27
+ ```json
28
+ {
29
+ "database-tools": {
30
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
31
+ "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
32
+ "env": {
33
+ "DB_URL": "${DB_URL}"
34
+ }
35
+ }
36
+ }
37
+ ```
38
+
39
+ **Benefits:**
40
+ - Clear separation of concerns
41
+ - Easier to maintain
42
+ - Better for multiple servers
43
+
44
+ ### Method 2: Inline in plugin.json
45
+
46
+ Add `mcpServers` field to plugin.json:
47
+
48
+ ```json
49
+ {
50
+ "name": "my-plugin",
51
+ "version": "1.0.0",
52
+ "mcpServers": {
53
+ "plugin-api": {
54
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
55
+ "args": ["--port", "8080"]
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ **Benefits:**
62
+ - Single configuration file
63
+ - Good for simple single-server plugins
64
+
65
+ ## MCP Server Types
66
+
67
+ ### stdio (Local Process)
68
+
69
+ Execute local MCP servers as child processes. Best for local tools and custom servers.
70
+
71
+ **Configuration:**
72
+ ```json
73
+ {
74
+ "filesystem": {
75
+ "command": "npx",
76
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
77
+ "env": {
78
+ "LOG_LEVEL": "debug"
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ **Use cases:**
85
+ - File system access
86
+ - Local database connections
87
+ - Custom MCP servers
88
+ - NPM-packaged MCP servers
89
+
90
+ **Process management:**
91
+ - Claude Code spawns and manages the process
92
+ - Communicates via stdin/stdout
93
+ - Terminates when Claude Code exits
94
+
95
+ ### SSE (Server-Sent Events)
96
+
97
+ Connect to hosted MCP servers with OAuth support. Best for cloud services.
98
+
99
+ **Configuration:**
100
+ ```json
101
+ {
102
+ "asana": {
103
+ "type": "sse",
104
+ "url": "https://mcp.asana.com/sse"
105
+ }
106
+ }
107
+ ```
108
+
109
+ **Use cases:**
110
+ - Official hosted MCP servers (Asana, GitHub, etc.)
111
+ - Cloud services with MCP endpoints
112
+ - OAuth-based authentication
113
+ - No local installation needed
114
+
115
+ **Authentication:**
116
+ - OAuth flows handled automatically
117
+ - User prompted on first use
118
+ - Tokens managed by Claude Code
119
+
120
+ ### HTTP (REST API)
121
+
122
+ Connect to RESTful MCP servers with token authentication.
123
+
124
+ **Configuration:**
125
+ ```json
126
+ {
127
+ "api-service": {
128
+ "type": "http",
129
+ "url": "https://api.example.com/mcp",
130
+ "headers": {
131
+ "Authorization": "Bearer ${API_TOKEN}",
132
+ "X-Custom-Header": "value"
133
+ }
134
+ }
135
+ }
136
+ ```
137
+
138
+ **Use cases:**
139
+ - REST API-based MCP servers
140
+ - Token-based authentication
141
+ - Custom API backends
142
+ - Stateless interactions
143
+
144
+ ### WebSocket (Real-time)
145
+
146
+ Connect to WebSocket MCP servers for real-time bidirectional communication.
147
+
148
+ **Configuration:**
149
+ ```json
150
+ {
151
+ "realtime-service": {
152
+ "type": "ws",
153
+ "url": "wss://mcp.example.com/ws",
154
+ "headers": {
155
+ "Authorization": "Bearer ${TOKEN}"
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ **Use cases:**
162
+ - Real-time data streaming
163
+ - Persistent connections
164
+ - Push notifications from server
165
+ - Low-latency requirements
166
+
167
+ ## Environment Variable Expansion
168
+
169
+ All MCP configurations support environment variable substitution:
170
+
171
+ **${CLAUDE_PLUGIN_ROOT}** - Plugin directory (always use for portability):
172
+ ```json
173
+ {
174
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/my-server"
175
+ }
176
+ ```
177
+
178
+ **User environment variables** - From user's shell:
179
+ ```json
180
+ {
181
+ "env": {
182
+ "API_KEY": "${MY_API_KEY}",
183
+ "DATABASE_URL": "${DB_URL}"
184
+ }
185
+ }
186
+ ```
187
+
188
+ **Best practice:** Document all required environment variables in plugin README.
189
+
190
+ ## MCP Tool Naming
191
+
192
+ When MCP servers provide tools, they're automatically prefixed:
193
+
194
+ **Format:** `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`
195
+
196
+ **Example:**
197
+ - Plugin: `asana`
198
+ - Server: `asana`
199
+ - Tool: `create_task`
200
+ - **Full name:** `mcp__plugin_asana_asana__asana_create_task`
201
+
202
+ ### Using MCP Tools in Commands
203
+
204
+ Pre-allow specific MCP tools in command frontmatter:
205
+
206
+ ```markdown
207
+ ---
208
+ allowed-tools: [
209
+ "mcp__plugin_asana_asana__asana_create_task",
210
+ "mcp__plugin_asana_asana__asana_search_tasks"
211
+ ]
212
+ ---
213
+ ```
214
+
215
+ **Wildcard (use sparingly):**
216
+ ```markdown
217
+ ---
218
+ allowed-tools: ["mcp__plugin_asana_asana__*"]
219
+ ---
220
+ ```
221
+
222
+ **Best practice:** Pre-allow specific tools, not wildcards, for security.
223
+
224
+ ## Lifecycle Management
225
+
226
+ **Automatic startup:**
227
+ - MCP servers start when plugin enables
228
+ - Connection established before first tool use
229
+ - Restart required for configuration changes
230
+
231
+ **Lifecycle:**
232
+ 1. Plugin loads
233
+ 2. MCP configuration parsed
234
+ 3. Server process started (stdio) or connection established (SSE/HTTP/WS)
235
+ 4. Tools discovered and registered
236
+ 5. Tools available as `mcp__plugin_...__...`
237
+
238
+ **Viewing servers:**
239
+ Use `/mcp` command to see all servers including plugin-provided ones.
240
+
241
+ ## Authentication Patterns
242
+
243
+ ### OAuth (SSE/HTTP)
244
+
245
+ OAuth handled automatically by Claude Code:
246
+
247
+ ```json
248
+ {
249
+ "type": "sse",
250
+ "url": "https://mcp.example.com/sse"
251
+ }
252
+ ```
253
+
254
+ User authenticates in browser on first use. No additional configuration needed.
255
+
256
+ ### Token-Based (Headers)
257
+
258
+ Static or environment variable tokens:
259
+
260
+ ```json
261
+ {
262
+ "type": "http",
263
+ "url": "https://api.example.com",
264
+ "headers": {
265
+ "Authorization": "Bearer ${API_TOKEN}"
266
+ }
267
+ }
268
+ ```
269
+
270
+ Document required environment variables in README.
271
+
272
+ ### Environment Variables (stdio)
273
+
274
+ Pass configuration to MCP server:
275
+
276
+ ```json
277
+ {
278
+ "command": "python",
279
+ "args": ["-m", "my_mcp_server"],
280
+ "env": {
281
+ "DATABASE_URL": "${DB_URL}",
282
+ "API_KEY": "${API_KEY}",
283
+ "LOG_LEVEL": "info"
284
+ }
285
+ }
286
+ ```
287
+
288
+ ## Integration Patterns
289
+
290
+ ### Pattern 1: Simple Tool Wrapper
291
+
292
+ Commands use MCP tools with user interaction:
293
+
294
+ ```markdown
295
+ # Command: create-item.md
296
+ ---
297
+ allowed-tools: ["mcp__plugin_name_server__create_item"]
298
+ ---
299
+
300
+ Steps:
301
+ 1. Gather item details from user
302
+ 2. Use mcp__plugin_name_server__create_item
303
+ 3. Confirm creation
304
+ ```
305
+
306
+ **Use for:** Adding validation or preprocessing before MCP calls.
307
+
308
+ ### Pattern 2: Autonomous Agent
309
+
310
+ Agents use MCP tools autonomously:
311
+
312
+ ```markdown
313
+ # Agent: data-analyzer.md
314
+
315
+ Analysis Process:
316
+ 1. Query data via mcp__plugin_db_server__query
317
+ 2. Process and analyze results
318
+ 3. Generate insights report
319
+ ```
320
+
321
+ **Use for:** Multi-step MCP workflows without user interaction.
322
+
323
+ ### Pattern 3: Multi-Server Plugin
324
+
325
+ Integrate multiple MCP servers:
326
+
327
+ ```json
328
+ {
329
+ "github": {
330
+ "type": "sse",
331
+ "url": "https://mcp.github.com/sse"
332
+ },
333
+ "jira": {
334
+ "type": "sse",
335
+ "url": "https://mcp.jira.com/sse"
336
+ }
337
+ }
338
+ ```
339
+
340
+ **Use for:** Workflows spanning multiple services.
341
+
342
+ ## Security Best Practices
343
+
344
+ ### Use HTTPS/WSS
345
+
346
+ Always use secure connections:
347
+
348
+ ```json
349
+ ✅ "url": "https://mcp.example.com/sse"
350
+ ❌ "url": "http://mcp.example.com/sse"
351
+ ```
352
+
353
+ ### Token Management
354
+
355
+ **DO:**
356
+ - ✅ Use environment variables for tokens
357
+ - ✅ Document required env vars in README
358
+ - ✅ Let OAuth flow handle authentication
359
+
360
+ **DON'T:**
361
+ - ❌ Hardcode tokens in configuration
362
+ - ❌ Commit tokens to git
363
+ - ❌ Share tokens in documentation
364
+
365
+ ### Permission Scoping
366
+
367
+ Pre-allow only necessary MCP tools:
368
+
369
+ ```markdown
370
+ ✅ allowed-tools: [
371
+ "mcp__plugin_api_server__read_data",
372
+ "mcp__plugin_api_server__create_item"
373
+ ]
374
+
375
+ ❌ allowed-tools: ["mcp__plugin_api_server__*"]
376
+ ```
377
+
378
+ ## Error Handling
379
+
380
+ ### Connection Failures
381
+
382
+ Handle MCP server unavailability:
383
+ - Provide fallback behavior in commands
384
+ - Inform user of connection issues
385
+ - Check server URL and configuration
386
+
387
+ ### Tool Call Errors
388
+
389
+ Handle failed MCP operations:
390
+ - Validate inputs before calling MCP tools
391
+ - Provide clear error messages
392
+ - Check rate limiting and quotas
393
+
394
+ ### Configuration Errors
395
+
396
+ Validate MCP configuration:
397
+ - Test server connectivity during development
398
+ - Validate JSON syntax
399
+ - Check required environment variables
400
+
401
+ ## Performance Considerations
402
+
403
+ ### Lazy Loading
404
+
405
+ MCP servers connect on-demand:
406
+ - Not all servers connect at startup
407
+ - First tool use triggers connection
408
+ - Connection pooling managed automatically
409
+
410
+ ### Batching
411
+
412
+ Batch similar requests when possible:
413
+
414
+ ```
415
+ # Good: Single query with filters
416
+ tasks = search_tasks(project="X", assignee="me", limit=50)
417
+
418
+ # Avoid: Many individual queries
419
+ for id in task_ids:
420
+ task = get_task(id)
421
+ ```
422
+
423
+ ## Testing MCP Integration
424
+
425
+ ### Local Testing
426
+
427
+ 1. Configure MCP server in `.mcp.json`
428
+ 2. Install plugin locally (`.claude-plugin/`)
429
+ 3. Run `/mcp` to verify server appears
430
+ 4. Test tool calls in commands
431
+ 5. Check `claude --debug` logs for connection issues
432
+
433
+ ### Validation Checklist
434
+
435
+ - [ ] MCP configuration is valid JSON
436
+ - [ ] Server URL is correct and accessible
437
+ - [ ] Required environment variables documented
438
+ - [ ] Tools appear in `/mcp` output
439
+ - [ ] Authentication works (OAuth or tokens)
440
+ - [ ] Tool calls succeed from commands
441
+ - [ ] Error cases handled gracefully
442
+
443
+ ## Debugging
444
+
445
+ ### Enable Debug Logging
446
+
447
+ ```bash
448
+ claude --debug
449
+ ```
450
+
451
+ Look for:
452
+ - MCP server connection attempts
453
+ - Tool discovery logs
454
+ - Authentication flows
455
+ - Tool call errors
456
+
457
+ ### Common Issues
458
+
459
+ **Server not connecting:**
460
+ - Check URL is correct
461
+ - Verify server is running (stdio)
462
+ - Check network connectivity
463
+ - Review authentication configuration
464
+
465
+ **Tools not available:**
466
+ - Verify server connected successfully
467
+ - Check tool names match exactly
468
+ - Run `/mcp` to see available tools
469
+ - Restart Claude Code after config changes
470
+
471
+ **Authentication failing:**
472
+ - Clear cached auth tokens
473
+ - Re-authenticate
474
+ - Check token scopes and permissions
475
+ - Verify environment variables set
476
+
477
+ ## Quick Reference
478
+
479
+ ### MCP Server Types
480
+
481
+ | Type | Transport | Best For | Auth |
482
+ |------|-----------|----------|------|
483
+ | stdio | Process | Local tools, custom servers | Env vars |
484
+ | SSE | HTTP | Hosted services, cloud APIs | OAuth |
485
+ | HTTP | REST | API backends, token auth | Tokens |
486
+ | ws | WebSocket | Real-time, streaming | Tokens |
487
+
488
+ ### Configuration Checklist
489
+
490
+ - [ ] Server type specified (stdio/SSE/HTTP/ws)
491
+ - [ ] Type-specific fields complete (command or url)
492
+ - [ ] Authentication configured
493
+ - [ ] Environment variables documented
494
+ - [ ] HTTPS/WSS used (not HTTP/WS)
495
+ - [ ] ${CLAUDE_PLUGIN_ROOT} used for paths
496
+
497
+ ### Best Practices
498
+
499
+ **DO:**
500
+ - ✅ Use ${CLAUDE_PLUGIN_ROOT} for portable paths
501
+ - ✅ Document required environment variables
502
+ - ✅ Use secure connections (HTTPS/WSS)
503
+ - ✅ Pre-allow specific MCP tools in commands
504
+ - ✅ Test MCP integration before publishing
505
+ - ✅ Handle connection and tool errors gracefully
506
+
507
+ **DON'T:**
508
+ - ❌ Hardcode absolute paths
509
+ - ❌ Commit credentials to git
510
+ - ❌ Use HTTP instead of HTTPS
511
+ - ❌ Pre-allow all tools with wildcards
512
+ - ❌ Skip error handling
513
+ - ❌ Forget to document setup
514
+
515
+ ## Additional Resources
516
+
517
+ ### Reference Files
518
+
519
+ For detailed information, consult:
520
+
521
+ - **`references/server-types.md`** - Deep dive on each server type
522
+ - **`references/authentication.md`** - Authentication patterns and OAuth
523
+ - **`references/tool-usage.md`** - Using MCP tools in commands and agents
524
+
525
+ ### Example Configurations
526
+
527
+ Working examples in `examples/`:
528
+
529
+ - **`stdio-server.json`** - Local stdio MCP server
530
+ - **`sse-server.json`** - Hosted SSE server with OAuth
531
+ - **`http-server.json`** - REST API with token auth
532
+
533
+ ### External Resources
534
+
535
+ - **Official MCP Docs**: https://modelcontextprotocol.io/
536
+ - **Claude Code MCP Docs**: https://docs.claude.com/en/docs/claude-code/mcp
537
+ - **MCP SDK**: @modelcontextprotocol/sdk
538
+ - **Testing**: Use `claude --debug` and `/mcp` command
539
+
540
+ ## Implementation Workflow
541
+
542
+ To add MCP integration to a plugin:
543
+
544
+ 1. Choose MCP server type (stdio, SSE, HTTP, ws)
545
+ 2. Create `.mcp.json` at plugin root with configuration
546
+ 3. Use ${CLAUDE_PLUGIN_ROOT} for all file references
547
+ 4. Document required environment variables in README
548
+ 5. Test locally with `/mcp` command
549
+ 6. Pre-allow MCP tools in relevant commands
550
+ 7. Handle authentication (OAuth or tokens)
551
+ 8. Test error cases (connection failures, auth errors)
552
+ 9. Document MCP integration in plugin README
553
+
554
+ Focus on stdio for custom/local servers, SSE for hosted services with OAuth.
@@ -0,0 +1,20 @@
1
+ {
2
+ "_comment": "Example HTTP MCP server configuration for REST APIs",
3
+ "rest-api": {
4
+ "type": "http",
5
+ "url": "https://api.example.com/mcp",
6
+ "headers": {
7
+ "Authorization": "Bearer ${API_TOKEN}",
8
+ "Content-Type": "application/json",
9
+ "X-API-Version": "2024-01-01"
10
+ }
11
+ },
12
+ "internal-service": {
13
+ "type": "http",
14
+ "url": "https://api.example.com/mcp",
15
+ "headers": {
16
+ "Authorization": "Bearer ${API_TOKEN}",
17
+ "X-Service-Name": "claude-plugin"
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "_comment": "Example SSE MCP server configuration for hosted cloud services",
3
+ "asana": {
4
+ "type": "sse",
5
+ "url": "https://mcp.asana.com/sse"
6
+ },
7
+ "github": {
8
+ "type": "sse",
9
+ "url": "https://mcp.github.com/sse"
10
+ },
11
+ "custom-service": {
12
+ "type": "sse",
13
+ "url": "https://mcp.example.com/sse",
14
+ "headers": {
15
+ "X-API-Version": "v1",
16
+ "X-Client-ID": "${CLIENT_ID}"
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "_comment": "Example stdio MCP server configuration for local file system access",
3
+ "filesystem": {
4
+ "command": "npx",
5
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "${CLAUDE_PROJECT_DIR}"],
6
+ "env": {
7
+ "LOG_LEVEL": "info"
8
+ }
9
+ },
10
+ "database": {
11
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server.js",
12
+ "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config/db.json"],
13
+ "env": {
14
+ "DATABASE_URL": "${DATABASE_URL}",
15
+ "DB_POOL_SIZE": "10"
16
+ }
17
+ },
18
+ "custom-tools": {
19
+ "command": "python",
20
+ "args": ["-m", "my_mcp_server", "--port", "8080"],
21
+ "env": {
22
+ "API_KEY": "${CUSTOM_API_KEY}",
23
+ "DEBUG": "false"
24
+ }
25
+ }
26
+ }