agileflow 3.4.3 → 4.0.0-alpha.1

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 (754) hide show
  1. package/CHANGELOG.md +235 -499
  2. package/README.md +22 -114
  3. package/bin/agileflow.js +15 -0
  4. package/bin/hooks/pre-bash.js +35 -0
  5. package/bin/hooks/pre-compact.js +34 -0
  6. package/bin/hooks/pre-edit.js +32 -0
  7. package/bin/hooks/pre-write.js +32 -0
  8. package/bin/hooks/session-start.js +42 -0
  9. package/bin/hooks/stop.js +34 -0
  10. package/content/plugins/ads/plugin.yaml +14 -0
  11. package/content/plugins/audit/plugin.yaml +14 -0
  12. package/content/plugins/core/hooks/session-welcome.js +19 -0
  13. package/content/plugins/core/plugin.yaml +34 -0
  14. package/content/plugins/core/skills/agileflow-adr/SKILL.md +179 -0
  15. package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +144 -0
  16. package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +179 -0
  17. package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +132 -0
  18. package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +200 -0
  19. package/content/plugins/council/plugin.yaml +14 -0
  20. package/content/plugins/seo/plugin.yaml +14 -0
  21. package/package.json +29 -49
  22. package/src/cli/commands/doctor.js +159 -0
  23. package/src/cli/commands/hook.js +80 -0
  24. package/src/cli/commands/setup.js +254 -0
  25. package/src/cli/commands/status.js +47 -0
  26. package/src/cli/commands/update.js +82 -0
  27. package/src/cli/index.js +73 -0
  28. package/src/cli/wizard/ide-picker.js +57 -0
  29. package/src/cli/wizard/personalization.js +64 -0
  30. package/src/cli/wizard/plugin-picker.js +106 -0
  31. package/src/lib/hash.js +41 -0
  32. package/src/runtime/config/defaults.js +45 -0
  33. package/src/runtime/config/loader.js +118 -0
  34. package/src/runtime/config/schema.json +76 -0
  35. package/src/runtime/config/writer.js +54 -0
  36. package/src/runtime/hooks/aggregator.js +133 -0
  37. package/src/runtime/hooks/chain.js +93 -0
  38. package/src/runtime/hooks/logger.js +68 -0
  39. package/src/runtime/hooks/manifest-loader.js +228 -0
  40. package/src/runtime/hooks/orchestrator.js +322 -0
  41. package/src/runtime/ide/capabilities.js +111 -0
  42. package/src/runtime/ide/claude-code-settings.js +234 -0
  43. package/src/runtime/ide/claude-code-skills.js +202 -0
  44. package/src/runtime/installer/file-index.js +112 -0
  45. package/src/runtime/installer/install.js +306 -0
  46. package/src/runtime/installer/stash.js +61 -0
  47. package/src/runtime/installer/sync-engine.js +205 -0
  48. package/src/runtime/plugins/registry.js +132 -0
  49. package/src/runtime/plugins/resolver.js +138 -0
  50. package/src/runtime/plugins/validator.js +196 -0
  51. package/src/runtime/skills/validator.js +335 -0
  52. package/lib/README.md +0 -178
  53. package/lib/api-routes.js +0 -625
  54. package/lib/api-server.js +0 -278
  55. package/lib/cache-provider.js +0 -155
  56. package/lib/codebase-indexer.js +0 -819
  57. package/lib/colors.generated.js +0 -117
  58. package/lib/colors.js +0 -341
  59. package/lib/consent.js +0 -232
  60. package/lib/content-sanitizer.js +0 -464
  61. package/lib/correlation.js +0 -277
  62. package/lib/drivers/claude-driver.ts +0 -312
  63. package/lib/drivers/codex-driver.ts +0 -464
  64. package/lib/drivers/driver-manager.ts +0 -159
  65. package/lib/drivers/gemini-driver.ts +0 -498
  66. package/lib/drivers/index.ts +0 -17
  67. package/lib/error-codes.js +0 -590
  68. package/lib/errors.js +0 -670
  69. package/lib/feature-flags.js +0 -171
  70. package/lib/feedback.js +0 -595
  71. package/lib/file-cache.js +0 -541
  72. package/lib/flag-detection.js +0 -344
  73. package/lib/format-error.js +0 -156
  74. package/lib/gate-runner.js +0 -282
  75. package/lib/generator-factory.js +0 -333
  76. package/lib/git-operations.js +0 -266
  77. package/lib/lazy-require.js +0 -59
  78. package/lib/lock-file.js +0 -144
  79. package/lib/logger.js +0 -106
  80. package/lib/merge-operations.js +0 -1006
  81. package/lib/path-resolver.js +0 -544
  82. package/lib/path-utils.js +0 -49
  83. package/lib/paths.js +0 -291
  84. package/lib/placeholder-registry.js +0 -822
  85. package/lib/process-executor.js +0 -214
  86. package/lib/progress.js +0 -334
  87. package/lib/protocol/driver.ts +0 -354
  88. package/lib/protocol/index.ts +0 -12
  89. package/lib/protocol/ir.ts +0 -271
  90. package/lib/registry-cache.js +0 -80
  91. package/lib/registry-di.js +0 -358
  92. package/lib/result-schema.js +0 -363
  93. package/lib/result.js +0 -210
  94. package/lib/session-display.js +0 -331
  95. package/lib/session-operations.js +0 -611
  96. package/lib/session-registry.js +0 -484
  97. package/lib/session-state-machine.js +0 -465
  98. package/lib/session-switching.js +0 -191
  99. package/lib/skill-loader.js +0 -213
  100. package/lib/smart-json-file.js +0 -682
  101. package/lib/state-machine.js +0 -286
  102. package/lib/table-formatter.js +0 -519
  103. package/lib/template-loader.js +0 -143
  104. package/lib/transient-status.js +0 -374
  105. package/lib/ui-manager.js +0 -612
  106. package/lib/validate-args.js +0 -213
  107. package/lib/validate-commands.js +0 -308
  108. package/lib/validate-names.js +0 -143
  109. package/lib/validate-paths.js +0 -434
  110. package/lib/validate.js +0 -134
  111. package/lib/worktree-operations.js +0 -201
  112. package/lib/yaml-utils.js +0 -164
  113. package/scripts/README.md +0 -267
  114. package/scripts/af +0 -34
  115. package/scripts/agent-loop.js +0 -879
  116. package/scripts/agileflow-configure.js +0 -368
  117. package/scripts/agileflow-statusline.sh +0 -857
  118. package/scripts/agileflow-welcome.js +0 -2246
  119. package/scripts/api-server-runner.js +0 -177
  120. package/scripts/archive-completed-stories.sh +0 -308
  121. package/scripts/auto-self-improve.js +0 -326
  122. package/scripts/automation-run-due.js +0 -128
  123. package/scripts/babysit-clear-restore.js +0 -154
  124. package/scripts/babysit-context-restore.js +0 -89
  125. package/scripts/backfill-ideation-status.js +0 -128
  126. package/scripts/batch-pmap-loop.js +0 -551
  127. package/scripts/check-sessions.js +0 -116
  128. package/scripts/check-update.js +0 -282
  129. package/scripts/ci-summary.js +0 -294
  130. package/scripts/claude-smart.sh +0 -85
  131. package/scripts/claude-tmux.sh +0 -737
  132. package/scripts/claude-watchdog.sh +0 -225
  133. package/scripts/clear-active-command.js +0 -48
  134. package/scripts/compress-status.sh +0 -116
  135. package/scripts/context-loader.js +0 -310
  136. package/scripts/damage-control/bash-tool-damage-control.js +0 -22
  137. package/scripts/damage-control/edit-tool-damage-control.js +0 -19
  138. package/scripts/damage-control/patterns.yaml +0 -227
  139. package/scripts/damage-control/write-tool-damage-control.js +0 -19
  140. package/scripts/damage-control-bash.js +0 -51
  141. package/scripts/damage-control-edit.js +0 -48
  142. package/scripts/damage-control-multi-agent.js +0 -231
  143. package/scripts/damage-control-write.js +0 -48
  144. package/scripts/dependency-check.js +0 -311
  145. package/scripts/document-repl.js +0 -793
  146. package/scripts/expertise-metrics.sh +0 -264
  147. package/scripts/generate-all.sh +0 -77
  148. package/scripts/generate-colors.js +0 -314
  149. package/scripts/generators/agent-registry.js +0 -183
  150. package/scripts/generators/command-registry.js +0 -166
  151. package/scripts/generators/index.js +0 -85
  152. package/scripts/generators/inject-babysit.js +0 -191
  153. package/scripts/generators/inject-help.js +0 -125
  154. package/scripts/generators/inject-readme.js +0 -166
  155. package/scripts/generators/skill-registry.js +0 -188
  156. package/scripts/get-env.js +0 -225
  157. package/scripts/init.sh +0 -76
  158. package/scripts/lib/README-portable-tasks.md +0 -424
  159. package/scripts/lib/ac-test-matcher.js +0 -452
  160. package/scripts/lib/audit-cleanup.js +0 -250
  161. package/scripts/lib/audit-registry.js +0 -340
  162. package/scripts/lib/automation-registry.js +0 -544
  163. package/scripts/lib/automation-runner.js +0 -476
  164. package/scripts/lib/browser-qa-evidence.js +0 -409
  165. package/scripts/lib/browser-qa-status.js +0 -192
  166. package/scripts/lib/bus-utils.js +0 -473
  167. package/scripts/lib/colors.generated.sh +0 -82
  168. package/scripts/lib/colors.sh +0 -46
  169. package/scripts/lib/command-prereqs.js +0 -280
  170. package/scripts/lib/concurrency-limiter.js +0 -511
  171. package/scripts/lib/configure-detect.js +0 -596
  172. package/scripts/lib/configure-features.js +0 -1927
  173. package/scripts/lib/configure-repair.js +0 -327
  174. package/scripts/lib/configure-utils.js +0 -114
  175. package/scripts/lib/context-formatter.js +0 -1158
  176. package/scripts/lib/context-loader.js +0 -840
  177. package/scripts/lib/counter.js +0 -103
  178. package/scripts/lib/damage-control-utils.js +0 -619
  179. package/scripts/lib/feature-catalog.js +0 -332
  180. package/scripts/lib/file-lock.js +0 -392
  181. package/scripts/lib/file-tracking.js +0 -735
  182. package/scripts/lib/frontmatter-parser.js +0 -133
  183. package/scripts/lib/gate-enforcer.js +0 -295
  184. package/scripts/lib/hook-metrics.js +0 -324
  185. package/scripts/lib/ideation-index.js +0 -1205
  186. package/scripts/lib/json-utils.sh +0 -162
  187. package/scripts/lib/lifecycle-detector.js +0 -125
  188. package/scripts/lib/model-profiles.js +0 -118
  189. package/scripts/lib/portable-tasks-cli.js +0 -274
  190. package/scripts/lib/portable-tasks.js +0 -479
  191. package/scripts/lib/process-cleanup.js +0 -527
  192. package/scripts/lib/quality-gates.js +0 -788
  193. package/scripts/lib/scale-detector.js +0 -396
  194. package/scripts/lib/sessionRegistry.js +0 -678
  195. package/scripts/lib/signal-detectors.js +0 -867
  196. package/scripts/lib/skill-catalog.js +0 -557
  197. package/scripts/lib/skill-recommender.js +0 -311
  198. package/scripts/lib/state-migrator.js +0 -353
  199. package/scripts/lib/status-task-bridge.js +0 -522
  200. package/scripts/lib/status-writer.js +0 -255
  201. package/scripts/lib/story-claiming.js +0 -704
  202. package/scripts/lib/story-state-machine.js +0 -437
  203. package/scripts/lib/sync-ideation-status.js +0 -291
  204. package/scripts/lib/task-registry-cache.js +0 -490
  205. package/scripts/lib/task-registry.js +0 -1191
  206. package/scripts/lib/task-sync.js +0 -230
  207. package/scripts/lib/tdd-phase-manager.js +0 -455
  208. package/scripts/lib/team-events.js +0 -510
  209. package/scripts/lib/tmux-audit-monitor.js +0 -612
  210. package/scripts/lib/tmux-group-colors.js +0 -113
  211. package/scripts/lib/tool-registry.yaml +0 -241
  212. package/scripts/lib/tool-shed.js +0 -441
  213. package/scripts/lib/validation-registry.js +0 -177
  214. package/scripts/messaging-bridge.js +0 -561
  215. package/scripts/migrate-ideation-index.js +0 -553
  216. package/scripts/native-team-observer.js +0 -219
  217. package/scripts/obtain-context.js +0 -272
  218. package/scripts/pre-push-check.sh +0 -46
  219. package/scripts/precompact-context.sh +0 -306
  220. package/scripts/query-codebase.js +0 -543
  221. package/scripts/ralph-loop.js +0 -1278
  222. package/scripts/resume-session.sh +0 -121
  223. package/scripts/screenshot-verifier.js +0 -215
  224. package/scripts/session-boundary.js +0 -138
  225. package/scripts/session-coordinator.sh +0 -232
  226. package/scripts/session-manager.js +0 -546
  227. package/scripts/smart-detect.js +0 -449
  228. package/scripts/spawn-audit-sessions.js +0 -877
  229. package/scripts/spawn-parallel.js +0 -751
  230. package/scripts/strip-ai-attribution.js +0 -63
  231. package/scripts/task-completed-gate.js +0 -237
  232. package/scripts/team-manager.js +0 -596
  233. package/scripts/team-status-display.js +0 -200
  234. package/scripts/teammate-idle-gate.js +0 -237
  235. package/scripts/test-session-boundary.js +0 -80
  236. package/scripts/tmux-close-windows.sh +0 -180
  237. package/scripts/tmux-restore-window.sh +0 -67
  238. package/scripts/tmux-save-closed-window.sh +0 -35
  239. package/scripts/tui/App.js +0 -151
  240. package/scripts/tui/Dashboard.js +0 -277
  241. package/scripts/tui/blessed/data/watcher.js +0 -180
  242. package/scripts/tui/blessed/index.js +0 -244
  243. package/scripts/tui/blessed/panels/output.js +0 -101
  244. package/scripts/tui/blessed/panels/sessions.js +0 -150
  245. package/scripts/tui/blessed/panels/trace.js +0 -97
  246. package/scripts/tui/blessed/ui/help.js +0 -77
  247. package/scripts/tui/blessed/ui/screen.js +0 -52
  248. package/scripts/tui/blessed/ui/statusbar.js +0 -47
  249. package/scripts/tui/blessed/ui/tabbar.js +0 -99
  250. package/scripts/tui/index.js +0 -70
  251. package/scripts/tui/lib/crashRecovery.js +0 -304
  252. package/scripts/tui/lib/eventStream.js +0 -309
  253. package/scripts/tui/lib/keyboard.js +0 -261
  254. package/scripts/tui/lib/loopControl.js +0 -371
  255. package/scripts/tui/panels/OutputPanel.js +0 -240
  256. package/scripts/tui/panels/SessionPanel.js +0 -170
  257. package/scripts/tui/panels/TracePanel.js +0 -298
  258. package/scripts/tui/simple-tui.js +0 -510
  259. package/scripts/validate-expertise.sh +0 -263
  260. package/scripts/validate-tokens.sh +0 -73
  261. package/scripts/validators/README.md +0 -143
  262. package/scripts/validators/component-validator.js +0 -239
  263. package/scripts/validators/json-schema-validator.js +0 -186
  264. package/scripts/validators/markdown-validator.js +0 -152
  265. package/scripts/validators/migration-validator.js +0 -129
  266. package/scripts/validators/security-validator.js +0 -380
  267. package/scripts/validators/story-format-validator.js +0 -197
  268. package/scripts/validators/test-result-validator.js +0 -114
  269. package/scripts/validators/workflow-validator.js +0 -247
  270. package/scripts/welcome-deferred.js +0 -437
  271. package/scripts/worktree-create.sh +0 -111
  272. package/src/core/agents/a11y-analyzer-aria.md +0 -155
  273. package/src/core/agents/a11y-analyzer-forms.md +0 -162
  274. package/src/core/agents/a11y-analyzer-keyboard.md +0 -175
  275. package/src/core/agents/a11y-analyzer-semantic.md +0 -153
  276. package/src/core/agents/a11y-analyzer-visual.md +0 -158
  277. package/src/core/agents/a11y-consensus.md +0 -248
  278. package/src/core/agents/accessibility.md +0 -515
  279. package/src/core/agents/adr-writer.md +0 -463
  280. package/src/core/agents/ads-audit-budget.md +0 -181
  281. package/src/core/agents/ads-audit-compliance.md +0 -169
  282. package/src/core/agents/ads-audit-creative.md +0 -164
  283. package/src/core/agents/ads-audit-google.md +0 -226
  284. package/src/core/agents/ads-audit-meta.md +0 -183
  285. package/src/core/agents/ads-audit-tracking.md +0 -197
  286. package/src/core/agents/ads-consensus.md +0 -396
  287. package/src/core/agents/ads-generate.md +0 -145
  288. package/src/core/agents/ads-performance-tracker.md +0 -197
  289. package/src/core/agents/analytics.md +0 -617
  290. package/src/core/agents/api-quality-analyzer-conventions.md +0 -148
  291. package/src/core/agents/api-quality-analyzer-docs.md +0 -176
  292. package/src/core/agents/api-quality-analyzer-errors.md +0 -183
  293. package/src/core/agents/api-quality-analyzer-pagination.md +0 -171
  294. package/src/core/agents/api-quality-analyzer-versioning.md +0 -143
  295. package/src/core/agents/api-quality-consensus.md +0 -214
  296. package/src/core/agents/api-validator.md +0 -183
  297. package/src/core/agents/api.md +0 -665
  298. package/src/core/agents/arch-analyzer-circular.md +0 -148
  299. package/src/core/agents/arch-analyzer-complexity.md +0 -171
  300. package/src/core/agents/arch-analyzer-coupling.md +0 -146
  301. package/src/core/agents/arch-analyzer-layering.md +0 -151
  302. package/src/core/agents/arch-analyzer-patterns.md +0 -162
  303. package/src/core/agents/arch-consensus.md +0 -227
  304. package/src/core/agents/brainstorm-analyzer-features.md +0 -169
  305. package/src/core/agents/brainstorm-analyzer-growth.md +0 -161
  306. package/src/core/agents/brainstorm-analyzer-integration.md +0 -172
  307. package/src/core/agents/brainstorm-analyzer-market.md +0 -147
  308. package/src/core/agents/brainstorm-analyzer-ux.md +0 -167
  309. package/src/core/agents/brainstorm-consensus.md +0 -237
  310. package/src/core/agents/browser-qa.md +0 -328
  311. package/src/core/agents/ci.md +0 -511
  312. package/src/core/agents/code-reviewer.md +0 -288
  313. package/src/core/agents/codebase-query.md +0 -266
  314. package/src/core/agents/completeness-analyzer-api.md +0 -190
  315. package/src/core/agents/completeness-analyzer-conditional.md +0 -201
  316. package/src/core/agents/completeness-analyzer-handlers.md +0 -159
  317. package/src/core/agents/completeness-analyzer-imports.md +0 -159
  318. package/src/core/agents/completeness-analyzer-routes.md +0 -182
  319. package/src/core/agents/completeness-analyzer-state.md +0 -188
  320. package/src/core/agents/completeness-analyzer-stubs.md +0 -198
  321. package/src/core/agents/completeness-consensus.md +0 -286
  322. package/src/core/agents/compliance.md +0 -509
  323. package/src/core/agents/council-advocate.md +0 -206
  324. package/src/core/agents/council-analyst.md +0 -252
  325. package/src/core/agents/council-optimist.md +0 -170
  326. package/src/core/agents/database.md +0 -601
  327. package/src/core/agents/datamigration.md +0 -699
  328. package/src/core/agents/design.md +0 -525
  329. package/src/core/agents/devops.md +0 -720
  330. package/src/core/agents/documentation.md +0 -504
  331. package/src/core/agents/epic-planner.md +0 -480
  332. package/src/core/agents/error-analyzer.md +0 -201
  333. package/src/core/agents/integrations.md +0 -603
  334. package/src/core/agents/legal-analyzer-a11y.md +0 -110
  335. package/src/core/agents/legal-analyzer-ai.md +0 -117
  336. package/src/core/agents/legal-analyzer-consumer.md +0 -108
  337. package/src/core/agents/legal-analyzer-content.md +0 -113
  338. package/src/core/agents/legal-analyzer-international.md +0 -115
  339. package/src/core/agents/legal-analyzer-licensing.md +0 -115
  340. package/src/core/agents/legal-analyzer-privacy.md +0 -108
  341. package/src/core/agents/legal-analyzer-security.md +0 -112
  342. package/src/core/agents/legal-analyzer-terms.md +0 -111
  343. package/src/core/agents/legal-consensus.md +0 -242
  344. package/src/core/agents/logic-analyzer-edge.md +0 -170
  345. package/src/core/agents/logic-analyzer-flow.md +0 -253
  346. package/src/core/agents/logic-analyzer-invariant.md +0 -206
  347. package/src/core/agents/logic-analyzer-race.md +0 -266
  348. package/src/core/agents/logic-analyzer-type.md +0 -217
  349. package/src/core/agents/logic-consensus.md +0 -253
  350. package/src/core/agents/mentor.md +0 -654
  351. package/src/core/agents/mobile.md +0 -501
  352. package/src/core/agents/monitoring.md +0 -537
  353. package/src/core/agents/multi-expert.md +0 -311
  354. package/src/core/agents/orchestrator.md +0 -749
  355. package/src/core/agents/perf-analyzer-assets.md +0 -174
  356. package/src/core/agents/perf-analyzer-bundle.md +0 -165
  357. package/src/core/agents/perf-analyzer-caching.md +0 -160
  358. package/src/core/agents/perf-analyzer-compute.md +0 -165
  359. package/src/core/agents/perf-analyzer-memory.md +0 -182
  360. package/src/core/agents/perf-analyzer-network.md +0 -157
  361. package/src/core/agents/perf-analyzer-queries.md +0 -155
  362. package/src/core/agents/perf-analyzer-rendering.md +0 -156
  363. package/src/core/agents/perf-consensus.md +0 -280
  364. package/src/core/agents/performance.md +0 -492
  365. package/src/core/agents/product.md +0 -535
  366. package/src/core/agents/qa.md +0 -765
  367. package/src/core/agents/readme-updater.md +0 -579
  368. package/src/core/agents/refactor.md +0 -558
  369. package/src/core/agents/research.md +0 -453
  370. package/src/core/agents/rlm-subcore.md +0 -207
  371. package/src/core/agents/schema-validator.md +0 -454
  372. package/src/core/agents/security-analyzer-api.md +0 -199
  373. package/src/core/agents/security-analyzer-auth.md +0 -160
  374. package/src/core/agents/security-analyzer-authz.md +0 -168
  375. package/src/core/agents/security-analyzer-deps.md +0 -147
  376. package/src/core/agents/security-analyzer-infra.md +0 -176
  377. package/src/core/agents/security-analyzer-injection.md +0 -148
  378. package/src/core/agents/security-analyzer-input.md +0 -191
  379. package/src/core/agents/security-analyzer-secrets.md +0 -175
  380. package/src/core/agents/security-consensus.md +0 -276
  381. package/src/core/agents/security.md +0 -486
  382. package/src/core/agents/seo-analyzer-content.md +0 -167
  383. package/src/core/agents/seo-analyzer-images.md +0 -187
  384. package/src/core/agents/seo-analyzer-performance.md +0 -206
  385. package/src/core/agents/seo-analyzer-schema.md +0 -176
  386. package/src/core/agents/seo-analyzer-sitemap.md +0 -172
  387. package/src/core/agents/seo-analyzer-technical.md +0 -144
  388. package/src/core/agents/seo-consensus.md +0 -289
  389. package/src/core/agents/team-coordinator.md +0 -333
  390. package/src/core/agents/team-lead.md +0 -171
  391. package/src/core/agents/test-analyzer-assertions.md +0 -181
  392. package/src/core/agents/test-analyzer-coverage.md +0 -183
  393. package/src/core/agents/test-analyzer-fragility.md +0 -185
  394. package/src/core/agents/test-analyzer-integration.md +0 -155
  395. package/src/core/agents/test-analyzer-maintenance.md +0 -173
  396. package/src/core/agents/test-analyzer-mocking.md +0 -178
  397. package/src/core/agents/test-analyzer-patterns.md +0 -189
  398. package/src/core/agents/test-analyzer-structure.md +0 -177
  399. package/src/core/agents/test-consensus.md +0 -294
  400. package/src/core/agents/testing.md +0 -527
  401. package/src/core/agents/ui-validator.md +0 -331
  402. package/src/core/agents/ui.md +0 -1227
  403. package/src/core/commands/adr/list.md +0 -191
  404. package/src/core/commands/adr/update.md +0 -258
  405. package/src/core/commands/adr/view.md +0 -274
  406. package/src/core/commands/adr.md +0 -394
  407. package/src/core/commands/ads/audit.md +0 -453
  408. package/src/core/commands/ads/budget.md +0 -97
  409. package/src/core/commands/ads/competitor.md +0 -112
  410. package/src/core/commands/ads/creative.md +0 -85
  411. package/src/core/commands/ads/generate.md +0 -238
  412. package/src/core/commands/ads/google.md +0 -112
  413. package/src/core/commands/ads/health.md +0 -327
  414. package/src/core/commands/ads/landing.md +0 -119
  415. package/src/core/commands/ads/linkedin.md +0 -112
  416. package/src/core/commands/ads/meta.md +0 -91
  417. package/src/core/commands/ads/microsoft.md +0 -115
  418. package/src/core/commands/ads/plan.md +0 -321
  419. package/src/core/commands/ads/test-plan.md +0 -317
  420. package/src/core/commands/ads/tiktok.md +0 -129
  421. package/src/core/commands/ads/track.md +0 -288
  422. package/src/core/commands/ads/youtube.md +0 -124
  423. package/src/core/commands/ads.md +0 -140
  424. package/src/core/commands/agent.md +0 -256
  425. package/src/core/commands/api.md +0 -267
  426. package/src/core/commands/assign.md +0 -369
  427. package/src/core/commands/audit.md +0 -531
  428. package/src/core/commands/auto.md +0 -556
  429. package/src/core/commands/automate.md +0 -415
  430. package/src/core/commands/babysit.md +0 -643
  431. package/src/core/commands/baseline.md +0 -743
  432. package/src/core/commands/batch.md +0 -551
  433. package/src/core/commands/blockers.md +0 -602
  434. package/src/core/commands/board.md +0 -509
  435. package/src/core/commands/browser-qa.md +0 -240
  436. package/src/core/commands/changelog.md +0 -582
  437. package/src/core/commands/choose.md +0 -430
  438. package/src/core/commands/ci.md +0 -330
  439. package/src/core/commands/code/accessibility.md +0 -363
  440. package/src/core/commands/code/api.md +0 -313
  441. package/src/core/commands/code/architecture.md +0 -313
  442. package/src/core/commands/code/completeness.md +0 -519
  443. package/src/core/commands/code/legal.md +0 -509
  444. package/src/core/commands/code/logic.md +0 -432
  445. package/src/core/commands/code/performance.md +0 -506
  446. package/src/core/commands/code/security.md +0 -509
  447. package/src/core/commands/code/test.md +0 -505
  448. package/src/core/commands/compress.md +0 -408
  449. package/src/core/commands/configure.md +0 -1159
  450. package/src/core/commands/context/export.md +0 -296
  451. package/src/core/commands/context/full.md +0 -353
  452. package/src/core/commands/context/note.md +0 -380
  453. package/src/core/commands/council.md +0 -592
  454. package/src/core/commands/debt.md +0 -491
  455. package/src/core/commands/deploy.md +0 -864
  456. package/src/core/commands/deps.md +0 -728
  457. package/src/core/commands/diagnose.md +0 -404
  458. package/src/core/commands/docs.md +0 -469
  459. package/src/core/commands/epic/edit.md +0 -213
  460. package/src/core/commands/epic/list.md +0 -190
  461. package/src/core/commands/epic/view.md +0 -267
  462. package/src/core/commands/epic.md +0 -477
  463. package/src/core/commands/export.md +0 -238
  464. package/src/core/commands/feedback.md +0 -603
  465. package/src/core/commands/handoff.md +0 -386
  466. package/src/core/commands/help.md +0 -194
  467. package/src/core/commands/ideate/brief.md +0 -363
  468. package/src/core/commands/ideate/discover.md +0 -399
  469. package/src/core/commands/ideate/features.md +0 -497
  470. package/src/core/commands/ideate/history.md +0 -403
  471. package/src/core/commands/ideate/new.md +0 -900
  472. package/src/core/commands/impact.md +0 -407
  473. package/src/core/commands/install.md +0 -529
  474. package/src/core/commands/learn/explain.md +0 -118
  475. package/src/core/commands/learn/glossary.md +0 -135
  476. package/src/core/commands/learn/patterns.md +0 -138
  477. package/src/core/commands/learn/tour.md +0 -126
  478. package/src/core/commands/maintain.md +0 -558
  479. package/src/core/commands/metrics.md +0 -844
  480. package/src/core/commands/migrate/codemods.md +0 -151
  481. package/src/core/commands/migrate/plan.md +0 -131
  482. package/src/core/commands/migrate/scan.md +0 -114
  483. package/src/core/commands/migrate/validate.md +0 -119
  484. package/src/core/commands/multi-expert.md +0 -447
  485. package/src/core/commands/packages.md +0 -535
  486. package/src/core/commands/pr.md +0 -337
  487. package/src/core/commands/readme-sync.md +0 -329
  488. package/src/core/commands/research/analyze.md +0 -798
  489. package/src/core/commands/research/ask.md +0 -864
  490. package/src/core/commands/research/import.md +0 -1025
  491. package/src/core/commands/research/list.md +0 -273
  492. package/src/core/commands/research/synthesize.md +0 -928
  493. package/src/core/commands/research/view.md +0 -323
  494. package/src/core/commands/retro.md +0 -795
  495. package/src/core/commands/review.md +0 -694
  496. package/src/core/commands/rlm.md +0 -446
  497. package/src/core/commands/roadmap/analyze.md +0 -400
  498. package/src/core/commands/rpi.md +0 -633
  499. package/src/core/commands/seo/audit.md +0 -444
  500. package/src/core/commands/seo/competitor.md +0 -174
  501. package/src/core/commands/seo/content.md +0 -107
  502. package/src/core/commands/seo/geo.md +0 -229
  503. package/src/core/commands/seo/hreflang.md +0 -140
  504. package/src/core/commands/seo/images.md +0 -96
  505. package/src/core/commands/seo/page.md +0 -198
  506. package/src/core/commands/seo/plan.md +0 -163
  507. package/src/core/commands/seo/programmatic.md +0 -131
  508. package/src/core/commands/seo/references/cwv-thresholds.md +0 -64
  509. package/src/core/commands/seo/references/eeat-framework.md +0 -110
  510. package/src/core/commands/seo/references/quality-gates.md +0 -91
  511. package/src/core/commands/seo/references/schema-types.md +0 -102
  512. package/src/core/commands/seo/schema.md +0 -183
  513. package/src/core/commands/seo/sitemap.md +0 -97
  514. package/src/core/commands/seo/technical.md +0 -100
  515. package/src/core/commands/seo.md +0 -107
  516. package/src/core/commands/session/cleanup.md +0 -452
  517. package/src/core/commands/session/end.md +0 -865
  518. package/src/core/commands/session/history.md +0 -293
  519. package/src/core/commands/session/init.md +0 -210
  520. package/src/core/commands/session/new.md +0 -827
  521. package/src/core/commands/session/resume.md +0 -291
  522. package/src/core/commands/session/spawn.md +0 -205
  523. package/src/core/commands/session/status.md +0 -274
  524. package/src/core/commands/skill/list.md +0 -139
  525. package/src/core/commands/skill/recommend.md +0 -216
  526. package/src/core/commands/sprint.md +0 -714
  527. package/src/core/commands/status/undo.md +0 -191
  528. package/src/core/commands/status.md +0 -423
  529. package/src/core/commands/story/edit.md +0 -204
  530. package/src/core/commands/story/list.md +0 -199
  531. package/src/core/commands/story/view.md +0 -312
  532. package/src/core/commands/story-validate.md +0 -491
  533. package/src/core/commands/story.md +0 -465
  534. package/src/core/commands/tdd-next.md +0 -238
  535. package/src/core/commands/tdd.md +0 -211
  536. package/src/core/commands/team/guide.md +0 -688
  537. package/src/core/commands/team/list.md +0 -59
  538. package/src/core/commands/team/start.md +0 -130
  539. package/src/core/commands/team/status.md +0 -66
  540. package/src/core/commands/team/stop.md +0 -78
  541. package/src/core/commands/template.md +0 -644
  542. package/src/core/commands/tests.md +0 -731
  543. package/src/core/commands/update.md +0 -591
  544. package/src/core/commands/validate-expertise.md +0 -305
  545. package/src/core/commands/velocity.md +0 -630
  546. package/src/core/commands/verify.md +0 -534
  547. package/src/core/commands/whats-new.md +0 -201
  548. package/src/core/commands/workflow.md +0 -449
  549. package/src/core/council/sessions/.gitkeep +0 -0
  550. package/src/core/council/shared_reasoning.template.md +0 -106
  551. package/src/core/experts/README.md +0 -236
  552. package/src/core/experts/_core-expertise.yaml +0 -105
  553. package/src/core/experts/accessibility/expertise.yaml +0 -115
  554. package/src/core/experts/accessibility/question.md +0 -41
  555. package/src/core/experts/accessibility/self-improve.md +0 -45
  556. package/src/core/experts/accessibility/workflow.md +0 -59
  557. package/src/core/experts/adr-writer/expertise.yaml +0 -138
  558. package/src/core/experts/adr-writer/question.md +0 -56
  559. package/src/core/experts/adr-writer/self-improve.md +0 -106
  560. package/src/core/experts/adr-writer/workflow.md +0 -184
  561. package/src/core/experts/analytics/expertise.yaml +0 -119
  562. package/src/core/experts/analytics/question.md +0 -74
  563. package/src/core/experts/analytics/self-improve.md +0 -163
  564. package/src/core/experts/analytics/workflow.md +0 -272
  565. package/src/core/experts/api/expertise.yaml +0 -124
  566. package/src/core/experts/api/question.md +0 -74
  567. package/src/core/experts/api/self-improve.md +0 -122
  568. package/src/core/experts/api/workflow.md +0 -248
  569. package/src/core/experts/ci/expertise.yaml +0 -106
  570. package/src/core/experts/ci/question.md +0 -69
  571. package/src/core/experts/ci/self-improve.md +0 -100
  572. package/src/core/experts/ci/workflow.md +0 -145
  573. package/src/core/experts/codebase-query/expertise.yaml +0 -121
  574. package/src/core/experts/codebase-query/question.md +0 -73
  575. package/src/core/experts/codebase-query/self-improve.md +0 -105
  576. package/src/core/experts/compliance/expertise.yaml +0 -101
  577. package/src/core/experts/compliance/question.md +0 -56
  578. package/src/core/experts/compliance/self-improve.md +0 -106
  579. package/src/core/experts/compliance/workflow.md +0 -184
  580. package/src/core/experts/database/expertise.yaml +0 -109
  581. package/src/core/experts/database/question.md +0 -74
  582. package/src/core/experts/database/self-improve.md +0 -121
  583. package/src/core/experts/database/workflow.md +0 -234
  584. package/src/core/experts/datamigration/expertise.yaml +0 -141
  585. package/src/core/experts/datamigration/question.md +0 -56
  586. package/src/core/experts/datamigration/self-improve.md +0 -106
  587. package/src/core/experts/datamigration/workflow.md +0 -184
  588. package/src/core/experts/design/expertise.yaml +0 -116
  589. package/src/core/experts/design/question.md +0 -56
  590. package/src/core/experts/design/self-improve.md +0 -106
  591. package/src/core/experts/design/workflow.md +0 -184
  592. package/src/core/experts/devops/expertise.yaml +0 -116
  593. package/src/core/experts/devops/question.md +0 -68
  594. package/src/core/experts/devops/self-improve.md +0 -102
  595. package/src/core/experts/devops/workflow.md +0 -142
  596. package/src/core/experts/documentation/expertise.yaml +0 -126
  597. package/src/core/experts/documentation/question.md +0 -41
  598. package/src/core/experts/documentation/self-improve.md +0 -45
  599. package/src/core/experts/documentation/workflow.md +0 -55
  600. package/src/core/experts/epic-planner/expertise.yaml +0 -144
  601. package/src/core/experts/epic-planner/question.md +0 -56
  602. package/src/core/experts/epic-planner/self-improve.md +0 -106
  603. package/src/core/experts/epic-planner/workflow.md +0 -184
  604. package/src/core/experts/integrations/expertise.yaml +0 -113
  605. package/src/core/experts/integrations/question.md +0 -74
  606. package/src/core/experts/integrations/self-improve.md +0 -151
  607. package/src/core/experts/integrations/workflow.md +0 -246
  608. package/src/core/experts/mentor/expertise.yaml +0 -125
  609. package/src/core/experts/mentor/question.md +0 -56
  610. package/src/core/experts/mentor/self-improve.md +0 -106
  611. package/src/core/experts/mentor/workflow.md +0 -184
  612. package/src/core/experts/mobile/expertise.yaml +0 -136
  613. package/src/core/experts/mobile/question.md +0 -72
  614. package/src/core/experts/mobile/self-improve.md +0 -140
  615. package/src/core/experts/mobile/workflow.md +0 -240
  616. package/src/core/experts/monitoring/expertise.yaml +0 -132
  617. package/src/core/experts/monitoring/question.md +0 -76
  618. package/src/core/experts/monitoring/self-improve.md +0 -150
  619. package/src/core/experts/monitoring/workflow.md +0 -264
  620. package/src/core/experts/performance/expertise.yaml +0 -68
  621. package/src/core/experts/performance/question.md +0 -41
  622. package/src/core/experts/performance/self-improve.md +0 -45
  623. package/src/core/experts/performance/workflow.md +0 -61
  624. package/src/core/experts/product/expertise.yaml +0 -143
  625. package/src/core/experts/product/question.md +0 -56
  626. package/src/core/experts/product/self-improve.md +0 -106
  627. package/src/core/experts/product/workflow.md +0 -184
  628. package/src/core/experts/qa/expertise.yaml +0 -110
  629. package/src/core/experts/qa/question.md +0 -56
  630. package/src/core/experts/qa/self-improve.md +0 -106
  631. package/src/core/experts/qa/workflow.md +0 -184
  632. package/src/core/experts/readme-updater/expertise.yaml +0 -141
  633. package/src/core/experts/readme-updater/question.md +0 -56
  634. package/src/core/experts/readme-updater/self-improve.md +0 -106
  635. package/src/core/experts/readme-updater/workflow.md +0 -184
  636. package/src/core/experts/refactor/expertise.yaml +0 -135
  637. package/src/core/experts/refactor/question.md +0 -41
  638. package/src/core/experts/refactor/self-improve.md +0 -45
  639. package/src/core/experts/refactor/workflow.md +0 -57
  640. package/src/core/experts/research/expertise.yaml +0 -143
  641. package/src/core/experts/research/question.md +0 -56
  642. package/src/core/experts/research/self-improve.md +0 -106
  643. package/src/core/experts/research/workflow.md +0 -184
  644. package/src/core/experts/security/expertise.yaml +0 -117
  645. package/src/core/experts/security/question.md +0 -77
  646. package/src/core/experts/security/self-improve.md +0 -102
  647. package/src/core/experts/security/workflow.md +0 -152
  648. package/src/core/experts/templates/expertise-template.yaml +0 -67
  649. package/src/core/experts/templates/question-template.md +0 -56
  650. package/src/core/experts/templates/self-improve-template.md +0 -106
  651. package/src/core/experts/templates/workflow-template.md +0 -184
  652. package/src/core/experts/testing/expertise.yaml +0 -112
  653. package/src/core/experts/testing/question.md +0 -68
  654. package/src/core/experts/testing/self-improve.md +0 -102
  655. package/src/core/experts/testing/workflow.md +0 -143
  656. package/src/core/experts/ui/expertise.yaml +0 -133
  657. package/src/core/experts/ui/question.md +0 -74
  658. package/src/core/experts/ui/self-improve.md +0 -122
  659. package/src/core/experts/ui/workflow.md +0 -262
  660. package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +0 -424
  661. package/src/core/knowledge/ads/ad-optimization-logic.md +0 -590
  662. package/src/core/knowledge/ads/ad-technical-specifications.md +0 -385
  663. package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +0 -506
  664. package/src/core/knowledge/ads/paid-advertising-research-2026.md +0 -445
  665. package/src/core/profiles/COMPARISON.md +0 -170
  666. package/src/core/profiles/README.md +0 -178
  667. package/src/core/profiles/claude-code.yaml +0 -111
  668. package/src/core/profiles/codex.yaml +0 -103
  669. package/src/core/profiles/cursor.yaml +0 -134
  670. package/src/core/profiles/examples.js +0 -250
  671. package/src/core/profiles/loader.js +0 -235
  672. package/src/core/profiles/windsurf.yaml +0 -159
  673. package/src/core/skills/_learnings/README.md +0 -91
  674. package/src/core/skills/_learnings/_template.yaml +0 -106
  675. package/src/core/skills/_learnings/code-review.yaml +0 -118
  676. package/src/core/skills/_learnings/commit.yaml +0 -69
  677. package/src/core/skills/_learnings/story-writer.yaml +0 -71
  678. package/src/core/teams/backend.json +0 -41
  679. package/src/core/teams/builder-validator.json +0 -51
  680. package/src/core/teams/code-review.json +0 -41
  681. package/src/core/teams/frontend.json +0 -41
  682. package/src/core/teams/fullstack.json +0 -41
  683. package/src/core/teams/logic-audit.json +0 -53
  684. package/src/core/teams/perf-audit.json +0 -71
  685. package/src/core/teams/qa.json +0 -41
  686. package/src/core/teams/security-audit.json +0 -71
  687. package/src/core/teams/solo.json +0 -35
  688. package/src/core/teams/test-audit.json +0 -71
  689. package/src/core/templates/CONTEXT.md.example +0 -49
  690. package/src/core/templates/README-template.md +0 -16
  691. package/src/core/templates/adr-template.md +0 -28
  692. package/src/core/templates/agent-coordination-pattern.md +0 -38
  693. package/src/core/templates/agent-profile-template.md +0 -51
  694. package/src/core/templates/agileflow-metadata.json +0 -150
  695. package/src/core/templates/browser-qa-spec.yaml +0 -94
  696. package/src/core/templates/ci-workflow.yml +0 -74
  697. package/src/core/templates/claude-settings.advanced.example.json +0 -75
  698. package/src/core/templates/claude-settings.example.json +0 -26
  699. package/src/core/templates/command-documentation.md +0 -187
  700. package/src/core/templates/command-prerequisites.yaml +0 -169
  701. package/src/core/templates/comms-note-template.md +0 -24
  702. package/src/core/templates/damage-control-patterns.yaml +0 -243
  703. package/src/core/templates/environment.json +0 -18
  704. package/src/core/templates/epic-template.md +0 -27
  705. package/src/core/templates/plan-template.md +0 -125
  706. package/src/core/templates/preserve-rules-common.md +0 -107
  707. package/src/core/templates/preserve-rules.json +0 -42
  708. package/src/core/templates/proactive-action-spec.md +0 -29
  709. package/src/core/templates/product-brief.md +0 -136
  710. package/src/core/templates/quality-gate-priorities.md +0 -34
  711. package/src/core/templates/research-template.md +0 -44
  712. package/src/core/templates/session-harness-protocol.md +0 -128
  713. package/src/core/templates/session-state.json +0 -56
  714. package/src/core/templates/story-lifecycle.md +0 -213
  715. package/src/core/templates/story-template.md +0 -92
  716. package/src/core/templates/tdd-test-template.js +0 -241
  717. package/src/core/templates/worktrees-guide.md +0 -231
  718. package/tools/agileflow-npx.js +0 -52
  719. package/tools/cli/agileflow-cli.js +0 -72
  720. package/tools/cli/commands/config.js +0 -285
  721. package/tools/cli/commands/doctor.js +0 -496
  722. package/tools/cli/commands/list.js +0 -385
  723. package/tools/cli/commands/session.js +0 -1176
  724. package/tools/cli/commands/setup.js +0 -255
  725. package/tools/cli/commands/status.js +0 -101
  726. package/tools/cli/commands/tui.js +0 -56
  727. package/tools/cli/commands/uninstall.js +0 -155
  728. package/tools/cli/commands/update.js +0 -299
  729. package/tools/cli/installers/core/installer.js +0 -892
  730. package/tools/cli/installers/ide/_base-ide.js +0 -518
  731. package/tools/cli/installers/ide/_interface.js +0 -238
  732. package/tools/cli/installers/ide/claude-code.js +0 -432
  733. package/tools/cli/installers/ide/codex.js +0 -426
  734. package/tools/cli/installers/ide/cursor.js +0 -217
  735. package/tools/cli/installers/ide/manager.js +0 -222
  736. package/tools/cli/installers/ide/windsurf.js +0 -282
  737. package/tools/cli/lib/command-context.js +0 -382
  738. package/tools/cli/lib/config-manager.js +0 -446
  739. package/tools/cli/lib/content-injector.js +0 -969
  740. package/tools/cli/lib/content-transformer.js +0 -496
  741. package/tools/cli/lib/docs-setup.js +0 -464
  742. package/tools/cli/lib/error-handler.js +0 -165
  743. package/tools/cli/lib/ide-error-factory.js +0 -421
  744. package/tools/cli/lib/ide-errors.js +0 -367
  745. package/tools/cli/lib/ide-generator.js +0 -357
  746. package/tools/cli/lib/ide-health-monitor.js +0 -364
  747. package/tools/cli/lib/ide-registry.js +0 -297
  748. package/tools/cli/lib/npm-utils.js +0 -103
  749. package/tools/cli/lib/self-update.js +0 -148
  750. package/tools/cli/lib/ui.js +0 -211
  751. package/tools/cli/lib/utils.js +0 -87
  752. package/tools/cli/lib/validation-middleware.js +0 -491
  753. package/tools/cli/lib/version-checker.js +0 -95
  754. package/tools/postinstall.js +0 -190
