agileflow 3.4.2 → 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 (766) hide show
  1. package/CHANGELOG.md +235 -494
  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/claude-cli-bridge.js +0 -215
  57. package/lib/codebase-indexer.js +0 -819
  58. package/lib/colors.generated.js +0 -117
  59. package/lib/colors.js +0 -341
  60. package/lib/consent.js +0 -232
  61. package/lib/content-sanitizer.js +0 -464
  62. package/lib/correlation.js +0 -277
  63. package/lib/dashboard-automations.js +0 -130
  64. package/lib/dashboard-git.js +0 -254
  65. package/lib/dashboard-inbox.js +0 -64
  66. package/lib/dashboard-protocol.js +0 -605
  67. package/lib/dashboard-server.js +0 -1296
  68. package/lib/dashboard-session.js +0 -136
  69. package/lib/dashboard-status.js +0 -72
  70. package/lib/dashboard-terminal.js +0 -354
  71. package/lib/dashboard-websocket.js +0 -88
  72. package/lib/drivers/claude-driver.ts +0 -312
  73. package/lib/drivers/codex-driver.ts +0 -464
  74. package/lib/drivers/driver-manager.ts +0 -159
  75. package/lib/drivers/gemini-driver.ts +0 -498
  76. package/lib/drivers/index.ts +0 -17
  77. package/lib/error-codes.js +0 -590
  78. package/lib/errors.js +0 -670
  79. package/lib/feature-flags.js +0 -171
  80. package/lib/feedback.js +0 -595
  81. package/lib/file-cache.js +0 -541
  82. package/lib/flag-detection.js +0 -344
  83. package/lib/format-error.js +0 -156
  84. package/lib/gate-runner.js +0 -282
  85. package/lib/generator-factory.js +0 -333
  86. package/lib/git-operations.js +0 -266
  87. package/lib/lazy-require.js +0 -59
  88. package/lib/lock-file.js +0 -144
  89. package/lib/logger.js +0 -106
  90. package/lib/merge-operations.js +0 -1006
  91. package/lib/path-resolver.js +0 -544
  92. package/lib/path-utils.js +0 -49
  93. package/lib/paths.js +0 -291
  94. package/lib/placeholder-registry.js +0 -822
  95. package/lib/process-executor.js +0 -214
  96. package/lib/progress.js +0 -334
  97. package/lib/protocol/driver.ts +0 -354
  98. package/lib/protocol/index.ts +0 -12
  99. package/lib/protocol/ir.ts +0 -271
  100. package/lib/registry-cache.js +0 -80
  101. package/lib/registry-di.js +0 -358
  102. package/lib/result-schema.js +0 -363
  103. package/lib/result.js +0 -210
  104. package/lib/session-display.js +0 -331
  105. package/lib/session-operations.js +0 -611
  106. package/lib/session-registry.js +0 -484
  107. package/lib/session-state-machine.js +0 -465
  108. package/lib/session-switching.js +0 -191
  109. package/lib/skill-loader.js +0 -213
  110. package/lib/smart-json-file.js +0 -682
  111. package/lib/state-machine.js +0 -286
  112. package/lib/table-formatter.js +0 -519
  113. package/lib/template-loader.js +0 -143
  114. package/lib/transient-status.js +0 -374
  115. package/lib/ui-manager.js +0 -612
  116. package/lib/validate-args.js +0 -213
  117. package/lib/validate-commands.js +0 -308
  118. package/lib/validate-names.js +0 -143
  119. package/lib/validate-paths.js +0 -434
  120. package/lib/validate.js +0 -134
  121. package/lib/worktree-operations.js +0 -201
  122. package/lib/yaml-utils.js +0 -164
  123. package/scripts/README.md +0 -267
  124. package/scripts/af +0 -34
  125. package/scripts/agent-loop.js +0 -819
  126. package/scripts/agileflow-configure.js +0 -368
  127. package/scripts/agileflow-statusline.sh +0 -857
  128. package/scripts/agileflow-welcome.js +0 -2246
  129. package/scripts/api-server-runner.js +0 -177
  130. package/scripts/archive-completed-stories.sh +0 -308
  131. package/scripts/auto-self-improve.js +0 -326
  132. package/scripts/automation-run-due.js +0 -128
  133. package/scripts/babysit-clear-restore.js +0 -154
  134. package/scripts/babysit-context-restore.js +0 -89
  135. package/scripts/backfill-ideation-status.js +0 -128
  136. package/scripts/batch-pmap-loop.js +0 -551
  137. package/scripts/check-update.js +0 -282
  138. package/scripts/ci-summary.js +0 -294
  139. package/scripts/claude-smart.sh +0 -85
  140. package/scripts/claude-tmux.sh +0 -737
  141. package/scripts/claude-watchdog.sh +0 -225
  142. package/scripts/clear-active-command.js +0 -48
  143. package/scripts/compress-status.sh +0 -116
  144. package/scripts/context-loader.js +0 -310
  145. package/scripts/damage-control/bash-tool-damage-control.js +0 -22
  146. package/scripts/damage-control/edit-tool-damage-control.js +0 -19
  147. package/scripts/damage-control/patterns.yaml +0 -227
  148. package/scripts/damage-control/write-tool-damage-control.js +0 -19
  149. package/scripts/damage-control-bash.js +0 -51
  150. package/scripts/damage-control-edit.js +0 -48
  151. package/scripts/damage-control-multi-agent.js +0 -231
  152. package/scripts/damage-control-write.js +0 -48
  153. package/scripts/dashboard-serve.js +0 -336
  154. package/scripts/dependency-check.js +0 -311
  155. package/scripts/document-repl.js +0 -793
  156. package/scripts/expertise-metrics.sh +0 -264
  157. package/scripts/generate-all.sh +0 -77
  158. package/scripts/generate-colors.js +0 -314
  159. package/scripts/generators/agent-registry.js +0 -183
  160. package/scripts/generators/command-registry.js +0 -166
  161. package/scripts/generators/index.js +0 -85
  162. package/scripts/generators/inject-babysit.js +0 -191
  163. package/scripts/generators/inject-help.js +0 -125
  164. package/scripts/generators/inject-readme.js +0 -166
  165. package/scripts/generators/skill-registry.js +0 -188
  166. package/scripts/get-env.js +0 -225
  167. package/scripts/init.sh +0 -76
  168. package/scripts/lib/README-portable-tasks.md +0 -424
  169. package/scripts/lib/ac-test-matcher.js +0 -452
  170. package/scripts/lib/audit-cleanup.js +0 -250
  171. package/scripts/lib/audit-registry.js +0 -340
  172. package/scripts/lib/automation-registry.js +0 -544
  173. package/scripts/lib/automation-runner.js +0 -476
  174. package/scripts/lib/browser-qa-evidence.js +0 -409
  175. package/scripts/lib/browser-qa-status.js +0 -192
  176. package/scripts/lib/bus-utils.js +0 -473
  177. package/scripts/lib/colors.generated.sh +0 -82
  178. package/scripts/lib/colors.sh +0 -46
  179. package/scripts/lib/command-prereqs.js +0 -280
  180. package/scripts/lib/concurrency-limiter.js +0 -511
  181. package/scripts/lib/configure-detect.js +0 -596
  182. package/scripts/lib/configure-features.js +0 -1927
  183. package/scripts/lib/configure-repair.js +0 -327
  184. package/scripts/lib/configure-utils.js +0 -114
  185. package/scripts/lib/context-formatter.js +0 -1158
  186. package/scripts/lib/context-loader.js +0 -840
  187. package/scripts/lib/counter.js +0 -103
  188. package/scripts/lib/damage-control-utils.js +0 -619
  189. package/scripts/lib/feature-catalog.js +0 -332
  190. package/scripts/lib/file-lock.js +0 -392
  191. package/scripts/lib/file-tracking.js +0 -735
  192. package/scripts/lib/frontmatter-parser.js +0 -133
  193. package/scripts/lib/gate-enforcer.js +0 -295
  194. package/scripts/lib/hook-metrics.js +0 -324
  195. package/scripts/lib/ideation-index.js +0 -1205
  196. package/scripts/lib/json-utils.sh +0 -162
  197. package/scripts/lib/lifecycle-detector.js +0 -125
  198. package/scripts/lib/model-profiles.js +0 -118
  199. package/scripts/lib/portable-tasks-cli.js +0 -274
  200. package/scripts/lib/portable-tasks.js +0 -479
  201. package/scripts/lib/process-cleanup.js +0 -527
  202. package/scripts/lib/quality-gates.js +0 -761
  203. package/scripts/lib/scale-detector.js +0 -396
  204. package/scripts/lib/sessionRegistry.js +0 -678
  205. package/scripts/lib/signal-detectors.js +0 -880
  206. package/scripts/lib/skill-catalog.js +0 -557
  207. package/scripts/lib/skill-recommender.js +0 -311
  208. package/scripts/lib/state-migrator.js +0 -353
  209. package/scripts/lib/status-task-bridge.js +0 -522
  210. package/scripts/lib/status-writer.js +0 -255
  211. package/scripts/lib/story-claiming.js +0 -704
  212. package/scripts/lib/story-state-machine.js +0 -437
  213. package/scripts/lib/sync-ideation-status.js +0 -291
  214. package/scripts/lib/task-registry-cache.js +0 -490
  215. package/scripts/lib/task-registry.js +0 -1191
  216. package/scripts/lib/task-sync.js +0 -230
  217. package/scripts/lib/tdd-phase-manager.js +0 -455
  218. package/scripts/lib/team-events.js +0 -510
  219. package/scripts/lib/tmux-audit-monitor.js +0 -611
  220. package/scripts/lib/tmux-group-colors.js +0 -113
  221. package/scripts/lib/tool-registry.yaml +0 -241
  222. package/scripts/lib/tool-shed.js +0 -441
  223. package/scripts/lib/validation-registry.js +0 -177
  224. package/scripts/messaging-bridge.js +0 -561
  225. package/scripts/migrate-ideation-index.js +0 -553
  226. package/scripts/native-team-observer.js +0 -219
  227. package/scripts/obtain-context.js +0 -272
  228. package/scripts/pre-push-check.sh +0 -46
  229. package/scripts/precompact-context.sh +0 -306
  230. package/scripts/query-codebase.js +0 -543
  231. package/scripts/ralph-loop.js +0 -1278
  232. package/scripts/resume-session.sh +0 -121
  233. package/scripts/screenshot-verifier.js +0 -215
  234. package/scripts/session-boundary.js +0 -138
  235. package/scripts/session-coordinator.sh +0 -232
  236. package/scripts/session-manager.js +0 -546
  237. package/scripts/smart-detect.js +0 -449
  238. package/scripts/spawn-audit-sessions.js +0 -877
  239. package/scripts/spawn-parallel.js +0 -751
  240. package/scripts/strip-ai-attribution.js +0 -63
  241. package/scripts/task-completed-gate.js +0 -237
  242. package/scripts/team-manager.js +0 -596
  243. package/scripts/team-status-display.js +0 -200
  244. package/scripts/teammate-idle-gate.js +0 -237
  245. package/scripts/test-session-boundary.js +0 -80
  246. package/scripts/tmux-close-windows.sh +0 -180
  247. package/scripts/tmux-restore-window.sh +0 -67
  248. package/scripts/tmux-save-closed-window.sh +0 -35
  249. package/scripts/tui/App.js +0 -151
  250. package/scripts/tui/Dashboard.js +0 -277
  251. package/scripts/tui/blessed/data/watcher.js +0 -180
  252. package/scripts/tui/blessed/index.js +0 -244
  253. package/scripts/tui/blessed/panels/output.js +0 -101
  254. package/scripts/tui/blessed/panels/sessions.js +0 -150
  255. package/scripts/tui/blessed/panels/trace.js +0 -97
  256. package/scripts/tui/blessed/ui/help.js +0 -77
  257. package/scripts/tui/blessed/ui/screen.js +0 -52
  258. package/scripts/tui/blessed/ui/statusbar.js +0 -47
  259. package/scripts/tui/blessed/ui/tabbar.js +0 -99
  260. package/scripts/tui/index.js +0 -70
  261. package/scripts/tui/lib/crashRecovery.js +0 -304
  262. package/scripts/tui/lib/eventStream.js +0 -309
  263. package/scripts/tui/lib/keyboard.js +0 -261
  264. package/scripts/tui/lib/loopControl.js +0 -371
  265. package/scripts/tui/panels/OutputPanel.js +0 -240
  266. package/scripts/tui/panels/SessionPanel.js +0 -170
  267. package/scripts/tui/panels/TracePanel.js +0 -298
  268. package/scripts/tui/simple-tui.js +0 -510
  269. package/scripts/validate-expertise.sh +0 -263
  270. package/scripts/validate-tokens.sh +0 -73
  271. package/scripts/validators/README.md +0 -143
  272. package/scripts/validators/component-validator.js +0 -239
  273. package/scripts/validators/json-schema-validator.js +0 -186
  274. package/scripts/validators/markdown-validator.js +0 -152
  275. package/scripts/validators/migration-validator.js +0 -129
  276. package/scripts/validators/security-validator.js +0 -380
  277. package/scripts/validators/story-format-validator.js +0 -197
  278. package/scripts/validators/test-result-validator.js +0 -114
  279. package/scripts/validators/workflow-validator.js +0 -247
  280. package/scripts/welcome-deferred.js +0 -437
  281. package/scripts/worktree-create.sh +0 -111
  282. package/src/core/agents/a11y-analyzer-aria.md +0 -155
  283. package/src/core/agents/a11y-analyzer-forms.md +0 -162
  284. package/src/core/agents/a11y-analyzer-keyboard.md +0 -175
  285. package/src/core/agents/a11y-analyzer-semantic.md +0 -153
  286. package/src/core/agents/a11y-analyzer-visual.md +0 -158
  287. package/src/core/agents/a11y-consensus.md +0 -248
  288. package/src/core/agents/accessibility.md +0 -515
  289. package/src/core/agents/adr-writer.md +0 -463
  290. package/src/core/agents/ads-audit-budget.md +0 -181
  291. package/src/core/agents/ads-audit-compliance.md +0 -169
  292. package/src/core/agents/ads-audit-creative.md +0 -164
  293. package/src/core/agents/ads-audit-google.md +0 -226
  294. package/src/core/agents/ads-audit-meta.md +0 -183
  295. package/src/core/agents/ads-audit-tracking.md +0 -197
  296. package/src/core/agents/ads-consensus.md +0 -396
  297. package/src/core/agents/ads-generate.md +0 -145
  298. package/src/core/agents/ads-performance-tracker.md +0 -197
  299. package/src/core/agents/analytics.md +0 -617
  300. package/src/core/agents/api-quality-analyzer-conventions.md +0 -148
  301. package/src/core/agents/api-quality-analyzer-docs.md +0 -176
  302. package/src/core/agents/api-quality-analyzer-errors.md +0 -183
  303. package/src/core/agents/api-quality-analyzer-pagination.md +0 -171
  304. package/src/core/agents/api-quality-analyzer-versioning.md +0 -143
  305. package/src/core/agents/api-quality-consensus.md +0 -214
  306. package/src/core/agents/api-validator.md +0 -183
  307. package/src/core/agents/api.md +0 -665
  308. package/src/core/agents/arch-analyzer-circular.md +0 -148
  309. package/src/core/agents/arch-analyzer-complexity.md +0 -171
  310. package/src/core/agents/arch-analyzer-coupling.md +0 -146
  311. package/src/core/agents/arch-analyzer-layering.md +0 -151
  312. package/src/core/agents/arch-analyzer-patterns.md +0 -162
  313. package/src/core/agents/arch-consensus.md +0 -227
  314. package/src/core/agents/brainstorm-analyzer-features.md +0 -169
  315. package/src/core/agents/brainstorm-analyzer-growth.md +0 -161
  316. package/src/core/agents/brainstorm-analyzer-integration.md +0 -172
  317. package/src/core/agents/brainstorm-analyzer-market.md +0 -147
  318. package/src/core/agents/brainstorm-analyzer-ux.md +0 -167
  319. package/src/core/agents/brainstorm-consensus.md +0 -237
  320. package/src/core/agents/browser-qa.md +0 -328
  321. package/src/core/agents/ci.md +0 -511
  322. package/src/core/agents/code-reviewer.md +0 -288
  323. package/src/core/agents/codebase-query.md +0 -266
  324. package/src/core/agents/completeness-analyzer-api.md +0 -190
  325. package/src/core/agents/completeness-analyzer-conditional.md +0 -201
  326. package/src/core/agents/completeness-analyzer-handlers.md +0 -159
  327. package/src/core/agents/completeness-analyzer-imports.md +0 -159
  328. package/src/core/agents/completeness-analyzer-routes.md +0 -182
  329. package/src/core/agents/completeness-analyzer-state.md +0 -188
  330. package/src/core/agents/completeness-analyzer-stubs.md +0 -198
  331. package/src/core/agents/completeness-consensus.md +0 -286
  332. package/src/core/agents/compliance.md +0 -509
  333. package/src/core/agents/council-advocate.md +0 -206
  334. package/src/core/agents/council-analyst.md +0 -252
  335. package/src/core/agents/council-optimist.md +0 -170
  336. package/src/core/agents/database.md +0 -601
  337. package/src/core/agents/datamigration.md +0 -699
  338. package/src/core/agents/design.md +0 -525
  339. package/src/core/agents/devops.md +0 -720
  340. package/src/core/agents/documentation.md +0 -504
  341. package/src/core/agents/epic-planner.md +0 -480
  342. package/src/core/agents/error-analyzer.md +0 -201
  343. package/src/core/agents/integrations.md +0 -603
  344. package/src/core/agents/legal-analyzer-a11y.md +0 -110
  345. package/src/core/agents/legal-analyzer-ai.md +0 -117
  346. package/src/core/agents/legal-analyzer-consumer.md +0 -108
  347. package/src/core/agents/legal-analyzer-content.md +0 -113
  348. package/src/core/agents/legal-analyzer-international.md +0 -115
  349. package/src/core/agents/legal-analyzer-licensing.md +0 -115
  350. package/src/core/agents/legal-analyzer-privacy.md +0 -108
  351. package/src/core/agents/legal-analyzer-security.md +0 -112
  352. package/src/core/agents/legal-analyzer-terms.md +0 -111
  353. package/src/core/agents/legal-consensus.md +0 -242
  354. package/src/core/agents/logic-analyzer-edge.md +0 -170
  355. package/src/core/agents/logic-analyzer-flow.md +0 -253
  356. package/src/core/agents/logic-analyzer-invariant.md +0 -206
  357. package/src/core/agents/logic-analyzer-race.md +0 -266
  358. package/src/core/agents/logic-analyzer-type.md +0 -217
  359. package/src/core/agents/logic-consensus.md +0 -253
  360. package/src/core/agents/mentor.md +0 -654
  361. package/src/core/agents/mobile.md +0 -501
  362. package/src/core/agents/monitoring.md +0 -537
  363. package/src/core/agents/multi-expert.md +0 -311
  364. package/src/core/agents/orchestrator.md +0 -749
  365. package/src/core/agents/perf-analyzer-assets.md +0 -174
  366. package/src/core/agents/perf-analyzer-bundle.md +0 -165
  367. package/src/core/agents/perf-analyzer-caching.md +0 -160
  368. package/src/core/agents/perf-analyzer-compute.md +0 -165
  369. package/src/core/agents/perf-analyzer-memory.md +0 -182
  370. package/src/core/agents/perf-analyzer-network.md +0 -157
  371. package/src/core/agents/perf-analyzer-queries.md +0 -155
  372. package/src/core/agents/perf-analyzer-rendering.md +0 -156
  373. package/src/core/agents/perf-consensus.md +0 -280
  374. package/src/core/agents/performance.md +0 -492
  375. package/src/core/agents/product.md +0 -535
  376. package/src/core/agents/qa.md +0 -765
  377. package/src/core/agents/readme-updater.md +0 -579
  378. package/src/core/agents/refactor.md +0 -558
  379. package/src/core/agents/research.md +0 -453
  380. package/src/core/agents/rlm-subcore.md +0 -207
  381. package/src/core/agents/schema-validator.md +0 -454
  382. package/src/core/agents/security-analyzer-api.md +0 -199
  383. package/src/core/agents/security-analyzer-auth.md +0 -160
  384. package/src/core/agents/security-analyzer-authz.md +0 -168
  385. package/src/core/agents/security-analyzer-deps.md +0 -147
  386. package/src/core/agents/security-analyzer-infra.md +0 -176
  387. package/src/core/agents/security-analyzer-injection.md +0 -148
  388. package/src/core/agents/security-analyzer-input.md +0 -191
  389. package/src/core/agents/security-analyzer-secrets.md +0 -175
  390. package/src/core/agents/security-consensus.md +0 -276
  391. package/src/core/agents/security.md +0 -486
  392. package/src/core/agents/seo-analyzer-content.md +0 -167
  393. package/src/core/agents/seo-analyzer-images.md +0 -187
  394. package/src/core/agents/seo-analyzer-performance.md +0 -206
  395. package/src/core/agents/seo-analyzer-schema.md +0 -176
  396. package/src/core/agents/seo-analyzer-sitemap.md +0 -172
  397. package/src/core/agents/seo-analyzer-technical.md +0 -144
  398. package/src/core/agents/seo-consensus.md +0 -289
  399. package/src/core/agents/team-coordinator.md +0 -333
  400. package/src/core/agents/team-lead.md +0 -171
  401. package/src/core/agents/test-analyzer-assertions.md +0 -181
  402. package/src/core/agents/test-analyzer-coverage.md +0 -183
  403. package/src/core/agents/test-analyzer-fragility.md +0 -185
  404. package/src/core/agents/test-analyzer-integration.md +0 -155
  405. package/src/core/agents/test-analyzer-maintenance.md +0 -173
  406. package/src/core/agents/test-analyzer-mocking.md +0 -178
  407. package/src/core/agents/test-analyzer-patterns.md +0 -189
  408. package/src/core/agents/test-analyzer-structure.md +0 -177
  409. package/src/core/agents/test-consensus.md +0 -294
  410. package/src/core/agents/testing.md +0 -527
  411. package/src/core/agents/ui-validator.md +0 -331
  412. package/src/core/agents/ui.md +0 -1227
  413. package/src/core/commands/adr/list.md +0 -191
  414. package/src/core/commands/adr/update.md +0 -258
  415. package/src/core/commands/adr/view.md +0 -274
  416. package/src/core/commands/adr.md +0 -394
  417. package/src/core/commands/ads/audit.md +0 -437
  418. package/src/core/commands/ads/budget.md +0 -97
  419. package/src/core/commands/ads/competitor.md +0 -112
  420. package/src/core/commands/ads/creative.md +0 -85
  421. package/src/core/commands/ads/generate.md +0 -238
  422. package/src/core/commands/ads/google.md +0 -112
  423. package/src/core/commands/ads/health.md +0 -327
  424. package/src/core/commands/ads/landing.md +0 -119
  425. package/src/core/commands/ads/linkedin.md +0 -112
  426. package/src/core/commands/ads/meta.md +0 -91
  427. package/src/core/commands/ads/microsoft.md +0 -115
  428. package/src/core/commands/ads/plan.md +0 -321
  429. package/src/core/commands/ads/test-plan.md +0 -317
  430. package/src/core/commands/ads/tiktok.md +0 -129
  431. package/src/core/commands/ads/track.md +0 -288
  432. package/src/core/commands/ads/youtube.md +0 -124
  433. package/src/core/commands/ads.md +0 -140
  434. package/src/core/commands/agent.md +0 -256
  435. package/src/core/commands/api.md +0 -267
  436. package/src/core/commands/assign.md +0 -369
  437. package/src/core/commands/audit.md +0 -531
  438. package/src/core/commands/auto.md +0 -556
  439. package/src/core/commands/automate.md +0 -415
  440. package/src/core/commands/babysit.md +0 -643
  441. package/src/core/commands/baseline.md +0 -743
  442. package/src/core/commands/batch.md +0 -551
  443. package/src/core/commands/blockers.md +0 -602
  444. package/src/core/commands/board.md +0 -509
  445. package/src/core/commands/browser-qa.md +0 -240
  446. package/src/core/commands/changelog.md +0 -582
  447. package/src/core/commands/choose.md +0 -430
  448. package/src/core/commands/ci.md +0 -330
  449. package/src/core/commands/code/accessibility.md +0 -347
  450. package/src/core/commands/code/api.md +0 -297
  451. package/src/core/commands/code/architecture.md +0 -297
  452. package/src/core/commands/code/completeness.md +0 -503
  453. package/src/core/commands/code/legal.md +0 -493
  454. package/src/core/commands/code/logic.md +0 -416
  455. package/src/core/commands/code/performance.md +0 -490
  456. package/src/core/commands/code/security.md +0 -493
  457. package/src/core/commands/code/test.md +0 -489
  458. package/src/core/commands/compress.md +0 -408
  459. package/src/core/commands/configure.md +0 -1159
  460. package/src/core/commands/context/export.md +0 -296
  461. package/src/core/commands/context/full.md +0 -353
  462. package/src/core/commands/context/note.md +0 -380
  463. package/src/core/commands/council.md +0 -592
  464. package/src/core/commands/debt.md +0 -491
  465. package/src/core/commands/deploy.md +0 -864
  466. package/src/core/commands/deps.md +0 -728
  467. package/src/core/commands/diagnose.md +0 -404
  468. package/src/core/commands/docs.md +0 -469
  469. package/src/core/commands/epic/edit.md +0 -213
  470. package/src/core/commands/epic/list.md +0 -190
  471. package/src/core/commands/epic/view.md +0 -267
  472. package/src/core/commands/epic.md +0 -477
  473. package/src/core/commands/export.md +0 -238
  474. package/src/core/commands/feedback.md +0 -603
  475. package/src/core/commands/handoff.md +0 -386
  476. package/src/core/commands/help.md +0 -194
  477. package/src/core/commands/ideate/brief.md +0 -363
  478. package/src/core/commands/ideate/discover.md +0 -399
  479. package/src/core/commands/ideate/features.md +0 -496
  480. package/src/core/commands/ideate/history.md +0 -403
  481. package/src/core/commands/ideate/new.md +0 -899
  482. package/src/core/commands/impact.md +0 -407
  483. package/src/core/commands/install.md +0 -529
  484. package/src/core/commands/learn/explain.md +0 -118
  485. package/src/core/commands/learn/glossary.md +0 -135
  486. package/src/core/commands/learn/patterns.md +0 -138
  487. package/src/core/commands/learn/tour.md +0 -126
  488. package/src/core/commands/maintain.md +0 -558
  489. package/src/core/commands/metrics.md +0 -844
  490. package/src/core/commands/migrate/codemods.md +0 -151
  491. package/src/core/commands/migrate/plan.md +0 -131
  492. package/src/core/commands/migrate/scan.md +0 -114
  493. package/src/core/commands/migrate/validate.md +0 -119
  494. package/src/core/commands/multi-expert.md +0 -447
  495. package/src/core/commands/packages.md +0 -535
  496. package/src/core/commands/pr.md +0 -337
  497. package/src/core/commands/readme-sync.md +0 -329
  498. package/src/core/commands/research/analyze.md +0 -798
  499. package/src/core/commands/research/ask.md +0 -864
  500. package/src/core/commands/research/import.md +0 -1025
  501. package/src/core/commands/research/list.md +0 -273
  502. package/src/core/commands/research/synthesize.md +0 -928
  503. package/src/core/commands/research/view.md +0 -323
  504. package/src/core/commands/retro.md +0 -795
  505. package/src/core/commands/review.md +0 -694
  506. package/src/core/commands/rlm.md +0 -446
  507. package/src/core/commands/roadmap/analyze.md +0 -400
  508. package/src/core/commands/rpi.md +0 -633
  509. package/src/core/commands/seo/audit.md +0 -428
  510. package/src/core/commands/seo/competitor.md +0 -174
  511. package/src/core/commands/seo/content.md +0 -107
  512. package/src/core/commands/seo/geo.md +0 -229
  513. package/src/core/commands/seo/hreflang.md +0 -140
  514. package/src/core/commands/seo/images.md +0 -96
  515. package/src/core/commands/seo/page.md +0 -198
  516. package/src/core/commands/seo/plan.md +0 -163
  517. package/src/core/commands/seo/programmatic.md +0 -131
  518. package/src/core/commands/seo/references/cwv-thresholds.md +0 -64
  519. package/src/core/commands/seo/references/eeat-framework.md +0 -110
  520. package/src/core/commands/seo/references/quality-gates.md +0 -91
  521. package/src/core/commands/seo/references/schema-types.md +0 -102
  522. package/src/core/commands/seo/schema.md +0 -183
  523. package/src/core/commands/seo/sitemap.md +0 -97
  524. package/src/core/commands/seo/technical.md +0 -100
  525. package/src/core/commands/seo.md +0 -107
  526. package/src/core/commands/serve.md +0 -127
  527. package/src/core/commands/session/cleanup.md +0 -452
  528. package/src/core/commands/session/end.md +0 -865
  529. package/src/core/commands/session/history.md +0 -293
  530. package/src/core/commands/session/init.md +0 -210
  531. package/src/core/commands/session/new.md +0 -827
  532. package/src/core/commands/session/resume.md +0 -291
  533. package/src/core/commands/session/spawn.md +0 -205
  534. package/src/core/commands/session/status.md +0 -274
  535. package/src/core/commands/skill/list.md +0 -139
  536. package/src/core/commands/skill/recommend.md +0 -216
  537. package/src/core/commands/sprint.md +0 -714
  538. package/src/core/commands/status/undo.md +0 -191
  539. package/src/core/commands/status.md +0 -423
  540. package/src/core/commands/story/edit.md +0 -204
  541. package/src/core/commands/story/list.md +0 -199
  542. package/src/core/commands/story/view.md +0 -312
  543. package/src/core/commands/story-validate.md +0 -491
  544. package/src/core/commands/story.md +0 -465
  545. package/src/core/commands/tdd-next.md +0 -238
  546. package/src/core/commands/tdd.md +0 -211
  547. package/src/core/commands/team/guide.md +0 -688
  548. package/src/core/commands/team/list.md +0 -59
  549. package/src/core/commands/team/start.md +0 -130
  550. package/src/core/commands/team/status.md +0 -66
  551. package/src/core/commands/team/stop.md +0 -78
  552. package/src/core/commands/template.md +0 -644
  553. package/src/core/commands/tests.md +0 -731
  554. package/src/core/commands/update.md +0 -591
  555. package/src/core/commands/validate-expertise.md +0 -305
  556. package/src/core/commands/velocity.md +0 -630
  557. package/src/core/commands/verify.md +0 -534
  558. package/src/core/commands/whats-new.md +0 -201
  559. package/src/core/commands/workflow.md +0 -449
  560. package/src/core/council/sessions/.gitkeep +0 -0
  561. package/src/core/council/shared_reasoning.template.md +0 -106
  562. package/src/core/experts/README.md +0 -236
  563. package/src/core/experts/_core-expertise.yaml +0 -105
  564. package/src/core/experts/accessibility/expertise.yaml +0 -115
  565. package/src/core/experts/accessibility/question.md +0 -41
  566. package/src/core/experts/accessibility/self-improve.md +0 -45
  567. package/src/core/experts/accessibility/workflow.md +0 -59
  568. package/src/core/experts/adr-writer/expertise.yaml +0 -138
  569. package/src/core/experts/adr-writer/question.md +0 -56
  570. package/src/core/experts/adr-writer/self-improve.md +0 -106
  571. package/src/core/experts/adr-writer/workflow.md +0 -184
  572. package/src/core/experts/analytics/expertise.yaml +0 -119
  573. package/src/core/experts/analytics/question.md +0 -74
  574. package/src/core/experts/analytics/self-improve.md +0 -163
  575. package/src/core/experts/analytics/workflow.md +0 -272
  576. package/src/core/experts/api/expertise.yaml +0 -124
  577. package/src/core/experts/api/question.md +0 -74
  578. package/src/core/experts/api/self-improve.md +0 -122
  579. package/src/core/experts/api/workflow.md +0 -248
  580. package/src/core/experts/ci/expertise.yaml +0 -106
  581. package/src/core/experts/ci/question.md +0 -69
  582. package/src/core/experts/ci/self-improve.md +0 -100
  583. package/src/core/experts/ci/workflow.md +0 -145
  584. package/src/core/experts/codebase-query/expertise.yaml +0 -121
  585. package/src/core/experts/codebase-query/question.md +0 -73
  586. package/src/core/experts/codebase-query/self-improve.md +0 -105
  587. package/src/core/experts/compliance/expertise.yaml +0 -101
  588. package/src/core/experts/compliance/question.md +0 -56
  589. package/src/core/experts/compliance/self-improve.md +0 -106
  590. package/src/core/experts/compliance/workflow.md +0 -184
  591. package/src/core/experts/database/expertise.yaml +0 -109
  592. package/src/core/experts/database/question.md +0 -74
  593. package/src/core/experts/database/self-improve.md +0 -121
  594. package/src/core/experts/database/workflow.md +0 -234
  595. package/src/core/experts/datamigration/expertise.yaml +0 -141
  596. package/src/core/experts/datamigration/question.md +0 -56
  597. package/src/core/experts/datamigration/self-improve.md +0 -106
  598. package/src/core/experts/datamigration/workflow.md +0 -184
  599. package/src/core/experts/design/expertise.yaml +0 -116
  600. package/src/core/experts/design/question.md +0 -56
  601. package/src/core/experts/design/self-improve.md +0 -106
  602. package/src/core/experts/design/workflow.md +0 -184
  603. package/src/core/experts/devops/expertise.yaml +0 -116
  604. package/src/core/experts/devops/question.md +0 -68
  605. package/src/core/experts/devops/self-improve.md +0 -102
  606. package/src/core/experts/devops/workflow.md +0 -142
  607. package/src/core/experts/documentation/expertise.yaml +0 -126
  608. package/src/core/experts/documentation/question.md +0 -41
  609. package/src/core/experts/documentation/self-improve.md +0 -45
  610. package/src/core/experts/documentation/workflow.md +0 -55
  611. package/src/core/experts/epic-planner/expertise.yaml +0 -144
  612. package/src/core/experts/epic-planner/question.md +0 -56
  613. package/src/core/experts/epic-planner/self-improve.md +0 -106
  614. package/src/core/experts/epic-planner/workflow.md +0 -184
  615. package/src/core/experts/integrations/expertise.yaml +0 -113
  616. package/src/core/experts/integrations/question.md +0 -74
  617. package/src/core/experts/integrations/self-improve.md +0 -151
  618. package/src/core/experts/integrations/workflow.md +0 -246
  619. package/src/core/experts/mentor/expertise.yaml +0 -125
  620. package/src/core/experts/mentor/question.md +0 -56
  621. package/src/core/experts/mentor/self-improve.md +0 -106
  622. package/src/core/experts/mentor/workflow.md +0 -184
  623. package/src/core/experts/mobile/expertise.yaml +0 -136
  624. package/src/core/experts/mobile/question.md +0 -72
  625. package/src/core/experts/mobile/self-improve.md +0 -140
  626. package/src/core/experts/mobile/workflow.md +0 -240
  627. package/src/core/experts/monitoring/expertise.yaml +0 -132
  628. package/src/core/experts/monitoring/question.md +0 -76
  629. package/src/core/experts/monitoring/self-improve.md +0 -150
  630. package/src/core/experts/monitoring/workflow.md +0 -264
  631. package/src/core/experts/performance/expertise.yaml +0 -68
  632. package/src/core/experts/performance/question.md +0 -41
  633. package/src/core/experts/performance/self-improve.md +0 -45
  634. package/src/core/experts/performance/workflow.md +0 -61
  635. package/src/core/experts/product/expertise.yaml +0 -143
  636. package/src/core/experts/product/question.md +0 -56
  637. package/src/core/experts/product/self-improve.md +0 -106
  638. package/src/core/experts/product/workflow.md +0 -184
  639. package/src/core/experts/qa/expertise.yaml +0 -110
  640. package/src/core/experts/qa/question.md +0 -56
  641. package/src/core/experts/qa/self-improve.md +0 -106
  642. package/src/core/experts/qa/workflow.md +0 -184
  643. package/src/core/experts/readme-updater/expertise.yaml +0 -141
  644. package/src/core/experts/readme-updater/question.md +0 -56
  645. package/src/core/experts/readme-updater/self-improve.md +0 -106
  646. package/src/core/experts/readme-updater/workflow.md +0 -184
  647. package/src/core/experts/refactor/expertise.yaml +0 -135
  648. package/src/core/experts/refactor/question.md +0 -41
  649. package/src/core/experts/refactor/self-improve.md +0 -45
  650. package/src/core/experts/refactor/workflow.md +0 -57
  651. package/src/core/experts/research/expertise.yaml +0 -143
  652. package/src/core/experts/research/question.md +0 -56
  653. package/src/core/experts/research/self-improve.md +0 -106
  654. package/src/core/experts/research/workflow.md +0 -184
  655. package/src/core/experts/security/expertise.yaml +0 -117
  656. package/src/core/experts/security/question.md +0 -77
  657. package/src/core/experts/security/self-improve.md +0 -102
  658. package/src/core/experts/security/workflow.md +0 -152
  659. package/src/core/experts/templates/expertise-template.yaml +0 -67
  660. package/src/core/experts/templates/question-template.md +0 -56
  661. package/src/core/experts/templates/self-improve-template.md +0 -106
  662. package/src/core/experts/templates/workflow-template.md +0 -184
  663. package/src/core/experts/testing/expertise.yaml +0 -112
  664. package/src/core/experts/testing/question.md +0 -68
  665. package/src/core/experts/testing/self-improve.md +0 -102
  666. package/src/core/experts/testing/workflow.md +0 -143
  667. package/src/core/experts/ui/expertise.yaml +0 -133
  668. package/src/core/experts/ui/question.md +0 -74
  669. package/src/core/experts/ui/self-improve.md +0 -122
  670. package/src/core/experts/ui/workflow.md +0 -262
  671. package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +0 -424
  672. package/src/core/knowledge/ads/ad-optimization-logic.md +0 -590
  673. package/src/core/knowledge/ads/ad-technical-specifications.md +0 -385
  674. package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +0 -506
  675. package/src/core/knowledge/ads/paid-advertising-research-2026.md +0 -445
  676. package/src/core/profiles/COMPARISON.md +0 -170
  677. package/src/core/profiles/README.md +0 -178
  678. package/src/core/profiles/claude-code.yaml +0 -111
  679. package/src/core/profiles/codex.yaml +0 -103
  680. package/src/core/profiles/cursor.yaml +0 -134
  681. package/src/core/profiles/examples.js +0 -250
  682. package/src/core/profiles/loader.js +0 -235
  683. package/src/core/profiles/windsurf.yaml +0 -159
  684. package/src/core/skills/_learnings/README.md +0 -91
  685. package/src/core/skills/_learnings/_template.yaml +0 -106
  686. package/src/core/skills/_learnings/code-review.yaml +0 -118
  687. package/src/core/skills/_learnings/commit.yaml +0 -69
  688. package/src/core/skills/_learnings/story-writer.yaml +0 -71
  689. package/src/core/teams/backend.json +0 -41
  690. package/src/core/teams/builder-validator.json +0 -51
  691. package/src/core/teams/code-review.json +0 -41
  692. package/src/core/teams/frontend.json +0 -41
  693. package/src/core/teams/fullstack.json +0 -41
  694. package/src/core/teams/logic-audit.json +0 -53
  695. package/src/core/teams/perf-audit.json +0 -71
  696. package/src/core/teams/qa.json +0 -41
  697. package/src/core/teams/security-audit.json +0 -71
  698. package/src/core/teams/solo.json +0 -35
  699. package/src/core/teams/test-audit.json +0 -71
  700. package/src/core/templates/CONTEXT.md.example +0 -49
  701. package/src/core/templates/README-template.md +0 -16
  702. package/src/core/templates/adr-template.md +0 -28
  703. package/src/core/templates/agent-coordination-pattern.md +0 -38
  704. package/src/core/templates/agent-profile-template.md +0 -51
  705. package/src/core/templates/agileflow-metadata.json +0 -150
  706. package/src/core/templates/browser-qa-spec.yaml +0 -94
  707. package/src/core/templates/ci-workflow.yml +0 -74
  708. package/src/core/templates/claude-settings.advanced.example.json +0 -75
  709. package/src/core/templates/claude-settings.example.json +0 -26
  710. package/src/core/templates/command-documentation.md +0 -187
  711. package/src/core/templates/command-prerequisites.yaml +0 -169
  712. package/src/core/templates/comms-note-template.md +0 -24
  713. package/src/core/templates/damage-control-patterns.yaml +0 -243
  714. package/src/core/templates/environment.json +0 -18
  715. package/src/core/templates/epic-template.md +0 -27
  716. package/src/core/templates/plan-template.md +0 -125
  717. package/src/core/templates/preserve-rules-common.md +0 -107
  718. package/src/core/templates/preserve-rules.json +0 -42
  719. package/src/core/templates/proactive-action-spec.md +0 -29
  720. package/src/core/templates/product-brief.md +0 -136
  721. package/src/core/templates/quality-gate-priorities.md +0 -34
  722. package/src/core/templates/research-template.md +0 -44
  723. package/src/core/templates/session-harness-protocol.md +0 -128
  724. package/src/core/templates/session-state.json +0 -56
  725. package/src/core/templates/story-lifecycle.md +0 -213
  726. package/src/core/templates/story-template.md +0 -92
  727. package/src/core/templates/tdd-test-template.js +0 -241
  728. package/src/core/templates/worktrees-guide.md +0 -231
  729. package/tools/agileflow-npx.js +0 -52
  730. package/tools/cli/agileflow-cli.js +0 -72
  731. package/tools/cli/commands/config.js +0 -285
  732. package/tools/cli/commands/doctor.js +0 -496
  733. package/tools/cli/commands/list.js +0 -385
  734. package/tools/cli/commands/serve.js +0 -492
  735. package/tools/cli/commands/session.js +0 -1176
  736. package/tools/cli/commands/setup.js +0 -255
  737. package/tools/cli/commands/status.js +0 -101
  738. package/tools/cli/commands/tui.js +0 -56
  739. package/tools/cli/commands/uninstall.js +0 -155
  740. package/tools/cli/commands/update.js +0 -299
  741. package/tools/cli/installers/core/installer.js +0 -892
  742. package/tools/cli/installers/ide/_base-ide.js +0 -518
  743. package/tools/cli/installers/ide/_interface.js +0 -238
  744. package/tools/cli/installers/ide/claude-code.js +0 -432
  745. package/tools/cli/installers/ide/codex.js +0 -426
  746. package/tools/cli/installers/ide/cursor.js +0 -217
  747. package/tools/cli/installers/ide/manager.js +0 -222
  748. package/tools/cli/installers/ide/windsurf.js +0 -282
  749. package/tools/cli/lib/command-context.js +0 -382
  750. package/tools/cli/lib/config-manager.js +0 -446
  751. package/tools/cli/lib/content-injector.js +0 -969
  752. package/tools/cli/lib/content-transformer.js +0 -496
  753. package/tools/cli/lib/docs-setup.js +0 -464
  754. package/tools/cli/lib/error-handler.js +0 -165
  755. package/tools/cli/lib/ide-error-factory.js +0 -421
  756. package/tools/cli/lib/ide-errors.js +0 -367
  757. package/tools/cli/lib/ide-generator.js +0 -357
  758. package/tools/cli/lib/ide-health-monitor.js +0 -364
  759. package/tools/cli/lib/ide-registry.js +0 -297
  760. package/tools/cli/lib/npm-utils.js +0 -103
  761. package/tools/cli/lib/self-update.js +0 -148
  762. package/tools/cli/lib/ui.js +0 -211
  763. package/tools/cli/lib/utils.js +0 -87
  764. package/tools/cli/lib/validation-middleware.js +0 -491
  765. package/tools/cli/lib/version-checker.js +0 -95
  766. package/tools/postinstall.js +0 -190
