specweave 0.4.1 → 0.6.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 (392) hide show
  1. package/.claude-plugin/README.md +325 -0
  2. package/.claude-plugin/marketplace.json +210 -0
  3. package/CLAUDE.md +871 -596
  4. package/README.md +188 -137
  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 +346 -124
  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 +7 -1
  39. package/dist/cli/commands/plugin.d.ts.map +1 -1
  40. package/dist/cli/commands/plugin.js +72 -61
  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 +269 -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/generate-skills-index.js +4 -4
  144. package/dist/utils/generate-skills-index.js.map +1 -1
  145. package/package.json +12 -13
  146. package/plugins/specweave-ado/.claude-plugin/plugin.json +8 -0
  147. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +8 -0
  148. package/plugins/specweave-alternatives/skills/bmad-method-expert/SKILL.md +626 -0
  149. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
  150. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/check-setup.js +208 -0
  151. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
  152. package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
  153. package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +1010 -0
  154. package/plugins/specweave-backend/.claude-plugin/plugin.json +8 -0
  155. package/plugins/specweave-core/.claude-plugin/plugin.json +25 -0
  156. package/{src → plugins/specweave-core}/agents/pm/AGENT.md +80 -0
  157. package/plugins/specweave-core/agents/translator/AGENT.md +282 -0
  158. package/{src → plugins/specweave-core}/commands/README.md +11 -11
  159. package/{src → plugins/specweave-core}/commands/specweave.costs.md +7 -7
  160. package/{src → plugins/specweave-core}/commands/specweave.do.md +34 -7
  161. package/{src → plugins/specweave-core}/commands/specweave.increment.md +83 -18
  162. package/{src → plugins/specweave-core}/commands/specweave.md +49 -17
  163. package/{src → plugins/specweave-core}/commands/specweave.sync-docs.md +5 -5
  164. package/plugins/specweave-core/commands/specweave.translate.md +425 -0
  165. package/{src → plugins/specweave-core}/commands/specweave.validate.md +1 -1
  166. package/plugins/specweave-core/hooks/hooks.json +13 -0
  167. package/plugins/specweave-core/hooks/post-task-completion.sh +265 -0
  168. package/plugins/specweave-core/skills/SKILLS-INDEX.md +229 -0
  169. package/{src → plugins/specweave-core}/skills/brownfield-analyzer/SKILL.md +66 -24
  170. package/{src → plugins/specweave-core}/skills/context-loader/SKILL.md +1 -1
  171. package/plugins/specweave-core/skills/context-optimizer/SKILL.md +588 -0
  172. package/plugins/specweave-core/skills/docs-updater/SKILL.md +0 -0
  173. package/{src → plugins/specweave-core}/skills/increment-planner/SKILL.md +81 -4
  174. package/plugins/specweave-core/skills/plugin-detector/SKILL.md +211 -0
  175. package/{src → plugins/specweave-core}/skills/project-kickstarter/SKILL.md +7 -7
  176. package/plugins/specweave-core/skills/rfc-generator/SKILL.md +369 -0
  177. package/{src → plugins/specweave-core}/skills/specweave-detector/SKILL.md +2 -2
  178. package/plugins/specweave-core/skills/specweave-framework/SKILL.md +498 -0
  179. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-1-increment-naming.yaml +11 -0
  180. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-2-source-of-truth.yaml +11 -0
  181. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-3-increment-discipline.yaml +12 -0
  182. package/plugins/specweave-core/skills/specweave-framework/test-cases/test-4-file-placement.yaml +11 -0
  183. package/{src → plugins/specweave-core}/skills/tdd-workflow/SKILL.md +20 -20
  184. package/plugins/specweave-core/skills/translator/SKILL.md +172 -0
  185. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +8 -0
  186. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +8 -0
  187. package/plugins/specweave-docs/.claude-plugin/plugin.json +8 -0
  188. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +526 -0
  189. package/plugins/specweave-figma/.claude-plugin/.mcp.json +12 -0
  190. package/plugins/specweave-figma/.claude-plugin/plugin.json +8 -0
  191. package/plugins/specweave-figma/ARCHITECTURE.md +453 -0
  192. package/plugins/specweave-figma/README.md +728 -0
  193. package/plugins/specweave-figma/skills/figma-to-code/SKILL.md +632 -0
  194. package/plugins/specweave-figma/skills/figma-to-code/test-1-token-generation.yaml +29 -0
  195. package/plugins/specweave-figma/skills/figma-to-code/test-2-component-generation.yaml +27 -0
  196. package/plugins/specweave-figma/skills/figma-to-code/test-3-typescript-generation.yaml +28 -0
  197. package/plugins/specweave-frontend/.claude-plugin/plugin.json +8 -0
  198. package/plugins/specweave-github/.claude-plugin/plugin.json +8 -0
  199. package/plugins/specweave-github/agents/github-manager/AGENT.md +651 -0
  200. package/plugins/specweave-github/commands/github-close-issue.md +418 -0
  201. package/plugins/specweave-github/commands/github-create-issue.md +307 -0
  202. package/plugins/specweave-github/commands/github-status.md +533 -0
  203. package/plugins/specweave-github/commands/github-sync-tasks.md +530 -0
  204. package/plugins/specweave-github/commands/github-sync.md +443 -0
  205. package/plugins/specweave-github/lib/github-client.ts +330 -0
  206. package/plugins/specweave-github/lib/index.ts +10 -0
  207. package/plugins/specweave-github/lib/subtask-sync.ts +225 -0
  208. package/plugins/specweave-github/lib/task-parser.ts +246 -0
  209. package/plugins/specweave-github/lib/task-sync.ts +402 -0
  210. package/plugins/specweave-github/lib/types.ts +86 -0
  211. package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +497 -0
  212. package/plugins/specweave-github/skills/github-sync/SKILL.md +461 -0
  213. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +8 -0
  214. package/plugins/specweave-jira/.claude-plugin/plugin.json +8 -0
  215. package/{src → plugins/specweave-jira}/commands/specweave.sync-jira.md +18 -18
  216. package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +8 -0
  217. package/plugins/specweave-ml/.claude-plugin/plugin.json +39 -0
  218. package/plugins/specweave-ml/README.md +885 -0
  219. package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +402 -0
  220. package/plugins/specweave-ml/commands/ml-deploy.md +116 -0
  221. package/plugins/specweave-ml/commands/ml-evaluate.md +87 -0
  222. package/plugins/specweave-ml/commands/ml-explain.md +83 -0
  223. package/plugins/specweave-ml/skills/anomaly-detector/SKILL.md +559 -0
  224. package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +485 -0
  225. package/plugins/specweave-ml/skills/cv-pipeline-builder/SKILL.md +157 -0
  226. package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +521 -0
  227. package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +535 -0
  228. package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +566 -0
  229. package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +345 -0
  230. package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +518 -0
  231. package/plugins/specweave-ml/skills/model-evaluator/SKILL.md +155 -0
  232. package/plugins/specweave-ml/skills/model-explainer/SKILL.md +227 -0
  233. package/plugins/specweave-ml/skills/model-registry/SKILL.md +541 -0
  234. package/plugins/specweave-ml/skills/nlp-pipeline-builder/SKILL.md +180 -0
  235. package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +569 -0
  236. package/plugins/specweave-payments/.claude-plugin/plugin.json +8 -0
  237. package/plugins/specweave-testing/.claude-plugin/plugin.json +8 -0
  238. package/plugins/specweave-tooling/.claude-plugin/plugin.json +8 -0
  239. package/plugins/specweave-ui/.claude-plugin/plugin.json +106 -0
  240. package/plugins/specweave-ui/.mcp.json +14 -0
  241. package/plugins/specweave-ui/README.md +386 -0
  242. package/src/adapters/claude/adapter.ts +193 -46
  243. package/src/adapters/copilot/adapter.ts +132 -7
  244. package/src/adapters/cursor/adapter.ts +62 -3
  245. package/src/adapters/generic/adapter.ts +62 -3
  246. package/src/templates/AGENTS.md.template +170 -1
  247. package/src/templates/CLAUDE.md.template +122 -24
  248. package/src/templates/tasks.md.template +261 -0
  249. package/src/agents/ml-engineer/AGENT.md +0 -150
  250. package/src/commands/specweave.sync-github.md +0 -269
  251. package/src/hooks/post-task-completion.sh +0 -121
  252. package/src/skills/SKILLS-INDEX.md +0 -444
  253. package/src/skills/github-sync/SKILL.md +0 -234
  254. /package/{src → plugins/specweave-ado}/skills/ado-sync/README.md +0 -0
  255. /package/{src → plugins/specweave-ado}/skills/ado-sync/SKILL.md +0 -0
  256. /package/{src → plugins/specweave-ado}/skills/specweave-ado-mapper/SKILL.md +0 -0
  257. /package/{src → plugins/specweave-backend}/agents/database-optimizer/AGENT.md +0 -0
  258. /package/{src → plugins/specweave-backend}/skills/dotnet-backend/SKILL.md +0 -0
  259. /package/{src → plugins/specweave-backend}/skills/nodejs-backend/SKILL.md +0 -0
  260. /package/{src → plugins/specweave-backend}/skills/python-backend/SKILL.md +0 -0
  261. /package/{src → plugins/specweave-core}/agents/architect/AGENT.md +0 -0
  262. /package/{src → plugins/specweave-core}/agents/code-reviewer.md +0 -0
  263. /package/{src → plugins/specweave-core}/agents/docs-writer/AGENT.md +0 -0
  264. /package/{src → plugins/specweave-core}/agents/performance/AGENT.md +0 -0
  265. /package/{src → plugins/specweave-core}/agents/qa-lead/AGENT.md +0 -0
  266. /package/{src → plugins/specweave-core}/agents/security/AGENT.md +0 -0
  267. /package/{src → plugins/specweave-core}/agents/tdd-orchestrator/AGENT.md +0 -0
  268. /package/{src → plugins/specweave-core}/agents/tech-lead/AGENT.md +0 -0
  269. /package/{src → plugins/specweave-core}/commands/specweave.done.md +0 -0
  270. /package/{src → plugins/specweave-core}/commands/specweave.inc.md +0 -0
  271. /package/{src → plugins/specweave-core}/commands/specweave.list-increments.md +0 -0
  272. /package/{src → plugins/specweave-core}/commands/specweave.next.md +0 -0
  273. /package/{src → plugins/specweave-core}/commands/specweave.progress.md +0 -0
  274. /package/{src → plugins/specweave-core}/commands/specweave.tdd-cycle.md +0 -0
  275. /package/{src → plugins/specweave-core}/commands/specweave.tdd-green.md +0 -0
  276. /package/{src → plugins/specweave-core}/commands/specweave.tdd-red.md +0 -0
  277. /package/{src → plugins/specweave-core}/commands/specweave.tdd-refactor.md +0 -0
  278. /package/{src → plugins/specweave-core}/hooks/README.md +0 -0
  279. /package/{src → plugins/specweave-core}/hooks/docs-changed.sh +0 -0
  280. /package/{src → plugins/specweave-core}/hooks/human-input-required.sh +0 -0
  281. /package/{src → plugins/specweave-core}/hooks/post-increment-plugin-detect.sh +0 -0
  282. /package/{src → plugins/specweave-core}/hooks/pre-implementation.sh +0 -0
  283. /package/{src → plugins/specweave-core}/hooks/pre-task-plugin-detect.sh +0 -0
  284. /package/{src → plugins/specweave-core}/skills/brownfield-onboarder/SKILL.md +0 -0
  285. /package/{src → plugins/specweave-core}/skills/docs-updater/README.md +0 -0
  286. /package/{src → plugins/specweave-core}/skills/increment-planner/scripts/feature-utils.js +0 -0
  287. /package/{src → plugins/specweave-core}/skills/increment-quality-judge/SKILL.md +0 -0
  288. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -0
  289. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -0
  290. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -0
  291. /package/{src → plugins/specweave-core}/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -0
  292. /package/{src → plugins/specweave-core}/skills/role-orchestrator/README.md +0 -0
  293. /package/{src → plugins/specweave-core}/skills/role-orchestrator/SKILL.md +0 -0
  294. /package/{src → plugins/specweave-core}/skills/task-builder/README.md +0 -0
  295. /package/{src → plugins/specweave-cost-optimizer}/skills/cost-optimizer/SKILL.md +0 -0
  296. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/AGENT.md +0 -0
  297. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-component-template.mmd +0 -0
  298. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-container-template.mmd +0 -0
  299. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-context-template.mmd +0 -0
  300. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/deployment-template.mmd +0 -0
  301. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/er-diagram-template.mmd +0 -0
  302. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/templates/sequence-template.mmd +0 -0
  303. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -0
  304. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-2-sequence.yaml +0 -0
  305. /package/{src → plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -0
  306. /package/{src → plugins/specweave-diagrams}/skills/diagrams-architect/SKILL.md +0 -0
  307. /package/{src → plugins/specweave-diagrams}/skills/diagrams-generator/SKILL.md +0 -0
  308. /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/README.md +0 -0
  309. /package/{src → plugins/specweave-docs}/skills/spec-driven-brainstorming/SKILL.md +0 -0
  310. /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/README.md +0 -0
  311. /package/{src → plugins/specweave-docs}/skills/spec-driven-debugging/SKILL.md +0 -0
  312. /package/{src → plugins/specweave-frontend}/skills/design-system-architect/SKILL.md +0 -0
  313. /package/{src → plugins/specweave-frontend}/skills/frontend/SKILL.md +0 -0
  314. /package/{src → plugins/specweave-frontend}/skills/nextjs/SKILL.md +0 -0
  315. /package/{src → plugins/specweave-infrastructure}/agents/devops/AGENT.md +0 -0
  316. /package/{src → plugins/specweave-infrastructure}/agents/network-engineer/AGENT.md +0 -0
  317. /package/{src → plugins/specweave-infrastructure}/agents/observability-engineer/AGENT.md +0 -0
  318. /package/{src → plugins/specweave-infrastructure}/agents/performance-engineer/AGENT.md +0 -0
  319. /package/{src → plugins/specweave-infrastructure}/agents/sre/AGENT.md +0 -0
  320. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/backend-diagnostics.md +0 -0
  321. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/database-diagnostics.md +0 -0
  322. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/infrastructure.md +0 -0
  323. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/monitoring.md +0 -0
  324. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/security-incidents.md +0 -0
  325. /package/{src → plugins/specweave-infrastructure}/agents/sre/modules/ui-diagnostics.md +0 -0
  326. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/01-high-cpu-usage.md +0 -0
  327. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/02-database-deadlock.md +0 -0
  328. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/03-memory-leak.md +0 -0
  329. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/04-slow-api-response.md +0 -0
  330. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/05-ddos-attack.md +0 -0
  331. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/06-disk-full.md +0 -0
  332. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/07-service-down.md +0 -0
  333. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/08-data-corruption.md +0 -0
  334. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/09-cascade-failure.md +0 -0
  335. /package/{src → plugins/specweave-infrastructure}/agents/sre/playbooks/10-rate-limit-exceeded.md +0 -0
  336. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/health-check.sh +0 -0
  337. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/log-analyzer.py +0 -0
  338. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/metrics-collector.sh +0 -0
  339. /package/{src → plugins/specweave-infrastructure}/agents/sre/scripts/trace-analyzer.js +0 -0
  340. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/incident-report.md +0 -0
  341. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/mitigation-plan.md +0 -0
  342. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/post-mortem.md +0 -0
  343. /package/{src → plugins/specweave-infrastructure}/agents/sre/templates/runbook-template.md +0 -0
  344. /package/{src → plugins/specweave-infrastructure}/commands/specweave.monitor-setup.md +0 -0
  345. /package/{src → plugins/specweave-infrastructure}/commands/specweave.slo-implement.md +0 -0
  346. /package/{src → plugins/specweave-infrastructure}/skills/distributed-tracing/SKILL.md +0 -0
  347. /package/{src → plugins/specweave-infrastructure}/skills/grafana-dashboards/SKILL.md +0 -0
  348. /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/README.md +0 -0
  349. /package/{src → plugins/specweave-infrastructure}/skills/hetzner-provisioner/SKILL.md +0 -0
  350. /package/{src → plugins/specweave-infrastructure}/skills/prometheus-configuration/SKILL.md +0 -0
  351. /package/{src → plugins/specweave-infrastructure}/skills/slo-implementation/SKILL.md +0 -0
  352. /package/{src → plugins/specweave-jira}/skills/jira-sync/README.md +0 -0
  353. /package/{src → plugins/specweave-jira}/skills/jira-sync/SKILL.md +0 -0
  354. /package/{src → plugins/specweave-jira}/skills/specweave-jira-mapper/SKILL.md +0 -0
  355. /package/{src → plugins/specweave-kubernetes}/agents/kubernetes-architect/AGENT.md +0 -0
  356. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/SKILL.md +0 -0
  357. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/argocd-setup.md +0 -0
  358. /package/{src → plugins/specweave-kubernetes}/skills/gitops-workflow/references/sync-policies.md +0 -0
  359. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/SKILL.md +0 -0
  360. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -0
  361. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -0
  362. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/references/chart-structure.md +0 -0
  363. /package/{src → plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -0
  364. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/SKILL.md +0 -0
  365. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/configmap-template.yaml +0 -0
  366. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/deployment-template.yaml +0 -0
  367. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/service-template.yaml +0 -0
  368. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/deployment-spec.md +0 -0
  369. /package/{src → plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/service-spec.md +0 -0
  370. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/SKILL.md +0 -0
  371. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/assets/network-policy-template.yaml +0 -0
  372. /package/{src → plugins/specweave-kubernetes}/skills/k8s-security-policies/references/rbac-patterns.md +0 -0
  373. /package/{src → plugins/specweave-ml}/agents/data-scientist/AGENT.md +0 -0
  374. /package/{src → plugins/specweave-ml}/agents/mlops-engineer/AGENT.md +0 -0
  375. /package/{src → plugins/specweave-ml}/commands/specweave.ml-pipeline.md +0 -0
  376. /package/{src → plugins/specweave-ml}/skills/ml-pipeline-workflow/SKILL.md +0 -0
  377. /package/{src → plugins/specweave-payments}/agents/payment-integration/AGENT.md +0 -0
  378. /package/{src → plugins/specweave-payments}/skills/billing-automation/SKILL.md +0 -0
  379. /package/{src → plugins/specweave-payments}/skills/paypal-integration/SKILL.md +0 -0
  380. /package/{src → plugins/specweave-payments}/skills/pci-compliance/SKILL.md +0 -0
  381. /package/{src → plugins/specweave-payments}/skills/stripe-integration/SKILL.md +0 -0
  382. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/README.md +0 -0
  383. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/SKILL.md +0 -0
  384. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/execute.js +0 -0
  385. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/lib/utils.js +0 -0
  386. /package/{src → plugins/specweave-testing}/skills/e2e-playwright/package.json +0 -0
  387. /package/{src → plugins/specweave-tooling}/skills/skill-creator/LICENSE.txt +0 -0
  388. /package/{src → plugins/specweave-tooling}/skills/skill-creator/SKILL.md +0 -0
  389. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/init_skill.py +0 -0
  390. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/package_skill.py +0 -0
  391. /package/{src → plugins/specweave-tooling}/skills/skill-creator/scripts/quick_validate.py +0 -0
  392. /package/{src → plugins/specweave-tooling}/skills/skill-router/SKILL.md +0 -0
@@ -0,0 +1,566 @@
1
+ ---
2
+ name: feature-engineer
3
+ description: |
4
+ Comprehensive feature engineering for ML pipelines: data quality assessment, feature creation, selection, transformation, and encoding. Activates for "feature engineering", "create features", "feature selection", "data preprocessing", "handle missing values", "encode categorical", "scale features", "feature importance". Ensures features are production-ready with automated validation, documentation, and integration with SpecWeave increments.
5
+ ---
6
+
7
+ # Feature Engineer
8
+
9
+ ## Overview
10
+
11
+ Feature engineering often makes the difference between mediocre and excellent ML models. This skill transforms raw data into model-ready features through systematic data quality assessment, feature creation, selection, and transformation—all integrated with SpecWeave's increment workflow.
12
+
13
+ ## The Feature Engineering Pipeline
14
+
15
+ ### Phase 1: Data Quality Assessment
16
+
17
+ **Before creating features, understand your data**:
18
+
19
+ ```python
20
+ from specweave import DataQualityReport
21
+
22
+ # Automated data quality check
23
+ report = DataQualityReport(df, increment="0042")
24
+
25
+ # Generates:
26
+ # - Missing value analysis
27
+ # - Outlier detection
28
+ # - Data type validation
29
+ # - Distribution analysis
30
+ # - Correlation matrix
31
+ # - Duplicate detection
32
+ ```
33
+
34
+ **Quality Report Output**:
35
+ ```markdown
36
+ # Data Quality Report
37
+
38
+ ## Dataset Overview
39
+ - Rows: 100,000
40
+ - Columns: 45
41
+ - Memory: 34.2 MB
42
+
43
+ ## Missing Values
44
+ | Column | Missing | Percentage |
45
+ |-----------------|---------|------------|
46
+ | email | 15,234 | 15.2% |
47
+ | phone | 8,901 | 8.9% |
48
+ | purchase_date | 0 | 0.0% |
49
+
50
+ ## Outliers Detected
51
+ - transaction_amount: 234 outliers (>3 std dev)
52
+ - user_age: 12 outliers (<18 or >100)
53
+
54
+ ## Data Type Issues
55
+ - user_id: Stored as float, should be int
56
+ - date_joined: Stored as string, should be datetime
57
+
58
+ ## Recommendations
59
+ 1. Impute email/phone or create "missing" indicator features
60
+ 2. Cap/remove outliers in transaction_amount
61
+ 3. Convert data types for efficiency
62
+ ```
63
+
64
+ ### Phase 2: Feature Creation
65
+
66
+ **Create features from domain knowledge**:
67
+
68
+ ```python
69
+ from specweave import FeatureCreator
70
+
71
+ creator = FeatureCreator(df, increment="0042")
72
+
73
+ # Temporal features (from datetime)
74
+ creator.add_temporal_features(
75
+ date_column="purchase_date",
76
+ features=["hour", "day_of_week", "month", "is_weekend", "is_holiday"]
77
+ )
78
+
79
+ # Aggregation features (user behavior)
80
+ creator.add_aggregation_features(
81
+ group_by="user_id",
82
+ target="purchase_amount",
83
+ aggs=["mean", "std", "count", "min", "max"]
84
+ )
85
+ # Creates: user_purchase_amount_mean, user_purchase_amount_std, etc.
86
+
87
+ # Interaction features
88
+ creator.add_interaction_features(
89
+ features=[("age", "income"), ("clicks", "impressions")],
90
+ operations=["multiply", "divide", "subtract"]
91
+ )
92
+ # Creates: age_x_income, clicks_per_impression, etc.
93
+
94
+ # Ratio features
95
+ creator.add_ratio_features([
96
+ ("revenue", "cost"),
97
+ ("conversions", "visits")
98
+ ])
99
+ # Creates: revenue_to_cost_ratio, conversion_rate
100
+
101
+ # Binning (discretization)
102
+ creator.add_binned_features(
103
+ column="age",
104
+ bins=[0, 18, 25, 35, 50, 65, 100],
105
+ labels=["child", "young_adult", "adult", "middle_aged", "senior", "elderly"]
106
+ )
107
+
108
+ # Text features (from text columns)
109
+ creator.add_text_features(
110
+ column="product_description",
111
+ features=["length", "word_count", "unique_words", "sentiment"]
112
+ )
113
+
114
+ # Generate all features
115
+ df_enriched = creator.generate()
116
+
117
+ # Auto-documents in increment folder
118
+ creator.save_feature_definitions(
119
+ path=".specweave/increments/0042.../features/feature_definitions.yaml"
120
+ )
121
+ ```
122
+
123
+ **Feature Definitions** (auto-generated):
124
+ ```yaml
125
+ # .specweave/increments/0042.../features/feature_definitions.yaml
126
+
127
+ features:
128
+ - name: purchase_hour
129
+ type: temporal
130
+ source: purchase_date
131
+ description: Hour of purchase (0-23)
132
+
133
+ - name: user_purchase_amount_mean
134
+ type: aggregation
135
+ source: purchase_amount
136
+ group_by: user_id
137
+ description: Average purchase amount per user
138
+
139
+ - name: age_x_income
140
+ type: interaction
141
+ sources: [age, income]
142
+ operation: multiply
143
+ description: Product of age and income
144
+
145
+ - name: conversion_rate
146
+ type: ratio
147
+ sources: [conversions, visits]
148
+ description: Conversion rate (conversions / visits)
149
+ ```
150
+
151
+ ### Phase 3: Feature Selection
152
+
153
+ **Reduce dimensionality, improve performance**:
154
+
155
+ ```python
156
+ from specweave import FeatureSelector
157
+
158
+ selector = FeatureSelector(X_train, y_train, increment="0042")
159
+
160
+ # Method 1: Correlation-based (remove redundant features)
161
+ selector.remove_correlated_features(threshold=0.95)
162
+ # Removes features with >95% correlation
163
+
164
+ # Method 2: Variance-based (remove constant features)
165
+ selector.remove_low_variance_features(threshold=0.01)
166
+ # Removes features with <1% variance
167
+
168
+ # Method 3: Statistical tests
169
+ selector.select_by_statistical_test(k=50)
170
+ # SelectKBest with chi2/f_classif
171
+
172
+ # Method 4: Model-based (tree importance)
173
+ selector.select_by_model_importance(
174
+ model=RandomForestClassifier(),
175
+ threshold=0.01
176
+ )
177
+ # Removes features with <1% importance
178
+
179
+ # Method 5: Recursive Feature Elimination
180
+ selector.select_by_rfe(
181
+ model=LogisticRegression(),
182
+ n_features=30
183
+ )
184
+
185
+ # Get selected features
186
+ selected_features = selector.get_selected_features()
187
+
188
+ # Generate selection report
189
+ selector.generate_report()
190
+ ```
191
+
192
+ **Feature Selection Report**:
193
+ ```markdown
194
+ # Feature Selection Report
195
+
196
+ ## Original Features: 125
197
+ ## Selected Features: 35 (72% reduction)
198
+
199
+ ## Selection Process
200
+ 1. Removed 12 correlated features (>95% correlation)
201
+ 2. Removed 8 low-variance features
202
+ 3. Statistical test: Selected top 50 (chi-squared)
203
+ 4. Model importance: Removed 15 low-importance features (<1%)
204
+
205
+ ## Top 10 Features (by importance)
206
+ 1. user_purchase_amount_mean (0.18)
207
+ 2. days_since_last_purchase (0.12)
208
+ 3. total_purchases (0.10)
209
+ 4. age_x_income (0.08)
210
+ 5. conversion_rate (0.07)
211
+ ...
212
+
213
+ ## Removed Features
214
+ - user_id_hash (constant)
215
+ - temp_feature_1 (99% correlated with temp_feature_2)
216
+ - random_noise (0% importance)
217
+ ...
218
+ ```
219
+
220
+ ### Phase 4: Feature Transformation
221
+
222
+ **Scale, normalize, encode for model compatibility**:
223
+
224
+ ```python
225
+ from specweave import FeatureTransformer
226
+
227
+ transformer = FeatureTransformer(increment="0042")
228
+
229
+ # Numerical transformations
230
+ transformer.add_numerical_transformer(
231
+ columns=["age", "income", "purchase_amount"],
232
+ method="standard_scaler" # Or: min_max, robust, quantile
233
+ )
234
+
235
+ # Categorical encoding
236
+ transformer.add_categorical_encoder(
237
+ columns=["country", "device_type", "product_category"],
238
+ method="onehot", # Or: label, target, binary
239
+ handle_unknown="ignore"
240
+ )
241
+
242
+ # Ordinal encoding (for ordered categories)
243
+ transformer.add_ordinal_encoder(
244
+ column="education",
245
+ order=["high_school", "bachelors", "masters", "phd"]
246
+ )
247
+
248
+ # Log transformation (for skewed distributions)
249
+ transformer.add_log_transform(
250
+ columns=["transaction_amount", "page_views"],
251
+ method="log1p" # log(1 + x) to handle zeros
252
+ )
253
+
254
+ # Box-Cox transformation (for normalization)
255
+ transformer.add_power_transform(
256
+ columns=["revenue", "engagement_score"],
257
+ method="box-cox"
258
+ )
259
+
260
+ # Custom transformation
261
+ def clip_outliers(x):
262
+ return np.clip(x, x.quantile(0.01), x.quantile(0.99))
263
+
264
+ transformer.add_custom_transformer(
265
+ columns=["outlier_prone_feature"],
266
+ func=clip_outliers
267
+ )
268
+
269
+ # Fit and transform
270
+ X_train_transformed = transformer.fit_transform(X_train)
271
+ X_test_transformed = transformer.transform(X_test)
272
+
273
+ # Save transformer pipeline
274
+ transformer.save(
275
+ path=".specweave/increments/0042.../features/transformer.pkl"
276
+ )
277
+ ```
278
+
279
+ ### Phase 5: Feature Validation
280
+
281
+ **Ensure features are production-ready**:
282
+
283
+ ```python
284
+ from specweave import FeatureValidator
285
+
286
+ validator = FeatureValidator(
287
+ X_train, X_test,
288
+ increment="0042"
289
+ )
290
+
291
+ # Check for data leakage
292
+ leakage_report = validator.check_data_leakage()
293
+ # Detects: perfectly correlated features, future data in training
294
+
295
+ # Check for distribution drift
296
+ drift_report = validator.check_distribution_drift()
297
+ # Compares train vs test distributions
298
+
299
+ # Check for missing values after transformation
300
+ missing_report = validator.check_missing_values()
301
+
302
+ # Check for infinite/NaN values
303
+ invalid_report = validator.check_invalid_values()
304
+
305
+ # Generate validation report
306
+ validator.generate_report()
307
+ ```
308
+
309
+ **Validation Report**:
310
+ ```markdown
311
+ # Feature Validation Report
312
+
313
+ ## Data Leakage: ✅ PASS
314
+ No perfect correlations detected between train and test.
315
+
316
+ ## Distribution Drift: ⚠️ WARNING
317
+ Features with significant drift (KS test p < 0.05):
318
+ - user_age: p=0.023 (minor drift)
319
+ - device_type: p=0.001 (major drift)
320
+
321
+ Recommendation: Check if test data is from different time period.
322
+
323
+ ## Missing Values: ✅ PASS
324
+ No missing values after transformation.
325
+
326
+ ## Invalid Values: ✅ PASS
327
+ No infinite or NaN values detected.
328
+
329
+ ## Overall: READY FOR TRAINING
330
+ 2 warnings, 0 critical issues.
331
+ ```
332
+
333
+ ## Integration with SpecWeave
334
+
335
+ ### Automatic Feature Documentation
336
+
337
+ ```python
338
+ # All feature engineering steps logged to increment
339
+ with track_experiment("feature-engineering-v1", increment="0042") as exp:
340
+ # Create features
341
+ df_enriched = creator.generate()
342
+
343
+ # Select features
344
+ selected = selector.select()
345
+
346
+ # Transform features
347
+ X_transformed = transformer.fit_transform(X)
348
+
349
+ # Validate
350
+ validation = validator.validate()
351
+
352
+ # Auto-logs:
353
+ exp.log_param("original_features", 125)
354
+ exp.log_param("created_features", 45)
355
+ exp.log_param("selected_features", 35)
356
+ exp.log_metric("feature_reduction", 0.72)
357
+ exp.save_artifact("feature_definitions.yaml")
358
+ exp.save_artifact("transformer.pkl")
359
+ exp.save_artifact("validation_report.md")
360
+ ```
361
+
362
+ ### Living Docs Integration
363
+
364
+ After completing feature engineering:
365
+
366
+ ```bash
367
+ /specweave:sync-docs update
368
+ ```
369
+
370
+ Updates:
371
+ ```markdown
372
+ <!-- .specweave/docs/internal/architecture/feature-engineering.md -->
373
+
374
+ ## Recommendation Model Features (Increment 0042)
375
+
376
+ ### Feature Engineering Pipeline
377
+ 1. Data Quality: 100K rows, 45 columns
378
+ 2. Created: 45 new features (temporal, aggregation, interaction)
379
+ 3. Selected: 35 features (72% reduction via importance + RFE)
380
+ 4. Transformed: StandardScaler for numerical, OneHot for categorical
381
+
382
+ ### Key Features
383
+ - user_purchase_amount_mean: Average user spend (top feature, 18% importance)
384
+ - days_since_last_purchase: Recency indicator (12% importance)
385
+ - age_x_income: Interaction feature (8% importance)
386
+
387
+ ### Feature Store
388
+ All features documented in: `.specweave/increments/0042.../features/`
389
+ - feature_definitions.yaml: Feature catalog
390
+ - transformer.pkl: Production transformation pipeline
391
+ - validation_report.md: Quality checks
392
+ ```
393
+
394
+ ## Best Practices
395
+
396
+ ### 1. Document Feature Rationale
397
+
398
+ ```python
399
+ # Bad: Create features without explanation
400
+ df["feature_1"] = df["col_a"] * df["col_b"]
401
+
402
+ # Good: Document why features were created
403
+ creator.add_interaction_feature(
404
+ sources=["age", "income"],
405
+ operation="multiply",
406
+ rationale="High-income older users have different behavior patterns"
407
+ )
408
+ ```
409
+
410
+ ### 2. Handle Missing Values Systematically
411
+
412
+ ```python
413
+ # Options for missing values:
414
+ # 1. Imputation (mean, median, mode)
415
+ creator.impute_missing(column="age", strategy="median")
416
+
417
+ # 2. Indicator features (flag missing as signal)
418
+ creator.add_missing_indicator(column="email")
419
+ # Creates: email_missing (0/1)
420
+
421
+ # 3. Forward/backward fill (for time series)
422
+ creator.fill_missing(column="sensor_reading", method="ffill")
423
+
424
+ # 4. Model-based imputation
425
+ creator.impute_with_model(column="income", model=RandomForestRegressor())
426
+ ```
427
+
428
+ ### 3. Avoid Data Leakage
429
+
430
+ ```python
431
+ # ❌ WRONG: Fit on all data (includes test set!)
432
+ scaler.fit(X)
433
+ X_train = scaler.transform(X_train)
434
+ X_test = scaler.transform(X_test)
435
+
436
+ # ✅ CORRECT: Fit only on train, transform both
437
+ scaler.fit(X_train)
438
+ X_train = scaler.transform(X_train)
439
+ X_test = scaler.transform(X_test)
440
+
441
+ # SpecWeave's transformer enforces this pattern
442
+ transformer.fit_transform(X_train) # Fits
443
+ transformer.transform(X_test) # Only transforms
444
+ ```
445
+
446
+ ### 4. Version Feature Engineering Pipeline
447
+
448
+ ```python
449
+ # Version features with increment
450
+ transformer.save(
451
+ path=".specweave/increments/0042.../features/transformer-v1.pkl",
452
+ metadata={
453
+ "version": "v1",
454
+ "features": selected_features,
455
+ "transformations": ["standard_scaler", "onehot"]
456
+ }
457
+ )
458
+
459
+ # Load specific version for reproducibility
460
+ transformer_v1 = FeatureTransformer.load(
461
+ ".specweave/increments/0042.../features/transformer-v1.pkl"
462
+ )
463
+ ```
464
+
465
+ ### 5. Test Feature Engineering on New Data
466
+
467
+ ```python
468
+ # Before deploying, test on held-out data
469
+ X_production_sample = load_production_data()
470
+
471
+ try:
472
+ X_transformed = transformer.transform(X_production_sample)
473
+ except Exception as e:
474
+ raise FeatureEngineeringError(f"Failed on production data: {e}")
475
+
476
+ # Check for unexpected values
477
+ validator = FeatureValidator(X_train, X_production_sample)
478
+ validation_report = validator.validate()
479
+
480
+ if validation_report["status"] == "CRITICAL":
481
+ raise FeatureEngineeringError("Feature engineering failed validation")
482
+ ```
483
+
484
+ ## Common Feature Engineering Patterns
485
+
486
+ ### Pattern 1: RFM (Recency, Frequency, Monetary)
487
+
488
+ ```python
489
+ # For e-commerce / customer analytics
490
+ creator.add_rfm_features(
491
+ user_id="user_id",
492
+ transaction_date="purchase_date",
493
+ transaction_amount="purchase_amount"
494
+ )
495
+ # Creates:
496
+ # - recency: days since last purchase
497
+ # - frequency: total purchases
498
+ # - monetary: total spend
499
+ ```
500
+
501
+ ### Pattern 2: Rolling Window Aggregations
502
+
503
+ ```python
504
+ # For time series
505
+ creator.add_rolling_features(
506
+ column="daily_sales",
507
+ windows=[7, 14, 30],
508
+ aggs=["mean", "std", "min", "max"]
509
+ )
510
+ # Creates: daily_sales_7day_mean, daily_sales_7day_std, etc.
511
+ ```
512
+
513
+ ### Pattern 3: Target Encoding (Categorical → Numerical)
514
+
515
+ ```python
516
+ # Encode categorical as target mean (careful: can leak!)
517
+ creator.add_target_encoding(
518
+ column="product_category",
519
+ target="purchase_amount",
520
+ cv_folds=5 # Cross-validation to prevent leakage
521
+ )
522
+ # Creates: product_category_target_encoded
523
+ ```
524
+
525
+ ### Pattern 4: Polynomial Features
526
+
527
+ ```python
528
+ # For non-linear relationships
529
+ creator.add_polynomial_features(
530
+ columns=["age", "income"],
531
+ degree=2,
532
+ interaction_only=True
533
+ )
534
+ # Creates: age^2, income^2, age*income
535
+ ```
536
+
537
+ ## Commands
538
+
539
+ ```bash
540
+ # Generate feature engineering pipeline for increment
541
+ /ml:engineer-features 0042
542
+
543
+ # Validate features before training
544
+ /ml:validate-features 0042
545
+
546
+ # Generate feature importance report
547
+ /ml:feature-importance 0042
548
+ ```
549
+
550
+ ## Integration with Other Skills
551
+
552
+ - **ml-pipeline-orchestrator**: Task 2 is "Feature Engineering" (uses this skill)
553
+ - **experiment-tracker**: Logs all feature engineering experiments
554
+ - **model-evaluator**: Uses feature importance from models
555
+ - **ml-deployment-helper**: Packages feature transformer for production
556
+
557
+ ## Summary
558
+
559
+ Feature engineering is 70% of ML success. This skill ensures:
560
+ - ✅ Systematic approach (quality → create → select → transform → validate)
561
+ - ✅ No data leakage (train/test separation enforced)
562
+ - ✅ Production-ready (versioned, validated, documented)
563
+ - ✅ Reproducible (all steps tracked in increment)
564
+ - ✅ Traceable (feature definitions in living docs)
565
+
566
+ Good features make mediocre models great. Great features make mediocre models excellent.