package/CHANGELOG.md CHANGED
@@ -1,540 +1,276 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to AgileFlow will be documented in this file.
3
+ All notable changes to `agileflow` v4 are documented here.
4
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+
6
+ ## [4.0.0-alpha.1] — Unreleased
7
+
8
+ v4 Phase 1 skeleton. Not yet publishable.
9
+
10
+ ### Added
11
+
12
+ - Monorepo workspace `apps/cli/` with `name: agileflow`, `version: 4.0.0-alpha.1`.
13
+ - Unified user config surface at `agileflow.config.json` (JSON Schema + Ajv loader).
14
+ - Default config factory with `core` plugin always enabled.
15
+ - CLI entry at `bin/agileflow.js` with `commander`-based dispatch (`status`, `setup`, `doctor` stubs).
16
+ - Vitest test infrastructure with `tests/unit/config/loader.test.js` (8 passing tests).
17
+ - `@clack/prompts` as the TUI library for the setup wizard — matches the skills.sh/vercel-labs/skills UX (clean step indicators, multiselect, search). Replaces the Ink 5 direction from the original plan.
18
+
19
+ ### Phase 2a — Setup wizard
20
+
21
+ - Plugin registry (`src/runtime/plugins/registry.js`) — discovers `plugin.yaml` manifests under `content/plugins/*`, sorts required-first, enforces unique ids.
22
+ - Config writer (`src/runtime/config/writer.js`) — serializes user-facing fields to `agileflow.config.json` with schema pointer, stable 2-space formatting.
23
+ - Clack wizard (`src/cli/wizard/plugin-picker.js`, `src/cli/wizard/personalization.js`) — multiselect plugin picker (core always on) + 3 enum selects (tone, ask_level, verbosity). Cancellation cleanly exits.
24
+ - Stub plugin manifests for `core` / `ads` / `seo` / `audit` / `council` in `content/plugins/*/plugin.yaml` (content bodies land in Phase 4).
25
+ - Non-interactive path: `agileflow setup --yes --plugins core,seo,audit` writes config without prompts.
26
+ - 14 new tests (`plugins/registry.test.js`, `config/writer.test.js`); total suite: 22 passing.
4
27
 
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
28
+ ### Phase 2a hardening (flow audit fixes)
7
29
 
