agileflow 4.0.0-alpha.2 → 4.0.0-alpha.21

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 (372) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/content/plugins/accessibility/plugin.yaml +14 -0
  3. package/content/plugins/accessibility/skills/agileflow-accessibility/SKILL.md +392 -0
  4. package/content/plugins/accessibility/skills/agileflow-accessibility/references/aria-patterns.md +528 -0
  5. package/content/plugins/accessibility/skills/agileflow-accessibility/references/testing-checklist.md +457 -0
  6. package/content/plugins/accessibility/skills/agileflow-accessibility/references/wcag-guide.md +683 -0
  7. package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/audit-page.md +310 -0
  8. package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/implement-accessible-component.md +479 -0
  9. package/content/plugins/ads/agents/ads-audit-budget.md +185 -0
  10. package/content/plugins/ads/agents/ads-audit-compliance.md +171 -0
  11. package/content/plugins/ads/agents/ads-audit-creative.md +168 -0
  12. package/content/plugins/ads/agents/ads-audit-google.md +227 -0
  13. package/content/plugins/ads/agents/ads-audit-meta.md +184 -0
  14. package/content/plugins/ads/agents/ads-audit-tracking.md +205 -0
  15. package/content/plugins/ads/agents/ads-consensus.md +410 -0
  16. package/content/plugins/ads/agents/ads-generate.md +152 -0
  17. package/content/plugins/ads/agents/ads-performance-tracker.md +212 -0
  18. package/content/plugins/ads/plugin.yaml +23 -4
  19. package/content/plugins/ads/skills/agileflow-ads/SKILL.md +218 -0
  20. package/content/plugins/ads/skills/agileflow-ads/references/ad-copy-formula-guide.md +131 -0
  21. package/content/plugins/ads/skills/agileflow-ads/references/audience-targeting-guide.md +137 -0
  22. package/content/plugins/ads/skills/agileflow-ads/references/bid-strategy-guide.md +115 -0
  23. package/content/plugins/ads/skills/agileflow-ads/references/platform-benchmarks.md +100 -0
  24. package/content/plugins/ads/skills/agileflow-ads/workflows/audit.md +118 -0
  25. package/content/plugins/ads/skills/agileflow-ads/workflows/generate.md +84 -0
  26. package/content/plugins/audit/agents/a11y-analyzer-aria.md +173 -0
  27. package/content/plugins/audit/agents/a11y-analyzer-forms.md +173 -0
  28. package/content/plugins/audit/agents/a11y-analyzer-keyboard.md +183 -0
  29. package/content/plugins/audit/agents/a11y-analyzer-semantic.md +169 -0
  30. package/content/plugins/audit/agents/a11y-analyzer-visual.md +172 -0
  31. package/content/plugins/audit/agents/a11y-consensus.md +249 -0
  32. package/content/plugins/audit/agents/accessibility.md +558 -0
  33. package/content/plugins/audit/agents/api-quality-analyzer-conventions.md +156 -0
  34. package/content/plugins/audit/agents/api-quality-analyzer-docs.md +184 -0
  35. package/content/plugins/audit/agents/api-quality-analyzer-errors.md +191 -0
  36. package/content/plugins/audit/agents/api-quality-analyzer-pagination.md +179 -0
  37. package/content/plugins/audit/agents/api-quality-analyzer-versioning.md +150 -0
  38. package/content/plugins/audit/agents/api-quality-consensus.md +217 -0
  39. package/content/plugins/audit/agents/api-validator.md +191 -0
  40. package/content/plugins/audit/agents/arch-analyzer-circular.md +156 -0
  41. package/content/plugins/audit/agents/arch-analyzer-complexity.md +193 -0
  42. package/content/plugins/audit/agents/arch-analyzer-coupling.md +152 -0
  43. package/content/plugins/audit/agents/arch-analyzer-layering.md +160 -0
  44. package/content/plugins/audit/agents/arch-analyzer-patterns.md +210 -0
  45. package/content/plugins/audit/agents/arch-consensus.md +228 -0
  46. package/content/plugins/audit/agents/browser-qa.md +342 -0
  47. package/content/plugins/audit/agents/code-reviewer.md +298 -0
  48. package/content/plugins/audit/agents/completeness-analyzer-api.md +199 -0
  49. package/content/plugins/audit/agents/completeness-analyzer-conditional.md +211 -0
  50. package/content/plugins/audit/agents/completeness-analyzer-handlers.md +166 -0
  51. package/content/plugins/audit/agents/completeness-analyzer-imports.md +165 -0
  52. package/content/plugins/audit/agents/completeness-analyzer-routes.md +190 -0
  53. package/content/plugins/audit/agents/completeness-analyzer-state.md +196 -0
  54. package/content/plugins/audit/agents/completeness-analyzer-stubs.md +206 -0
  55. package/content/plugins/audit/agents/completeness-consensus.md +295 -0
  56. package/content/plugins/audit/agents/error-analyzer.md +213 -0
  57. package/content/plugins/audit/agents/flow-analyzer-authorization.md +182 -0
  58. package/content/plugins/audit/agents/flow-analyzer-discovery.md +174 -0
  59. package/content/plugins/audit/agents/flow-analyzer-errors.md +186 -0
  60. package/content/plugins/audit/agents/flow-analyzer-feedback.md +185 -0
  61. package/content/plugins/audit/agents/flow-analyzer-navigation.md +177 -0
  62. package/content/plugins/audit/agents/flow-analyzer-persistence.md +193 -0
  63. package/content/plugins/audit/agents/flow-analyzer-wiring.md +169 -0
  64. package/content/plugins/audit/agents/flow-consensus.md +237 -0
  65. package/content/plugins/audit/agents/legal-analyzer-a11y.md +114 -0
  66. package/content/plugins/audit/agents/legal-analyzer-ai.md +121 -0
  67. package/content/plugins/audit/agents/legal-analyzer-consumer.md +114 -0
  68. package/content/plugins/audit/agents/legal-analyzer-content.md +117 -0
  69. package/content/plugins/audit/agents/legal-analyzer-international.md +119 -0
  70. package/content/plugins/audit/agents/legal-analyzer-licensing.md +119 -0
  71. package/content/plugins/audit/agents/legal-analyzer-privacy.md +112 -0
  72. package/content/plugins/audit/agents/legal-analyzer-security.md +116 -0
  73. package/content/plugins/audit/agents/legal-analyzer-terms.md +115 -0
  74. package/content/plugins/audit/agents/legal-consensus.md +250 -0
  75. package/content/plugins/audit/agents/logic-analyzer-edge.md +179 -0
  76. package/content/plugins/audit/agents/logic-analyzer-flow.md +264 -0
  77. package/content/plugins/audit/agents/logic-analyzer-invariant.md +215 -0
  78. package/content/plugins/audit/agents/logic-analyzer-race.md +280 -0
  79. package/content/plugins/audit/agents/logic-analyzer-type.md +227 -0
  80. package/content/plugins/audit/agents/logic-consensus.md +259 -0
  81. package/content/plugins/audit/agents/perf-analyzer-assets.md +182 -0
  82. package/content/plugins/audit/agents/perf-analyzer-bundle.md +173 -0
  83. package/content/plugins/audit/agents/perf-analyzer-caching.md +170 -0
  84. package/content/plugins/audit/agents/perf-analyzer-compute.md +173 -0
  85. package/content/plugins/audit/agents/perf-analyzer-memory.md +193 -0
  86. package/content/plugins/audit/agents/perf-analyzer-network.md +165 -0
  87. package/content/plugins/audit/agents/perf-analyzer-queries.md +162 -0
  88. package/content/plugins/audit/agents/perf-analyzer-rendering.md +168 -0
  89. package/content/plugins/audit/agents/perf-consensus.md +287 -0
  90. package/content/plugins/audit/agents/qa.md +820 -0
  91. package/content/plugins/audit/agents/quality-analyzer-comments.md +159 -0
  92. package/content/plugins/audit/agents/quality-analyzer-duplication.md +184 -0
  93. package/content/plugins/audit/agents/quality-analyzer-naming.md +160 -0
  94. package/content/plugins/audit/agents/quality-consensus.md +241 -0
  95. package/content/plugins/audit/agents/schema-validator.md +473 -0
  96. package/content/plugins/audit/agents/security-analyzer-api.md +210 -0
  97. package/content/plugins/audit/agents/security-analyzer-auth.md +169 -0
  98. package/content/plugins/audit/agents/security-analyzer-authz.md +180 -0
  99. package/content/plugins/audit/agents/security-analyzer-deps.md +153 -0
  100. package/content/plugins/audit/agents/security-analyzer-infra.md +184 -0
  101. package/content/plugins/audit/agents/security-analyzer-injection.md +155 -0
  102. package/content/plugins/audit/agents/security-analyzer-input.md +201 -0
  103. package/content/plugins/audit/agents/security-analyzer-secrets.md +183 -0
  104. package/content/plugins/audit/agents/security-consensus.md +283 -0
  105. package/content/plugins/audit/agents/test-analyzer-assertions.md +188 -0
  106. package/content/plugins/audit/agents/test-analyzer-coverage.md +189 -0
  107. package/content/plugins/audit/agents/test-analyzer-fragility.md +193 -0
  108. package/content/plugins/audit/agents/test-analyzer-integration.md +161 -0
  109. package/content/plugins/audit/agents/test-analyzer-maintenance.md +180 -0
  110. package/content/plugins/audit/agents/test-analyzer-mocking.md +188 -0
  111. package/content/plugins/audit/agents/test-analyzer-patterns.md +196 -0
  112. package/content/plugins/audit/agents/test-analyzer-structure.md +184 -0
  113. package/content/plugins/audit/agents/test-consensus.md +301 -0
  114. package/content/plugins/audit/agents/testing.md +561 -0
  115. package/content/plugins/audit/agents/ui-validator.md +344 -0
  116. package/content/plugins/audit/plugin.yaml +186 -5
  117. package/content/plugins/audit/skills/agileflow-audit/SKILL.md +113 -0
  118. package/content/plugins/audit/skills/agileflow-audit/references/audit-depth-guide.md +151 -0
  119. package/content/plugins/audit/skills/agileflow-audit/references/dependency-risk-guide.md +139 -0
  120. package/content/plugins/audit/skills/agileflow-audit/references/owasp-top10.md +120 -0
  121. package/content/plugins/audit/skills/agileflow-audit/references/performance-budget-guide.md +143 -0
  122. package/content/plugins/audit/skills/agileflow-audit/references/wcag-criteria.md +117 -0
  123. package/content/plugins/audit/skills/agileflow-audit/workflows/run-audit.md +52 -0
  124. package/content/plugins/audit/skills/agileflow-audit/workflows/tdd.md +66 -0
  125. package/content/plugins/core/agents/adr-writer.md +521 -0
  126. package/content/plugins/core/agents/epic-planner.md +520 -0
  127. package/content/plugins/core/agents/mentor.md +709 -0
  128. package/content/plugins/core/agents/orchestrator.md +776 -0
  129. package/content/plugins/core/agents/team-coordinator.md +334 -0
  130. package/content/plugins/core/agents/team-lead.md +181 -0
  131. package/content/plugins/core/agents/workspace-orchestrator.md +146 -0
  132. package/content/plugins/core/hooks/context-loader.js +31 -4
  133. package/content/plugins/core/hooks/damage-control-bash.js +10 -2
  134. package/content/plugins/core/hooks/damage-control-edit.js +4 -1
  135. package/content/plugins/core/hooks/damage-control-patterns.yaml +1 -1
  136. package/content/plugins/core/hooks/damage-control-write.js +4 -1
  137. package/content/plugins/core/hooks/{pre-compact-state.js → post-compact-state.js} +25 -8
  138. package/content/plugins/core/hooks/preferences-injector.js +352 -0
  139. package/content/plugins/core/plugin.yaml +24 -28
  140. package/content/plugins/core/skills/agileflow-adr/SKILL.md +34 -8
  141. package/content/plugins/core/skills/agileflow-adr/references/madr-format-guide.md +86 -0
  142. package/content/plugins/core/skills/agileflow-adr/workflows/write-adr.md +57 -0
  143. package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +94 -27
  144. package/content/plugins/core/skills/agileflow-babysit-mentor/references/mentor-decision-guide.md +81 -0
  145. package/content/plugins/core/skills/agileflow-babysit-mentor/workflows/mentor-session.md +79 -0
  146. package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +37 -7
  147. package/content/plugins/core/skills/agileflow-epic-planner/references/epic-sizing-guide.md +81 -0
  148. package/content/plugins/core/skills/agileflow-epic-planner/workflows/plan-epic.md +55 -0
  149. package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +36 -20
  150. package/content/plugins/core/skills/agileflow-status-updater/references/status-transitions.md +89 -0
  151. package/content/plugins/core/skills/agileflow-status-updater/workflows/update-status.md +56 -0
  152. package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +39 -114
  153. package/content/plugins/core/skills/agileflow-story-writer/references/estimation-reference.md +36 -0
  154. package/content/plugins/core/skills/agileflow-story-writer/references/story-template.md +92 -0
  155. package/content/plugins/core/skills/agileflow-story-writer/workflows/write-story.md +138 -0
  156. package/content/plugins/council/agents/council-advocate.md +223 -0
  157. package/content/plugins/council/agents/council-analyst.md +278 -0
  158. package/content/plugins/council/agents/council-compounder.md +204 -0
  159. package/content/plugins/council/agents/council-contrarian.md +217 -0
  160. package/content/plugins/council/agents/council-moonshot.md +217 -0
  161. package/content/plugins/council/agents/council-optimist.md +185 -0
  162. package/content/plugins/council/agents/council-revenue.md +200 -0
  163. package/content/plugins/council/agents/council-technical.md +218 -0
  164. package/content/plugins/council/agents/multi-expert.md +334 -0
  165. package/content/plugins/council/plugin.yaml +23 -4
  166. package/content/plugins/council/skills/agileflow-council/SKILL.md +102 -0
  167. package/content/plugins/council/skills/agileflow-council/references/decision-log-template.md +109 -0
  168. package/content/plugins/council/skills/agileflow-council/references/perspective-guide.md +104 -0
  169. package/content/plugins/council/skills/agileflow-council/references/when-to-convene-guide.md +112 -0
  170. package/content/plugins/council/skills/agileflow-council/workflows/convene.md +73 -0
  171. package/content/plugins/council/skills/agileflow-council/workflows/multi-expert.md +75 -0
  172. package/content/plugins/database/plugin.yaml +14 -0
  173. package/content/plugins/database/skills/agileflow-database/SKILL.md +284 -0
  174. package/content/plugins/database/skills/agileflow-database/references/indexing-guide.md +313 -0
  175. package/content/plugins/database/skills/agileflow-database/references/migration-guide.md +328 -0
  176. package/content/plugins/database/skills/agileflow-database/references/schema-design-guide.md +467 -0
  177. package/content/plugins/database/skills/agileflow-database/workflows/design-schema.md +213 -0
  178. package/content/plugins/database/skills/agileflow-database/workflows/optimize-query.md +253 -0
  179. package/content/plugins/debugging/plugin.yaml +14 -0
  180. package/content/plugins/debugging/skills/agileflow-debug/SKILL.md +236 -0
  181. package/content/plugins/debugging/skills/agileflow-debug/references/common-patterns.md +350 -0
  182. package/content/plugins/debugging/skills/agileflow-debug/references/debugging-strategies.md +328 -0
  183. package/content/plugins/debugging/skills/agileflow-debug/workflows/debug-issue.md +187 -0
  184. package/content/plugins/debugging/skills/agileflow-debug/workflows/reproduce-bug.md +194 -0
  185. package/content/plugins/delivery/agents/ci.md +547 -0
  186. package/content/plugins/delivery/agents/devops.md +789 -0
  187. package/content/plugins/delivery/plugin.yaml +19 -0
  188. package/content/plugins/delivery/skills/agileflow-delivery/SKILL.md +111 -0
  189. package/content/plugins/delivery/skills/agileflow-delivery/references/changelog-format-guide.md +133 -0
  190. package/content/plugins/delivery/skills/agileflow-delivery/references/ci-pipeline-guide.md +158 -0
  191. package/content/plugins/delivery/skills/agileflow-delivery/references/pr-checklist-guide.md +133 -0
  192. package/content/plugins/delivery/skills/agileflow-delivery/references/release-checklist.md +142 -0
  193. package/content/plugins/delivery/skills/agileflow-delivery/workflows/changelog.md +72 -0
  194. package/content/plugins/delivery/skills/agileflow-delivery/workflows/deploy.md +74 -0
  195. package/content/plugins/delivery/skills/agileflow-delivery/workflows/pr.md +75 -0
  196. package/content/plugins/docs/agents/documentation.md +544 -0
  197. package/content/plugins/docs/agents/readme-updater.md +640 -0
  198. package/content/plugins/docs/plugin.yaml +19 -0
  199. package/content/plugins/docs/skills/agileflow-docs/SKILL.md +106 -0
  200. package/content/plugins/docs/skills/agileflow-docs/references/api-doc-template.md +167 -0
  201. package/content/plugins/docs/skills/agileflow-docs/references/doc-types-guide.md +141 -0
  202. package/content/plugins/docs/skills/agileflow-docs/references/readme-template.md +156 -0
  203. package/content/plugins/docs/skills/agileflow-docs/workflows/readme-sync.md +57 -0
  204. package/content/plugins/docs/skills/agileflow-docs/workflows/sync.md +64 -0
  205. package/content/plugins/engineering/agents/api.md +718 -0
  206. package/content/plugins/engineering/agents/codebase-query.md +285 -0
  207. package/content/plugins/engineering/agents/compliance.md +559 -0
  208. package/content/plugins/engineering/agents/database.md +644 -0
  209. package/content/plugins/engineering/agents/integrations.md +644 -0
  210. package/content/plugins/engineering/agents/mobile.md +552 -0
  211. package/content/plugins/engineering/agents/monitoring.md +585 -0
  212. package/content/plugins/engineering/agents/performance.md +529 -0
  213. package/content/plugins/engineering/agents/refactor.md +592 -0
  214. package/content/plugins/engineering/agents/security.md +524 -0
  215. package/content/plugins/engineering/agents/ui.md +1336 -0
  216. package/content/plugins/engineering/plugin.yaml +37 -0
  217. package/content/plugins/engineering/skills/agileflow-engineering/SKILL.md +127 -0
  218. package/content/plugins/engineering/skills/agileflow-engineering/references/code-review-guide.md +126 -0
  219. package/content/plugins/engineering/skills/agileflow-engineering/references/domain-routing-guide.md +89 -0
  220. package/content/plugins/engineering/skills/agileflow-engineering/references/refactoring-guide.md +136 -0
  221. package/content/plugins/engineering/skills/agileflow-engineering/workflows/diagnose.md +63 -0
  222. package/content/plugins/engineering/skills/agileflow-engineering/workflows/impact.md +60 -0
  223. package/content/plugins/ideation/agents/brainstorm-analyzer-features.md +179 -0
  224. package/content/plugins/ideation/agents/brainstorm-analyzer-growth.md +169 -0
  225. package/content/plugins/ideation/agents/brainstorm-analyzer-integration.md +181 -0
  226. package/content/plugins/ideation/agents/brainstorm-analyzer-market.md +150 -0
  227. package/content/plugins/ideation/agents/brainstorm-analyzer-ux.md +180 -0
  228. package/content/plugins/ideation/agents/brainstorm-consensus.md +245 -0
  229. package/content/plugins/ideation/agents/design.md +568 -0
  230. package/content/plugins/ideation/agents/product.md +582 -0
  231. package/content/plugins/ideation/plugin.yaml +31 -0
  232. package/content/plugins/ideation/skills/agileflow-ideation/SKILL.md +109 -0
  233. package/content/plugins/ideation/skills/agileflow-ideation/references/brainstorm-techniques.md +138 -0
  234. package/content/plugins/ideation/skills/agileflow-ideation/references/competitive-analysis-template.md +148 -0
  235. package/content/plugins/ideation/skills/agileflow-ideation/references/feature-prioritization-guide.md +147 -0
  236. package/content/plugins/ideation/skills/agileflow-ideation/references/user-story-patterns.md +152 -0
  237. package/content/plugins/ideation/skills/agileflow-ideation/workflows/features.md +65 -0
  238. package/content/plugins/ideation/skills/agileflow-ideation/workflows/ideate.md +54 -0
  239. package/content/plugins/migration/agents/datamigration.md +757 -0
  240. package/content/plugins/migration/plugin.yaml +17 -0
  241. package/content/plugins/migration/skills/agileflow-migration/SKILL.md +106 -0
  242. package/content/plugins/migration/skills/agileflow-migration/references/data-validation-checklist.md +154 -0
  243. package/content/plugins/migration/skills/agileflow-migration/references/migration-patterns.md +209 -0
  244. package/content/plugins/migration/skills/agileflow-migration/references/rollback-playbook.md +171 -0
  245. package/content/plugins/migration/skills/agileflow-migration/references/version-compatibility-matrix.md +155 -0
  246. package/content/plugins/migration/skills/agileflow-migration/workflows/plan.md +73 -0
  247. package/content/plugins/migration/skills/agileflow-migration/workflows/validate.md +71 -0
  248. package/content/plugins/performance/plugin.yaml +14 -0
  249. package/content/plugins/performance/skills/agileflow-performance/SKILL.md +224 -0
  250. package/content/plugins/performance/skills/agileflow-performance/references/optimization-patterns.md +554 -0
  251. package/content/plugins/performance/skills/agileflow-performance/references/profiling-guide.md +383 -0
  252. package/content/plugins/performance/skills/agileflow-performance/references/web-vitals-guide.md +360 -0
  253. package/content/plugins/performance/skills/agileflow-performance/workflows/improve-web-vitals.md +344 -0
  254. package/content/plugins/performance/skills/agileflow-performance/workflows/profile-and-fix.md +254 -0
  255. package/content/plugins/planning/agents/analytics.md +670 -0
  256. package/content/plugins/planning/agents/rlm-subcore.md +215 -0
  257. package/content/plugins/planning/plugin.yaml +19 -0
  258. package/content/plugins/planning/skills/agileflow-planning/SKILL.md +111 -0
  259. package/content/plugins/planning/skills/agileflow-planning/references/estimation-guide.md +114 -0
  260. package/content/plugins/planning/skills/agileflow-planning/references/rpi-workflow.md +119 -0
  261. package/content/plugins/planning/skills/agileflow-planning/references/sprint-planning-guide.md +145 -0
  262. package/content/plugins/planning/skills/agileflow-planning/workflows/impact.md +63 -0
  263. package/content/plugins/planning/skills/agileflow-planning/workflows/rpi.md +104 -0
  264. package/content/plugins/psychology/plugin.yaml +14 -0
  265. package/content/plugins/psychology/skills/agileflow-retention/SKILL.md +252 -0
  266. package/content/plugins/psychology/skills/agileflow-retention/references/competitor-analysis.md +240 -0
  267. package/content/plugins/psychology/skills/agileflow-retention/references/psychology-models.md +349 -0
  268. package/content/plugins/psychology/skills/agileflow-retention/references/retention-patterns.md +279 -0
  269. package/content/plugins/psychology/skills/agileflow-retention/workflows/design-retention-feature.md +287 -0
  270. package/content/plugins/psychology/skills/agileflow-retention/workflows/retention-audit.md +259 -0
  271. package/content/plugins/refactoring/plugin.yaml +14 -0
  272. package/content/plugins/refactoring/skills/agileflow-refactor/SKILL.md +235 -0
  273. package/content/plugins/refactoring/skills/agileflow-refactor/references/refactoring-patterns.md +405 -0
  274. package/content/plugins/refactoring/skills/agileflow-refactor/references/safety-checks.md +177 -0
  275. package/content/plugins/refactoring/skills/agileflow-refactor/workflows/extract-module.md +226 -0
  276. package/content/plugins/refactoring/skills/agileflow-refactor/workflows/safe-refactor.md +169 -0
  277. package/content/plugins/research/agents/research.md +503 -0
  278. package/content/plugins/research/plugin.yaml +17 -0
  279. package/content/plugins/research/skills/agileflow-research/SKILL.md +110 -0
  280. package/content/plugins/research/skills/agileflow-research/references/knowledge-decay-guide.md +121 -0
  281. package/content/plugins/research/skills/agileflow-research/references/research-prompt-guide.md +141 -0
  282. package/content/plugins/research/skills/agileflow-research/references/synthesis-template.md +154 -0
  283. package/content/plugins/research/skills/agileflow-research/workflows/analyze.md +60 -0
  284. package/content/plugins/research/skills/agileflow-research/workflows/ask.md +64 -0
  285. package/content/plugins/research/skills/agileflow-research/workflows/import.md +66 -0
  286. package/content/plugins/research/skills/agileflow-research/workflows/synthesize.md +66 -0
  287. package/content/plugins/reviews/plugin.yaml +14 -0
  288. package/content/plugins/reviews/skills/agileflow-pr-reviewer/SKILL.md +241 -0
  289. package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/review-checklist.md +200 -0
  290. package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/security-patterns.md +328 -0
  291. package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/review-pr.md +153 -0
  292. package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/security-review.md +177 -0
  293. package/content/plugins/seo/agents/seo-analyzer-content.md +169 -0
  294. package/content/plugins/seo/agents/seo-analyzer-images.md +198 -0
  295. package/content/plugins/seo/agents/seo-analyzer-performance.md +217 -0
  296. package/content/plugins/seo/agents/seo-analyzer-schema.md +184 -0
  297. package/content/plugins/seo/agents/seo-analyzer-sitemap.md +177 -0
  298. package/content/plugins/seo/agents/seo-analyzer-technical.md +151 -0
  299. package/content/plugins/seo/agents/seo-consensus.md +304 -0
  300. package/content/plugins/seo/plugin.yaml +19 -4
  301. package/content/plugins/seo/skills/agileflow-seo/SKILL.md +188 -0
  302. package/content/plugins/seo/skills/agileflow-seo/references/cwv-thresholds.md +110 -0
  303. package/content/plugins/seo/skills/agileflow-seo/references/eeat-framework.md +144 -0
  304. package/content/plugins/seo/skills/agileflow-seo/references/keyword-research-guide.md +125 -0
  305. package/content/plugins/seo/skills/agileflow-seo/references/schema-types.md +139 -0
  306. package/content/plugins/seo/skills/agileflow-seo/references/technical-seo-checklist.md +139 -0
  307. package/content/plugins/seo/skills/agileflow-seo/workflows/audit.md +98 -0
  308. package/content/plugins/seo/skills/agileflow-seo/workflows/page.md +118 -0
  309. package/content/plugins/testing/plugin.yaml +16 -0
  310. package/content/plugins/testing/skills/agileflow-test-writer/SKILL.md +260 -0
  311. package/content/plugins/testing/skills/agileflow-test-writer/references/coverage-targets.md +239 -0
  312. package/content/plugins/testing/skills/agileflow-test-writer/references/test-patterns.md +420 -0
  313. package/content/plugins/testing/skills/agileflow-test-writer/workflows/add-coverage.md +154 -0
  314. package/content/plugins/testing/skills/agileflow-test-writer/workflows/write-tests-from-ac.md +225 -0
  315. package/package.json +2 -2
  316. package/src/cli/commands/doctor.js +818 -30
  317. package/src/cli/commands/hook.js +17 -14
  318. package/src/cli/commands/launch.js +1454 -0
  319. package/src/cli/commands/learn.js +149 -0
  320. package/src/cli/commands/plugins.js +113 -0
  321. package/src/cli/commands/setup.js +455 -110
  322. package/src/cli/commands/skills.js +324 -0
  323. package/src/cli/commands/status.js +8 -10
  324. package/src/cli/commands/update.js +76 -15
  325. package/src/cli/index.js +90 -26
  326. package/src/cli/wizard/babysit-mode-picker.js +192 -0
  327. package/src/cli/wizard/behaviors-picker.js +208 -54
  328. package/src/cli/wizard/ide-picker.js +40 -28
  329. package/src/cli/wizard/install-scope-picker.js +57 -0
  330. package/src/cli/wizard/launch-alias-picker.js +50 -0
  331. package/src/cli/wizard/launch-cli-picker.js +129 -0
  332. package/src/cli/wizard/launch-tmux-picker.js +133 -0
  333. package/src/cli/wizard/learnings-picker.js +40 -0
  334. package/src/cli/wizard/plugin-picker.js +47 -16
  335. package/src/lib/brand.js +116 -0
  336. package/src/lib/errors.js +120 -0
  337. package/src/lib/path-check.js +39 -0
  338. package/src/runtime/config/defaults.js +22 -17
  339. package/src/runtime/config/loader.js +77 -8
  340. package/src/runtime/config/schema.json +43 -16
  341. package/src/runtime/config/writer.js +3 -1
  342. package/src/runtime/ide/babysit-skill.js +202 -0
  343. package/src/runtime/ide/capabilities.js +84 -29
  344. package/src/runtime/ide/claude-code-content.js +177 -0
  345. package/src/runtime/ide/claude-code-settings.js +67 -29
  346. package/src/runtime/ide/claude-code-skills.js +47 -32
  347. package/src/runtime/ide/codex-config.js +295 -0
  348. package/src/runtime/installer/install.js +252 -24
  349. package/src/runtime/launch/alias-installer.js +191 -0
  350. package/src/runtime/launch/cli-resume.js +244 -0
  351. package/src/runtime/launch/closed-windows.js +338 -0
  352. package/src/runtime/launch/defaults.js +66 -0
  353. package/src/runtime/launch/detect-clis.js +69 -0
  354. package/src/runtime/launch/doctor.js +464 -0
  355. package/src/runtime/launch/exec-wrapper.js +114 -0
  356. package/src/runtime/launch/parallel-session.js +247 -0
  357. package/src/runtime/launch/prefs.js +211 -0
  358. package/src/runtime/launch/project-prefs.js +234 -0
  359. package/src/runtime/launch/resolve-cli.js +56 -0
  360. package/src/runtime/launch/restore.js +152 -0
  361. package/src/runtime/launch/schema.json +75 -0
  362. package/src/runtime/launch/session-lifecycle.js +313 -0
  363. package/src/runtime/launch/session-registry.js +401 -0
  364. package/src/runtime/launch/spawn.js +103 -0
  365. package/src/runtime/launch/tabs.js +350 -0
  366. package/src/runtime/launch/tmux.js +764 -0
  367. package/src/runtime/launch/worktree.js +260 -0
  368. package/src/runtime/plugins/registry.js +16 -11
  369. package/src/runtime/plugins/validator.js +57 -43
  370. package/src/runtime/skills/learnings.js +308 -0
  371. package/content/plugins/core/hooks/babysit-mentor-injector.js +0 -55
  372. package/src/cli/wizard/personalization.js +0 -64
