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
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Typed user-facing errors for the AgileFlow CLI.
3
+ *
4
+ * Every error a user is likely to hit (bad argument, missing config,
5
+ * failed install) should be one of these classes so the formatter can
6
+ * print a consistent two-line message:
7
+ *
8
+ * ✗ agileflow <cmd>: <message>
9
+ * Try: <suggestion>
10
+ *
11
+ * Internal/programmer errors should stay as plain `Error` — `fail()`
12
+ * wraps them with a generic "Try: re-run with --debug" suggestion so
13
+ * the CLI never prints a bare stack trace at users.
14
+ */
15
+ const chalk = require("chalk");
16
+
17
+ /**
18
+ * @typedef {object} AgileflowErrorOptions
19
+ * @property {string} [suggestion] Actionable fix the user should try next.
20
+ * @property {string} [code] Stable machine-readable code (defaults per subclass).
21
+ * @property {Error} [cause] Underlying error, if wrapping.
22
+ */
23
+
24
+ class AgileflowError extends Error {
25
+ /**
26
+ * @param {string} message
27
+ * @param {AgileflowErrorOptions} [options]
28
+ */
29
+ constructor(message, options = {}) {
30
+ super(message);
31
+ this.name = "AgileflowError";
32
+ this.suggestion = options.suggestion;
33
+ this.code = options.code || "ERR_AGILEFLOW";
34
+ if (options.cause) this.cause = options.cause;
35
+ }
36
+ }
37
+
38
+ class MissingFileError extends AgileflowError {
39
+ constructor(message, options = {}) {
40
+ super(message, { code: "ERR_MISSING_FILE", ...options });
41
+ this.name = "MissingFileError";
42
+ }
43
+ }
44
+
45
+ class InvalidArgumentError extends AgileflowError {
46
+ constructor(message, options = {}) {
47
+ super(message, { code: "ERR_INVALID_ARGUMENT", ...options });
48
+ this.name = "InvalidArgumentError";
49
+ }
50
+ }
51
+
52
+ class OperationFailedError extends AgileflowError {
53
+ constructor(message, options = {}) {
54
+ super(message, { code: "ERR_OPERATION_FAILED", ...options });
55
+ this.name = "OperationFailedError";
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Format an error as a two-line stderr string. Does not write — caller decides.
61
+ *
62
+ * @param {Error} err
63
+ * @param {{ command?: string }} [opts]
64
+ * @returns {string}
65
+ */
66
+ function formatError(err, opts = {}) {
67
+ const cmd = opts.command ? `agileflow ${opts.command}` : "agileflow";
68
+ const head = `${chalk.red("✗")} ${cmd}: ${err.message}`;
69
+ const isAgileflowError = err instanceof AgileflowError;
70
+ const hasStringSuggestion =
71
+ isAgileflowError && typeof err.suggestion === "string" && err.suggestion;
72
+ const suggestion = hasStringSuggestion
73
+ ? err.suggestion
74
+ : isAgileflowError
75
+ ? null
76
+ : "Re-run with DEBUG=1 for a stack trace, or report at https://github.com/anthropics/agileflow/issues";
77
+ if (!suggestion) return head;
78
+ return `${head}\n ${chalk.dim(`Try: ${suggestion}`)}`;
79
+ }
80
+
81
+ /**
82
+ * Print an error to stderr and exit with code 1. Use this at the leaf of
83
+ * a command handler instead of `console.error(...); process.exit(1)`.
84
+ *
85
+ * Internal errors (non-AgileflowError) are still printed clearly; their
86
+ * stack trace is emitted only when `DEBUG=1` is set, so users don't see
87
+ * Node internals by default.
88
+ *
89
+ * @param {Error} err
90
+ * @param {{ command?: string }} [opts]
91
+ * @returns {never}
92
+ */
93
+ function fail(err, opts = {}) {
94
+ console.error(formatError(err, opts));
95
+ if (isDebugEnabled() && err.stack) {
96
+ console.error(chalk.dim(err.stack));
97
+ }
98
+ process.exit(1);
99
+ }
100
+
101
+ /**
102
+ * Treat DEBUG as set unless it's an explicit falsy string. Mirrors the
103
+ * convention used by most Node libraries (`debug`, `npm`), where
104
+ * DEBUG=0 / DEBUG=false / DEBUG="" all mean off.
105
+ */
106
+ function isDebugEnabled() {
107
+ const v = process.env.DEBUG;
108
+ if (!v) return false;
109
+ const lowered = String(v).toLowerCase();
110
+ return lowered !== "0" && lowered !== "false" && lowered !== "no";
111
+ }
112
+
113
+ module.exports = {
114
+ AgileflowError,
115
+ MissingFileError,
116
+ InvalidArgumentError,
117
+ OperationFailedError,
118
+ formatError,
119
+ fail,
120
+ };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Check whether a command is resolvable on the user's PATH.
3
+ *
4
+ * Used by `agileflow launch` to detect which AI CLIs (claude, codex,
5
+ * cursor-agent, aider) are installed so the onboarding picker only
6
+ * offers real choices.
7
+ *
8
+ * Implementation: shell out to `command -v` (POSIX) or `where` (Windows).
9
+ * Both are built-ins, present on every supported platform, and exit
10
+ * non-zero when the name is not found.
11
+ *
12
+ * Safety: the name argument is constrained to a conservative character
13
+ * class before being interpolated into the shell command. These are CLI
14
+ * binary names — not free-form user input — so the restriction is
15
+ * intentional rather than limiting.
16
+ */
17
+ const { execSync } = require("child_process");
18
+
19
+ const SAFE_NAME = /^[A-Za-z0-9._-]+$/;
20
+
21
+ /**
22
+ * @param {string} name
23
+ * @returns {boolean}
24
+ */
25
+ function commandExists(name) {
26
+ if (typeof name !== "string" || !SAFE_NAME.test(name)) return false;
27
+
28
+ const probe =
29
+ process.platform === "win32" ? `where ${name}` : `command -v ${name}`;
30
+
31
+ try {
32
+ execSync(probe, { stdio: "ignore", shell: true });
33
+ return true;
34
+ } catch {
35
+ return false;
36
+ }
37
+ }
38
+
39
+ module.exports = { commandExists, SAFE_NAME };
@@ -4,28 +4,26 @@
4
4
  * Returned when `agileflow.config.json` is absent. Also merged into
5
5
  * user-supplied config so missing sections get sensible defaults.
6
6
  *
7
- * @typedef {Object} Personalization
8
- * @property {'concise'|'detailed'|'teaching'} tone
9
- * @property {'none'|'decision_points'|'always'} ask_level
10
- * @property {'low'|'medium'|'high'} verbosity
11
- *
12
7
  * @typedef {Object} PluginEntry
13
8
  * @property {boolean} enabled
14
9
  * @property {Record<string, unknown>} [settings]
15
10
  *
16
11
  * @typedef {Object} Behaviors
17
- * @property {boolean} loadContext - SessionStart context dump
18
- * @property {boolean} babysitDefault - HARD mentor mode at SessionStart
19
- * @property {boolean} damageControl - PreToolUse guards on Bash/Edit/Write
20
- * @property {boolean} preCompactState - PreCompact state preservation
12
+ * @property {boolean} loadContext - SessionStart context dump
13
+ * @property {boolean} babysitDefault - HARD mentor mode at SessionStart
14
+ * @property {boolean} damageControlBash - PreToolUse guard on Bash
15
+ * @property {boolean} damageControlEdit - PreToolUse guard on Edit
16
+ * @property {boolean} damageControlWrite - PreToolUse guard on Write
17
+ * @property {boolean} preCompactState - PreCompact state preservation
21
18
  *
22
19
  * @typedef {Object} AgileflowConfig
23
20
  * @property {1} version
24
21
  * @property {Record<string, PluginEntry>} plugins
25
22
  * @property {Record<string, { enabled?: boolean, timeout?: number, skipOnError?: boolean }>} hooks
23
+ * @property {{ scope: 'project' | 'global' }} install
26
24
  * @property {Behaviors} behaviors
27
- * @property {Personalization} personalization
28
- * @property {{ primary: 'claude-code'|'cursor'|'windsurf'|'codex' }} ide
25
+ * @property {{ enabled: boolean }} learnings
26
+ * @property {{ primary?: string, targets: Array<'claude-code'|'cursor'|'windsurf'|'codex'|'antigravity'> }} ide
29
27
  * @property {string} language
30
28
  */
31
29
 
@@ -37,22 +35,29 @@ function defaultConfig() {
37
35
  core: { enabled: true },
38
36
  },
39
37
  hooks: {},
38
+ install: {
39
+ scope: "project",
40
+ },
40
41
  behaviors: {
41
42
  // Behaviors are presets that map to one or more hooks. The
42
43
  // wizard surfaces these as a curated multiselect; advanced
43
44
  // users can override individual hooks via the `hooks:` map.
44
45
  loadContext: true,
45
46
  babysitDefault: true,
46
- damageControl: true,
47
+ damageControlBash: true,
48
+ damageControlEdit: true,
49
+ damageControlWrite: true,
47
50
  preCompactState: true,
48
51
  },
49
- personalization: {
50
- tone: "concise",
51
- ask_level: "decision_points",
52
- verbosity: "medium",
52
+ learnings: {
53
+ // Global on/off for the skill self-improvement system. When false,
54
+ // install-time scaffolding is skipped and no learnings hint is
55
+ // injected into the session prompt — the `agileflow learn` CLI
56
+ // still works for users who want to manually append signals.
57
+ enabled: true,
53
58
  },
54
59
  ide: {
55
- primary: "claude-code",
60
+ targets: ["claude-code"],
56
61
  },
57
62
  language: "en",
58
63
  };
@@ -21,9 +21,57 @@ const ajv = new Ajv({ allErrors: true, useDefaults: false, strict: false });
21
21
  const validate = ajv.compile(schema);
22
22
 
23
23
  /**
24
- * Shallow-merge user config on top of defaults. `plugins`, `hooks`, and
25
- * `personalization` sub-objects are deep-merged at one level so that
26
- * partial user configs don't wipe defaults.
24
+ * Migrate older config shapes into the current schema before validation.
25
+ * This keeps `agileflow setup` usable across alpha bumps even when a
26
+ * project already has an older config checked in.
27
+ *
28
+ * @param {any} parsed
29
+ * @returns {any}
30
+ */
31
+ function migrateLegacyConfig(parsed) {
32
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
33
+ return parsed;
34
+ }
35
+
36
+ const migrated = { ...parsed };
37
+
38
+ if (
39
+ migrated.behaviors &&
40
+ typeof migrated.behaviors === "object" &&
41
+ !Array.isArray(migrated.behaviors)
42
+ ) {
43
+ const behaviors = { ...migrated.behaviors };
44
+ if (Object.prototype.hasOwnProperty.call(behaviors, "damageControl")) {
45
+ const damageControl = Boolean(behaviors.damageControl);
46
+ delete behaviors.damageControl;
47
+ behaviors.damageControlBash = damageControl;
48
+ behaviors.damageControlEdit = damageControl;
49
+ behaviors.damageControlWrite = damageControl;
50
+ }
51
+ migrated.behaviors = behaviors;
52
+ }
53
+
54
+ if (
55
+ migrated.ide &&
56
+ typeof migrated.ide === "object" &&
57
+ !Array.isArray(migrated.ide)
58
+ ) {
59
+ const ide = { ...migrated.ide };
60
+ if (!Array.isArray(ide.targets) || ide.targets.length === 0) {
61
+ if (typeof ide.primary === "string") {
62
+ ide.targets = [ide.primary];
63
+ }
64
+ }
65
+ migrated.ide = ide;
66
+ }
67
+
68
+ return migrated;
69
+ }
70
+
71
+ /**
72
+ * Shallow-merge user config on top of defaults. `plugins` and `hooks`
73
+ * sub-objects are deep-merged at one level so that partial user configs
74
+ * don't wipe defaults.
27
75
  *
28
76
  * @param {import('./defaults.js').AgileflowConfig} defaults
29
77
  * @param {Partial<import('./defaults.js').AgileflowConfig>} user
@@ -34,16 +82,35 @@ function mergeConfig(defaults, user) {
34
82
  version: user.version ?? defaults.version,
35
83
  plugins: { ...defaults.plugins, ...(user.plugins || {}) },
36
84
  hooks: { ...defaults.hooks, ...(user.hooks || {}) },
85
+ install: { ...defaults.install, ...(user.install || {}) },
37
86
  behaviors: { ...defaults.behaviors, ...(user.behaviors || {}) },
38
- personalization: {
39
- ...defaults.personalization,
40
- ...(user.personalization || {}),
41
- },
42
- ide: { ...defaults.ide, ...(user.ide || {}) },
87
+ learnings: { ...defaults.learnings, ...(user.learnings || {}) },
88
+ ide: mergeIde(defaults.ide, user.ide),
43
89
  language: user.language ?? defaults.language,
44
90
  };
45
91
  }
46
92
 
93
+ /**
94
+ * Merge user `ide` block onto defaults, normalizing legacy `primary` into
95
+ * `targets`. Old configs (alpha.1 / alpha.2) shipped only `primary`; we
96
+ * migrate them in-memory so a single re-install moves them onto the new
97
+ * shape without forcing the user to hand-edit JSON.
98
+ *
99
+ * @param {{ targets: string[], primary?: string }} defaultsIde
100
+ * @param {{ targets?: string[], primary?: string } | undefined} userIde
101
+ * @returns {{ targets: string[], primary?: string }}
102
+ */
103
+ function mergeIde(defaultsIde, userIde) {
104
+ const merged = { ...defaultsIde, ...(userIde || {}) };
105
+ if (!Array.isArray(merged.targets) || merged.targets.length === 0) {
106
+ merged.targets =
107
+ typeof merged.primary === "string"
108
+ ? [merged.primary]
109
+ : [...defaultsIde.targets];
110
+ }
111
+ return merged;
112
+ }
113
+
47
114
  /**
48
115
  * Format Ajv errors as a single human-readable message with JSON Pointers.
49
116
  * @param {import('ajv').ErrorObject[]} errors
@@ -93,6 +160,8 @@ async function loadConfig(cwd) {
93
160
  throw new Error(`Invalid JSON in ${configPath}: ${err.message}`);
94
161
  }
95
162
 
163
+ parsed = migrateLegacyConfig(parsed);
164
+
96
165
  if (!validate(parsed)) {
97
166
  const details = formatSchemaErrors(validate.errors || []);
98
167
  throw new Error(`Config validation failed for ${configPath}:\n${details}`);
@@ -39,6 +39,18 @@
39
39
  }
40
40
  }
41
41
  },
42
+ "install": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "description": "Where AgileFlow is installed. Project installs write into the current repository; global installs write under the user's home directory.",
46
+ "properties": {
47
+ "scope": {
48
+ "type": "string",
49
+ "enum": ["project", "global"],
50
+ "description": "Install scope for config, AgileFlow state, and IDE mirrors."
51
+ }
52
+ }
53
+ },
42
54
  "behaviors": {
43
55
  "type": "object",
44
56
  "description": "Curated behavior presets. Each maps to one or more hooks the installer wires up. Disabling a behavior excludes its hooks from the generated hook-manifest.yaml.",
@@ -52,9 +64,17 @@
52
64
  "type": "boolean",
53
65
  "description": "SessionStart: inject the babysit-mentor pattern so Claude defaults to mentor mode without explicit invocation."
54
66
  },
55
- "damageControl": {
67
+ "damageControlBash": {
68
+ "type": "boolean",
69
+ "description": "PreToolUse: block dangerous Bash commands (rm -rf /, fork bombs, etc.)."
70
+ },
71
+ "damageControlEdit": {
56
72
  "type": "boolean",
57
- "description": "PreToolUse: block dangerous Bash commands and risky Edit/Write paths via the patterns library."
73
+ "description": "PreToolUse: block risky Edit operations on sensitive paths (.env, .ssh/, etc.)."
74
+ },
75
+ "damageControlWrite": {
76
+ "type": "boolean",
77
+ "description": "PreToolUse: block risky Write operations on sensitive paths (.env, .ssh/, etc.)."
58
78
  },
59
79
  "preCompactState": {
60
80
  "type": "boolean",
@@ -62,22 +82,12 @@
62
82
  }
63
83
  }
64
84
  },
65
- "personalization": {
85
+ "learnings": {
66
86
  "type": "object",
67
87
  "additionalProperties": false,
88
+ "description": "Global on/off for the skill self-improvement system. When false, install-time scaffolding is skipped and no learnings hint is injected into the session prompt.",
68
89
  "properties": {
69
- "tone": {
70
- "type": "string",
71
- "enum": ["concise", "detailed", "teaching"]
72
- },
73
- "ask_level": {
74
- "type": "string",
75
- "enum": ["none", "decision_points", "always"]
76
- },
77
- "verbosity": {
78
- "type": "string",
79
- "enum": ["low", "medium", "high"]
80
- }
90
+ "enabled": { "type": "boolean" }
81
91
  }
82
92
  },
83
93
  "ide": {
@@ -86,7 +96,24 @@
86
96
  "properties": {
87
97
  "primary": {
88
98
  "type": "string",
89
- "enum": ["claude-code", "cursor", "windsurf", "codex"]
99
+ "enum": ["claude-code", "cursor", "windsurf", "codex", "antigravity"],
100
+ "description": "Deprecated alias for targets[0]; kept for back-compat with prior alphas."
101
+ },
102
+ "targets": {
103
+ "type": "array",
104
+ "minItems": 1,
105
+ "uniqueItems": true,
106
+ "items": {
107
+ "type": "string",
108
+ "enum": [
109
+ "claude-code",
110
+ "cursor",
111
+ "windsurf",
112
+ "codex",
113
+ "antigravity"
114
+ ]
115
+ },
116
+ "description": "IDEs / CLIs to install AgileFlow surface into (skills, hooks, settings)."
90
117
  }
91
118
  }
92
119
  },
@@ -30,14 +30,16 @@ async function writeConfig(cwd, config) {
30
30
  version: 1,
31
31
  plugins: config.plugins,
32
32
  hooks: config.hooks,
33
+ install: config.install,
33
34
  behaviors: config.behaviors,
34
- personalization: config.personalization,
35
+ learnings: config.learnings,
35
36
  ide: config.ide,
36
37
  language: config.language,
37
38
  };
38
39
  const content = JSON.stringify(payload, null, 2) + "\n";
39
40
 
40
41
  try {
42
+ await fs.promises.mkdir(cwd, { recursive: true });
41
43
  await fs.promises.writeFile(tmp, content, "utf8");
42
44
  await fs.promises.rename(tmp, file);
43
45
  } catch (err) {
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Babysit mentor skill renderer.
3
+ *
4
+ * The bundled babysit skill stays as the shared baseline. At install
5
+ * time we append IDE-specific guidance so the mirrored SKILL.md only
6
+ * names primitives the target can actually use.
7
+ */
8
+ const { capabilitiesFor } = require("./capabilities.js");
9
+
10
+ const VALID_MODES = new Set(["full", "light", "minimal", "custom"]);
11
+
12
+ const DEFAULT_CUSTOM_FEATURES = {
13
+ planMode: true,
14
+ askQuestions: true,
15
+ taskTracking: true,
16
+ delegation: true,
17
+ progressUpdates: true,
18
+ };
19
+
20
+ /**
21
+ * @param {any} config
22
+ * @returns {{ mode: 'full' | 'light' | 'minimal' | 'custom' | null, features: Record<string, boolean> }}
23
+ */
24
+ function resolveBabysitSettings(config) {
25
+ const raw =
26
+ config &&
27
+ config.plugins &&
28
+ config.plugins.core &&
29
+ config.plugins.core.settings &&
30
+ config.plugins.core.settings.babysit;
31
+ const mode = raw && VALID_MODES.has(raw.mode) ? raw.mode : null;
32
+ const features =
33
+ raw && raw.features && typeof raw.features === "object"
34
+ ? { ...DEFAULT_CUSTOM_FEATURES, ...raw.features }
35
+ : { ...DEFAULT_CUSTOM_FEATURES };
36
+ return { mode, features };
37
+ }
38
+
39
+ /**
40
+ * @param {string} targetIde
41
+ * @param {any} config
42
+ * @returns {'full' | 'light' | 'minimal' | 'custom'}
43
+ */
44
+ function resolveBabysitMode(targetIde, config) {
45
+ const { mode } = resolveBabysitSettings(config);
46
+ if (mode) return mode;
47
+ return targetIde === "claude-code" ? "full" : "light";
48
+ }
49
+
50
+ /**
51
+ * @param {'full' | 'light' | 'minimal' | 'custom'} mode
52
+ * @param {Record<string, boolean>} customFeatures
53
+ * @returns {Record<string, boolean>}
54
+ */
55
+ function featuresForMode(mode, customFeatures) {
56
+ if (mode === "custom")
57
+ return { ...DEFAULT_CUSTOM_FEATURES, ...customFeatures };
58
+ if (mode === "minimal") {
59
+ return {
60
+ planMode: false,
61
+ askQuestions: false,
62
+ taskTracking: false,
63
+ delegation: false,
64
+ progressUpdates: false,
65
+ };
66
+ }
67
+ if (mode === "light") {
68
+ return {
69
+ planMode: true,
70
+ askQuestions: true,
71
+ taskTracking: true,
72
+ delegation: false,
73
+ progressUpdates: true,
74
+ };
75
+ }
76
+ return { ...DEFAULT_CUSTOM_FEATURES };
77
+ }
78
+
79
+ /**
80
+ * Build the IDE-specific appendix for the babysit skill.
81
+ *
82
+ * @param {string} targetIde
83
+ * @param {any} config
84
+ * @returns {string}
85
+ */
86
+ function renderBabysitAppendix(targetIde, config) {
87
+ const caps = capabilitiesFor(targetIde);
88
+ const mode = resolveBabysitMode(targetIde, config);
89
+ const settings = resolveBabysitSettings(config);
90
+ const features = featuresForMode(mode, settings.features);
91
+
92
+ const lines = [];
93
+ lines.push("## IDE-specific guidance");
94
+ lines.push("");
95
+ lines.push(`- Installed babysit mode: \`${mode}\``);
96
+ if (mode === "custom") {
97
+ const enabled = Object.entries(features)
98
+ .filter(([, value]) => value)
99
+ .map(([key]) => key);
100
+ lines.push(
101
+ `- Custom behaviors enabled: ${enabled.length ? enabled.join(", ") : "none"}`,
102
+ );
103
+ }
104
+
105
+ if (targetIde === "claude-code") {
106
+ if (features.askQuestions) {
107
+ lines.push(
108
+ "- Use `AskUserQuestion` at decision points when a choice would benefit from user control.",
109
+ );
110
+ }
111
+ if (features.planMode) {
112
+ lines.push(
113
+ "- Use `EnterPlanMode` for non-trivial implementation, then `ExitPlanMode` when the plan is ready.",
114
+ );
115
+ }
116
+ if (features.taskTracking) {
117
+ lines.push(
118
+ "- Use `TaskCreate` / `TaskUpdate` for 3+ step work and update as each step lands.",
119
+ );
120
+ }
121
+ if (features.delegation) {
122
+ lines.push(
123
+ "- Use subagents for bounded parallel exploration or delegation when the work splits cleanly.",
124
+ );
125
+ }
126
+ if (features.progressUpdates) {
127
+ lines.push("- Send short progress updates while working for a while.");
128
+ }
129
+ if (mode === "light") {
130
+ lines.push(
131
+ "- Keep the prompt surface lighter: ask only when blocked or when the next move is genuinely ambiguous.",
132
+ );
133
+ }
134
+ if (mode === "minimal") {
135
+ lines.push(
136
+ "- Keep the interaction terse: make one recommendation, explain the next action, and avoid repeated confirmation loops.",
137
+ );
138
+ }
139
+ return `${lines.join("\n")}\n`;
140
+ }
141
+
142
+ if (targetIde === "codex" && features.taskTracking) {
143
+ lines.push(
144
+ "- Use Codex tasks for multi-step work and keep the task scoped to a single clear outcome.",
145
+ );
146
+ }
147
+ if (features.askQuestions) {
148
+ lines.push(
149
+ "- Use `request_user_input` for small sets of clarifying questions when collaboration mode is enabled; otherwise fall back to a concise numbered choice list with one recommended option first.",
150
+ );
151
+ }
152
+ if (features.planMode) {
153
+ lines.push(
154
+ "- Write a short plan in plain text before non-trivial implementation.",
155
+ );
156
+ }
157
+ if (features.delegation) {
158
+ if (caps.agents) {
159
+ lines.push(
160
+ "- Use subagents for bounded parallel exploration or delegation when the work splits cleanly.",
161
+ );
162
+ } else {
163
+ lines.push(
164
+ "- If subagents are unavailable, keep delegation in plain text and split the work into explicit named steps.",
165
+ );
166
+ }
167
+ }
168
+ if (features.taskTracking) {
169
+ lines.push(
170
+ "- Track progress visibly with a checklist or step list and mark each item complete as soon as it lands.",
171
+ );
172
+ }
173
+ if (features.progressUpdates) {
174
+ lines.push("- Keep the user updated as each step lands.");
175
+ }
176
+ return `${lines.join("\n")}\n`;
177
+ }
178
+
179
+ /**
180
+ * Append IDE-specific babysit guidance to a SKILL.md payload.
181
+ *
182
+ * @param {string} skillId
183
+ * @param {string} sourceText
184
+ * @param {{ targetIde?: string, config?: any }} [context]
185
+ * @returns {string}
186
+ */
187
+ function renderSkillForTarget(skillId, sourceText, context = {}) {
188
+ if (skillId !== "agileflow-babysit-mentor") {
189
+ return sourceText;
190
+ }
191
+ const targetIde = context.targetIde || "claude-code";
192
+ const appendix = renderBabysitAppendix(targetIde, context.config);
193
+ return `${sourceText.replace(/\s+$/u, "")}\n\n${appendix}`;
194
+ }
195
+
196
+ module.exports = {
197
+ resolveBabysitSettings,
198
+ resolveBabysitMode,
199
+ featuresForMode,
200
+ renderBabysitAppendix,
201
+ renderSkillForTarget,
202
+ };