8
- ## [Unreleased]
30
+ Flow audit (wiring / errors / persistence / feedback) ran against Phase 2a and flagged 3 P0 + 5 P1 gaps. All addressed:
31
+
32
+ - **writeConfig now atomic**: temp file (`.agileflow.config.json.tmp-<pid>`) + rename. Same-directory rename is atomic on POSIX and same-volume Windows. Readers always see either old or new content — never a truncated half-write. Temp file is cleaned up on failure.
33
+ - **writeConfig errors surface as friendly messages**: EPERM / ENOSPC / EACCES no longer leak stack traces. Interactive path shows `prompts.log.error` + recovery hint; non-interactive path writes to stderr with exit 1.
34
+ - **Plugin discovery errors handled in interactive path**: malformed `plugin.yaml` or duplicate ids no longer crash before the wizard starts. Wizard shows "Failed to load plugins: {msg}" and exits.
35
+ - **Unknown `--plugins` ids now error loudly**: `agileflow setup --yes --plugins core,typo` exits 1 with the typo listed and all available plugin ids printed.
36
+ - **Custom plugin entries preserved on wizard rerun**: user-added entries in `plugins.mycustom` survive every wizard invocation (interactive and `--yes`). Extracted `buildPluginsMap()` pure helper to unit-test this guarantee.
37
+ - **Cancellation semantics fixed**: Ctrl+C / Esc in any prompt now says "Setup cancelled. No changes made." and exits 1 (was exit 0). CI can now distinguish user abort from success.
38
+ - **Round-trip tests expanded per schema field**: hooks, ide.primary, language, plugin settings sub-objects, and personalization each tested independently. A writer-forgets-a-field regression can't hide behind the loader's default-merge.
39
+ - **Test suite grew 22 → 40 passing** across 5 test files.
9
40
 
