specweave 0.4.1 → 0.6.3

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 (400) hide show
  1. package/.claude-plugin/README.md +312 -0
  2. package/.claude-plugin/marketplace.json +210 -0
  3. package/CLAUDE.md +952 -609
  4. package/README.md +179 -761
  5. package/bin/install-agents.sh +1 -1
  6. package/bin/install-commands.sh +66 -14
  7. package/bin/install-hooks.sh +1 -1
  8. package/bin/install-skills.sh +1 -1
  9. package/bin/specweave.js +2 -0
  10. package/dist/adapters/claude/adapter.d.ts +49 -11
  11. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  12. package/dist/adapters/claude/adapter.js +175 -42
  13. package/dist/adapters/claude/adapter.js.map +1 -1
  14. package/dist/adapters/copilot/adapter.d.ts +20 -2
  15. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  16. package/dist/adapters/copilot/adapter.js +117 -7
  17. package/dist/adapters/copilot/adapter.js.map +1 -1
  18. package/dist/adapters/cursor/adapter.d.ts +18 -0
  19. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  20. package/dist/adapters/cursor/adapter.js +55 -3
  21. package/dist/adapters/cursor/adapter.js.map +1 -1
  22. package/dist/adapters/generic/adapter.d.ts +18 -0
  23. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  24. package/dist/adapters/generic/adapter.js +55 -3
  25. package/dist/adapters/generic/adapter.js.map +1 -1
  26. package/dist/cli/commands/init.d.ts +1 -0
  27. package/dist/cli/commands/init.d.ts.map +1 -1
  28. package/dist/cli/commands/init.js +521 -185
  29. package/dist/cli/commands/init.js.map +1 -1
  30. package/dist/cli/commands/install.d.ts +2 -0
  31. package/dist/cli/commands/install.d.ts.map +1 -1
  32. package/dist/cli/commands/install.js +28 -25
  33. package/dist/cli/commands/install.js.map +1 -1
  34. package/dist/cli/commands/list.d.ts +2 -0
  35. package/dist/cli/commands/list.d.ts.map +1 -1
  36. package/dist/cli/commands/list.js +26 -24
  37. package/dist/cli/commands/list.js.map +1 -1
  38. package/dist/cli/commands/plugin.d.ts +23 -6
  39. package/dist/cli/commands/plugin.d.ts.map +1 -1
  40. package/dist/cli/commands/plugin.js +92 -66
  41. package/dist/cli/commands/plugin.js.map +1 -1
  42. package/dist/core/i18n/language-detector.d.ts +29 -0
  43. package/dist/core/i18n/language-detector.d.ts.map +1 -0
  44. package/dist/core/i18n/language-detector.js +143 -0
  45. package/dist/core/i18n/language-detector.js.map +1 -0
  46. package/dist/core/i18n/language-manager.d.ts +101 -0
  47. package/dist/core/i18n/language-manager.d.ts.map +1 -0
  48. package/dist/core/i18n/language-manager.js +232 -0
  49. package/dist/core/i18n/language-manager.js.map +1 -0
  50. package/dist/core/i18n/language-registry.d.ts +44 -0
  51. package/dist/core/i18n/language-registry.d.ts.map +1 -0
  52. package/dist/core/i18n/language-registry.js +234 -0
  53. package/dist/core/i18n/language-registry.js.map +1 -0
  54. package/dist/core/i18n/locale-manager.d.ts +62 -0
  55. package/dist/core/i18n/locale-manager.d.ts.map +1 -0
  56. package/dist/core/i18n/locale-manager.js +137 -0
  57. package/dist/core/i18n/locale-manager.js.map +1 -0
  58. package/dist/core/i18n/system-prompt-injector.d.ts +33 -0
  59. package/dist/core/i18n/system-prompt-injector.d.ts.map +1 -0
  60. package/dist/core/i18n/system-prompt-injector.js +131 -0
  61. package/dist/core/i18n/system-prompt-injector.js.map +1 -0
  62. package/dist/core/i18n/types.d.ts +151 -0
  63. package/dist/core/i18n/types.d.ts.map +1 -0
  64. package/dist/core/i18n/types.js +11 -0
  65. package/dist/core/i18n/types.js.map +1 -0
  66. package/dist/core/increment-status.d.ts +72 -0
  67. package/dist/core/increment-status.d.ts.map +1 -0
  68. package/dist/core/increment-status.js +227 -0
  69. package/dist/core/increment-status.js.map +1 -0
  70. package/dist/core/plugin-loader.d.ts +33 -13
  71. package/dist/core/plugin-loader.d.ts.map +1 -1
  72. package/dist/core/plugin-loader.js +145 -43
  73. package/dist/core/plugin-loader.js.map +1 -1
  74. package/dist/core/types/config.d.ts +51 -0
  75. package/dist/core/types/config.d.ts.map +1 -0
  76. package/dist/core/types/config.js +21 -0
  77. package/dist/core/types/config.js.map +1 -0
  78. package/dist/core/types/plugin.d.ts +73 -42
  79. package/dist/core/types/plugin.d.ts.map +1 -1
  80. package/dist/core/types/plugin.js +4 -3
  81. package/dist/core/types/plugin.js.map +1 -1
  82. package/dist/hooks/lib/sync-living-docs.d.ts +27 -0
  83. package/dist/hooks/lib/sync-living-docs.d.ts.map +1 -0
  84. package/dist/hooks/lib/sync-living-docs.js +116 -0
  85. package/dist/hooks/lib/sync-living-docs.js.map +1 -0
  86. package/dist/hooks/lib/translate-living-docs.d.ts +13 -0
  87. package/dist/hooks/lib/translate-living-docs.d.ts.map +1 -0
  88. package/dist/hooks/lib/translate-living-docs.js +166 -0
  89. package/dist/hooks/lib/translate-living-docs.js.map +1 -0
  90. package/dist/hooks/lib/update-tasks-md.d.ts +29 -0
  91. package/dist/hooks/lib/update-tasks-md.d.ts.map +1 -0
  92. package/dist/hooks/lib/update-tasks-md.js +203 -0
  93. package/dist/hooks/lib/update-tasks-md.js.map +1 -0
  94. package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -1
  95. package/dist/integrations/jira/jira-mapper.js.map +1 -1
  96. package/dist/locales/de/.gitkeep +0 -0
  97. package/dist/locales/de/cli.json +108 -0
  98. package/dist/locales/en/cli.json +285 -0
  99. package/dist/locales/en/errors.json +7 -0
  100. package/dist/locales/en/templates.json +6 -0
  101. package/dist/locales/es/.gitkeep +0 -0
  102. package/dist/locales/es/cli.json +41 -0
  103. package/dist/locales/fr/.gitkeep +0 -0
  104. package/dist/locales/fr/cli.json +108 -0
  105. package/dist/locales/ja/.gitkeep +0 -0
  106. package/dist/locales/ja/cli.json +108 -0
  107. package/dist/locales/ko/.gitkeep +0 -0
  108. package/dist/locales/ko/cli.json +108 -0
  109. package/dist/locales/pt/.gitkeep +0 -0
  110. package/dist/locales/pt/cli.json +108 -0
  111. package/dist/locales/ru/.gitkeep +0 -0
  112. package/dist/locales/ru/cli.json +269 -0
  113. package/dist/locales/zh/.gitkeep +0 -0
  114. package/dist/locales/zh/cli.json +108 -0
  115. package/dist/plugins/specweave-github/lib/github-client.d.ts +86 -0
  116. package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -0
  117. package/dist/plugins/specweave-github/lib/github-client.js +275 -0
  118. package/dist/plugins/specweave-github/lib/github-client.js.map +1 -0
  119. package/dist/plugins/specweave-github/lib/index.d.ts +10 -0
  120. package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -0
  121. package/dist/plugins/specweave-github/lib/index.js +10 -0
  122. package/dist/plugins/specweave-github/lib/index.js.map +1 -0
  123. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +51 -0
  124. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +1 -0
  125. package/dist/plugins/specweave-github/lib/subtask-sync.js +147 -0
  126. package/dist/plugins/specweave-github/lib/subtask-sync.js.map +1 -0
  127. package/dist/plugins/specweave-github/lib/task-parser.d.ts +37 -0
  128. package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +1 -0
  129. package/dist/plugins/specweave-github/lib/task-parser.js +211 -0
  130. package/dist/plugins/specweave-github/lib/task-parser.js.map +1 -0
  131. package/dist/plugins/specweave-github/lib/task-sync.d.ts +51 -0
  132. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -0
  133. package/dist/plugins/specweave-github/lib/task-sync.js +332 -0
  134. package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -0
  135. package/dist/plugins/specweave-github/lib/types.d.ts +80 -0
  136. package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -0
  137. package/dist/plugins/specweave-github/lib/types.js +5 -0
  138. package/dist/plugins/specweave-github/lib/types.js.map +1 -0
  139. package/dist/utils/agents-md-compiler.d.ts +68 -0
  140. package/dist/utils/agents-md-compiler.d.ts.map +1 -0
  141. package/dist/utils/agents-md-compiler.js +420 -0
  142. package/dist/utils/agents-md-compiler.js.map +1 -0
  143. package/dist/utils/execFileNoThrow.d.ts +97 -0
  144. package/dist/utils/execFileNoThrow.d.ts.map +1 -0
  145. package/dist/utils/execFileNoThrow.js +130 -0
  146. package/dist/utils/execFileNoThrow.js.map +1 -0
  147. package/dist/utils/generate-skills-index.js +4 -4
  148. package/dist/utils/generate-skills-index.js.map +1 -1
  149. package/package.json +13 -14
  150. package/plugins/.specweave/logs/hooks-debug.log +24 -0
  151. package/plugins/.specweave/logs/last-hook-fire +1 -0
  152. package/plugins/.specweave/logs/last-todowrite-time +1 -0
  153. package/plugins/.specweave/logs/tasks.log +6 -0
  154. package/plugins/specweave/.claude-plugin/plugin.json +22 -0
  155. package/{src → plugins/specweave}/agents/pm/AGENT.md +80 -0
  156. package/plugins/specweave/agents/translator/AGENT.md +282 -0
  157. package/{src → plugins/specweave}/commands/README.md +11 -11
  158. package/{src/commands/specweave.costs.md → plugins/specweave/commands/costs.md} +8 -8
  159. package/{src/commands/specweave.do.md → plugins/specweave/commands/do.md} +35 -8
  160. package/{src/commands/specweave.done.md → plugins/specweave/commands/done.md} +1 -1
  161. package/{src/commands/specweave.inc.md → plugins/specweave/commands/inc.md} +1 -1
  162. package/{src/commands/specweave.increment.md → plugins/specweave/commands/increment.md} +84 -19
  163. package/{src/commands/specweave.next.md → plugins/specweave/commands/next.md} +1 -1
  164. package/{src/commands/specweave.progress.md → plugins/specweave/commands/progress.md} +1 -1
  165. package/{src → plugins/specweave}/commands/specweave.md +57 -25
  166. package/{src/commands/specweave.sync-docs.md → plugins/specweave/commands/sync-docs.md} +6 -6
  167. package/plugins/specweave/commands/translate.md +425 -0
  168. package/{src/commands/specweave.validate.md → plugins/specweave/commands/validate.md} +2 -2
  169. package/plugins/specweave/hooks/hooks.json +15 -0
  170. package/plugins/specweave/hooks/post-task-completion.sh +265 -0
  171. package/plugins/specweave/skills/SKILLS-INDEX.md +229 -0
  172. package/{src → plugins/specweave}/skills/brownfield-analyzer/SKILL.md +66 -24
  173. package/{src → plugins/specweave}/skills/context-loader/SKILL.md +1 -1
  174. package/plugins/specweave/skills/context-optimizer/SKILL.md +588 -0
  175. package/plugins/specweave/skills/docs-updater/SKILL.md +0 -0
  176. package/{src → plugins/specweave}/skills/increment-planner/SKILL.md +81 -4
  177. package/plugins/specweave/skills/plugin-detector/SKILL.md +211 -0
  178. package/{src → plugins/specweave}/skills/project-kickstarter/SKILL.md +7 -7
  179. package/plugins/specweave/skills/rfc-generator/SKILL.md +369 -0
  180. package/{src → plugins/specweave}/skills/specweave-detector/SKILL.md +2 -2
  181. package/plugins/specweave/skills/specweave-framework/SKILL.md +498 -0
  182. package/plugins/specweave/skills/specweave-framework/test-cases/test-1-increment-naming.yaml +11 -0
  183. package/plugins/specweave/skills/specweave-framework/test-cases/test-2-source-of-truth.yaml +11 -0
  184. package/plugins/specweave/skills/specweave-framework/test-cases/test-3-increment-discipline.yaml +12 -0
  185. package/plugins/specweave/skills/specweave-framework/test-cases/test-4-file-placement.yaml +11 -0
  186. package/{src → plugins/specweave}/skills/tdd-workflow/SKILL.md +21 -21
  187. package/plugins/specweave/skills/translator/SKILL.md +172 -0
  188. package/plugins/specweave-ado/.claude-plugin/plugin.json +8 -0
  189. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +8 -0
  190. package/plugins/specweave-alternatives/skills/bmad-method-expert/SKILL.md +626 -0
  191. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
  192. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/check-setup.js +208 -0
  193. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
  194. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
  195. package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +1010 -0
  196. package/plugins/specweave-backend/.claude-plugin/plugin.json +8 -0
  197. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +8 -0
  198. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +8 -0
  199. package/plugins/specweave-docs/.claude-plugin/plugin.json +8 -0
  200. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +526 -0
  201. package/plugins/specweave-figma/.claude-plugin/.mcp.json +12 -0
  202. package/plugins/specweave-figma/.claude-plugin/plugin.json +8 -0
  203. package/plugins/specweave-figma/ARCHITECTURE.md +453 -0
  204. package/plugins/specweave-figma/README.md +728 -0
  205. package/plugins/specweave-figma/skills/figma-to-code/SKILL.md +632 -0
  206. package/plugins/specweave-figma/skills/figma-to-code/test-1-token-generation.yaml +29 -0
  207. package/plugins/specweave-figma/skills/figma-to-code/test-2-component-generation.yaml +27 -0
  208. package/plugins/specweave-figma/skills/figma-to-code/test-3-typescript-generation.yaml +28 -0
  209. package/plugins/specweave-frontend/.claude-plugin/plugin.json +8 -0
  210. package/plugins/specweave-github/.claude-plugin/plugin.json +19 -0
  211. package/plugins/specweave-github/agents/github-manager/AGENT.md +651 -0
  212. package/plugins/specweave-github/commands/github-close-issue.md +418 -0
  213. package/plugins/specweave-github/commands/github-create-issue.md +307 -0
  214. package/plugins/specweave-github/commands/github-status.md +533 -0
  215. package/plugins/specweave-github/commands/github-sync-tasks.md +530 -0
  216. package/plugins/specweave-github/commands/github-sync.md +443 -0
  217. package/plugins/specweave-github/lib/github-client.ts +330 -0
  218. package/plugins/specweave-github/lib/index.ts +10 -0
  219. package/plugins/specweave-github/lib/subtask-sync.ts +225 -0
  220. package/plugins/specweave-github/lib/task-parser.ts +246 -0
  221. package/plugins/specweave-github/lib/task-sync.ts +402 -0
  222. package/plugins/specweave-github/lib/types.ts +86 -0
  223. package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +497 -0
  224. package/plugins/specweave-github/skills/github-sync/SKILL.md +461 -0
  225. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +8 -0
  226. package/plugins/specweave-jira/.claude-plugin/plugin.json +8 -0
  227. package/{src → plugins/specweave-jira}/commands/specweave.sync-jira.md +18 -18
  228. package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +8 -0
  229. package/plugins/specweave-ml/.claude-plugin/plugin.json +38 -0
  230. package/plugins/specweave-ml/README.md +885 -0
  231. package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +402 -0
  232. package/plugins/specweave-ml/commands/ml-deploy.md +116 -0
  233. package/plugins/specweave-ml/commands/ml-evaluate.md +87 -0
  234. package/plugins/specweave-ml/commands/ml-explain.md +83 -0
  235. package/plugins/specweave-ml/skills/anomaly-detector/SKILL.md +559 -0
  236. package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +485 -0
  237. package/plugins/specweave-ml/skills/cv-pipeline-builder/SKILL.md +157 -0
  238. package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +521 -0
  239. package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +535 -0
  240. package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +566 -0
  241. package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +345 -0
  242. package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +518 -0
  243. package/plugins/specweave-ml/skills/model-evaluator/SKILL.md +155 -0
  244. package/plugins/specweave-ml/skills/model-explainer/SKILL.md +227 -0
  245. package/plugins/specweave-ml/skills/model-registry/SKILL.md +541 -0
  246. package/plugins/specweave-ml/skills/nlp-pipeline-builder/SKILL.md +180 -0
  247. package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +569 -0
  248. package/plugins/specweave-payments/.claude-plugin/plugin.json +8 -0
  249. package/plugins/specweave-testing/.claude-plugin/plugin.json +8 -0
  250. package/plugins/specweave-tooling/.claude-plugin/plugin.json +8 -0
  251. package/plugins/specweave-ui/.claude-plugin/plugin.json +26 -0
  252. package/plugins/specweave-ui/.mcp.json +14 -0
  253. package/plugins/specweave-ui/README.md +386 -0
  254. package/src/adapters/claude/adapter.ts +193 -46
  255. package/src/adapters/copilot/adapter.ts +132 -7
  256. package/src/adapters/cursor/adapter.ts +62 -3
  257. package/src/adapters/generic/adapter.ts +62 -3
  258. package/src/templates/AGENTS.md.template +170 -1
  259. package/src/templates/CLAUDE.md.template +122 -24
  260. package/src/templates/tasks.md.template +261 -0
  261. package/src/agents/ml-engineer/AGENT.md +0 -150
  262. package/src/commands/specweave.sync-github.md +0 -269
  263. package/src/hooks/post-task-completion.sh +0 -121
  264. package/src/skills/SKILLS-INDEX.md +0 -444
  265. package/src/skills/github-sync/SKILL.md +0 -234
  266. /package/{src → plugins/specweave}/agents/architect/AGENT.md +0 -0
  267. /package/{src → plugins/specweave}/agents/code-reviewer.md +0 -0
  268. /package/{src → plugins/specweave}/agents/docs-writer/AGENT.md +0 -0
  269. /package/{src → plugins/specweave}/agents/performance/AGENT.md +0 -0
  270. /package/{src → plugins/specweave}/agents/qa-lead/AGENT.md +0 -0
  271. /package/{src → plugins/specweave}/agents/security/AGENT.md +0 -0
  272. /package/{src → plugins/specweave}/agents/tdd-orchestrator/AGENT.md +0 -0
  273. /package/{src → plugins/specweave}/agents/tech-lead/AGENT.md +0 -0
  274. /package/{src/commands/specweave.list-increments.md → plugins/specweave/commands/list-increments.md} +0 -0
  275. /package/{src/commands/specweave.tdd-cycle.md → plugins/specweave/commands/tdd-cycle.md} +0 -0
  276. /package/{src/commands/specweave.tdd-green.md → plugins/specweave/commands/tdd-green.md} +0 -0
  277. /package/{src/commands/specweave.tdd-red.md → plugins/specweave/commands/tdd-red.md} +0 -0
  278. /package/{src/commands/specweave.tdd-refactor.md → plugins/specweave/commands/tdd-refactor.md} +0 -0
  279. /package/{src → plugins/specweave}/hooks/README.md +0 -0
  280. /package/{src → plugins/specweave}/hooks/docs-changed.sh +0 -0
  281. /package/{src → plugins/specweave}/hooks/human-input-required.sh +0 -0
  282. /package/{src → plugins/specweave}/hooks/post-increment-plugin-detect.sh +0 -0
  283. /package/{src → plugins/specweave}/hooks/pre-implementation.sh +0 -0
  284. /package/{src → plugins/specweave}/hooks/pre-task-plugin-detect.sh +0 -0
  285. /package/{src → plugins/specweave}/skills/brownfield-onboarder/SKILL.md +0 -0
  286. /package/{src → plugins/specweave}/skills/docs-updater/README.md +0 -0
  287. /package/{src → plugins/specweave}/skills/increment-planner/scripts/feature-utils.js +0 -0
  288. /package/{src → plugins/specweave}/skills/increment-quality-judge/SKILL.md +0 -0
  289. /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -0
  290. /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -0
  291. /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -0
  292. /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -0
  293. /package/{src → plugins/specweave}/skills/role-orchestrator/README.md +0 -0
  294. /package/{src → plugins/specweave}/skills/role-orchestrator/SKILL.md +0 -0
  295. /package/{src → plugins/specweave}/skills/task-builder/README.md +0 -0
  296. /package/{src → plugins/specweave-ado}/skills/ado-sync/README.md +0 -0
  297. /package/{src → plugins/specweave-ado}/skills/ado-sync/SKILL.md +0 -0
  298. /package/{src → plugins/specweave-ado}/skills/specweave-ado-mapper/SKILL.md +0 -0
  299. /package/{src → plugins/specweave-backend}/agents/database-optimizer/AGENT.md +0 -0
  300. /package/{src → plugins/specweave-backend}/skills/dotnet-backend/SKILL.md +0 -0
  301. /package/{src → plugins/specweave-backend}/skills/nodejs-backend/SKILL.md +0 -0
  302. /package/{src → plugins/specweave-backend}/skills/python-backend/SKILL.md +0 -0
  303. /package/{src → plugins/specweave-cost-optimizer}/skills/cost-optimizer/SKILL.md +0 -0
  304. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/AGENT.md +0 -0
  305. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-component-template.mmd +0 -0
  306. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-container-template.mmd +0 -0
  307. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-context-template.mmd +0 -0
  308. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/deployment-template.mmd +0 -0
  309. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/er-diagram-template.mmd +0 -0
  310. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/sequence-template.mmd +0 -0
  311. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -0
  312. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-2-sequence.yaml +0 -0
  313. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -0
  314. /package/{src → plugins/specweave-diagrams}/skills/diagrams-architect/SKILL.md +0 -0
  315. /package/{src → plugins/specweave-diagrams}/skills/diagrams-generator/SKILL.md +0 -0
  316. /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/README.md +0 -0
  317. /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/SKILL.md +0 -0
  318. /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/README.md +0 -0
  319. /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/SKILL.md +0 -0
  320. /package/{src → plugins/specweave-frontend}/skills/design-system-architect/SKILL.md +0 -0
  321. /package/{src → plugins/specweave-frontend}/skills/frontend/SKILL.md +0 -0
  322. /package/{src → plugins/specweave-frontend}/skills/nextjs/SKILL.md +0 -0
  323. /package/{src → plugins/specweave-infrastructure}/agents/devops/AGENT.md +0 -0
  324. /package/{src → plugins/specweave-infrastructure}/agents/network-engineer/AGENT.md +0 -0
  325. /package/{src → plugins/specweave-infrastructure}/agents/observability-engineer/AGENT.md +0 -0
  326. /package/{src → plugins/specweave-infrastructure}/agents/performance-engineer/AGENT.md +0 -0
  327. /package/{src → plugins/specweave-infrastructure}/agents/sre/AGENT.md +0 -0
  328. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/backend-diagnostics.md +0 -0
  329. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/database-diagnostics.md +0 -0
  330. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/infrastructure.md +0 -0
  331. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/monitoring.md +0 -0
  332. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/security-incidents.md +0 -0
  333. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/ui-diagnostics.md +0 -0
  334. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/01-high-cpu-usage.md +0 -0
  335. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/02-database-deadlock.md +0 -0
  336. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/03-memory-leak.md +0 -0
  337. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/04-slow-api-response.md +0 -0
  338. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/05-ddos-attack.md +0 -0
  339. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/06-disk-full.md +0 -0
  340. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/07-service-down.md +0 -0
  341. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/08-data-corruption.md +0 -0
  342. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/09-cascade-failure.md +0 -0
  343. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/10-rate-limit-exceeded.md +0 -0
  344. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/health-check.sh +0 -0
  345. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/log-analyzer.py +0 -0
  346. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/metrics-collector.sh +0 -0
  347. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/trace-analyzer.js +0 -0
  348. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/incident-report.md +0 -0
  349. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/mitigation-plan.md +0 -0
  350. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/post-mortem.md +0 -0
  351. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/runbook-template.md +0 -0
  352. /package/{src → plugins/specweave-infrastructure}/commands/specweave.monitor-setup.md +0 -0
  353. /package/{src → plugins/specweave-infrastructure}/commands/specweave.slo-implement.md +0 -0
  354. /package/{src → plugins/specweave-infrastructure}/skills/distributed-tracing/SKILL.md +0 -0
  355. /package/{src → plugins/specweave-infrastructure}/skills/grafana-dashboards/SKILL.md +0 -0
  356. /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/README.md +0 -0
  357. /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/SKILL.md +0 -0
  358. /package/{src → plugins/specweave-infrastructure}/skills/prometheus-configuration/SKILL.md +0 -0
  359. /package/{src → plugins/specweave-infrastructure}/skills/slo-implementation/SKILL.md +0 -0
  360. /package/{src → plugins/specweave-jira}/skills/jira-sync/README.md +0 -0
  361. /package/{src → plugins/specweave-jira}/skills/jira-sync/SKILL.md +0 -0
  362. /package/{src → plugins/specweave-jira}/skills/specweave-jira-mapper/SKILL.md +0 -0
  363. /package/{src → plugins/specweave-kubernetes}/agents/kubernetes-architect/AGENT.md +0 -0
  364. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/SKILL.md +0 -0
  365. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/argocd-setup.md +0 -0
  366. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/sync-policies.md +0 -0
  367. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/SKILL.md +0 -0
  368. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -0
  369. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -0
  370. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/references/chart-structure.md +0 -0
  371. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -0
  372. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/SKILL.md +0 -0
  373. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/configmap-template.yaml +0 -0
  374. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/deployment-template.yaml +0 -0
  375. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/service-template.yaml +0 -0
  376. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/deployment-spec.md +0 -0
  377. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/service-spec.md +0 -0
  378. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/SKILL.md +0 -0
  379. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/assets/network-policy-template.yaml +0 -0
  380. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/references/rbac-patterns.md +0 -0
  381. /package/{src → plugins/specweave-ml}/agents/data-scientist/AGENT.md +0 -0
  382. /package/{src → plugins/specweave-ml}/agents/mlops-engineer/AGENT.md +0 -0
  383. /package/{src → plugins/specweave-ml}/commands/specweave.ml-pipeline.md +0 -0
  384. /package/{src → plugins/specweave-ml}/skills/ml-pipeline-workflow/SKILL.md +0 -0
  385. /package/{src → plugins/specweave-payments}/agents/payment-integration/AGENT.md +0 -0
  386. /package/{src → plugins/specweave-payments}/skills/billing-automation/SKILL.md +0 -0
  387. /package/{src → plugins/specweave-payments}/skills/paypal-integration/SKILL.md +0 -0
  388. /package/{src → plugins/specweave-payments}/skills/pci-compliance/SKILL.md +0 -0
  389. /package/{src → plugins/specweave-payments}/skills/stripe-integration/SKILL.md +0 -0
  390. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/README.md +0 -0
  391. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/SKILL.md +0 -0
  392. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/execute.js +0 -0
  393. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/lib/utils.js +0 -0
  394. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/package.json +0 -0
  395. /package/{src → plugins/specweave-tooling}/skills/skill-creator/LICENSE.txt +0 -0
  396. /package/{src → plugins/specweave-tooling}/skills/skill-creator/SKILL.md +0 -0
  397. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/init_skill.py +0 -0
  398. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/package_skill.py +0 -0
  399. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/quick_validate.py +0 -0
  400. /package/{src → plugins/specweave-tooling}/skills/skill-router/SKILL.md +0 -0