package/CHANGELOG.md CHANGED
@@ -1,535 +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.2] - 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
- - DEPTH=ultradeep|extreme for SEO and Ads audit commands
14
-
15
- ## [3.4.1] - 2026-03-06
16
-
17
- ### Added
18
- - DEPTH=extreme audit mode, CI feedback loops, and DX quick wins
19
-
20
- ## [3.4.0] - 2026-02-28
21
-
22
- ### Added
23
- - Ads audit system, SEO analysis, ultradeep concurrency controls, and domain-first command naming
24
-
25
- ## [3.3.0] - 2026-02-24
26
-
27
- ### Added
28
- - Per-agent file tracking, tmux restore, and completeness audit
29
-
30
- ## [3.2.1] - 2026-02-21
31
-
32
- ### Added
33
- - Agentic browser QA system with Playwright integration
34
-
35
- ## [3.2.0] - 2026-02-21
36
-
37
- ### Added
38
- - Cross-IDE capability profiles, multi-agent audit systems, and AI attribution blocking
39
-
40
- ## [3.1.0] - 2026-02-14
41
-
42
- ### Added
43
- - Legal audit system, native Agent Teams integration, and startup performance improvements
44
-
45
- ## [3.0.2] - 2026-02-14
46
-
47
- ### Added
48
- - Automatic tmux window naming and configuration agent consolidation
49
-
50
- ## [3.0.1] - 2026-02-13
51
-
52
- ### Fixed
53
- - Configure writes directly to Claude Code settings.json for Agent Teams and permissions
54
-
55
- ## [3.0.0] - 2026-02-13
56
-
57
- ### Added
58
- - Scale-adaptive architecture, smart tmux sessions, and team observability
59
-
60
- ## [2.99.8] - 2026-02-12
61
-
62
- ### Fixed
63
- - Simplify tmux keybindings and clean up status line
64
-
65
- ## [2.99.7] - 2026-02-11
66
-
67
- ### Fixed
68
- - Suppress tmux same-index message on session start
69
-
70
- ## [2.99.6] - 2026-02-09
71
-
72
- ### Fixed
73
- - Fix tmux session creation after reboot with atomic command
74
-
75
- ## [2.99.5] - 2026-02-09
76
-
77
- ### Fixed
78
- - Fix tmux startup after reboot by starting server before global options
79
-
80
- ## [2.99.4] - 2026-02-09
81
-
82
- ### Fixed
83
- - Fix tmux socket directory creation on macOS
84
-
85
- ## [2.99.3] - 2026-02-09
86
-
87
- ### Fixed
88
- - Auto-heal tmux socket directory after macOS reboot
89
-
90
- ## [2.99.2] - 2026-02-09
91
-
92
- ### Added
93
- - Documentation overhaul with teams commands, frontmatter fixes, and damage control resilience
94
-
95
- ## [2.99.1] - 2026-02-08
96
-
97
- ### Added
98
- - Smart session management with context-aware naming and tmux quick-create keybinds
99
-
100
- ## [2.99.0] - 2026-02-08
101
-
102
- ### Added
103
- - Security Hardening Phase 2 - path traversal, auth, CORS, ReDoS, rate limiting
104
-
105
- ## [2.98.1] - 2026-02-07
106
-
107
- ### Added
108
- - Fix alias dedup, add claude flags config, trim status line
109
-
110
- ## [2.98.0] - 2026-02-07
111
-
112
- ### Fixed
113
- - Shell injection cleanup, shared lib tests, and async I/O pipeline
114
-
115
- ## [2.97.0] - 2026-02-07
116
-
117
- ### Added
118
- - Native Agent Teams integration with quality gate hooks and dual-mode orchestration
119
-
120
- ## [2.96.6] - 2026-02-06
121
-
122
- ### Fixed
123
- - Force-overwrite internal scripts and lib files during updates to fix stale code
124
-
125
- ## [2.96.5] - 2026-02-06
126
-
127
- ### Fixed
128
- - Fix SessionStart hook crash when js-yaml not installed in user projects
129
-
130
- ## [2.96.4] - 2026-02-06
131
-
132
- ### Added
133
- - Command deduplication to fix duplicate slash commands in autocomplete
134
-
135
- ## [2.96.3] - 2026-02-06
136
-
137
- ### Fixed
138
- - Codex CLI subcommand support for nested commands
139
-
140
- ## [2.96.2] - 2026-02-06
141
-
142
- ### Fixed
143
- - Smart docs folder detection for existing AgileFlow installations
144
-
145
- ## [2.96.1] - 2026-02-06
146
-
147
- ### Fixed
148
- - Fix js-yaml module resolution in copied lib files
149
-
150
- ## [2.96.0] - 2026-02-05
151
-
152
- ### Added
153
- - Multi-agent logic analyzer, ideation enhancements, and serve improvements
154
-
155
- ## [2.95.3] - 2026-02-01
156
-
157
- ### Added
158
- - Fresh restart flag for tmux with conversation auto-resume
159
-
160
- ## [2.95.2] - 2026-02-01
161
-
162
- ### Changed
163
- - Fix damage control hook MODULE_NOT_FOUND error
164
-
165
- ## [2.95.1] - 2026-01-30
166
-
167
- ### Fixed
168
- - Fix stale doc counts and scoped npm audit
169
-
170
- ## [2.95.0] - 2026-01-30
171
-
172
- ### Added
173
- - Global session management commands (status, history, cleanup)
174
- - `/agileflow:install` and `/agileflow:maintain` commands for quick setup
175
- - Multi-expert Implementation Ideation in `/research:import` and `/research:analyze`
176
- - Plan file context preservation with experimental profile
177
- - Tmux freeze recovery keybinds and `--rescue` flag
178
- - Shellcheck CI job for shell script linting
179
-
180
- ### Fixed
181
- - Prevent worktree sessions from being marked as main
182
- - Prevent duplicate agents during install/update
183
- - Inline uncommitted changes handling for `/session:end`
184
-
185
- ## [2.94.1] - 2026-01-24
186
-
187
- ### Added
188
- - DEPTH=ultradeep mode for comprehensive 13-expert ideation
189
-
190
- ## [2.94.0] - 2026-01-24
191
-
192
- ### Added
193
- - Shared docs/ across sessions via symlink for multi-session coordination
194
-
195
- ## [2.93.0] - 2026-01-24
196
-
197
- ### Added
198
- - RLM document analysis and session health improvements
199
-
200
- ## [2.92.1] - 2026-01-23
201
-
202
- ### Added
203
- - Session worktree timeout, progress feedback, and docs folder copy
204
-
205
- ## [2.92.0] - 2026-01-23
206
-
207
- ### Added
208
- - Tmux integration, i18n docs, EP-0022 codebase health improvements
209
-
210
- ## [2.91.0] - 2026-01-20
211
-
212
- ### Added
213
- - GSD workflow integration, codebase query interface, and docs improvements
214
-
215
- ## [2.90.7] - 2026-01-17
216
-
217
- ### Fixed
218
- - Fix TUI bouncing with in-place rendering
219
-
220
- ## [2.90.6] - 2026-01-17
221
-
222
- ### Changed
223
- - Static TUI dashboard (no bouncing)
224
-
225
- ## [2.90.5] - 2026-01-17
226
-
227
- ### Added
228
- - Restore static dashboard command
229
-
230
- ## [2.90.4] - 2026-01-17
231
-
232
- ### Fixed
233
- - Fix TUI to use simple-tui by default
234
-
235
- ## [2.90.2] - 2026-01-17
51
+ ### Phase 2b slice 1 — Sync engine port
236
52
 