@@ -49,8 +49,16 @@ async function main() {
49
49
  try {
50
50
  const parsed = yaml.load(fs.readFileSync(patternsPath, "utf8"));
51
51
  patterns = Array.isArray(parsed && parsed.patterns) ? parsed.patterns : [];
52
- } catch {
53
- process.exit(0); // No patterns file, fail open.
52
+ } catch (err) {
53
+ // Fail open, but warn loudly: a missing/unreadable patterns file
54
+ // means every dangerous command will go through unblocked, and
55
+ // the user MUST notice. Repeated warnings on every Bash call are
56
+ // intentional — they signal "damageControl is broken, fix it or
57
+ // disable the preset in agileflow.config.json".
58
+ process.stderr.write(
59
+ `agileflow damage-control: WARNING — patterns file unreadable (${err.code || err.name}: ${patternsPath}). Bash safety guards are DISABLED until this is fixed.\n`,
60
+ );
61
+ process.exit(0);
54
62
  }
55
63
 
56
64
  for (const p of patterns) {
@@ -46,7 +46,10 @@ async function main() {
46
46
  try {
47
47
  const parsed = yaml.load(fs.readFileSync(patternsPath, "utf8"));
48
48
  patterns = Array.isArray(parsed && parsed.patterns) ? parsed.patterns : [];
49
- } catch {
49
+ } catch (err) {
50
+ process.stderr.write(
51
+ `agileflow damage-control: WARNING — patterns file unreadable (${err.code || err.name}: ${patternsPath}). Edit safety guards are DISABLED until this is fixed.\n`,
52
+ );
50
53
  process.exit(0);
51
54
  }
52
55
 
@@ -15,7 +15,7 @@
15
15
 
16
16
  patterns:
17
17
  # --- Catastrophic filesystem operations ---
18
- - regex: 'rm\s+-[a-zA-Z]*r[a-zA-Z]*f[a-zA-Z]*\s+(/|~|\$HOME)\b'
18
+ - regex: 'rm\s+-[a-zA-Z]*r[a-zA-Z]*f[a-zA-Z]*\s+(/|~|\$HOME)(\s|$)'
19
19
  kind: bash
20
20
  severity: error
21
21
  reason: rm -rf on / or $HOME is almost certainly a mistake — refuse outright
@@ -42,7 +42,10 @@ async function main() {
42
42
  try {
43
43
  const parsed = yaml.load(fs.readFileSync(patternsPath, "utf8"));
44
44
  patterns = Array.isArray(parsed && parsed.patterns) ? parsed.patterns : [];
45
- } catch {
45
+ } catch (err) {
46
+ process.stderr.write(
47
+ `agileflow damage-control: WARNING — patterns file unreadable (${err.code || err.name}: ${patternsPath}). Write safety guards are DISABLED until this is fixed.\n`,
48
+ );
46
49
  process.exit(0);
47
50
  }
48
51
 
@@ -1,16 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Core hook: pre-compact-state (PreCompact).
3
+ * Core hook: post-compact-state (PostCompact).
4
4
  *
5
- * Captures the state Claude needs to know AFTER the compaction summary
6
- * replaces most of the conversation: the active story, the active
7
- * command, recent decisions, and the dirty git state. Without this,
8
- * compaction often loses thread on multi-turn implementation work.
5
+ * Re-injects the state Claude needs after compaction replaces most of
6
+ * the conversation: active story, active command, git state, and user
7
+ * preferences. Without this, compaction loses thread on multi-turn work.
9
8
  *
10
9
  * Output is plain markdown printed to stdout — Claude Code includes
11
- * the hook's stdout in the prompt context after compaction.
10
+ * the hook's stdout in the fresh context after compaction.
12
11
  *
13
- * Exits 0 always (must not block compaction).
12
+ * Exits 0 always (must not block).
14
13
  */
15
14
  const fs = require("fs");
16
15
  const path = require("path");
@@ -38,12 +37,27 @@ function git(args) {
38
37
  }
39
38
  }
40
39
 
40
+ const { buildPreferencesBlock } = require("./preferences-injector.js");
41
+
41
42
  const out = [];
43
+
44
+ const prefsBlock = buildPreferencesBlock();
45
+ if (prefsBlock) {
46
+ out.push(prefsBlock);
47
+ out.push("");
48
+ }
49
+
42
50
  out.push("## Pre-compaction state preservation");
43
51
  out.push("");
44
52
 
45
53
  const status = readJSON(path.join(projectDir, "docs/09-agents/status.json"));
46
- if (status && status.stories) {
54
+ if (!status) {
55
+ // Fresh project — no story tracker yet. Say so explicitly so the
56
+ // post-compaction prompt knows the section was reached, not silently
57
+ // skipped due to an error.
58
+ out.push("Active stories: (none yet — docs/09-agents/status.json not found)");
59
+ out.push("");
60
+ } else if (status.stories) {
47
61
  const inProgress = Object.entries(status.stories)
48
62
  .filter(([, s]) => s && s.status === "in_progress")
49
63
  .map(([id, s]) => `${id} ${s.title || ""}`);
@@ -51,6 +65,9 @@ if (status && status.stories) {
51
65
  out.push("Active stories:");
52
66
  for (const s of inProgress) out.push(` - ${s}`);
53
67
  out.push("");
68
+ } else {
69
+ out.push("Active stories: (none in progress)");
70
+ out.push("");
54
71
  }
55
72
  }
56
73
 
@@ -0,0 +1,352 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Core hook: preferences-injector (SessionStart).
4
+ *
5
+ * Reads agileflow.config.json and emits a concise user-preferences block
6
+ * so every skill and interaction in the session automatically respects
7
+ * the user's configured settings — without each skill needing its own
8
+ * config-reading logic.
9
+ *
10
+ * Always exits 0.
11
+ */
12
+ const path = require("path");
13
+ const fs = require("fs");
14
+
15
+ const projectDir =
16
+ process.env.AGILEFLOW_PROJECT_DIR ||
17
+ process.env.CLAUDE_PROJECT_DIR ||
18
+ process.cwd();
19
+
20
+ // Resolve capabilities.js from the installed runtime or the source tree.
21
+ let IDE_CAPABILITIES = null;
22
+ try {
23
+ ({ IDE_CAPABILITIES } = require("../../../src/runtime/ide/capabilities.js"));
24
+ } catch {
25
+ try {
26
+ // Installed path: node_modules/agileflow/src/runtime/ide/capabilities.js
27
+ ({
28
+ IDE_CAPABILITIES,
29
+ } = require("agileflow/src/runtime/ide/capabilities.js"));
30
+ } catch {
31
+ // capabilities unavailable — skip capability block
32
+ }
33
+ }
34
+
35
+ // Resolve learnings helpers from the installed runtime or the source tree.
36
+ let _readLearnings = null;
37
+ let _formatLearningsBlock = null;
38
+ try {
39
+ const learnings = require("../../../src/runtime/skills/learnings.js");
40
+ _readLearnings = learnings.readLearnings;
41
+ _formatLearningsBlock = learnings.formatLearningsBlock;
42
+ } catch {
43
+ try {
44
+ const learnings = require("agileflow/src/runtime/skills/learnings.js");
45
+ _readLearnings = learnings.readLearnings;
46
+ _formatLearningsBlock = learnings.formatLearningsBlock;
47
+ } catch {
48
+ // learnings unavailable — skip learnings block
49
+ }
50
+ }
51
+
52
+ module.exports = { buildPreferencesBlock, buildLearningsBlock };
53
+
54
+ function buildCapabilitiesBlock(cfg) {
55
+ if (!IDE_CAPABILITIES) return null;
56
+
57
+ const targets = cfg?.ide?.targets;
58
+ if (!Array.isArray(targets) || targets.length === 0) return null;
59
+
60
+ // Use the first target as the primary IDE for capability detection.
61
+ const primaryIde = targets[0];
62
+ const caps = IDE_CAPABILITIES[primaryIde];
63
+ if (!caps) return null;
64
+
65
+ const tick = (v) => (v ? "✓" : "✗");
66
+
67
+ const lines = [
68
+ `## Runtime Capabilities (${caps.description})`,
69
+ "",
70
+ "Skills and workflows adapt their behavior based on what this IDE supports:",
71
+ "",
72
+ `| Capability | Available | Behavior when unavailable |`,
73
+ `|------------|-----------|--------------------------|`,
74
+ `| **Interactive prompts** (AskUserQuestion) | ${tick(caps.interactivePrompts)} | Present options as a numbered list instead |`,
75
+ `| **Agent spawning** (Task / multi-agent) | ${tick(caps.multiAgent)} | Work through each analysis inline, sequentially |`,
76
+ `| **Session restore** (PostCompact hook) | ${tick(caps.sessionRestore)} | Re-state context manually if conversation compacts |`,
77
+ `| **Lifecycle hooks** | ${tick(caps.hooks)} | Guidance and state injection unavailable between sessions |`,
78
+ "",
79
+ ];
80
+
81
+ if (!caps.interactivePrompts) {
82
+ lines.push(
83
+ "**Note:** This IDE does not support interactive prompts. When a workflow says to present options, write a numbered list and ask the user to reply with a number.",
84
+ );
85
+ }
86
+ if (!caps.multiAgent) {
87
+ lines.push(
88
+ "**Note:** This IDE does not support agent spawning. When a workflow calls for running multiple expert agents in parallel, perform each analysis inline and sequentially instead.",
89
+ );
90
+ }
91
+
92
+ // Filter trailing empty string if no notes added
93
+ return lines.join("\n").trimEnd();
94
+ }
95
+
96
+ function buildPreferencesBlock() {
97
+ let cfg = {};
98
+ try {
99
+ const raw = fs.readFileSync(
100
+ path.join(projectDir, "agileflow.config.json"),
101
+ "utf8",
102
+ );
103
+ cfg = JSON.parse(raw);
104
+ } catch {
105
+ // config missing — emit nothing
106
+ return null;
107
+ }
108
+
109
+ const babysit = cfg?.plugins?.core?.settings?.babysit;
110
+ if (!babysit) return null;
111
+
112
+ const mode = babysit.mode || "full";
113
+ const f = babysit.features || {};
114
+
115
+ const on = (key) => {
116
+ if (mode === "full") return true;
117
+ if (mode === "light")
118
+ return ["askQuestions", "planMode", "taskTracking"].includes(key);
119
+ if (mode === "minimal") return key === "askQuestions";
120
+ // custom — default true for core features unless explicitly false
121
+ const defaults = {
122
+ askQuestions: true,
123
+ planMode: true,
124
+ delegation: true,
125
+ taskTracking: true,
126
+ progressUpdates: true,
127
+ auditAll: false,
128
+ logicAudit: true,
129
+ flowAudit: true,
130
+ securityAudit: true,
131
+ performanceAudit: false,
132
+ accessibilityAudit: false,
133
+ legalAudit: false,
134
+ strictMode: false,
135
+ tddMode: false,
136
+ };
137
+ return key in f ? f[key] : (defaults[key] ?? false);
138
+ };
139
+
140
+ const prefs = [];
141
+
142
+ if (on("askQuestions")) {
143
+ prefs.push(
144
+ '- **Ask at decision points** — end responses with AskUserQuestion (specific options, one marked Recommended). Never generic "Continue?".',
145
+ );
146
+ }
147
+ if (on("planMode")) {
148
+ prefs.push(
149
+ "- **Plan mode for non-trivial work** — EnterPlanMode before implementing anything beyond a one-liner.",
150
+ );
151
+ }
152
+ if (on("delegation")) {
153
+ prefs.push(
154
+ "- **Delegate to domain experts** — use Task tool with appropriate subagent_type for complex single-domain work; orchestrator for multi-domain.",
155
+ );
156
+ }
157
+ if (on("taskTracking")) {
158
+ prefs.push(
159
+ "- **Track progress** — TaskCreate for 3+ step tasks, TaskUpdate as each completes.",
160
+ );
161
+ }
162
+ if (on("progressUpdates")) {
163
+ prefs.push(
164
+ "- **Short status updates** — brief progress notes while working.",
165
+ );
166
+ }
167
+ const always = mode === "full" || on("auditAll");
168
+
169
+ if (on("logicAudit")) {
170
+ prefs.push(
171
+ always
172
+ ? "- **Logic audit after every implementation** — suggest 🔍 Run logic audit as (Recommended) after every implementation."
173
+ : "- **Logic audit after implementation** — suggest 🔍 Run logic audit as (Recommended) after implementation.",
174
+ );
175
+ }
176
+ if (on("flowAudit")) {
177
+ prefs.push(
178
+ always
179
+ ? "- **Flow audit after every implementation** — suggest 🔄 Run flow audit after every implementation. Include a Verify flow integrity step in plans."
180
+ : "- **Flow audit after implementation** — when user-facing flows were touched (forms, navigation, auth, CRUD), suggest 🔄 Run flow audit after implementation. Include a Verify flow integrity step in plans.",
181
+ );
182
+ }
183
+ if (on("securityAudit")) {
184
+ prefs.push(
185
+ always
186
+ ? "- **Security audit after every implementation** — suggest 🔒 Run security audit after every implementation."
187
+ : "- **Security audit after implementation** — when auth, APIs, user input, file handling, or sensitive data were touched, suggest 🔒 Run security audit after implementation.",
188
+ );
189
+ }
190
+ if (on("performanceAudit")) {
191
+ prefs.push(
192
+ always
193
+ ? "- **Performance audit after every implementation** — suggest ⚡ Run performance audit after every implementation."
194
+ : "- **Performance audit after implementation** — when database queries, rendering, large data, or caching were touched, suggest ⚡ Run performance audit after implementation.",
195
+ );
196
+ }
197
+ if (on("accessibilityAudit")) {
198
+ prefs.push(
199
+ always
200
+ ? "- **Accessibility audit after every implementation** — suggest ♿ Run accessibility audit after every implementation."
201
+ : "- **Accessibility audit after implementation** — when UI components, forms, or interactive elements were changed, suggest ♿ Run accessibility audit after implementation.",
202
+ );
203
+ }
204
+ if (on("legalAudit")) {
205
+ prefs.push(
206
+ always
207
+ ? "- **Legal audit after every implementation** — suggest ⚖️ Run legal audit after every implementation."
208
+ : "- **Legal audit after implementation** — when data collection, privacy, user consent, or compliance-sensitive code was touched, suggest ⚖️ Run legal audit after implementation.",
209
+ );
210
+ }
211
+ if (on("strictMode")) {
212
+ prefs.push(
213
+ "- **Strict gates** — hide commit option until tests pass; auto-trigger code review at 5+ files changed; remove skip options.",
214
+ );
215
+ }
216
+ if (on("tddMode")) {
217
+ prefs.push(
218
+ "- **TDD phases** — RED (failing tests first) → GREEN (minimum code) → REFACTOR. Gate each phase.",
219
+ );
220
+ }
221
+
222
+ if (prefs.length === 0) return null;
223
+
224
+ const modeLabel =
225
+ mode === "custom"
226
+ ? `custom (${Object.entries(f)
227
+ .filter(([, v]) => v)
228
+ .map(([k]) => k)
229
+ .join(", ")})`
230
+ : mode;
231
+
232
+ const prefsBlock = [
233
+ `## User Preferences (agileflow ${modeLabel} mode)`,
234
+ "",
235
+ "Apply these preferences throughout this session across all skills and tasks:",
236
+ "",
237
+ ...prefs,
238
+ "",
239
+ "To change: run `agileflow setup`.",
240
+ ].join("\n");
241
+
242
+ const capsBlock = buildCapabilitiesBlock(cfg);
243
+
244
+ return capsBlock ? `${capsBlock}\n\n${prefsBlock}` : prefsBlock;
245
+ }
246
+
247
+ /**
248
+ * Build a learnings block by scanning the installed skills directory for
249
+ * skills that have `learns.enabled: true` and have at least one learning entry.
250
+ *
251
+ * @param {object} cfg - parsed agileflow.config.json
252
+ * @returns {string|null}
253
+ */
254
+ function buildLearningsBlock(cfg) {
255
+ if (!_readLearnings || !_formatLearningsBlock) return null;
256
+ if (!cfg?.learnings?.enabled) return null;
257
+
258
+ const primaryIde =
259
+ Array.isArray(cfg?.ide?.targets) && cfg.ide.targets.length > 0
260
+ ? cfg.ide.targets[0]
261
+ : "claude-code";
262
+
263
+ const skillsDir =
264
+ IDE_CAPABILITIES?.[primaryIde]?.skillsDir ?? ".claude/skills";
265
+ const absoluteSkillsDir = path.join(projectDir, skillsDir);
266
+
267
+ let skillNames;
268
+ try {
269
+ skillNames = fs.readdirSync(absoluteSkillsDir);
270
+ } catch {
271
+ return null; // skills dir not yet installed
272
+ }
273
+
274
+ const yaml = (() => {
275
+ try {
276
+ return require("js-yaml");
277
+ } catch {
278
+ return null;
279
+ }
280
+ })();
281
+ if (!yaml) return null;
282
+
283
+ const blocks = [];
284
+
285
+ for (const skillName of skillNames) {
286
+ const skillMdPath = path.join(absoluteSkillsDir, skillName, "SKILL.md");
287
+ let skillMdText;
288
+ try {
289
+ skillMdText = fs.readFileSync(skillMdPath, "utf8");
290
+ } catch {
291
+ continue;
292
+ }
293
+
294
+ // Parse frontmatter between first two `---` fences.
295
+ const fmMatch = skillMdText.match(/^---\r?\n([\s\S]*?)\r?\n---/);
296
+ if (!fmMatch) continue;
297
+
298
+ let fm;
299
+ try {
300
+ fm = yaml.load(fmMatch[1]);
301
+ } catch {
302
+ continue;
303
+ }
304
+
305
+ if (!fm?.learns?.enabled) continue;
306
+
307
+ // readLearnings is async — run synchronously via the already-read skills dir.
308
+ // We resolve the learnings file path directly.
309
+ const learnFile = fm.learns.file || `_learnings/${skillName}.yaml`;
310
+ const safeParts = learnFile
311
+ .split("/")
312
+ .filter((p) => p && p !== ".." && p !== ".");
313
+ const learnFilePath = path.join(absoluteSkillsDir, skillName, ...safeParts);
314
+
315
+ let learningsData;
316
+ try {
317
+ const text = fs.readFileSync(learnFilePath, "utf8");
318
+ if (!text.trim()) continue;
319
+ const doc = yaml.load(text);
320
+ if (!doc || !Array.isArray(doc.entries) || doc.entries.length === 0)
321
+ continue;
322
+ learningsData = { entries: doc.entries, skill: skillName };
323
+ } catch {
324
+ continue; // file absent or invalid — skip silently
325
+ }
326
+
327
+ const block = _formatLearningsBlock(learningsData);
328
+ if (block) blocks.push(block);
329
+ }
330
+
331
+ return blocks.length > 0 ? blocks.join("\n\n") : null;
332
+ }
333
+
334
+ if (require.main === module) {
335
+ let cfg = {};
336
+ try {
337
+ cfg = JSON.parse(
338
+ fs.readFileSync(path.join(projectDir, "agileflow.config.json"), "utf8"),
339
+ );
340
+ } catch {
341
+ /* ignore */
342
+ }
343
+
344
+ const prefsBlock = buildPreferencesBlock();
345
+ const learnBlock = buildLearningsBlock(cfg);
346
+
347
+ const parts = [prefsBlock, learnBlock].filter(Boolean);
348
+ if (parts.length > 0) {
349
+ process.stdout.write(parts.join("\n\n") + "\n");
350
+ }
351
+ process.exit(0);
352
+ }
@@ -1,13 +1,6 @@
1
- # Core plugin — essential AgileFlow workflow.
2
- # Always enabled; cannot be disabled.
3
- #
4
- # Hooks declared here are CANDIDATES — the install-time aggregator
5
- # filters them by the user's `behaviors:` map in agileflow.config.json.
6
- # A hook ID that maps to a disabled behavior never enters the
7
- # generated hook-manifest.yaml. See apps/cli/src/runtime/hooks/aggregator.js.
8
1
  id: core
9
2
  name: Core
10
- description: Epic, Story, Status, Babysit — essential agile workflow.
3
+ description: Essential AgileFlow skills.
11
4
  version: 1.0.0
12
5
  enabledByDefault: true
13
6
  cannotDisable: true
@@ -15,7 +8,6 @@ cannotDisable: true
15
8
  depends: []
16
9
 
17
10
  provides:
18
- commands: []
19
11
  skills:
20
12
  - id: agileflow-adr
21
13
  dir: skills/agileflow-adr
@@ -27,56 +19,60 @@ provides:
27
19
  dir: skills/agileflow-status-updater
28
20
  - id: agileflow-babysit-mentor
29
21
  dir: skills/agileflow-babysit-mentor
30
- agents: []
22
+ agents:
23
+ - id: adr-writer
24
+ path: agents/adr-writer.md
25
+ - id: epic-planner
26
+ path: agents/epic-planner.md
27
+ - id: mentor
28
+ path: agents/mentor.md
29
+ - id: orchestrator
30
+ path: agents/orchestrator.md
31
+ - id: team-coordinator
32
+ path: agents/team-coordinator.md
33
+ - id: team-lead
34
+ path: agents/team-lead.md
35
+ - id: workspace-orchestrator
36
+ path: agents/workspace-orchestrator.md
31
37
  hooks:
32
- # SessionStart — context loading + (optional) mentor injection.
33
38
  - id: context-loader
34
39
  event: SessionStart
35
40
  script: hooks/context-loader.js
36
41
  timeout: 5000
37
42
  skipOnError: true
38
43
  behavior: loadContext
39
-
40
- - id: babysit-mentor-injector
44
+ - id: preferences-injector
41
45
  event: SessionStart
42
- script: hooks/babysit-mentor-injector.js
46
+ script: hooks/preferences-injector.js
43
47
  timeout: 2000
44
48
  skipOnError: true
45
49
  runAfter: [context-loader]
46
50
  behavior: babysitDefault
47
-
48
- # PreToolUse — damage control. skipOnError false: errors should
49
- # block dangerous operations rather than be tolerated.
50
51
  - id: damage-control-bash
51
52
  event: PreToolUse
52
53
  matcher: Bash
53
54
  script: hooks/damage-control-bash.js
54
55
  timeout: 3000
55
56
  skipOnError: false
56
- behavior: damageControl
57
-
57
+ behavior: damageControlBash
58
58
  - id: damage-control-edit
59
59
  event: PreToolUse
60
60
  matcher: Edit
61
61
  script: hooks/damage-control-edit.js
62
62
  timeout: 3000
63
63
  skipOnError: false
64
- behavior: damageControl
65
-
64
+ behavior: damageControlEdit
66
65
  - id: damage-control-write
67
66
  event: PreToolUse
68
67
  matcher: Write
69
68
  script: hooks/damage-control-write.js
70
69
  timeout: 3000
71
70
  skipOnError: false
72
- behavior: damageControl
73
-
74
- # PreCompact — preserve state across compaction.
75
- - id: pre-compact-state
76
- event: PreCompact
77
- script: hooks/pre-compact-state.js
71
+ behavior: damageControlWrite
72
+ - id: post-compact-state
73
+ event: PostCompact
74
+ script: hooks/post-compact-state.js
78
75
  timeout: 5000
79
76
  skipOnError: true
80
77
  behavior: preCompactState
81
-
82
78
  templates: []
@@ -34,8 +34,6 @@ depends:
34
34
  plugins: [core]
35
35
  ---
36
36
 
37
- <!-- {{PERSONALIZATION_BLOCK}} -->
38
-
39
37
  # AgileFlow ADR Writer
40
38
 
41
39
  Captures architectural / technical decisions as formal Architecture
@@ -66,6 +64,7 @@ and link the chain.
66
64
  ## Self-improving learnings
67
65
 
68
66
  `.agileflow/skills/_learnings/adr.yaml` records preferences:
67
+
69
68
  - Default `Status:` value (Proposed vs Accepted)
70
69
  - Whether to require all four MADR sections or allow brief mode
71
70
  - Preferred date format
@@ -82,14 +81,17 @@ and link the chain.
82
81
  **Tags**: architecture, database, api, …
83
82
 
84
83
  ## Context and Problem Statement
84
+
85
85
  [Describe the context and problem. What are we trying to solve? Why now?]
86
86
 
87
87
  ## Decision Drivers
88
+
88
89
  - [e.g., Performance requirements]
89
90
  - [e.g., Team expertise]
90
91
  - [e.g., Cost constraints]
91
92
 
92
93
  ## Considered Options
94
+
93
95
  - [Option 1]
94
96
  - [Option 2]
95
97
  - [Option 3]
@@ -101,24 +103,29 @@ and link the chain.
101
103
  **Justification**: [Why this option best satisfies the drivers]
102
104
 
103
105
  ### Positive Consequences
106
+
104
107
  - [Good outcome 1]
105
108
  - [Good outcome 2]
106
109
 
107
110
  ### Negative Consequences
111
+
108
112
  - [Bad outcome 1] — Mitigation: [plan, if any]
109
113
  - [Bad outcome 2]
110
114
 
111
115
  ## Pros and Cons of the Options
112
116
 
113
117
  ### [Option 1]
118
+
114
119
  **Pros**: …
115
120
  **Cons**: …
116
121
 
117
122
  ### [Option 2]
123
+
118
124
  **Pros**: …
119
125
  **Cons**: …
120
126
 
121
127
  ## Links
128
+
122
129
  - [Related ADRs]
123
130
  - [Relevant documentation]
124
131
  - [External resources]
@@ -134,10 +141,12 @@ and link the chain.
134
141
  ## When to write the ADR vs ask first
135
142
 
136
143
  Write it now (with `Status: Accepted`):
144
+
137
145
  - The user has already made a clear decision and wants to record it
138
146
  - The user explicitly asks for the ADR
139
147
 
140
148
  Ask first (then write with `Status: Proposed` or `Accepted`):
149
+
141
150
  - Multiple options are still in play
142
151
  - Drivers / constraints aren't clear yet
143
152
  - The chosen option's justification is one-line ("we like it more")
@@ -157,12 +166,13 @@ Ask first (then write with `Status: Proposed` or `Accepted`):
157
166
 
158
167
  ## Integration
159
168
 
160
- - **agileflow-story-writer** — completed ADRs inform Technical Notes
161
- in stories
162
- - **agileflow-epic-planner** — major epics often spawn one or more
163
- ADRs at planning time
164
- - **agileflow-status-updater** — flipping an ADR from Proposed to
165
- Accepted is a status mutation through that skill
169
+ - **agileflow-story-writer** — completed ADRs inform Technical Notes in stories; reference the ADR number in the story's context section
170
+ - **agileflow-epic-planner** — major epics often spawn one or more ADRs at planning time; create the ADR before writing stories so implementation decisions are settled
171
+ - **agileflow-status-updater** — flipping an ADR from Proposed to Accepted is a status mutation; route through status-updater to keep `status.json` accurate
172
+ - **agileflow-council** council sessions are the primary source of ADR content; after a council reaches a decision, create an ADR to record it formally
173
+ - **agileflow-research** — research provides the factual foundation for ADRs (benchmarks, library comparisons, community precedent); always link or summarise the research in the ADR body
174
+ - **agileflow-planning** use planning's impact analysis output as the context section of an ADR when the decision involves scope or delivery trade-offs
175
+ - **agileflow-delivery** — for breaking API changes or major dependency upgrades, create an ADR before the delivery cycle begins so the rationale is documented before merge
166
176
 
167
177
  ## Notes
168
178
 
@@ -177,3 +187,19 @@ Ask first (then write with `Status: Proposed` or `Accepted`):
177
187
  knowing who to ask.
178
188
  - Date the ADR — context erodes; the date is the timestamp on the
179
189
  thinking, not just the file.
190
+
191
+ ## References
192
+
193
+ Load these files when you need deeper context for the relevant task:
194
+
195
+ | File | When to load |
196
+ | --------------------------------- | ---------------------------------------------------------------------------------------------------- |
197
+ | `references/madr-format-guide.md` | Writing or reviewing an ADR — MADR format, required sections, common mistakes, numbering conventions |
198
+
199
+ ## Workflows
200
+
201
+ Follow these step-by-step when the user initiates the matching action:
202
+
203
+ | File | When to follow |
204
+ | ------------------------ | --------------------------------------------------------------------------------------------------------------------- |
205
+ | `workflows/write-adr.md` | User wants to record a decision or is comparing options — gathers context, drafts ADR, gets confirmation, writes file |