10
- ## [3.4.3] - 2026-03-07
41
+ ### Phase 2a — logic audit fixes
42
+
43
+ Logic audit (5 analyzers: edge / flow / invariant / race / type) on the hardened Phase 2a code. Verdicts: **CLEAN** (control flow), **HOLDS** (invariants), **ACCEPTABLE** (edge + race), **LOOSE** (type). 4 P1 fixes applied:
44
+
45
+ - **`registry.js`**: `depends` is now strictly validated. A plugin author writing `depends: core` (string, common YAML authoring mistake) used to be silently coerced to `[]`; now it throws a clear error. Empty/absent `depends` still defaults to `[]`.
46
+ - **`plugin-picker.js::buildPluginsMap`**: added `!Array.isArray(entry)` guard for the custom-plugin preservation branch. Arrays pass `typeof === 'object'` but would break any downstream code reading `entry.enabled` as a property.
47
+ - **`plugin-picker.js::buildPluginsMap`**: discovered plugins now preserve their `settings` sub-object across wizard reruns. Previously the picker would strip `plugins.seo.settings.crawlDepth` every time it ran; now settings travel with the plugin entry (including when enable=false).
48
+ - **`loader.js`**: eliminated the `existsSync`→`readFileSync` TOCTOU window. We now read directly and treat `ENOENT` as "no config → defaults"; any other read error surfaces as before. Simpler code, no race.
49
+ - Test suite grew **40 → 46 passing**.
11
50
 