237
- ### Fixed
238
- - TUI CLI command fix
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.
239
54
 
240
- ## [2.90.1] - 2026-01-16
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**.
241
60
 
242
- ### Added
243
- - TUI as CLI command with session fixes
244
-
245
- ## [2.90.0] - 2026-01-16
246
-
247
- ### Added
248
- - TUI dashboard with session management and modular CLI architecture
249
-
250
- ## [2.89.3] - 2026-01-14
251
-
252
- ### Added
253
- - Security hardening with shell injection prevention and secret redaction
254
-
255
- ## [2.89.2] - 2026-01-14
256
-
257
- ### Fixed
258
- - Increase precompact preservation window to 10 minutes
259
-
260
- ## [2.89.1] - 2026-01-14
261
-
262
- ### Fixed
263
- - Fix active_commands preservation after conversation compact
264
-
265
- ## [2.89.0] - 2026-01-14
266
-
267
- ### Added
268
- - Security hardening, LRU file caching, and comprehensive test coverage
269
-
270
- ## [2.88.0] - 2026-01-13
271
-
272
- ### Fixed
273
- - Security and code quality improvements from EP-0012 ideation
274
-
275
- ## [2.87.0] - 2026-01-13
276
-
277
- ### Added
278
- - Multi-session visibility with cleanup notifications and status line indicators
279
-
280
- ## [2.86.0] - 2026-01-13
281
-
282
- ### Added
283
- - Progressive disclosure and RPI workflow for context optimization
284
-
285
- ## [2.85.0] - 2026-01-12
286
-
287
- ### Added
288
- - Parallel sessions with git worktrees and session boundary protection
289
-
290
- ## [2.84.2] - 2026-01-11
291
-
292
- ### Fixed
293
- - Auto-update retry with npm cache clean on stale registry
294
-
295
- ## [2.84.1] - 2026-01-11
61
+ ### Phase 2b slice 2 — Plugin resolver + strict validator
296
62
 