@@ -0,0 +1,535 @@
1
+ ---
2
+ name: experiment-tracker
3
+ description: |
4
+ Manages ML experiment tracking with MLflow, Weights & Biases, or SpecWeave's built-in tracking. Activates for "track experiments", "MLflow", "wandb", "experiment logging", "compare experiments", "hyperparameter tracking". Automatically configures tracking tools to log to SpecWeave increment folders, ensuring all experiments are documented and reproducible. Integrates with SpecWeave's living docs for persistent experiment knowledge.
5
+ ---
6
+
7
+ # Experiment Tracker
8
+
9
+ ## Overview
10
+
11
+ Transforms chaotic ML experimentation into organized, reproducible research. Every experiment is logged, versioned, and tied to a SpecWeave increment, ensuring team knowledge is preserved and experiments are reproducible.
12
+
13
+ ## Problem This Solves
14
+
15
+ **Without structured tracking**:
16
+ - ❌ "Which hyperparameters did we use for model v2?"
17
+ - ❌ "Why did we choose XGBoost over LightGBM?"
18
+ - ❌ "Can't reproduce results from 3 months ago"
19
+ - ❌ "Team member left, all knowledge in their notebooks"
20
+
21
+ **With experiment tracking**:
22
+ - ✅ All experiments logged with params, metrics, artifacts
23
+ - ✅ Decisions documented ("XGBoost: 5% better precision, chose it")
24
+ - ✅ Reproducible (environment, data version, code hash)
25
+ - ✅ Team knowledge in living docs, not individual notebooks
26
+
27
+ ## How It Works
28
+
29
+ ### Auto-Configuration
30
+
31
+ When you create an ML increment, the skill detects tracking tools:
32
+
33
+ ```python
34
+ # No configuration needed - automatically detects and configures
35
+ from specweave import track_experiment
36
+
37
+ # Automatically logs to:
38
+ # .specweave/increments/0042.../experiments/exp-001/
39
+ with track_experiment("baseline-model") as exp:
40
+ model.fit(X_train, y_train)
41
+ exp.log_metric("accuracy", accuracy)
42
+ ```
43
+
44
+ ### Tracking Backends
45
+
46
+ **Option 1: SpecWeave Built-in** (default, zero-config)
47
+ ```python
48
+ from specweave import track_experiment
49
+
50
+ # Logs to increment folder automatically
51
+ with track_experiment("xgboost-v1") as exp:
52
+ exp.log_param("n_estimators", 100)
53
+ exp.log_metric("auc", 0.87)
54
+ exp.save_model(model, "model.pkl")
55
+
56
+ # Creates:
57
+ # .specweave/increments/0042.../experiments/xgboost-v1/
58
+ # ├── params.json
59
+ # ├── metrics.json
60
+ # ├── model.pkl
61
+ # └── metadata.yaml
62
+ ```
63
+
64
+ **Option 2: MLflow** (if detected in project)
65
+ ```python
66
+ import mlflow
67
+ from specweave import configure_mlflow
68
+
69
+ # Auto-configures MLflow to log to increment
70
+ configure_mlflow(increment="0042")
71
+
72
+ with mlflow.start_run(run_name="xgboost-v1"):
73
+ mlflow.log_param("n_estimators", 100)
74
+ mlflow.log_metric("auc", 0.87)
75
+ mlflow.sklearn.log_model(model, "model")
76
+
77
+ # Still logs to increment folder, just uses MLflow as backend
78
+ ```
79
+
80
+ **Option 3: Weights & Biases**
81
+ ```python
82
+ import wandb
83
+ from specweave import configure_wandb
84
+
85
+ # Auto-configures W&B project = increment ID
86
+ configure_wandb(increment="0042")
87
+
88
+ run = wandb.init(name="xgboost-v1")
89
+ run.log({"auc": 0.87})
90
+ run.log_model("model.pkl")
91
+
92
+ # W&B dashboard + local logs in increment folder
93
+ ```
94
+
95
+ ### Experiment Comparison
96
+
97
+ ```python
98
+ from specweave import compare_experiments
99
+
100
+ # Compare all experiments in increment
101
+ comparison = compare_experiments(increment="0042")
102
+
103
+ # Generates:
104
+ # .specweave/increments/0042.../experiments/comparison.md
105
+ ```
106
+
107
+ **Output**:
108
+ ```markdown
109
+ | Experiment | Accuracy | Precision | Recall | F1 | Training Time |
110
+ |--------------------|----------|-----------|--------|------|---------------|
111
+ | exp-001-baseline | 0.65 | 0.60 | 0.55 | 0.57 | 2s |
112
+ | exp-002-xgboost | 0.87 | 0.85 | 0.83 | 0.84 | 45s |
113
+ | exp-003-lightgbm | 0.86 | 0.84 | 0.82 | 0.83 | 32s |
114
+ | exp-004-neural-net | 0.85 | 0.83 | 0.81 | 0.82 | 320s |
115
+
116
+ **Best Model**: exp-002-xgboost
117
+ - Highest accuracy (0.87)
118
+ - Good precision/recall balance
119
+ - Reasonable training time (45s)
120
+ - Selected for deployment
121
+ ```
122
+
123
+ ### Living Docs Integration
124
+
125
+ After completing increment:
126
+
127
+ ```bash
128
+ /specweave:sync-docs update
129
+ ```
130
+
131
+ Automatically updates:
132
+
133
+ ```markdown
134
+ <!-- .specweave/docs/internal/architecture/ml-experiments.md -->
135
+
136
+ ## Recommendation Model (Increment 0042)
137
+
138
+ ### Experiments Conducted: 7
139
+ - exp-001-baseline: Random classifier (acc=0.12)
140
+ - exp-002-popularity: Popularity baseline (acc=0.18)
141
+ - exp-003-xgboost: XGBoost classifier (acc=0.26) ✅ **SELECTED**
142
+ - ...
143
+
144
+ ### Selection Rationale
145
+ XGBoost chosen for:
146
+ - Best accuracy (0.26 vs baseline 0.18, +44% improvement)
147
+ - Fast inference (<50ms)
148
+ - Good explainability (SHAP values)
149
+ - Stable across cross-validation (std=0.02)
150
+
151
+ ### Hyperparameters (exp-003)
152
+ - n_estimators: 200
153
+ - max_depth: 6
154
+ - learning_rate: 0.1
155
+ - subsample: 0.8
156
+ ```
157
+
158
+ ## When to Use This Skill
159
+
160
+ Activate when you need to:
161
+
162
+ - **Track ML experiments** systematically
163
+ - **Compare multiple models** objectively
164
+ - **Document experiment decisions** for team
165
+ - **Reproduce past results** exactly
166
+ - **Maintain experiment history** across increments
167
+
168
+ ## Key Features
169
+
170
+ ### 1. Automatic Logging
171
+
172
+ ```python
173
+ # Logs everything automatically
174
+ from specweave import AutoTracker
175
+
176
+ tracker = AutoTracker(increment="0042")
177
+
178
+ # Just wrap your training code
179
+ @tracker.track(name="xgboost-auto")
180
+ def train_model():
181
+ model = XGBClassifier(**params)
182
+ model.fit(X_train, y_train)
183
+ score = model.score(X_test, y_test)
184
+ return model, score
185
+
186
+ # Automatically logs: params, metrics, model, environment, git hash
187
+ model, score = train_model()
188
+ ```
189
+
190
+ ### 2. Hyperparameter Tracking
191
+
192
+ ```python
193
+ from specweave import track_hyperparameters
194
+
195
+ params_grid = {
196
+ "n_estimators": [100, 200, 500],
197
+ "max_depth": [3, 6, 9],
198
+ "learning_rate": [0.01, 0.1, 0.3]
199
+ }
200
+
201
+ # Tracks all parameter combinations
202
+ results = track_hyperparameters(
203
+ model=XGBClassifier,
204
+ param_grid=params_grid,
205
+ X_train=X_train,
206
+ y_train=y_train,
207
+ increment="0042"
208
+ )
209
+
210
+ # Generates parameter importance analysis
211
+ ```
212
+
213
+ ### 3. Cross-Validation Tracking
214
+
215
+ ```python
216
+ from specweave import track_cross_validation
217
+
218
+ # Tracks each fold separately
219
+ cv_results = track_cross_validation(
220
+ model=model,
221
+ X=X,
222
+ y=y,
223
+ cv=5,
224
+ increment="0042"
225
+ )
226
+
227
+ # Logs: mean, std, per-fold scores, fold distribution
228
+ ```
229
+
230
+ ### 4. Artifact Management
231
+
232
+ ```python
233
+ from specweave import track_artifacts
234
+
235
+ with track_experiment("xgboost-v1") as exp:
236
+ # Training artifacts
237
+ exp.save_artifact("preprocessor.pkl", preprocessor)
238
+ exp.save_artifact("model.pkl", model)
239
+
240
+ # Evaluation artifacts
241
+ exp.save_artifact("confusion_matrix.png", cm_plot)
242
+ exp.save_artifact("roc_curve.png", roc_plot)
243
+
244
+ # Data artifacts
245
+ exp.save_artifact("feature_importance.csv", importance_df)
246
+
247
+ # Environment artifacts
248
+ exp.save_artifact("requirements.txt", requirements)
249
+ exp.save_artifact("conda_env.yaml", conda_env)
250
+ ```
251
+
252
+ ### 5. Experiment Metadata
253
+
254
+ ```python
255
+ from specweave import ExperimentMetadata
256
+
257
+ metadata = ExperimentMetadata(
258
+ name="xgboost-v3",
259
+ description="XGBoost with feature engineering v2",
260
+ tags=["production-candidate", "feature-eng-v2"],
261
+ git_commit="a3b8c9d",
262
+ data_version="v2024-01",
263
+ author="[email protected]"
264
+ )
265
+
266
+ with track_experiment(metadata) as exp:
267
+ # ... training ...
268
+ pass
269
+ ```
270
+
271
+ ## Best Practices
272
+
273
+ ### 1. Name Experiments Clearly
274
+
275
+ ```python
276
+ # ❌ Bad: Generic names
277
+ with track_experiment("exp1"):
278
+ ...
279
+
280
+ # ✅ Good: Descriptive names
281
+ with track_experiment("xgboost-tuned-depth6-lr0.1"):
282
+ ...
283
+ ```
284
+
285
+ ### 2. Log Everything
286
+
287
+ ```python
288
+ # Log more than you think you need
289
+ exp.log_param("random_seed", 42)
290
+ exp.log_param("data_version", "2024-01")
291
+ exp.log_param("python_version", sys.version)
292
+ exp.log_param("sklearn_version", sklearn.__version__)
293
+
294
+ # Future you will thank present you
295
+ ```
296
+
297
+ ### 3. Document Failures
298
+
299
+ ```python
300
+ try:
301
+ with track_experiment("neural-net-attempt") as exp:
302
+ model.fit(X_train, y_train)
303
+ except Exception as e:
304
+ exp.log_note(f"FAILED: {str(e)}")
305
+ exp.log_note("Reason: Out of memory, need smaller batch size")
306
+ exp.set_status("failed")
307
+
308
+ # Failure documentation prevents repeating mistakes
309
+ ```
310
+
311
+ ### 4. Use Experiment Series
312
+
313
+ ```python
314
+ # Related experiments in series
315
+ experiments = [
316
+ "xgboost-baseline",
317
+ "xgboost-tuned-v1",
318
+ "xgboost-tuned-v2",
319
+ "xgboost-tuned-v3-final"
320
+ ]
321
+
322
+ # Track progression and improvements
323
+ ```
324
+
325
+ ### 5. Link to Data Versions
326
+
327
+ ```python
328
+ with track_experiment("xgboost-v1") as exp:
329
+ exp.log_param("data_commit", "dvc:a3b8c9d")
330
+ exp.log_param("data_url", "s3://bucket/data/v2024-01")
331
+
332
+ # Enables exact reproduction
333
+ ```
334
+
335
+ ## Integration with SpecWeave
336
+
337
+ ### With Increments
338
+
339
+ ```bash
340
+ # Experiments automatically tied to increment
341
+ /specweave:inc "0042-recommendation-model"
342
+ # All experiments logged to: .specweave/increments/0042.../experiments/
343
+ ```
344
+
345
+ ### With Living Docs
346
+
347
+ ```bash
348
+ # Sync experiment findings to docs
349
+ /specweave:sync-docs update
350
+ # Updates: architecture/ml-models.md, runbooks/model-training.md
351
+ ```
352
+
353
+ ### With GitHub
354
+
355
+ ```bash
356
+ # Create issue for model retraining
357
+ /specweave:github:create-issue "Retrain model with Q1 2024 data"
358
+ # Links to previous experiments in increment
359
+ ```
360
+
361
+ ## Examples
362
+
363
+ ### Example 1: Baseline Experiments
364
+
365
+ ```python
366
+ from specweave import track_experiment
367
+
368
+ baselines = ["random", "majority", "stratified"]
369
+
370
+ for strategy in baselines:
371
+ with track_experiment(f"baseline-{strategy}") as exp:
372
+ model = DummyClassifier(strategy=strategy)
373
+ model.fit(X_train, y_train)
374
+
375
+ accuracy = model.score(X_test, y_test)
376
+ exp.log_metric("accuracy", accuracy)
377
+ exp.log_note(f"Baseline: {strategy}")
378
+
379
+ # Generates baseline comparison report
380
+ ```
381
+
382
+ ### Example 2: Hyperparameter Grid Search
383
+
384
+ ```python
385
+ from sklearn.model_selection import GridSearchCV
386
+ from specweave import track_grid_search
387
+
388
+ param_grid = {
389
+ "n_estimators": [100, 200, 500],
390
+ "max_depth": [3, 6, 9]
391
+ }
392
+
393
+ # Automatically logs all combinations
394
+ best_model, results = track_grid_search(
395
+ XGBClassifier(),
396
+ param_grid,
397
+ X_train,
398
+ y_train,
399
+ increment="0042"
400
+ )
401
+
402
+ # Creates visualization of parameter importance
403
+ ```
404
+
405
+ ### Example 3: Model Comparison
406
+
407
+ ```python
408
+ from specweave import compare_models
409
+
410
+ models = {
411
+ "xgboost": XGBClassifier(),
412
+ "lightgbm": LGBMClassifier(),
413
+ "random-forest": RandomForestClassifier()
414
+ }
415
+
416
+ # Trains and compares all models
417
+ comparison = compare_models(
418
+ models,
419
+ X_train,
420
+ y_train,
421
+ X_test,
422
+ y_test,
423
+ increment="0042"
424
+ )
425
+
426
+ # Generates markdown comparison table
427
+ ```
428
+
429
+ ## Tool Compatibility
430
+
431
+ ### MLflow
432
+
433
+ ```python
434
+ # Option 1: Pure MLflow (auto-configured)
435
+ import mlflow
436
+ mlflow.set_tracking_uri(".specweave/increments/0042.../experiments")
437
+
438
+ # Option 2: SpecWeave wrapper (recommended)
439
+ from specweave import mlflow as sw_mlflow
440
+ with sw_mlflow.start_run("xgboost"):
441
+ # Logs to both MLflow and increment docs
442
+ pass
443
+ ```
444
+
445
+ ### Weights & Biases
446
+
447
+ ```python
448
+ # Option 1: Pure wandb
449
+ import wandb
450
+ wandb.init(project="0042-recommendation-model")
451
+
452
+ # Option 2: SpecWeave wrapper (recommended)
453
+ from specweave import wandb as sw_wandb
454
+ run = sw_wandb.init(increment="0042", name="xgboost")
455
+ # Syncs to increment folder + W&B dashboard
456
+ ```
457
+
458
+ ### TensorBoard
459
+
460
+ ```python
461
+ from specweave import TensorBoardCallback
462
+
463
+ # Keras callback
464
+ model.fit(
465
+ X_train,
466
+ y_train,
467
+ callbacks=[
468
+ TensorBoardCallback(
469
+ increment="0042",
470
+ log_dir=".specweave/increments/0042.../tensorboard"
471
+ )
472
+ ]
473
+ )
474
+ ```
475
+
476
+ ## Commands
477
+
478
+ ```bash
479
+ # List all experiments in increment
480
+ /ml:list-experiments 0042
481
+
482
+ # Compare experiments
483
+ /ml:compare-experiments 0042
484
+
485
+ # Load experiment details
486
+ /ml:show-experiment exp-003-xgboost
487
+
488
+ # Export experiment data
489
+ /ml:export-experiments 0042 --format csv
490
+ ```
491
+
492
+ ## Tips
493
+
494
+ 1. **Start tracking early** - Track from first experiment, not after 20 failed attempts
495
+ 2. **Tag production models** - `exp.add_tag("production")` for deployed models
496
+ 3. **Version everything** - Data, code, environment, dependencies
497
+ 4. **Document decisions** - Why model A over model B (not just metrics)
498
+ 5. **Prune old experiments** - Archive experiments >6 months old
499
+
500
+ ## Advanced: Multi-Stage Experiments
501
+
502
+ For complex pipelines with multiple stages:
503
+
504
+ ```python
505
+ from specweave import ExperimentPipeline
506
+
507
+ pipeline = ExperimentPipeline("recommendation-full-pipeline")
508
+
509
+ # Stage 1: Data preprocessing
510
+ with pipeline.stage("preprocessing") as stage:
511
+ stage.log_metric("rows_before", len(df))
512
+ df_clean = preprocess(df)
513
+ stage.log_metric("rows_after", len(df_clean))
514
+
515
+ # Stage 2: Feature engineering
516
+ with pipeline.stage("features") as stage:
517
+ features = engineer_features(df_clean)
518
+ stage.log_metric("num_features", features.shape[1])
519
+
520
+ # Stage 3: Model training
521
+ with pipeline.stage("training") as stage:
522
+ model = train_model(features)
523
+ stage.log_metric("accuracy", accuracy)
524
+
525
+ # Logs entire pipeline with stage dependencies
526
+ ```
527
+
528
+ ## Integration Points
529
+
530
+ - **ml-pipeline-orchestrator**: Auto-tracks experiments during pipeline execution
531
+ - **model-evaluator**: Uses experiment data for model comparison
532
+ - **ml-engineer agent**: Reviews experiment results and suggests improvements
533
+ - **Living docs**: Syncs experiment findings to architecture docs
534
+
535
+ This skill ensures ML experimentation is never lost, always reproducible, and well-documented.