12
- ### Added
13
- - Session monitor wrapper and quality-gates integration
51
+ ### Phase 2b slice 1 — Sync engine port
14
52
 
15
- ## [3.4.2] - 2026-03-07
53
+ Ported the v3 SHA256-based safe-update engine from `installer.js:349-455` into `apps/cli/src/runtime/installer/`. Each scenario has dedicated test coverage.
16
54
 
17
- ### Added
18
- - DEPTH=ultradeep|extreme for SEO and Ads audit commands
55
+ - **`src/lib/hash.js`** — `sha256Hex(Buffer|string)` (UTF-8 deterministic) and `sha256File(path)` helpers.
56
+ - **`src/runtime/installer/file-index.js`** read/write `_cfg/files.json` (schema v1); atomic writes (temp+rename); rejects arrays-masquerading-as-objects at both levels.
57
+ - **`src/runtime/installer/stash.js`** — writes conflicting upstream content to `_cfg/updates/<timestamp>/<relativePath>` for manual merge.
58
+ - **`src/runtime/installer/sync-engine.js`** — `syncFile({ content, dest, relativePath, fileIndex, cfgDir, timestamp, force, ops })` handles the 5-scenario decision tree: CREATED, UPDATED (via force), UPDATED (via baseline match), UNCHANGED (3 variants — baseline noop, protected auto-converge, unknown auto-adopt), PRESERVED (stash+keep-user, for protected-mismatch and locally-modified cases). Works for both text content (strings) and binary (Buffers).
59
+ - **27 new tests** covering every branch of the decision tree plus index round-trips and deterministic hashing. Suite: **46 → 73 passing**.
19
60
 
20
- ## [3.4.1] - 2026-03-06
61
+ ### Phase 2b slice 2 — Plugin resolver + strict validator
21
62
 
22
- ### Added
23
- - DEPTH=extreme audit mode, CI feedback loops, and DX quick wins
63
+ - **`src/runtime/plugins/resolver.js`** — `resolvePlugins(discovered, userSelected)` computes the transitive closure (auto-enabling dependencies of user-selected plugins), produces a topologically-sorted install order, and detects cycles via DFS three-color marking with full cycle-path reporting (e.g. `a -> b -> c -> a`). `cannotDisable` plugins (currently just `core`) are always included.
64
+ - **`src/runtime/plugins/validator.js`** strict per-plugin validation:
65
+ - `id` matches `^[a-z0-9][a-z0-9-]{0,63}$` (kebab-case)
66
+ - `version` is valid semver including pre-release / build-metadata tags
67
+ - `description` is non-empty and ≥ 16 chars (warning under that)
68
+ - `enabledByDefault` and `cannotDisable` are real booleans (not coerced strings)
69
+ - `cannotDisable: true` implies `enabledByDefault: true`
70
+ - `depends` entries are valid plugin ids; self-dependency rejected; duplicates flagged as warnings
71
+ - `provides` is an object with array-typed sub-keys; unknown keys flagged as warnings
72
+ - `validatePluginSet()` adds cross-plugin checks (duplicate ids, unresolved depends)
73
+ - `hasErrors(issues)` for gating commits / CI
74
+ - **37 new tests** (resolver: 12, validator: 25) covering diamond dependencies, 3-node cycles, semver edge cases, kebab-case rejections, and cross-plugin invariants. Suite: **73 → 110 passing**.
75
+ - All 5 bundled plugin manifests pass strict validation with zero issues.
24
76
 
25
- ## [3.4.0] - 2026-02-28
77
+ ### Phase 2b slice 4 End-to-end install orchestrator + integration tests
26
78
 
27
- ### Added
28
- - Ads audit system, SEO analysis, ultradeep concurrency controls, and domain-first command naming
79
+ - **`src/runtime/installer/install.js`** — `installPlugins({ discovered, userSelected, agileflowDir, cliVersion, force })` wires every layer: strict-validate → resolve transitive deps + topo sort → read or seed file index → walk each plugin's source dir → `syncFile` every file under `<agileflowDir>/plugins/<id>/...` → remove directories of plugins no longer enabled (and prune their index entries) → atomically write the index. Throws on validation errors (zero partial install) and dependency cycles.
80
+ - **`removeDisabledPlugins`** only blasts directories whose ids are in the discovered set. Unknown user-placed dirs under `<agileflowDir>/plugins/` are left alone.
81
+ - **`FileOpsCounters`** gained a `removed` field for plugin-level removal accounting.
82
+ - **`tests/integration/install-plugins.test.js`** (7 tests) covers:
83
+ - First install with selected opt-ins → `core` first in topo order, file index records every file, disabled plugins absent.
84
+ - Idempotency: second run reports zero writes, all `unchanged`.
85
+ - User-modified file → `preserved` + stash written under `_cfg/updates/<timestamp>/<relativePath>` containing the upstream version.
86
+ - Disabled plugin removal → directory rm'd + index entries pruned.
87
+ - User-placed unknown directory under `plugins/` is preserved.
88
+ - Validation errors abort with a flat report, zero filesystem side effects.
89
+ - Cycle detection trips before any writes.
90
+ - Suite: **110 → 117 passing** (1 unit test updated for the new `removed` counter; 7 new integration tests).
91
+ - **Phase 2b "done when" criteria all met**: SHA256 round-trip passes, disabled-plugin removal works, integration test installs into a scratch dir end-to-end. The content injector port (slice 3) is deferred to Phase 4 — it's only needed once skills/commands with `<!-- {{TOKEN}} -->` placeholders ship.
29
92
 
30
- ## [3.3.0] - 2026-02-24
93
+ ### Phase 2b — logic audit fixes
94
+
95
+ Logic audit (5 analyzers: edge / flow / invariant / race / type) on Phase 2b runtime. Verdicts: **HOLDS** (invariants), **CLEAN** (control flow), **SAFE** (race for CLI), **RISKY** (edge — path traversal flagged), **ACCEPTABLE** (type). 5 P0/P1 fixes applied:
96
+
97
+ - **`writeStash` path-traversal guard**: rejects absolute paths up front (`/etc/passwd` would otherwise be silently joined as a relative segment) AND verifies the resolved stash path is inside the resolved updates root. Defensive against malicious or buggy `relativePath` values escaping `_cfg/updates/<timestamp>/`.
98
+ - **`installPlugins` try/finally around sync + remove**: the file index is now written even when `installOnePlugin` throws mid-loop. Previously a transient EACCES/ENOSPC could leave on-disk files without index entries → next run would misclassify them as user-modified and stash them. Integration test confirms partial-install case persists the index.
99
+ - **Atomic `syncFile` writes**: `writeContent` ports the temp+rename pattern from `writeFileIndex`. Mid-write crashes can no longer leave a truncated dest file. Temp filename is `<dest>.tmp-<pid>-<random>` to avoid collisions in same-process concurrent installs.
100
+ - **Resolver rejects unknown `userSelected` ids loudly**: `resolvePlugins(discovered, ['typo'])` now throws with a clear message listing available plugin ids. Direct callers (CI / programmatic install) get the same protection the wizard already had via `pluginsFromCsv`.
101
+ - **`sha256Hex` null guard**: throws a `TypeError` with a clear message instead of the cryptic Buffer-internal error when called with `null`/`undefined`.
102
+ - **Random suffix on temp filenames** in `writeFileIndex` (PID alone could collide in same-process concurrent calls — rare but possible in tests).
103
+ - **14 new tests**: stash path-traversal (4), atomic writes (2), resolver unknown ids (2), null hash inputs (2), partial-install index persistence (1), plus existing test fixed for absolute-path rejection. Suite: **117 → 131 passing**.
31
104
 
32
- ### Added
33
- - Per-agent file tracking, tmux restore, and completeness audit
105
+ ### Phase 2c — Wire installer into CLI (setup + update)
106
+
107
+ - **`agileflow setup` now triggers an actual install**: after writing `agileflow.config.json`, both the interactive and `--yes` paths call `installPlugins()`. The interactive path shows a Clack spinner ("Installing N plugin(s)") with a per-counter summary on completion. The `--yes` path prints a single-line counter summary.
108
+ - **New `agileflow update` command**: re-runs `installPlugins()` against the currently-enabled plugin set in the config, no prompts. Use cases: applying manual edits to `agileflow.config.json`, picking up new bundled plugin content without re-prompting, CI sync. Supports `--force` to overwrite local modifications instead of preserving them.
109
+ - **Verified end-to-end**: `agileflow setup --yes --plugins core,seo,audit` in a scratch dir writes config, installs 3 `plugin.yaml` files into `.agileflow/plugins/{core,audit,seo}/`, and produces a valid SHA256-indexed `_cfg/files.json`. Subsequent `agileflow update` reports 3 unchanged (idempotent).
110
+
111
+ ### Phase 3 slice A — Hook meta-orchestrator core
112
+
113
+ The fix for v3's cascading SessionStart failures lands. Six thin Claude Code dispatchers delegate to a single orchestrator that reads a project-side manifest, topologically orders hooks by `runAfter`, runs them with per-hook timeout + skipOnError semantics, and writes a JSONL log to `.agileflow/logs/hook-execution.jsonl`.
114
+
115
+ - **`src/runtime/hooks/manifest-loader.js`** — reads/normalizes `.agileflow/hook-manifest.yaml` (schema v1). Strict validation: rejects unknown events, non-array `runAfter`, negative `timeout`, non-boolean `enabled`/`skipOnError`, duplicate ids. Six valid Claude Code events recognized: `SessionStart`, `PreCompact`, `Stop`, `PreToolUse:{Bash,Edit,Write}`. Returns null for missing manifest.
116
+ - **`src/runtime/hooks/chain.js`** — `orderChain(hooks)` topologically sorts by `runAfter` via DFS three-color marking; cycles throw with the full path (`a -> b -> c -> a`); unresolved `runAfter` targets throw with the offending hook id; declaration order preserved within topo layers.
117
+ - **`src/runtime/hooks/logger.js`** — `appendHookLog(logPath, entry)` writes one JSON object per line. `truncate()` caps stdout/stderr at 4 KB per stream with a `…[truncated]` marker. Drops `undefined` keys for compact lines. Auto-creates the log directory.
118
+ - **`src/runtime/hooks/orchestrator.js`** — `runEvent({ event, agileflowDir, stdin, overrides, runHook? })` orchestrates a chain: load manifest → filter to event → apply user `overrides` from `agileflow.config.json.hooks` → topo sort → run each hook (via injectable `runHook`, defaulting to a child-process spawner with AbortController-enforced timeouts) → log every step → continue on `skipOnError: true` failures, abort with exit 1 on `skipOnError: false` failures. Default child-process runner picks the interpreter by extension (`.js`→node, `.sh`→bash, else direct), forwards stdin, captures stdout/stderr/exitCode/timedOut, sets `AGILEFLOW_DIR` env.
119
+ - **`bin/hooks/{session-start,pre-bash,pre-edit,pre-write,pre-compact,stop}.js`** — six executable thin dispatchers (~30 lines each). Each forwards stdin to `runEvent` and exits with the chain's resolved code. `pre-compact` and `stop` always exit 0 even on chain failure (these events must never block). All catch top-level errors and fail open.
120
+ - **`HOOK_LOG`** schema: `{ timestamp, event, hookId, status: 'ok'|'error'|'timeout'|'skipped', exitCode, durationMs, stdout?, stderr?, skippedByOnError? }`.
121
+ - **44+ new tests across 4 files**: manifest schema (15), chain ordering + cycles (9), JSONL logger + truncation (8), orchestrator with stubbed runHook (12) including timeout, skipOnError, runAfter ordering, override application, multi-hook logging. Suite: **131 → 184 passing**.
122
+ - **End-to-end smoke verified**: a manifest with `welcome` (ok) and `flaky` (exits 1, skipOnError: true) runs both in topo order, logs each, and the dispatcher exits 0 — the exact v3 cascade-failure case that previously broke session start now degrades gracefully.
123
+
124
+ ### Phase 3 schema fix — align with Claude Code hooks reference
125
+
126
+ A read of the official Claude Code hooks docs revealed our event schema was wrong on two counts: incomplete (6 of 28 real events) and synthetic (`PreToolUse:Bash` is not a real event — it's `PreToolUse` + a separate `matcher: "Bash"` config field). Fixed before slices B/C build on the schema.
34
127
 
35
- ## [3.2.1] - 2026-02-21
128
+ - **`VALID_EVENTS` expanded to all 28 events** in the Claude Code reference: `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `UserPromptExpansion`, `PreToolUse`, `PermissionRequest`, `PermissionDenied`, `PostToolUse`, `PostToolUseFailure`, `PostToolBatch`, `PreCompact`, `PostCompact`, `Stop`, `StopFailure`, `SubagentStart`, `SubagentStop`, `TaskCreated`, `TaskCompleted`, `TeammateIdle`, `InstructionsLoaded`, `ConfigChange`, `CwdChanged`, `FileChanged`, `WorktreeCreate`, `WorktreeRemove`, `Notification`, `Elicitation`, `ElicitationResult`.
129
+ - **`matcher` is now a separate optional field** on hook manifest entries, only valid on tool-related events (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`). Manifest schema rejects matcher on non-tool events with a clear error.
130
+ - **`matcherMatches(pattern, actual)`** helper implements Claude Code's matcher semantics: empty/`*` → match-all; alphanumeric+`_`+`|` → exact-or-pipe-list (`Bash`, `Edit|Write`); anything else → JS regex (`^Notebook`, `mcp__memory__.*`); invalid regex returns false instead of throwing.
131
+ - **Orchestrator's `runEvent` accepts a `matcher` parameter**: hooks with a manifest matcher only fire when their pattern accepts the runtime-supplied matcher; hooks without a manifest matcher fire for every value.
132
+ - **PreToolUse dispatchers** (`pre-bash.js`, `pre-edit.js`, `pre-write.js`) hardcode their respective matcher (`Bash`, `Edit`, `Write`) and pass it to `runEvent`. They register in `.claude/settings.json` (slice C) as `PreToolUse` hooks with the matching `matcher` field, so Claude Code routes correctly.
133
+ - **21 new tests** for the schema + matcher routing: 9 manifest-loader (matcher field validation, expanded event list), 5 orchestrator (matcher filtering across exact / pipe-list / regex / no-matcher), 7 `matcherMatches` cases. Suite: **184 → 205 passing**.
134
+ - **End-to-end re-verified**: a manifest with `welcome` (SessionStart, no matcher), `dc-bash` (PreToolUse, matcher: Bash), and `dc-edit` (PreToolUse, matcher: Edit) routes correctly. SessionStart fires welcome only; `pre-bash.js` invoking the orchestrator with `matcher: 'Bash'` fires only `dc-bash`, filtering out `dc-edit`.
36
135
 