297
- ### Fixed
298
- - Status line and welcome table formatting fixes
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.
299
76
 
300
- ## [2.84.0] - 2026-01-11
77
+ ### Phase 2b slice 4 — End-to-end install orchestrator + integration tests
301
78
 
302
- ### Added
303
- - File awareness, smart merge, and simplified auto-update
304
-
305
- ## [2.83.0] - 2026-01-10
306
-
307
- ### Changed
308
- - Remove beta TUI dashboard - use slash commands instead
309
-
310
- ## [2.82.5] - 2026-01-10
311
-
312
- ### Fixed
313
- - Fix version detection to read from config.yaml
314
-
315
- ## [2.82.4] - 2026-01-10
316
-
317
- ### Fixed
318
- - Fix whats-new command to include CHANGELOG.md in installation
319
-
320
- ## [2.82.3] - 2026-01-09
321
-
322
- ### Fixed
323
- - Copy lib directory to .agileflow for script dependencies
324
-
325
- ## [2.82.2] - 2026-01-09
326
-
327
- ### Fixed
328
- - Installer now copies lib/ directory to .agileflow/lib/ for script dependencies
329
-
330
- ## [2.82.1] - 2026-01-09
331
-
332
- ### Fixed
333
- - Fix npm package missing lib directory
334
-
335
- ## [2.82.0] - 2026-01-09
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.
336
92
 