37
- ### Added
38
- - Agentic browser QA system with Playwright integration
136
+ ### IDE / CLI awareness — install gates by target
39
137
 
40
- ## [3.2.0] - 2026-02-21
138
+ Different agentic IDEs / CLIs support different feature subsets. Hooks are Claude Code only (the entire orchestrator we just shipped is Claude-Code-specific). Cursor / Windsurf / Codex don't have an equivalent hook API. The installer now picks an IDE up front and gates feature install on its capabilities.
41
139
 
42
- ### Added
43
- - Cross-IDE capability profiles, multi-agent audit systems, and AI attribution blocking
140
+ - **`src/runtime/ide/capabilities.js`** declares an `IDE_CAPABILITIES` map for the four supported targets: `claude-code` (full feature set), `cursor` (commands + MCP), `windsurf` (commands), `codex` (very limited). Each entry lists `hooks` / `skills` / `commands` / `agents` / `mcp` booleans plus a `settingsFile` path.
141
+ - **`src/cli/wizard/ide-picker.js`** adds a Clack `select` prompt asking which IDE the user is targeting. Default is Claude Code. Selecting a non-full target prints a warning listing which features won't be installed (`cursor: hooks, skills, agents won't be installed (not supported by this IDE)`).
142
+ - **`agileflow setup --yes --ide <id>`** flag for the non-interactive path. Unknown IDE ids are rejected with the supported list. Default is `claude-code`.
143
+ - **Status output** now shows the IDE selection: `ide: claude-code (hooks=on, skills=on)`.
144
+ - **Future install gating**: the IDE choice is captured in `agileflow.config.json` at `ide.primary`; subsequent slices (Phase 3 slice C / Phase 4 install gating) consult `capabilitiesFor(ide).hooks` etc. before writing IDE-specific files.
145
+
146
+ ### v4 direction lock — skills-only (no slash commands)
44
147
 
45
- ## [3.1.0] - 2026-02-14
148
+ User directive 2026-04-26: AgileFlow ships **skills only**. No slash commands at all in the runtime. (Distinction: `npx agileflow setup` and friends are CLI subcommands and stay — the directive applies to in-IDE `/agileflow:*` slash commands.)
46
149
 
47
- ### Added
48
- - Legal audit system, native Agent Teams integration, and startup performance improvements
150
+ - **Plugin manifest `provides.commands`**: schema retained for backward compat but bundled plugins all ship `commands: []`. Phase 4 content authoring must NOT create command `.md` files.
151
+ - **Plan §C overlap table** at `/home/bk/.claude/plans/fizzy-stirring-kahan.md` is now wholly "retire in favor of skill" — every former "Kept" command becomes "Retired".
152
+ - **Skill design implication**: with no slash command for deterministic invocation, every skill must use the v2 frontmatter `triggers.keywords` + `priority` + `exclude` fields rigorously so Claude reliably picks the right skill.
153
+ - **IDE capability map**: the `commands: true/false` field stays informational. AgileFlow itself ships no commands regardless.
154
+
155
+ ### Phase 3 slice B — Hook manifest aggregation at install (IDE-gated)
156
+
157
+ The install pipeline now produces a working `.agileflow/hook-manifest.yaml` automatically when the target IDE supports hooks. The 6 dispatchers + orchestrator from slice A finally have something to read.
158
+
159
+ - **`src/runtime/hooks/aggregator.js`** — `buildHookManifest(orderedPlugins)` walks each plugin's `provides.hooks` array, rewrites script paths from plugin-relative (`hooks/welcome.js`) to project-root-relative (`.agileflow/plugins/core/hooks/welcome.js`), and produces a `{ version: 1, hooks: [...] }` object. Defensive: skips invalid entries silently. Pure / no I/O.
160
+ - **`writeAggregatedManifest(plugins, agileflowDir)`** — atomically writes the YAML manifest with a `# Auto-generated …` header so users know not to hand-edit. Temp+rename pattern matching the rest of the runtime; cleans up the temp file on rename failure.
161
+ - **`removeAggregatedManifest(agileflowDir)`** — removes a stale manifest cleanly when the user switches to a non-hook IDE.
162
+ - **`installPlugins` now takes an `ide` parameter** and calls `writeAggregatedManifest` only when `capabilitiesFor(ide).hooks === true`. Switching from claude-code to cursor automatically removes the previously-written manifest. Result object grows a `hookManifestPath` field (path or null).
163
+ - **`setup` and `update` commands** thread `ide` through from `agileflow.config.json.ide.primary`. The bundled core plugin gained a stub `session-welcome.js` hook so aggregation has real content to test against.
164
+ - **17 new tests across aggregator + integration**: pure aggregator unit tests (build, atomic write, header comment, cleanup on failure, remove), 3 integration tests (manifest written for claude-code, NOT written for cursor, stale manifest removed on IDE switch). Suite: **213 → 227 passing across 18 files**.
165
+ - **End-to-end verified**: `agileflow setup --yes --plugins core --ide claude-code` writes hook-manifest.yaml with `session-welcome` registered for SessionStart; switching to `--ide cursor` removes the manifest. The orchestrator (slice A) reads the same file at runtime; the loop is closed.
166
+
167
+ ### Phase 3 slice C — Claude Code settings.json registration
168
+
169
+ The final piece. When `ide=claude-code`, the installer registers our 6 hook entry points in `.claude/settings.json` so Claude Code actually invokes our orchestrator. The orchestrator → manifest loader → chain executor → dispatcher loop now closes against a real Claude Code session.
170
+
171
+ - **`src/runtime/ide/claude-code-settings.js`** — read/merge/write of `.claude/settings.json`. Critical correctness property: NEVER clobbers the user's other settings.json content (permissions, env, non-managed hooks). AgileFlow-owned entries are identified by the literal `agileflow hook` substring in their command and replaced atomically; everything else is preserved.
172
+ - **`src/cli/commands/hook.js`** + new `agileflow hook <event> [--matcher <name>]` CLI subcommand: a unified hook dispatcher that resolves through the npm bin entry. Settings.json registers `npx --no-install agileflow hook <Event>` so the path works regardless of how the package is installed (local node_modules, global, npx).
173
+ - **6 registrations across 4 events**: 1 SessionStart + 3 PreToolUse (Bash / Edit / Write matchers) + 1 PreCompact + 1 Stop. Each entry uses `type: command`, `timeout: 30` (seconds, per Claude Code docs), and the unified `agileflow hook ...` invocation.
174
+ - **`installPlugins`** now calls `writeClaudeCodeSettings(projectRoot)` when `ide=claude-code` and `removeClaudeCodeSettings(projectRoot)` otherwise. Switching IDEs cleans up stale entries; if AgileFlow was the only owner, the settings.json file is removed entirely.
175
+ - **24 new tests** for the settings.json writer (entry detection, merge, unmerge, file lifecycle, malformed input handling, idempotency, atomicity) plus 2 integration tests for ide-gated registration. Suite: **227 → 251 passing across 19 files**.
176
+ - **End-to-end verified**: `agileflow setup --yes --ide claude-code` writes `.claude/settings.json` with all 6 entries; `npx agileflow hook SessionStart` invokes the orchestrator; switching to `--ide cursor` deletes the settings file. **Phase 3 is functionally complete** — a fresh Claude Code session in a v4-installed project now actually invokes our hooks.
177
+
178
+ The 6 standalone dispatchers under `bin/hooks/*.js` are now legacy. The unified `agileflow hook` subcommand replaces them for production use; they're kept as direct-invocation aliases (useful for testing without npx). A future cleanup can prune them.
179
+
180
+ ### Phase 4 first slice — agileflow-story-writer skill
181
+
182
+ The first real user-visible content lands in v4. After install, a Claude Code session in the user's project will discover `agileflow-story-writer` and activate it on prompts about features / user stories / acceptance criteria.
49
183
 