337
- ### Added
338
- - Multi-agent orchestration patterns with batch, workflow, and choose commands
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**.
339
104
 
340
- ## [2.81.0] - 2026-01-09
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.
341
127
 
342
- ### Added
343
- - Input validation, damage control refactor, and session merge flow
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`.
344
135
 
345
- ## [2.80.0] - 2026-01-09
136
+ ### IDE / CLI awareness — install gates by target
346
137
 
347
- ### Added
348
- - Comprehensive documentation and docs site improvements
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.
349
139
 
350
- ## [2.79.0] - 2026-01-09
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)
351
147
 
352
- ### Added
353
- - Damage Control protection, Visual Mode, and self-improving skills
354
-
355
- ## [2.78.0] - 2026-01-08
356
-
357
- ### Added
358
- - Enhanced compact context preservation with damage control hooks
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.)
359
149
 
360
- ## [2.77.0] - 2026-01-01
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.
361
183
 
362
- ### Added
363
- - Vibrant 256-color palette with enhanced status line
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.
364
197
 
365
- ## [2.76.0] - 2026-01-01
198
+ ### Phase 3+4 logic-audit fixes
366
199
 
367
- ### Added
368
- - Ralph Loop autonomous story processing with Stop hook support
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.
369
201
 
370
- ## [2.75.0] - 2026-01-01
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**.
371
210
 
372
- ### Added
373
- - Restructure context/research commands into subdirectories with stuck detection
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.
374
212
 
375
- ## [2.74.0] - 2025-12-31
213
+ ### Phase 4 — Core scope content-complete (4 skills)
376
214
 
377
- ### Added
378
- - Script repair and diagnostics for /configure 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.
379
216
 
380
- ## [2.73.0] - 2025-12-29
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).
381
223
 
382
- ### Changed
383
- - Consolidate scripts in .agileflow/scripts with updated hook paths
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.
384
225
 
385
- ## [2.72.0] - 2025-12-29
226
+ ### Phase 4 — Core gains a 5th skill: agileflow-adr
386
227
 
387
- ### Added
388
- - Move scripts to .agileflow/scripts directory
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.
389
231
 
390
- ## [2.71.0] - 2025-12-29
232
+ ### Phase 5 slice 1 — Skill validator + `agileflow doctor`
391
233
 
392
- ### Added
393
- - Outdated script detection with upgrade command and 30-day archival default
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.
394
235
 
395
- ## [2.70.0] - 2025-12-29
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**.
396
242
 
397
- ### Fixed
398
- - Configure script reads version dynamically from installed package
243
+ ### Phase 5 slices 2 + 3 — CI + publish setup
399
244
 
400
- ## [2.69.0] - 2025-12-29
245
+ The path from "green test suite" to "user can `npm i agileflow@alpha`" closes here.
401
246
 
402
- ### Added
403
- - Fix configure script to read version dynamically instead of hardcoded
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.
404
255
 
405
- ## [2.68.0] - 2025-12-29
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
+ ```
406
264
 