50
- ## [3.0.2] - 2026-02-14
51
-
52
- ### Added
53
- - Automatic tmux window naming and configuration agent consolidation
54
-
55
- ## [3.0.1] - 2026-02-13
56
-
57
- ### Fixed
58
- - Configure writes directly to Claude Code settings.json for Agent Teams and permissions
59
-
60
- ## [3.0.0] - 2026-02-13
61
-
62
- ### Added
63
- - Scale-adaptive architecture, smart tmux sessions, and team observability
184
+ - **`content/plugins/core/skills/agileflow-story-writer/SKILL.md`** ported from v3 to the v4 frontmatter v2 schema:
185
+ - `description` follows the `Use when...` policy
186
+ - explicit `triggers.keywords` (`user story`, `as a user, i want`, `feature request`, `implement this`, etc.)
187
+ - `triggers.exclude` keywords damp false activations on `bedtime story` / `tell me a story`
188
+ - `triggers.priority: 50` for collision resolution
189
+ - `learns.enabled: true` with `_learnings/story-writer.yaml` for self-improvement
190
+ - `<!-- {{PERSONALIZATION_BLOCK}} -->` placeholder for future personalization injection (Phase 5)
191
+ - Body kept ≤ 200 lines per the §G validator policy
192
+ - **`content/plugins/core/plugin.yaml`** updated to declare the skill in `provides.skills`.
193
+ - **`src/runtime/ide/claude-code-skills.js`** — mirror logic that copies enabled plugin skills from `.agileflow/plugins/<id>/skills/<skill>/` into `.claude/skills/<skill>/` (Claude Code's canonical discovery location). Pruning is conservative: only `agileflow-*` prefixed dirs are removed when orphaned, leaving third-party skill dirs alone. Copy (not symlink) for Windows portability.
194
+ - **`installPlugins`** now mirrors skills when `ide=claude-code` AND `capabilities.skills`, and unmirrors them on switch-away. Result object gains `skillsMirrored` and `skillsPruned` arrays.
195
+ - **10 new tests across mirror module + 2 integration tests**: collect-skills, mirror to fresh dir, replace stale content, prune orphans, leave third-party alone, unmirror, ENOENT-safe; integration: install puts skill in `.claude/skills/`, IDE switch removes it. Suite: **251 → 261 passing across 20 files**.
196
+ - **End-to-end verified**: `agileflow setup --yes --plugins core --ide claude-code` lands `agileflow-story-writer` at `.claude/skills/agileflow-story-writer/SKILL.md` with the v4 frontmatter intact. Switching to `--ide cursor` removes it.
64
197
 
65
- ## [2.99.8] - 2026-02-12
198
+ ### Phase 3+4 logic-audit fixes
66
199
 
67
- ### Fixed
68
- - Simplify tmux keybindings and clean up status line
200
+ 5 logic analyzers (edge / flow / invariant / race / type) on Phase 3 and Phase 4 code surfaced 7 actionable findings. All addressed before more skills land.
69
201
 
70
- ## [2.99.7] - 2026-02-11
202
+ - **`mirrorClaudeCodeSkills`** — wrapped per-skill copy in try/catch. ENOENT (missing source dir) is now reported as `result.skipped` and the install continues; other errors still propagate. `copyDir` was also reordered to read source before creating dest, so a missing source no longer leaves an empty mirror dir behind.
203
+ - **`installPlugins` validate-before-write**: step 7 now builds the hook manifest in memory and runs it through `normalizeManifest` BEFORE writing. A plugin contributing an invalid hook (unknown event, missing matcher on a non-tool event, etc.) now errors at install time with `Hook manifest validation failed: ...` instead of silently registering hook dispatchers in `.claude/settings.json` against an unparseable manifest.
204
+ - **`mergeManagedHooks` / `unmanageHooks`** — added `!Array.isArray(existing.hooks)` guard so an array-shaped `hooks: []` in user settings.json doesn't get spread into an object with numeric keys (which would corrupt the file). Treats it as missing and rebuilds clean.
205
+ - **`agileflow hook` subcommand** — validates the event name against `VALID_EVENTS` and requires `--matcher` for tool-related events. Misspellings (`SesionStart`) and missing matchers now exit 1 with a clear error and the list of valid events. Previously these silently no-op'd the entire hook chain.
206
+ - **`removeClaudeCodeSettings`** — no longer swallows arbitrary read errors. ENOENT and SyntaxError are still tolerated by the inner `readExisting` (treated as empty), but EACCES / EIO now propagate so we don't lie about removing entries from an unreadable file.
207
+ - **`InstallResult` JSDoc** — extended typedef from 7 to 12 properties to match the actual return shape (`hookManifestPath`, `settingsPath`, `skillsMirrored`, `skillsPruned`, `skillsSkipped`, `ide`).
208
+ - **`collectPluginSkills`** — rejects entries with empty-string `id` or `dir`. An empty `dir: ""` would previously path-join to the plugin root and produce wrong copies.
209
+ - **5 new tests** + 2 modified for new return shapes: array-shaped hooks treated correctly, empty-string skill specs filtered, missing-source mirror reports skipped without crashing, validate-before-write rejects malformed manifest before settings.json is touched. Suite: **261 → 266 passing**.
71
210
 
72
- ### Fixed
73
- - Suppress tmux same-index message on session start
211
+ End-to-end verified: `npx agileflow hook SesionStart` (typo) prints `unknown event "SesionStart"` with the full valid list and exits 1; `npx agileflow hook PreToolUse` (no `--matcher`) prints `event "PreToolUse" requires --matcher` and exits 1; the valid case still exits 0.
74
212
 
75
- ## [2.99.6] - 2026-02-09
213
+ ### Phase 4 — Core scope content-complete (4 skills)
76
214
 
77
- ### Fixed
78
- - Fix tmux session creation after reboot with atomic command
215
+ The Core plugin now ships every skill its name promised: Epic, Story, Status, Babysit. After install on `claude-code`, a fresh Claude Code session discovers and activates all four through their explicit triggers.
79
216
 
80
- ## [2.99.5] - 2026-02-09
217
+ - **`agileflow-epic-planner`** — ported from v3. Breaks large features into milestoned epics with success metrics, dependencies, and risks. Triggers on `epic`, `initiative`, `multi-month project`, `break this down`, `phased rollout`. Excludes `epic fail` / `epic novel` / `mythological epic`. Writes `docs/05-epics/EP-####-<slug>.md`. Self-improving learnings enabled.
218
+ - **`agileflow-story-writer`** — already shipped in the previous slice. v2.0.0, learns enabled.
219
+ - **`agileflow-status-updater`** — NEW for v4 (no v3 source). Applies status mutations (story `ready` → `in_progress` → `review` → `complete` / `blocked`; epic `PLANNING` → `ACTIVE` → `COMPLETED` / `ON_HOLD`) from natural-language progress updates. Strict transition table; diff-first / YES-NO confirmation; mutates `docs/09-agents/status.json` + the relevant story / epic file frontmatter. Triggers on `mark this story`, `i finished`, `i'm blocked on`, `move to in progress`. Excludes `status quo` / `status report`.
220
+ - **`agileflow-babysit-mentor`** — NEW for v4, the v3 `/agileflow:babysit` command reincarnated as a skill. End-to-end mentor pattern: pick → plan → delegate → verify → commit. Codifies the 6 operating rules (smart `AskUserQuestion`, plan mode, expert delegation, task tracking, logic audit, flow audit). Triggers on `walk me through`, `help me ship this`, `mentor mode`, `babysit`. Excludes `babysit my kid`. Self-improving learnings enabled.
221
+ - **`content/plugins/core/plugin.yaml`** updated to declare all 4 skills.
222
+ - **End-to-end verified**: `agileflow setup --yes --plugins core --ide claude-code` lands all 4 skills under `.claude/skills/`. Each carries v4 frontmatter v2 (name, version, category, description with "Use when…", explicit triggers with priority + exclude). Suite still **266 passing** (skills are content, not new code paths — covered by existing integration tests).
81
223
 
82
- ### Fixed
83
- - Fix tmux startup after reboot by starting server before global options
224
+ **Phase 4 Core scope**: complete. Phase 5 (skill validator + CI + alpha.1 publish) is next. Other plugins (`audit`, `ads`, `seo`, `council`, etc.) populate after the validator is wired so they ship through a quality gate.
84
225
 
85
- ## [2.99.4] - 2026-02-09
226
+ ### Phase 4 Core gains a 5th skill: agileflow-adr
86
227
 
87
- ### Fixed
88
- - Fix tmux socket directory creation on macOS
89
-
90
- ## [2.99.3] - 2026-02-09
91
-
92
- ### Fixed
93
- - Auto-heal tmux socket directory after macOS reboot
94
-
95
- ## [2.99.2] - 2026-02-09
96
-
97
- ### Added
98
- - Documentation overhaul with teams commands, frontmatter fixes, and damage control resilience
99
-
100
- ## [2.99.1] - 2026-02-08
101
-
102
- ### Added
103
- - Smart session management with context-aware naming and tmux quick-create keybinds
104
-
105
- ## [2.99.0] - 2026-02-08
106
-
107
- ### Added
108
- - Security Hardening Phase 2 - path traversal, auth, CORS, ReDoS, rate limiting
109
-
110
- ## [2.98.1] - 2026-02-07
111
-
112
- ### Added
113
- - Fix alias dedup, add claude flags config, trim status line
228
+ - **`agileflow-adr`** — ported from v3 to v4 frontmatter v2. Captures architectural / technical decisions as MADR-format ADRs in `docs/03-decisions/`. Triggers on `architecture decision`, `which database`, `rest vs graphql`, `sql vs nosql`, `which framework`, `record this decision`, `trade-off between`, `adr for`. Excludes `decision tree` (algorithmic) and `decisive moment`. Self-improving learnings enabled. Bundled directly in Core because architectural decisions surface constantly during implementation; making the user remember to enable a separate plugin is friction at exactly the wrong moment.
229
+ - **`content/plugins/core/plugin.yaml`** updated to declare 5 skills.
230
+ - **End-to-end verified**: `agileflow setup --yes --plugins core --ide claude-code` lands all 5 skills under `.claude/skills/`. 7 files created (5 × SKILL.md + plugin.yaml + session-welcome.js). Suite still 266 passing.
114
231
 
115
- ## [2.98.0] - 2026-02-07
232
+ ### Phase 5 slice 1 — Skill validator + `agileflow doctor`
116
233
 
117
- ### Fixed
118
- - Shell injection cleanup, shared lib tests, and async I/O pipeline
234
+ The skills-only direction makes activation triggers load-bearing. Typos in descriptions, missing required fields, and (worst) keyword collisions across skills silently degrade reliability. The validator catches all of those before alpha.1 ships.
119
235
 
120
- ## [2.97.0] - 2026-02-07
121
-
122
- ### Added
123
- - Native Agent Teams integration with quality gate hooks and dual-mode orchestration
124
-
125
- ## [2.96.6] - 2026-02-06
126
-
127
- ### Fixed
128
- - Force-overwrite internal scripts and lib files during updates to fix stale code
129
-
130
- ## [2.96.5] - 2026-02-06
131
-
132
- ### Fixed
133
- - Fix SessionStart hook crash when js-yaml not installed in user projects
134
-
135
- ## [2.96.4] - 2026-02-06
136
-
137
- ### Added
138
- - Command deduplication to fix duplicate slash commands in autocomplete
139
-
140
- ## [2.96.3] - 2026-02-06
141
-
142
- ### Fixed
143
- - Codex CLI subcommand support for nested commands
144
-
145
- ## [2.96.2] - 2026-02-06
146
-
147
- ### Fixed
148
- - Smart docs folder detection for existing AgileFlow installations
149
-
150
- ## [2.96.1] - 2026-02-06
151
-
152
- ### Fixed
153
- - Fix js-yaml module resolution in copied lib files
154
-
155
- ## [2.96.0] - 2026-02-05
156
-
157
- ### Added
158
- - Multi-agent logic analyzer, ideation enhancements, and serve improvements
159
-
160
- ## [2.95.3] - 2026-02-01
161
-
162
- ### Added
163
- - Fresh restart flag for tmux with conversation auto-resume
164
-
165
- ## [2.95.2] - 2026-02-01
166
-
167
- ### Changed
168
- - Fix damage control hook MODULE_NOT_FOUND error
169
-
170
- ## [2.95.1] - 2026-01-30
171
-
172
- ### Fixed
173
- - Fix stale doc counts and scoped npm audit
174
-
175
- ## [2.95.0] - 2026-01-30
176
-
177
- ### Added
178
- - Global session management commands (status, history, cleanup)
179
- - `/agileflow:install` and `/agileflow:maintain` commands for quick setup
180
- - Multi-expert Implementation Ideation in `/research:import` and `/research:analyze`
181
- - Plan file context preservation with experimental profile
182
- - Tmux freeze recovery keybinds and `--rescue` flag
183
- - Shellcheck CI job for shell script linting
236
+ - **`src/runtime/skills/validator.js`** — per-skill checks: YAML frontmatter parses; required fields present (`name`, `version`, `category`, `description`, `triggers`); `description` starts with `Use when …` (forces activation-trigger framing); `triggers.keywords` is non-empty array of strings; `triggers.priority` is integer in [0, 100]; `triggers.exclude` (if present) is array of strings; `version` is valid semver; SKILL.md body ≤ 400 lines; if `learns.enabled === true`, the `_learnings/<id>.yaml` file should exist (warning, not error — created on first correction); skills-only policy: warn if `provides.command` is set.
237
+ - **Cross-skill collision detection** — `(keyword, priority)` pairs must be unique across the loaded skill set. Case-insensitive; trims whitespace. Two skills sharing `('story', 50)` will both be flagged with the offending keyword and priority and the colliding ids listed.
238
+ - **`validateSkillsAtRoot(dir)`** — walks every immediate-child directory looking for `SKILL.md`, runs per-skill validation, then cross-skill collision detection across the loaded set. Failed-load errors are captured as issues per skill, not as fatal exceptions, so one broken SKILL.md doesn't blow up a doctor pass.
239
+ - **`agileflow doctor`** replaces the Phase 1 stub with a real validator that runs four sections in order: plugin manifests (validatePluginSet), skills (validateSkillsAtRoot for every bundled plugin + cross-plugin collision), aggregated hook manifest (the same validate-before-write check installPlugins does), installed hook manifest (if `.agileflow/hook-manifest.yaml` exists in cwd). Each section prints `ok` or a list of `ERROR`/`WARN` lines with the skill/plugin id. Exit 0 on green, exit 1 if any errors.
240
+ - **Doctor output against bundled content**: `Plugin manifests: ok`, `Skills: 4 warnings (missing _learnings files — created on first correction)`, `Hook manifest (aggregated): ok`, `Hook manifest (installed): ok`. All 5 Core skills pass strict validation.
241
+ - **20 new tests** across `validator.test.js`: per-field validation, semver, body-length, collision detection (positive case, no-collision case, different priorities, case-insensitive), the validateSkillsAtRoot loader (missing dir → empty, broken skill → captured issue, multi-skill → cross-check). Suite: **266 → 286 passing across 21 files**.
184
242
 
185
- ### Fixed
186
- - Prevent worktree sessions from being marked as main
187
- - Prevent duplicate agents during install/update
188
- - Inline uncommitted changes handling for `/session:end`
189
-
190
- ## [2.94.1] - 2026-01-24
191
-
192
- ### Added
193
- - DEPTH=ultradeep mode for comprehensive 13-expert ideation
194
-
195
- ## [2.94.0] - 2026-01-24
196
-
197
- ### Added
198
- - Shared docs/ across sessions via symlink for multi-session coordination
199
-
200
- ## [2.93.0] - 2026-01-24
201
-
202
- ### Added
203
- - RLM document analysis and session health improvements
204
-
205
- ## [2.92.1] - 2026-01-23
206
-
207
- ### Added
208
- - Session worktree timeout, progress feedback, and docs folder copy
209
-
210
- ## [2.92.0] - 2026-01-23
211
-
212
- ### Added
213
- - Tmux integration, i18n docs, EP-0022 codebase health improvements
214
-
215
- ## [2.91.0] - 2026-01-20
216
-
217
- ### Added
218
- - GSD workflow integration, codebase query interface, and docs improvements
219
-
220
- ## [2.90.7] - 2026-01-17
221
-
222
- ### Fixed
223
- - Fix TUI bouncing with in-place rendering
224
-
225
- ## [2.90.6] - 2026-01-17
226
-
227
- ### Changed
228
- - Static TUI dashboard (no bouncing)
229
-
230
- ## [2.90.5] - 2026-01-17
231
-
232
- ### Added
233
- - Restore static dashboard command
234
-
235
- ## [2.90.4] - 2026-01-17
236
-
237
- ### Fixed
238
- - Fix TUI to use simple-tui by default
239
-
240
- ## [2.90.2] - 2026-01-17
241
-
242
- ### Fixed
243
- - TUI CLI command fix
244
-
245
- ## [2.90.1] - 2026-01-16
246
-
247
- ### Added
248
- - TUI as CLI command with session fixes
249
-
250
- ## [2.90.0] - 2026-01-16
251
-
252
- ### Added
253
- - TUI dashboard with session management and modular CLI architecture
254
-
255
- ## [2.89.3] - 2026-01-14
256
-
257
- ### Added
258
- - Security hardening with shell injection prevention and secret redaction
259
-
260
- ## [2.89.2] - 2026-01-14
261
-
262
- ### Fixed
263
- - Increase precompact preservation window to 10 minutes
264
-
265
- ## [2.89.1] - 2026-01-14
266
-
267
- ### Fixed
268
- - Fix active_commands preservation after conversation compact
269
-
270
- ## [2.89.0] - 2026-01-14
271
-
272
- ### Added
273
- - Security hardening, LRU file caching, and comprehensive test coverage
274
-
275
- ## [2.88.0] - 2026-01-13
276
-
277
- ### Fixed
278
- - Security and code quality improvements from EP-0012 ideation
279
-
280
- ## [2.87.0] - 2026-01-13
281
-
282
- ### Added
283
- - Multi-session visibility with cleanup notifications and status line indicators
284
-
285
- ## [2.86.0] - 2026-01-13
286
-
287
- ### Added
288
- - Progressive disclosure and RPI workflow for context optimization
289
-
290
- ## [2.85.0] - 2026-01-12
291
-
292
- ### Added
293
- - Parallel sessions with git worktrees and session boundary protection
243
+ ### Phase 5 slices 2 + 3 — CI + publish setup
294
244
 
295
- ## [2.84.2] - 2026-01-11
245
+ The path from "green test suite" to "user can `npm i agileflow@alpha`" closes here.
296
246
 
297
- ### Fixed
298
- - Auto-update retry with npm cache clean on stale registry
247
+ - **`.github/workflows/v4-ci.yml`** — runs on push or PR that touches `apps/cli/**` on the `v4` branch. Steps: `npm install --legacy-peer-deps` (works around the v3 apps/docs peer-dep conflict), `npx vitest run` in `apps/cli/`, `node bin/agileflow.js doctor`, plus two scratch-dir smoke tests (`setup --yes --ide claude-code` lands `.claude/{settings.json,skills/agileflow-story-writer/SKILL.md}` + `hook-manifest.yaml` + file index; `setup --yes --ide cursor` correctly does NOT write any of those).
248
+ - **`.github/workflows/v4-publish.yml`** triggered by tags matching `agileflow-v4.*`. Re-runs tests + doctor, verifies the tag version matches `apps/cli/package.json`, and publishes with `npm publish --access public --tag alpha`. Uses the `NPM_TOKEN` secret. Tag prefix `agileflow-v4-` keeps v4 tags distinct from any v3 tags that may still land on `main`.
249
+ - **`apps/cli/package.json`** gained:
250
+ - `prepublishOnly` script that runs `vitest run && node bin/agileflow.js doctor` so a red doctor blocks `npm publish` locally too.
251
+ - `doctor` script (alias for `node bin/agileflow.js doctor`).
252
+ - **`apps/cli/LICENSE`** copied from repo root so the published tarball is self-contained per the `files: [..., "LICENSE", ...]` declaration.
253
+ - **`apps/cli/PUBLISHING.md`** — quick-reference for shipping a release. Covers prerequisites, versioning convention (`4.0.0-alpha.N` → `4.0.0-beta.N` → `4.0.0-rc.N` → `4.0.0`), local dry-run, CI tag-push flow, manual emergency flow, alpha → latest promotion, and rollback (`npm deprecate` / `npm unpublish`).
254
+ - **Verified `npm pack --dry-run`** from `apps/cli/`: ships 52 files (bin/, src/, content/, README.md, LICENSE, CHANGELOG.md) — 65 KB tarball, 210 KB unpacked. Tests + vitest config + node_modules excluded.
299
255
 
300
- ## [2.84.1] - 2026-01-11
256
+ **To ship `4.0.0-alpha.1` now**:
257
+ ```bash
258
+ cd apps/cli && npm version 4.0.0-alpha.1 --no-git-tag-version
259
+ git commit -am "release(v4): 4.0.0-alpha.1"
260
+ git tag agileflow-v4.0.0-alpha.1
261
+ git push origin v4 agileflow-v4.0.0-alpha.1
262
+ # .github/workflows/v4-publish.yml does the rest.
263
+ ```
301
264
 
302
- ### Fixed
303
- - Status line and welcome table formatting fixes
265
+ ### Not yet implemented
304
266
 
305
- ## [2.84.0] - 2026-01-11
267
+ - Plugin registry & loader (Phase 2).
268
+ - Installer sync engine (Phase 2 — ported from v3 `installer.js:349-455`).
269
+ - Content placeholder injector (Phase 2).
270
+ - Hook meta-orchestrator + 6 dispatchers (Phase 3).
271
+ - Core plugin content — Epic, Story, Status, Babysit (Phase 4).
272
+ - Skill validator, personalization injector, CI, npm publish (Phase 5).
273
+
274
+ ### Removed from v3
306
275
 
307
- ### Added
308
- - File awareness, smart merge, and simplified auto-update
309
-
310
- ## [2.83.0] - 2026-01-10
311
-
312
- ### Changed
313
- - Remove beta TUI dashboard - use slash commands instead
314
-
315
- ## [2.82.5] - 2026-01-10
316
-
317
- ### Fixed
318
- - Fix version detection to read from config.yaml
319
-
320
- ## [2.82.4] - 2026-01-10
321
-
322
- ### Fixed
323
- - Fix whats-new command to include CHANGELOG.md in installation
324
-
325
- ## [2.82.3] - 2026-01-09
326
-
327
- ### Fixed
328
- - Copy lib directory to .agileflow for script dependencies
329
-
330
- ## [2.82.2] - 2026-01-09
331
-
332
- ### Fixed
333
- - Installer now copies lib/ directory to .agileflow/lib/ for script dependencies
334
-
335
- ## [2.82.1] - 2026-01-09
336
-
337
- ### Fixed
338
- - Fix npm package missing lib directory
339
-
340
- ## [2.82.0] - 2026-01-09
341
-
342
- ### Added
343
- - Multi-agent orchestration patterns with batch, workflow, and choose commands
344
-
345
- ## [2.81.0] - 2026-01-09
346
-
347
- ### Added
348
- - Input validation, damage control refactor, and session merge flow
349
-
350
- ## [2.80.0] - 2026-01-09
351
-
352
- ### Added
353
- - Comprehensive documentation and docs site improvements
354
-
355
- ## [2.79.0] - 2026-01-09
356
-
357
- ### Added
358
- - Damage Control protection, Visual Mode, and self-improving skills
359
-
360
- ## [2.78.0] - 2026-01-08
361
-
362
- ### Added
363
- - Enhanced compact context preservation with damage control hooks
364
-
365
- ## [2.77.0] - 2026-01-01
366
-
367
- ### Added
368
- - Vibrant 256-color palette with enhanced status line
369
-
370
- ## [2.76.0] - 2026-01-01
371
-
372
- ### Added
373
- - Ralph Loop autonomous story processing with Stop hook support
374
-
375
- ## [2.75.0] - 2026-01-01
376
-
377
- ### Added
378
- - Restructure context/research commands into subdirectories with stuck detection
379
-
380
- ## [2.74.0] - 2025-12-31
381
-
382
- ### Added
383
- - Script repair and diagnostics for /configure command
384
-
385
- ## [2.73.0] - 2025-12-29
386
-
387
- ### Changed
388
- - Consolidate scripts in .agileflow/scripts with updated hook paths
389
-
390
- ## [2.72.0] - 2025-12-29
391
-
392
- ### Added
393
- - Move scripts to .agileflow/scripts directory
394
-
395
- ## [2.71.0] - 2025-12-29
396
-
397
- ### Added
398
- - Outdated script detection with upgrade command and 30-day archival default
399
-
400
- ## [2.70.0] - 2025-12-29
401
-
402
- ### Fixed
403
- - Configure script reads version dynamically from installed package
404
-
405
- ## [2.69.0] - 2025-12-29
406
-
407
- ### Added
408
- - Fix configure script to read version dynamically instead of hardcoded
409
-
410
- ## [2.68.0] - 2025-12-29
411
-
412
- ### Fixed
413
- - Remove Stop hook, simplify docs to npx-only installation
414
-
415
- ## [2.67.0] - 2025-12-29
416
-
417
- ### Added
418
- - Simplify installation to npx-only, remove global install recommendation
419
-
420
- ## [2.66.0] - 2025-12-29
421
-
422
- ### Added
423
- - Remove unreliable Stop hook, improve global CLI messaging
424
-
425
- ## [2.65.0] - 2025-12-29
426
-
427
- ### Added
428
- - Improved outdated global CLI messaging and guidance
429
-
430
- ## [2.64.0] - 2025-12-29
431
-
432
- ### Changed
433
- - Fix version detection in welcome script for user projects
434
-
435
- ## [2.63.0] - 2025-12-27
436
-
437
- ### Added
438
- - Per-IDE options for update and uninstall commands
439
-
440
- ## [2.62.0] - 2025-12-27
441
-
442
- ### Added
443
- - Dynamic skill generation with research-driven MCP integration
444
-
445
- ## [2.61.0] - 2025-12-27
446
-
447
- ### Fixed
448
- - Fixed changelog entry formatting and version comparison links
449
-
450
- ## [2.60.0] - 2025-12-27
451
-
452
- ### Changed
453
- - Standardized changelog format with human-readable summaries
454
-
455
- ## [2.59.0] - 2025-12-27
456
-
457
- ### Changed
458
- - Automated CHANGELOG.md updates in release script
459
-
460
- ## [2.58.0] - 2025-12-27
461
-
462
- ### Added
463
- - Auto-update configuration via `/agileflow:configure --enable=autoupdate`
464
-
465
- ### Fixed
466
- - Metadata merge for nested `updates` object in configure script
467
-
468
- ## [2.57.0] - 2025-12-27
469
-
470
- ### Added
471
- - Auto-update system with configurable check frequency
472
- - Update notifications in welcome message and status line
473
- - Changelog display after updates showing what's new
474
- - `/agileflow:whats-new` command for viewing full changelog
475
-
476
- ## [2.56.0] - 2025-12-27
477
-
478
- ### Added
479
- - Dynamic IDE discovery with auto-detection from handlers
480
- - OpenAI Codex CLI now appears in setup IDE selection
481
-
482
- ### Changed
483
- - Replaced hardcoded IDE list with dynamic loading from IdeManager
484
-
485
- ## [2.55.0] - 2025-12-26
486
-
487
- ### Changed
488
- - Consolidated code improvements and debugging enhancements
489
-
490
- ## [2.54.0] - 2025-12-26
491
-
492
- ### Added
493
- - Test suites for generators, npm-utils, and version-checker
494
-
495
- ## [2.53.0] - 2025-12-25
496
-
497
- ### Added
498
- - Session manager for parallel session detection
499
- - Warning when multiple Claude sessions active
500
-
501
- ## [2.52.0] - 2025-12-24
502
-
503
- ### Added
504
- - PreCompact hook for context preservation during compacts
505
-
506
- ## [2.51.0] - 2025-12-23
507
-
508
- ### Added
509
- - OpenAI Codex CLI integration
510
-
511
- ## [2.50.0] - 2025-12-22
512
-
513
- ### Added
514
- - Windsurf and Cursor IDE support
515
-
516
- ## [2.45.0] - 2025-12-20
517
-
518
- ### Added
519
- - Auto-archival system for completed stories
520
-
521
- ## [2.40.0] - 2025-12-18
522
-
523
- ### Added
524
- - Hooks system for event-driven automation
525
- - Status line integration for Claude Code
526
-
527
- [Unreleased]: https://github.com/projectquestorg/AgileFlow/compare/v2.60.0...HEAD
528
- [2.60.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.59.0...v2.60.0
529
- [2.59.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.58.0...v2.59.0
530
- [2.58.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.57.0...v2.58.0
531
- [2.57.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.56.0...v2.57.0
532
- [2.56.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.55.0...v2.56.0
533
- [2.55.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.54.0...v2.55.0
534
- [2.54.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.53.0...v2.54.0
535
- [2.53.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.52.0...v2.53.0
536
- [2.52.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.51.0...v2.52.0
537
- [2.51.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.50.0...v2.51.0
538
- [2.50.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.45.0...v2.50.0
539
- [2.45.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.40.0...v2.45.0
540
- [2.40.0]: https://github.com/projectquestorg/AgileFlow/releases/tag/v2.40.0
276
+ - `packages/cli/` renamed to `agileflow-v3-legacy` on the `v4` branch (workspace collision prevention). v3 continues to ship from `main`.