407
- ### Fixed
408
- - Remove Stop hook, simplify docs to npx-only installation
265
+ ### Not yet implemented
409
266
 
410
- ## [2.67.0] - 2025-12-29
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
411
275
 
412
- ### Added
413
- - Simplify installation to npx-only, remove global install recommendation
414
-
415
- ## [2.66.0] - 2025-12-29
416
-
417
- ### Added
418
- - Remove unreliable Stop hook, improve global CLI messaging
419
-
420
- ## [2.65.0] - 2025-12-29
421
-
422
- ### Added
423
- - Improved outdated global CLI messaging and guidance
424
-
425
- ## [2.64.0] - 2025-12-29
426
-
427
- ### Changed
428
- - Fix version detection in welcome script for user projects
429
-
430
- ## [2.63.0] - 2025-12-27
431
-
432
- ### Added
433
- - Per-IDE options for update and uninstall commands
434
-
435
- ## [2.62.0] - 2025-12-27
436
-
437
- ### Added
438
- - Dynamic skill generation with research-driven MCP integration
439
-
440
- ## [2.61.0] - 2025-12-27
441
-
442
- ### Fixed
443
- - Fixed changelog entry formatting and version comparison links
444
-
445
- ## [2.60.0] - 2025-12-27
446
-
447
- ### Changed
448
- - Standardized changelog format with human-readable summaries
449
-
450
- ## [2.59.0] - 2025-12-27
451
-
452
- ### Changed
453
- - Automated CHANGELOG.md updates in release script
454
-
455
- ## [2.58.0] - 2025-12-27
456
-
457
- ### Added
458
- - Auto-update configuration via `/agileflow:configure --enable=autoupdate`
459
-
460
- ### Fixed
461
- - Metadata merge for nested `updates` object in configure script
462
-
463
- ## [2.57.0] - 2025-12-27
464
-
465
- ### Added
466
- - Auto-update system with configurable check frequency
467
- - Update notifications in welcome message and status line
468
- - Changelog display after updates showing what's new
469
- - `/agileflow:whats-new` command for viewing full changelog
470
-
471
- ## [2.56.0] - 2025-12-27
472
-
473
- ### Added
474
- - Dynamic IDE discovery with auto-detection from handlers
475
- - OpenAI Codex CLI now appears in setup IDE selection
476
-
477
- ### Changed
478
- - Replaced hardcoded IDE list with dynamic loading from IdeManager
479
-
480
- ## [2.55.0] - 2025-12-26
481
-
482
- ### Changed
483
- - Consolidated code improvements and debugging enhancements
484
-
485
- ## [2.54.0] - 2025-12-26
486
-
487
- ### Added
488
- - Test suites for generators, npm-utils, and version-checker
489
-
490
- ## [2.53.0] - 2025-12-25
491
-
492
- ### Added
493
- - Session manager for parallel session detection
494
- - Warning when multiple Claude sessions active
495
-
496
- ## [2.52.0] - 2025-12-24
497
-
498
- ### Added
499
- - PreCompact hook for context preservation during compacts
500
-
501
- ## [2.51.0] - 2025-12-23
502
-
503
- ### Added
504
- - OpenAI Codex CLI integration
505
-
506
- ## [2.50.0] - 2025-12-22
507
-
508
- ### Added
509
- - Windsurf and Cursor IDE support
510
-
511
- ## [2.45.0] - 2025-12-20
512
-
513
- ### Added
514
- - Auto-archival system for completed stories
515
-
516
- ## [2.40.0] - 2025-12-18
517
-
518
- ### Added
519
- - Hooks system for event-driven automation
520
- - Status line integration for Claude Code
521
-
522
- [Unreleased]: https://github.com/projectquestorg/AgileFlow/compare/v2.60.0...HEAD
523
- [2.60.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.59.0...v2.60.0
524
- [2.59.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.58.0...v2.59.0
525
- [2.58.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.57.0...v2.58.0
526
- [2.57.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.56.0...v2.57.0
527
- [2.56.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.55.0...v2.56.0
528
- [2.55.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.54.0...v2.55.0
529
- [2.54.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.53.0...v2.54.0
530
- [2.53.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.52.0...v2.53.0
531
- [2.52.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.51.0...v2.52.0
532
- [2.51.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.50.0...v2.51.0
533
- [2.50.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.45.0...v2.50.0
534
- [2.45.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.40.0...v2.45.0
535
- [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`.