devflow-kit 1.8.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (867) hide show
  1. package/CHANGELOG.md +191 -6
  2. package/LICENSE +1 -1
  3. package/README.md +139 -219
  4. package/dist/cli/agents-view/index.js +9 -0
  5. package/dist/cli/agents-view/render.js +310 -0
  6. package/dist/cli/agents-view/state.js +423 -0
  7. package/dist/cli/agents-view/terminal.js +179 -0
  8. package/dist/cli/commands/agents.js +585 -0
  9. package/dist/cli/commands/ambient.js +231 -0
  10. package/dist/cli/commands/capture.js +133 -0
  11. package/dist/cli/commands/compliance-prompts.js +174 -0
  12. package/dist/cli/commands/compliance.js +337 -0
  13. package/dist/cli/commands/context.js +66 -0
  14. package/dist/cli/commands/debug.js +122 -0
  15. package/dist/cli/commands/flags.js +119 -0
  16. package/dist/cli/commands/hud.js +229 -0
  17. package/dist/cli/commands/init-seed.js +226 -0
  18. package/dist/cli/commands/init.js +1786 -0
  19. package/dist/cli/commands/knowledge/index.js +25 -0
  20. package/dist/cli/commands/knowledge/list.js +115 -0
  21. package/dist/cli/commands/knowledge/toggle.js +84 -0
  22. package/dist/cli/commands/learning.js +311 -0
  23. package/dist/cli/commands/legacy-hooks.js +40 -0
  24. package/dist/cli/commands/memory.js +349 -0
  25. package/dist/cli/commands/proxy.js +1435 -0
  26. package/dist/cli/commands/rules.js +334 -0
  27. package/dist/cli/commands/safe-delete.js +140 -0
  28. package/dist/cli/commands/security.js +179 -0
  29. package/dist/cli/commands/skills.js +140 -0
  30. package/dist/cli/commands/uninstall.js +1214 -0
  31. package/dist/cli.js +35 -10
  32. package/dist/commands/bug-analysis.md +400 -0
  33. package/dist/commands/code-review.md +403 -0
  34. package/dist/commands/debug.md +282 -0
  35. package/dist/commands/dynamic-build.md +972 -0
  36. package/dist/commands/dynamic-plan.md +383 -0
  37. package/dist/commands/dynamic-profile.md +206 -0
  38. package/dist/commands/dynamic-tickets.md +583 -0
  39. package/dist/commands/explore.md +208 -0
  40. package/dist/commands/implement.md +590 -0
  41. package/dist/commands/plan.md +570 -0
  42. package/dist/commands/release.md +206 -0
  43. package/dist/commands/research.md +212 -0
  44. package/dist/commands/resolve.md +731 -0
  45. package/dist/commands/self-review.md +251 -0
  46. package/dist/core/agent-frontmatter.js +209 -0
  47. package/dist/core/agent-models.js +556 -0
  48. package/dist/core/agent-state.js +44 -0
  49. package/dist/core/assets.js +39 -0
  50. package/dist/core/cache.js +205 -0
  51. package/dist/core/codex-auth-inspect.js +128 -0
  52. package/dist/core/compliance-compose.js +458 -0
  53. package/dist/core/compliance.js +165 -0
  54. package/dist/core/external-models.js +76 -0
  55. package/dist/core/feature-config.js +125 -0
  56. package/dist/core/flags.js +309 -0
  57. package/dist/core/fs-atomic.js +74 -0
  58. package/dist/core/git.js +61 -0
  59. package/dist/core/learning-queue-cleanup.js +92 -0
  60. package/dist/core/learning-tuning-config.js +78 -0
  61. package/dist/core/manifest.js +171 -0
  62. package/dist/core/migrations.js +330 -0
  63. package/dist/core/model-discovery.js +655 -0
  64. package/dist/core/observation-io.js +50 -0
  65. package/dist/core/observations.js +109 -0
  66. package/dist/core/orphan-sweep.js +92 -0
  67. package/dist/core/paths.js +48 -0
  68. package/dist/core/plugins.js +525 -0
  69. package/dist/core/project-paths.js +159 -0
  70. package/dist/core/proxy-log.js +165 -0
  71. package/dist/core/proxy-state.js +305 -0
  72. package/dist/core/safe-delete-install.js +191 -0
  73. package/dist/core/teammate-mode-cleanup.js +33 -0
  74. package/dist/hud/colors.js +13 -2
  75. package/dist/hud/components/config-counts.js +2 -2
  76. package/dist/hud/components/context-usage.js +2 -2
  77. package/dist/hud/components/learning-counts.js +92 -0
  78. package/dist/hud/components/session-cost.js +10 -2
  79. package/dist/hud/components/usage-quota.js +43 -8
  80. package/dist/hud/components/version-badge.js +17 -7
  81. package/dist/hud/config.js +4 -2
  82. package/dist/hud/cost-history.js +281 -0
  83. package/dist/hud/git.js +112 -71
  84. package/dist/hud/index.js +47 -4
  85. package/dist/hud/render.js +8 -20
  86. package/dist/hud/transcript.js +5 -6
  87. package/dist/targets/claude-code/claude-paths.js +106 -0
  88. package/dist/targets/claude-code/compliance-install.js +305 -0
  89. package/dist/targets/claude-code/hooks.js +9 -0
  90. package/dist/targets/claude-code/installer.js +458 -0
  91. package/dist/targets/claude-code/legacy.js +239 -0
  92. package/dist/targets/claude-code/post-install.js +971 -0
  93. package/package.json +23 -17
  94. package/src/assets/agents/code.md +244 -0
  95. package/src/assets/agents/design.md +113 -0
  96. package/src/assets/agents/diagnose.md +210 -0
  97. package/src/assets/agents/evaluate.md +117 -0
  98. package/src/assets/agents/git.md +938 -0
  99. package/src/assets/agents/knowledge.md +89 -0
  100. package/src/assets/agents/learning.md +203 -0
  101. package/src/assets/agents/research.md +134 -0
  102. package/src/assets/agents/review.md +220 -0
  103. package/src/assets/agents/scrutinize.md +95 -0
  104. package/src/assets/agents/simplify.md +108 -0
  105. package/src/assets/agents/skim.md +136 -0
  106. package/src/assets/agents/synthesize.md +402 -0
  107. package/src/assets/agents/test.md +155 -0
  108. package/src/assets/agents/triage.md +141 -0
  109. package/src/assets/agents/validate.md +103 -0
  110. package/src/assets/commands/_partials/_compliance.mds +5 -0
  111. package/src/assets/commands/_partials/_decisions.mds +20 -0
  112. package/src/assets/commands/_partials/_engine.mds +244 -0
  113. package/src/assets/commands/_partials/_factory.mds +216 -0
  114. package/src/assets/commands/_partials/_knowledge.mds +95 -0
  115. package/src/assets/commands/_partials/_plan_contract.mds +51 -0
  116. package/src/assets/commands/_partials/_preamble.mds +82 -0
  117. package/src/assets/commands/_partials/_publication.mds +7 -0
  118. package/src/assets/commands/_partials/_roster.mds +31 -0
  119. package/src/assets/commands/_partials/_ticket_template.mds +59 -0
  120. package/src/assets/commands/_partials/_wave.mds +123 -0
  121. package/src/assets/commands/bug-analysis.mds +353 -0
  122. package/src/assets/commands/code-review.mds +355 -0
  123. package/src/assets/commands/debug.mds +224 -0
  124. package/src/assets/commands/dynamic-build.mds +534 -0
  125. package/src/assets/commands/dynamic-plan.mds +244 -0
  126. package/src/assets/commands/dynamic-profile.mds +132 -0
  127. package/src/assets/commands/dynamic-tickets.mds +226 -0
  128. package/src/assets/commands/explore.mds +150 -0
  129. package/src/assets/commands/implement.mds +496 -0
  130. package/src/assets/commands/plan.mds +523 -0
  131. package/src/assets/commands/release.md +206 -0
  132. package/src/assets/commands/research.mds +164 -0
  133. package/src/assets/commands/resolve.mds +636 -0
  134. package/src/assets/commands/self-review.mds +156 -0
  135. package/src/assets/rules/accessibility.md +11 -0
  136. package/src/assets/rules/compliance.md +15 -0
  137. package/src/assets/rules/engineering.md +13 -0
  138. package/src/assets/rules/go.md +12 -0
  139. package/src/assets/rules/java.md +12 -0
  140. package/src/assets/rules/python.md +12 -0
  141. package/src/assets/rules/quality.md +14 -0
  142. package/src/assets/rules/react.md +11 -0
  143. package/src/assets/rules/reliability.md +12 -0
  144. package/src/assets/rules/rust.md +12 -0
  145. package/src/assets/rules/security.md +12 -0
  146. package/src/assets/rules/typescript.md +12 -0
  147. package/src/assets/rules/ui-design.md +11 -0
  148. package/src/assets/scripts/hooks/assets/orchestrator-charter.md +21 -0
  149. package/src/assets/scripts/hooks/background-memory-update +460 -0
  150. package/src/assets/scripts/hooks/capture-prompt +87 -0
  151. package/src/assets/scripts/hooks/capture-question +153 -0
  152. package/src/assets/scripts/hooks/capture-turn +105 -0
  153. package/src/assets/scripts/hooks/debug-trace +75 -0
  154. package/src/assets/scripts/hooks/decisions-usage-scan.cjs +131 -0
  155. package/src/assets/scripts/hooks/ensure-devflow-init +39 -0
  156. package/src/assets/scripts/hooks/ensure-proxy +294 -0
  157. package/src/assets/scripts/hooks/ensure-root-gitignore +116 -0
  158. package/src/assets/scripts/hooks/get-mtime +23 -0
  159. package/src/assets/scripts/hooks/git-marker +16 -0
  160. package/src/assets/scripts/hooks/hook-bootstrap +25 -0
  161. package/src/assets/scripts/hooks/hook-log-init +41 -0
  162. package/src/assets/scripts/hooks/json-helper.cjs +725 -0
  163. package/src/assets/scripts/hooks/json-parse +243 -0
  164. package/src/assets/scripts/hooks/learning-lock +44 -0
  165. package/src/assets/scripts/hooks/lib/decisions-format.cjs +301 -0
  166. package/src/assets/scripts/hooks/lib/mkdir-lock.cjs +106 -0
  167. package/src/assets/scripts/hooks/lib/project-paths.cjs +230 -0
  168. package/src/assets/scripts/hooks/lib/render-decisions.cjs +398 -0
  169. package/src/assets/scripts/hooks/lib/safe-path.cjs +29 -0
  170. package/src/assets/scripts/hooks/log-paths +24 -0
  171. package/src/assets/scripts/hooks/memory-worker +101 -0
  172. package/src/assets/scripts/hooks/pre-compact-memory +126 -0
  173. package/src/assets/scripts/hooks/preamble +77 -0
  174. package/src/assets/scripts/hooks/queue-append +120 -0
  175. package/src/assets/scripts/hooks/resolve-project-root +37 -0
  176. package/src/assets/scripts/hooks/run-hook +31 -0
  177. package/src/assets/scripts/hooks/session-start-context +180 -0
  178. package/src/assets/scripts/hooks/session-start-memory +318 -0
  179. package/src/assets/scripts/hooks/session-start-orchestrator +54 -0
  180. package/src/assets/scripts/hud.sh +5 -0
  181. package/src/assets/scripts/redact-secrets.cjs +410 -0
  182. package/src/assets/skills/accessibility/SKILL.md +145 -0
  183. package/src/assets/skills/accessibility/references/patterns.md +398 -0
  184. package/src/assets/skills/accessibility/references/sources.md +26 -0
  185. package/src/assets/skills/accessibility/references/violations.md +358 -0
  186. package/src/assets/skills/apply-decisions/SKILL.md +100 -0
  187. package/src/assets/skills/apply-feature-knowledge/SKILL.md +69 -0
  188. package/src/assets/skills/architecture/SKILL.md +138 -0
  189. package/src/assets/skills/architecture/references/patterns.md +378 -0
  190. package/src/assets/skills/architecture/references/sources.md +41 -0
  191. package/src/assets/skills/architecture/references/violations.md +314 -0
  192. package/src/assets/skills/boundary-validation/SKILL.md +119 -0
  193. package/src/assets/skills/boundary-validation/references/detection.md +283 -0
  194. package/src/assets/skills/boundary-validation/references/patterns.md +283 -0
  195. package/src/assets/skills/boundary-validation/references/sources.md +41 -0
  196. package/src/assets/skills/boundary-validation/references/violations.md +211 -0
  197. package/src/assets/skills/complexity/SKILL.md +150 -0
  198. package/src/assets/skills/compliance/SKILL.md +121 -0
  199. package/src/assets/skills/compliance/frameworks/gdpr/fragment.md +11 -0
  200. package/src/assets/skills/compliance/frameworks/gdpr/reference.md +50 -0
  201. package/src/assets/skills/compliance/frameworks/hipaa/fragment.md +11 -0
  202. package/src/assets/skills/compliance/frameworks/hipaa/reference.md +44 -0
  203. package/src/assets/skills/compliance/frameworks/iso-27001/fragment.md +10 -0
  204. package/src/assets/skills/compliance/frameworks/iso-27001/reference.md +45 -0
  205. package/src/assets/skills/compliance/frameworks/pci-dss/fragment.md +11 -0
  206. package/src/assets/skills/compliance/frameworks/pci-dss/reference.md +55 -0
  207. package/src/assets/skills/compliance/frameworks/soc2/fragment.md +10 -0
  208. package/src/assets/skills/compliance/frameworks/soc2/reference.md +53 -0
  209. package/src/assets/skills/compliance/frameworks/sox/fragment.md +10 -0
  210. package/src/assets/skills/compliance/frameworks/sox/reference.md +67 -0
  211. package/src/assets/skills/compliance/references/detection.md +108 -0
  212. package/src/assets/skills/compliance/references/sources.md +28 -0
  213. package/src/assets/skills/consistency/SKILL.md +140 -0
  214. package/src/assets/skills/database/SKILL.md +134 -0
  215. package/src/assets/skills/dependencies/SKILL.md +141 -0
  216. package/src/assets/skills/dependency-research/SKILL.md +133 -0
  217. package/src/assets/skills/dependency-research/references/evaluation-criteria.md +101 -0
  218. package/src/assets/skills/design-review/SKILL.md +155 -0
  219. package/src/assets/skills/design-review/references/anti-patterns.md +207 -0
  220. package/src/assets/skills/docs-framework/SKILL.md +190 -0
  221. package/src/assets/skills/docs-framework/references/patterns.md +381 -0
  222. package/src/assets/skills/docs-framework/references/violations.md +221 -0
  223. package/src/assets/skills/documentation/SKILL.md +126 -0
  224. package/src/assets/skills/feature-knowledge/SKILL.md +341 -0
  225. package/src/assets/skills/gap-analysis/SKILL.md +151 -0
  226. package/src/assets/skills/gap-analysis/references/check-layers.md +125 -0
  227. package/src/assets/skills/git/SKILL.md +287 -0
  228. package/src/assets/skills/git/references/github-api.md +666 -0
  229. package/src/assets/skills/git/references/patterns.md +324 -0
  230. package/src/assets/skills/git/references/sources.md +16 -0
  231. package/src/assets/skills/git/references/violations.md +128 -0
  232. package/src/assets/skills/go/SKILL.md +147 -0
  233. package/src/assets/skills/go/references/concurrency.md +335 -0
  234. package/src/assets/skills/go/references/patterns.md +278 -0
  235. package/src/assets/skills/go/references/sources.md +41 -0
  236. package/src/assets/skills/go/references/violations.md +262 -0
  237. package/src/assets/skills/java/SKILL.md +148 -0
  238. package/src/assets/skills/java/references/modern-java.md +335 -0
  239. package/src/assets/skills/java/references/patterns.md +311 -0
  240. package/src/assets/skills/java/references/sources.md +44 -0
  241. package/src/assets/skills/java/references/violations.md +257 -0
  242. package/src/assets/skills/patterns/SKILL.md +162 -0
  243. package/src/assets/skills/performance/SKILL.md +135 -0
  244. package/src/assets/skills/performance/references/patterns.md +516 -0
  245. package/src/assets/skills/performance/references/sources.md +41 -0
  246. package/src/assets/skills/performance/references/violations.md +417 -0
  247. package/src/assets/skills/python/SKILL.md +156 -0
  248. package/src/assets/skills/python/references/async.md +255 -0
  249. package/src/assets/skills/python/references/patterns.md +280 -0
  250. package/src/assets/skills/python/references/sources.md +41 -0
  251. package/src/assets/skills/python/references/violations.md +272 -0
  252. package/src/assets/skills/qa/SKILL.md +136 -0
  253. package/src/assets/skills/qa/references/browser-testing.md +97 -0
  254. package/src/assets/skills/qa/references/patterns.md +118 -0
  255. package/src/assets/skills/qa/references/scenario-templates.md +102 -0
  256. package/src/assets/skills/qa/references/sources.md +30 -0
  257. package/src/assets/skills/qa/references/violations.md +98 -0
  258. package/src/assets/skills/quality-gates/SKILL.md +152 -0
  259. package/src/assets/skills/quality-gates/references/stub-detection.md +135 -0
  260. package/src/assets/skills/react/SKILL.md +143 -0
  261. package/src/assets/skills/react/references/error-handling.md +179 -0
  262. package/src/assets/skills/react/references/forms.md +214 -0
  263. package/src/assets/skills/react/references/hooks.md +193 -0
  264. package/src/assets/skills/react/references/patterns.md +1336 -0
  265. package/src/assets/skills/react/references/sources.md +35 -0
  266. package/src/assets/skills/react/references/violations.md +570 -0
  267. package/src/assets/skills/regression/SKILL.md +146 -0
  268. package/src/assets/skills/reliability/SKILL.md +153 -0
  269. package/src/assets/skills/reliability/references/detection.md +66 -0
  270. package/src/assets/skills/reliability/references/patterns.md +151 -0
  271. package/src/assets/skills/reliability/references/sources.md +27 -0
  272. package/src/assets/skills/reliability/references/violations.md +125 -0
  273. package/src/assets/skills/research-codebase/SKILL.md +135 -0
  274. package/src/assets/skills/research-competitor/SKILL.md +145 -0
  275. package/src/assets/skills/research-external/SKILL.md +141 -0
  276. package/src/assets/skills/research-market/SKILL.md +145 -0
  277. package/src/assets/skills/research-technology/SKILL.md +180 -0
  278. package/src/assets/skills/review-methodology/SKILL.md +121 -0
  279. package/src/assets/skills/review-methodology/references/patterns.md +186 -0
  280. package/src/assets/skills/review-methodology/references/report-template.md +142 -0
  281. package/src/assets/skills/review-methodology/references/violations.md +125 -0
  282. package/src/assets/skills/rust/SKILL.md +148 -0
  283. package/src/assets/skills/rust/references/ownership.md +278 -0
  284. package/src/assets/skills/rust/references/patterns.md +247 -0
  285. package/src/assets/skills/rust/references/sources.md +46 -0
  286. package/src/assets/skills/rust/references/violations.md +252 -0
  287. package/src/assets/skills/security/SKILL.md +121 -0
  288. package/src/assets/skills/security/references/patterns.md +271 -0
  289. package/src/assets/skills/security/references/sources.md +41 -0
  290. package/src/assets/skills/security/references/violations.md +241 -0
  291. package/src/assets/skills/software-design/SKILL.md +143 -0
  292. package/src/assets/skills/software-design/references/checklist.md +259 -0
  293. package/src/assets/skills/software-design/references/code-smell-violations.md +189 -0
  294. package/src/assets/skills/software-design/references/patterns.md +359 -0
  295. package/src/assets/skills/software-design/references/sources.md +41 -0
  296. package/src/assets/skills/software-design/references/violations.md +341 -0
  297. package/src/assets/skills/test-driven-development/SKILL.md +197 -0
  298. package/src/assets/skills/testing/SKILL.md +139 -0
  299. package/src/assets/skills/testing/references/patterns.md +346 -0
  300. package/src/assets/skills/testing/references/sources.md +53 -0
  301. package/src/assets/skills/testing/references/violations.md +322 -0
  302. package/src/assets/skills/typescript/SKILL.md +150 -0
  303. package/src/assets/skills/typescript/references/async.md +333 -0
  304. package/src/assets/skills/typescript/references/patterns.md +440 -0
  305. package/src/assets/skills/typescript/references/sources.md +41 -0
  306. package/src/assets/skills/typescript/references/type-guards.md +333 -0
  307. package/src/assets/skills/typescript/references/utility-types.md +255 -0
  308. package/src/assets/skills/typescript/references/violations.md +285 -0
  309. package/src/assets/skills/ui-design/SKILL.md +144 -0
  310. package/src/assets/skills/ui-design/references/patterns.md +341 -0
  311. package/src/assets/skills/ui-design/references/sources.md +41 -0
  312. package/src/assets/skills/ui-design/references/violations.md +312 -0
  313. package/src/assets/skills/worktree-support/SKILL.md +92 -0
  314. package/src/targets/claude-code/templates/claudeignore.template +188 -0
  315. package/src/targets/claude-code/templates/settings.json +86 -0
  316. package/dist/cli.d.ts +0 -3
  317. package/dist/commands/ambient.d.ts +0 -18
  318. package/dist/commands/ambient.js +0 -137
  319. package/dist/commands/hud.d.ts +0 -22
  320. package/dist/commands/hud.js +0 -180
  321. package/dist/commands/init.d.ts +0 -16
  322. package/dist/commands/init.js +0 -738
  323. package/dist/commands/list.d.ts +0 -24
  324. package/dist/commands/list.js +0 -89
  325. package/dist/commands/memory.d.ts +0 -22
  326. package/dist/commands/memory.js +0 -175
  327. package/dist/commands/skills.d.ts +0 -11
  328. package/dist/commands/skills.js +0 -116
  329. package/dist/commands/uninstall.d.ts +0 -22
  330. package/dist/commands/uninstall.js +0 -558
  331. package/dist/hud/cache.d.ts +0 -14
  332. package/dist/hud/cache.js +0 -54
  333. package/dist/hud/colors.d.ts +0 -23
  334. package/dist/hud/components/config-counts.d.ts +0 -8
  335. package/dist/hud/components/context-usage.d.ts +0 -8
  336. package/dist/hud/components/diff-stats.d.ts +0 -3
  337. package/dist/hud/components/directory.d.ts +0 -3
  338. package/dist/hud/components/git-ahead-behind.d.ts +0 -3
  339. package/dist/hud/components/git-branch.d.ts +0 -3
  340. package/dist/hud/components/model.d.ts +0 -3
  341. package/dist/hud/components/release-info.d.ts +0 -3
  342. package/dist/hud/components/session-cost.d.ts +0 -3
  343. package/dist/hud/components/session-duration.d.ts +0 -3
  344. package/dist/hud/components/todo-progress.d.ts +0 -3
  345. package/dist/hud/components/usage-quota.d.ts +0 -3
  346. package/dist/hud/components/version-badge.d.ts +0 -3
  347. package/dist/hud/components/worktree-count.d.ts +0 -3
  348. package/dist/hud/config.d.ts +0 -10
  349. package/dist/hud/credentials.d.ts +0 -17
  350. package/dist/hud/credentials.js +0 -99
  351. package/dist/hud/git.d.ts +0 -7
  352. package/dist/hud/index.d.ts +0 -2
  353. package/dist/hud/render.d.ts +0 -7
  354. package/dist/hud/stdin.d.ts +0 -6
  355. package/dist/hud/transcript.d.ts +0 -7
  356. package/dist/hud/types.d.ts +0 -116
  357. package/dist/hud/usage-api.d.ts +0 -7
  358. package/dist/hud/usage-api.js +0 -84
  359. package/dist/plugins.d.ts +0 -46
  360. package/dist/plugins.js +0 -233
  361. package/dist/utils/cli.d.ts +0 -5
  362. package/dist/utils/cli.js +0 -14
  363. package/dist/utils/git.d.ts +0 -11
  364. package/dist/utils/git.js +0 -36
  365. package/dist/utils/installer.d.ts +0 -41
  366. package/dist/utils/installer.js +0 -195
  367. package/dist/utils/manifest.d.ts +0 -46
  368. package/dist/utils/manifest.js +0 -100
  369. package/dist/utils/paths.d.ts +0 -42
  370. package/dist/utils/paths.js +0 -106
  371. package/dist/utils/post-install.d.ts +0 -87
  372. package/dist/utils/post-install.js +0 -546
  373. package/dist/utils/safe-delete-install.d.ts +0 -29
  374. package/dist/utils/safe-delete-install.js +0 -191
  375. package/dist/utils/safe-delete.d.ts +0 -12
  376. package/plugins/devflow-accessibility/.claude-plugin/plugin.json +0 -21
  377. package/plugins/devflow-accessibility/skills/accessibility/SKILL.md +0 -229
  378. package/plugins/devflow-accessibility/skills/accessibility/references/patterns.md +0 -670
  379. package/plugins/devflow-accessibility/skills/accessibility/references/violations.md +0 -419
  380. package/plugins/devflow-ambient/.claude-plugin/plugin.json +0 -33
  381. package/plugins/devflow-ambient/README.md +0 -68
  382. package/plugins/devflow-ambient/agents/coder.md +0 -135
  383. package/plugins/devflow-ambient/agents/reviewer.md +0 -165
  384. package/plugins/devflow-ambient/agents/scrutinizer.md +0 -82
  385. package/plugins/devflow-ambient/agents/shepherd.md +0 -108
  386. package/plugins/devflow-ambient/agents/simplifier.md +0 -102
  387. package/plugins/devflow-ambient/agents/skimmer.md +0 -143
  388. package/plugins/devflow-ambient/agents/validator.md +0 -86
  389. package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +0 -145
  390. package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +0 -74
  391. package/plugins/devflow-ambient/skills/debug-orchestration/SKILL.md +0 -69
  392. package/plugins/devflow-ambient/skills/implementation-orchestration/SKILL.md +0 -92
  393. package/plugins/devflow-ambient/skills/plan-orchestration/SKILL.md +0 -71
  394. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +0 -19
  395. package/plugins/devflow-audit-claude/README.md +0 -46
  396. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +0 -134
  397. package/plugins/devflow-audit-claude/commands/audit-claude.md +0 -89
  398. package/plugins/devflow-code-review/.claude-plugin/plugin.json +0 -38
  399. package/plugins/devflow-code-review/README.md +0 -73
  400. package/plugins/devflow-code-review/agents/git.md +0 -277
  401. package/plugins/devflow-code-review/agents/reviewer.md +0 -165
  402. package/plugins/devflow-code-review/agents/synthesizer.md +0 -211
  403. package/plugins/devflow-code-review/commands/code-review-teams.md +0 -285
  404. package/plugins/devflow-code-review/commands/code-review.md +0 -163
  405. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +0 -124
  406. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +0 -104
  407. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +0 -122
  408. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +0 -217
  409. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +0 -153
  410. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +0 -873
  411. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +0 -575
  412. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +0 -143
  413. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +0 -140
  414. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +0 -134
  415. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +0 -141
  416. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +0 -125
  417. package/plugins/devflow-code-review/skills/knowledge-persistence/SKILL.md +0 -128
  418. package/plugins/devflow-code-review/skills/knowledge-persistence/references/examples.md +0 -44
  419. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +0 -154
  420. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +0 -503
  421. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +0 -354
  422. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +0 -146
  423. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +0 -119
  424. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +0 -186
  425. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +0 -142
  426. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +0 -125
  427. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +0 -156
  428. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +0 -507
  429. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +0 -237
  430. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +0 -183
  431. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +0 -220
  432. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +0 -221
  433. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +0 -31
  434. package/plugins/devflow-core-skills/README.md +0 -50
  435. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +0 -162
  436. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +0 -276
  437. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +0 -144
  438. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +0 -576
  439. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +0 -369
  440. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +0 -143
  441. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +0 -346
  442. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +0 -221
  443. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +0 -122
  444. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +0 -289
  445. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +0 -18
  446. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +0 -158
  447. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +0 -115
  448. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +0 -77
  449. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +0 -127
  450. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +0 -96
  451. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +0 -153
  452. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +0 -572
  453. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +0 -298
  454. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +0 -148
  455. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +0 -283
  456. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +0 -361
  457. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +0 -224
  458. package/plugins/devflow-core-skills/skills/search-first/SKILL.md +0 -133
  459. package/plugins/devflow-core-skills/skills/search-first/references/evaluation-criteria.md +0 -101
  460. package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +0 -137
  461. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +0 -183
  462. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +0 -149
  463. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +0 -220
  464. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +0 -108
  465. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +0 -221
  466. package/plugins/devflow-debug/.claude-plugin/plugin.json +0 -26
  467. package/plugins/devflow-debug/README.md +0 -65
  468. package/plugins/devflow-debug/agents/git.md +0 -277
  469. package/plugins/devflow-debug/agents/synthesizer.md +0 -211
  470. package/plugins/devflow-debug/commands/debug-teams.md +0 -245
  471. package/plugins/devflow-debug/commands/debug.md +0 -174
  472. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +0 -124
  473. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +0 -104
  474. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +0 -122
  475. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +0 -217
  476. package/plugins/devflow-debug/skills/git-safety/SKILL.md +0 -122
  477. package/plugins/devflow-debug/skills/git-safety/references/detection.md +0 -290
  478. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +0 -289
  479. package/plugins/devflow-debug/skills/git-safety/references/violations.md +0 -18
  480. package/plugins/devflow-debug/skills/knowledge-persistence/SKILL.md +0 -128
  481. package/plugins/devflow-debug/skills/knowledge-persistence/references/examples.md +0 -44
  482. package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +0 -21
  483. package/plugins/devflow-frontend-design/skills/frontend-design/SKILL.md +0 -254
  484. package/plugins/devflow-frontend-design/skills/frontend-design/references/patterns.md +0 -511
  485. package/plugins/devflow-frontend-design/skills/frontend-design/references/violations.md +0 -453
  486. package/plugins/devflow-go/.claude-plugin/plugin.json +0 -21
  487. package/plugins/devflow-go/skills/go/SKILL.md +0 -187
  488. package/plugins/devflow-go/skills/go/references/concurrency.md +0 -312
  489. package/plugins/devflow-go/skills/go/references/patterns.md +0 -232
  490. package/plugins/devflow-go/skills/go/references/violations.md +0 -205
  491. package/plugins/devflow-implement/.claude-plugin/plugin.json +0 -35
  492. package/plugins/devflow-implement/README.md +0 -71
  493. package/plugins/devflow-implement/agents/coder.md +0 -135
  494. package/plugins/devflow-implement/agents/git.md +0 -277
  495. package/plugins/devflow-implement/agents/scrutinizer.md +0 -82
  496. package/plugins/devflow-implement/agents/shepherd.md +0 -108
  497. package/plugins/devflow-implement/agents/simplifier.md +0 -102
  498. package/plugins/devflow-implement/agents/skimmer.md +0 -143
  499. package/plugins/devflow-implement/agents/synthesizer.md +0 -211
  500. package/plugins/devflow-implement/agents/validator.md +0 -86
  501. package/plugins/devflow-implement/commands/implement-teams.md +0 -620
  502. package/plugins/devflow-implement/commands/implement.md +0 -430
  503. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +0 -124
  504. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +0 -104
  505. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +0 -122
  506. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +0 -217
  507. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +0 -162
  508. package/plugins/devflow-implement/skills/knowledge-persistence/SKILL.md +0 -128
  509. package/plugins/devflow-implement/skills/knowledge-persistence/references/examples.md +0 -44
  510. package/plugins/devflow-implement/skills/self-review/SKILL.md +0 -149
  511. package/plugins/devflow-implement/skills/self-review/references/stub-detection.md +0 -135
  512. package/plugins/devflow-java/.claude-plugin/plugin.json +0 -21
  513. package/plugins/devflow-java/skills/java/SKILL.md +0 -183
  514. package/plugins/devflow-java/skills/java/references/modern-java.md +0 -270
  515. package/plugins/devflow-java/skills/java/references/patterns.md +0 -235
  516. package/plugins/devflow-java/skills/java/references/violations.md +0 -213
  517. package/plugins/devflow-python/.claude-plugin/plugin.json +0 -21
  518. package/plugins/devflow-python/skills/python/SKILL.md +0 -188
  519. package/plugins/devflow-python/skills/python/references/async.md +0 -220
  520. package/plugins/devflow-python/skills/python/references/patterns.md +0 -226
  521. package/plugins/devflow-python/skills/python/references/violations.md +0 -204
  522. package/plugins/devflow-react/.claude-plugin/plugin.json +0 -21
  523. package/plugins/devflow-react/skills/react/SKILL.md +0 -276
  524. package/plugins/devflow-react/skills/react/references/patterns.md +0 -1331
  525. package/plugins/devflow-react/skills/react/references/violations.md +0 -565
  526. package/plugins/devflow-resolve/.claude-plugin/plugin.json +0 -29
  527. package/plugins/devflow-resolve/README.md +0 -65
  528. package/plugins/devflow-resolve/agents/git.md +0 -277
  529. package/plugins/devflow-resolve/agents/resolver.md +0 -131
  530. package/plugins/devflow-resolve/agents/simplifier.md +0 -102
  531. package/plugins/devflow-resolve/commands/resolve-teams.md +0 -307
  532. package/plugins/devflow-resolve/commands/resolve.md +0 -246
  533. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +0 -124
  534. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +0 -104
  535. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +0 -122
  536. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +0 -217
  537. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +0 -162
  538. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +0 -1063
  539. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +0 -483
  540. package/plugins/devflow-resolve/skills/knowledge-persistence/SKILL.md +0 -128
  541. package/plugins/devflow-resolve/skills/knowledge-persistence/references/examples.md +0 -44
  542. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +0 -156
  543. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +0 -287
  544. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +0 -507
  545. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +0 -237
  546. package/plugins/devflow-rust/.claude-plugin/plugin.json +0 -21
  547. package/plugins/devflow-rust/skills/rust/SKILL.md +0 -193
  548. package/plugins/devflow-rust/skills/rust/references/ownership.md +0 -242
  549. package/plugins/devflow-rust/skills/rust/references/patterns.md +0 -210
  550. package/plugins/devflow-rust/skills/rust/references/violations.md +0 -191
  551. package/plugins/devflow-self-review/.claude-plugin/plugin.json +0 -26
  552. package/plugins/devflow-self-review/README.md +0 -38
  553. package/plugins/devflow-self-review/agents/scrutinizer.md +0 -82
  554. package/plugins/devflow-self-review/agents/simplifier.md +0 -102
  555. package/plugins/devflow-self-review/agents/validator.md +0 -86
  556. package/plugins/devflow-self-review/commands/self-review.md +0 -132
  557. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +0 -162
  558. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +0 -276
  559. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +0 -144
  560. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +0 -303
  561. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +0 -576
  562. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +0 -369
  563. package/plugins/devflow-self-review/skills/self-review/SKILL.md +0 -149
  564. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +0 -405
  565. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +0 -253
  566. package/plugins/devflow-self-review/skills/self-review/references/stub-detection.md +0 -135
  567. package/plugins/devflow-self-review/skills/self-review/references/violations.md +0 -308
  568. package/plugins/devflow-specify/.claude-plugin/plugin.json +0 -25
  569. package/plugins/devflow-specify/README.md +0 -46
  570. package/plugins/devflow-specify/agents/skimmer.md +0 -143
  571. package/plugins/devflow-specify/agents/synthesizer.md +0 -211
  572. package/plugins/devflow-specify/commands/specify-teams.md +0 -321
  573. package/plugins/devflow-specify/commands/specify.md +0 -186
  574. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +0 -124
  575. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +0 -104
  576. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +0 -122
  577. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +0 -217
  578. package/plugins/devflow-typescript/.claude-plugin/plugin.json +0 -21
  579. package/plugins/devflow-typescript/skills/typescript/SKILL.md +0 -176
  580. package/plugins/devflow-typescript/skills/typescript/references/patterns.md +0 -1105
  581. package/plugins/devflow-typescript/skills/typescript/references/violations.md +0 -433
  582. package/scripts/hooks/ambient-prompt +0 -50
  583. package/scripts/hooks/background-memory-update +0 -257
  584. package/scripts/hooks/ensure-memory-gitignore +0 -17
  585. package/scripts/hooks/pre-compact-memory +0 -87
  586. package/scripts/hooks/run-hook +0 -23
  587. package/scripts/hooks/session-start-memory +0 -165
  588. package/scripts/hooks/stop-update-memory +0 -85
  589. package/scripts/hud/cache.d.ts +0 -14
  590. package/scripts/hud/cache.d.ts.map +0 -1
  591. package/scripts/hud/cache.js +0 -54
  592. package/scripts/hud/cache.js.map +0 -1
  593. package/scripts/hud/colors.d.ts +0 -23
  594. package/scripts/hud/colors.d.ts.map +0 -1
  595. package/scripts/hud/colors.js +0 -62
  596. package/scripts/hud/colors.js.map +0 -1
  597. package/scripts/hud/components/config-counts.d.ts +0 -8
  598. package/scripts/hud/components/config-counts.d.ts.map +0 -1
  599. package/scripts/hud/components/config-counts.js +0 -91
  600. package/scripts/hud/components/config-counts.js.map +0 -1
  601. package/scripts/hud/components/context-usage.d.ts +0 -8
  602. package/scripts/hud/components/context-usage.d.ts.map +0 -1
  603. package/scripts/hud/components/context-usage.js +0 -49
  604. package/scripts/hud/components/context-usage.js.map +0 -1
  605. package/scripts/hud/components/diff-stats.d.ts +0 -3
  606. package/scripts/hud/components/diff-stats.d.ts.map +0 -1
  607. package/scripts/hud/components/diff-stats.js +0 -36
  608. package/scripts/hud/components/diff-stats.js.map +0 -1
  609. package/scripts/hud/components/directory.d.ts +0 -3
  610. package/scripts/hud/components/directory.d.ts.map +0 -1
  611. package/scripts/hud/components/directory.js +0 -10
  612. package/scripts/hud/components/directory.js.map +0 -1
  613. package/scripts/hud/components/git-ahead-behind.d.ts +0 -3
  614. package/scripts/hud/components/git-ahead-behind.d.ts.map +0 -1
  615. package/scripts/hud/components/git-ahead-behind.js +0 -16
  616. package/scripts/hud/components/git-ahead-behind.js.map +0 -1
  617. package/scripts/hud/components/git-branch.d.ts +0 -3
  618. package/scripts/hud/components/git-branch.d.ts.map +0 -1
  619. package/scripts/hud/components/git-branch.js +0 -14
  620. package/scripts/hud/components/git-branch.js.map +0 -1
  621. package/scripts/hud/components/model.d.ts +0 -3
  622. package/scripts/hud/components/model.d.ts.map +0 -1
  623. package/scripts/hud/components/model.js +0 -21
  624. package/scripts/hud/components/model.js.map +0 -1
  625. package/scripts/hud/components/release-info.d.ts +0 -3
  626. package/scripts/hud/components/release-info.d.ts.map +0 -1
  627. package/scripts/hud/components/release-info.js +0 -9
  628. package/scripts/hud/components/release-info.js.map +0 -1
  629. package/scripts/hud/components/session-cost.d.ts +0 -3
  630. package/scripts/hud/components/session-cost.d.ts.map +0 -1
  631. package/scripts/hud/components/session-cost.js +0 -9
  632. package/scripts/hud/components/session-cost.js.map +0 -1
  633. package/scripts/hud/components/session-duration.d.ts +0 -3
  634. package/scripts/hud/components/session-duration.d.ts.map +0 -1
  635. package/scripts/hud/components/session-duration.js +0 -18
  636. package/scripts/hud/components/session-duration.js.map +0 -1
  637. package/scripts/hud/components/todo-progress.d.ts +0 -3
  638. package/scripts/hud/components/todo-progress.d.ts.map +0 -1
  639. package/scripts/hud/components/todo-progress.js +0 -11
  640. package/scripts/hud/components/todo-progress.js.map +0 -1
  641. package/scripts/hud/components/usage-quota.d.ts +0 -3
  642. package/scripts/hud/components/usage-quota.d.ts.map +0 -1
  643. package/scripts/hud/components/usage-quota.js +0 -45
  644. package/scripts/hud/components/usage-quota.js.map +0 -1
  645. package/scripts/hud/components/version-badge.d.ts +0 -3
  646. package/scripts/hud/components/version-badge.d.ts.map +0 -1
  647. package/scripts/hud/components/version-badge.js +0 -80
  648. package/scripts/hud/components/version-badge.js.map +0 -1
  649. package/scripts/hud/components/worktree-count.d.ts +0 -3
  650. package/scripts/hud/components/worktree-count.d.ts.map +0 -1
  651. package/scripts/hud/components/worktree-count.js +0 -8
  652. package/scripts/hud/components/worktree-count.js.map +0 -1
  653. package/scripts/hud/config.d.ts +0 -10
  654. package/scripts/hud/config.d.ts.map +0 -1
  655. package/scripts/hud/config.js +0 -55
  656. package/scripts/hud/config.js.map +0 -1
  657. package/scripts/hud/credentials.d.ts +0 -17
  658. package/scripts/hud/credentials.d.ts.map +0 -1
  659. package/scripts/hud/credentials.js +0 -99
  660. package/scripts/hud/credentials.js.map +0 -1
  661. package/scripts/hud/git.d.ts +0 -7
  662. package/scripts/hud/git.d.ts.map +0 -1
  663. package/scripts/hud/git.js +0 -153
  664. package/scripts/hud/git.js.map +0 -1
  665. package/scripts/hud/index.d.ts +0 -2
  666. package/scripts/hud/index.d.ts.map +0 -1
  667. package/scripts/hud/index.js +0 -81
  668. package/scripts/hud/index.js.map +0 -1
  669. package/scripts/hud/render.d.ts +0 -7
  670. package/scripts/hud/render.d.ts.map +0 -1
  671. package/scripts/hud/render.js +0 -111
  672. package/scripts/hud/render.js.map +0 -1
  673. package/scripts/hud/stdin.d.ts +0 -6
  674. package/scripts/hud/stdin.d.ts.map +0 -1
  675. package/scripts/hud/stdin.js +0 -25
  676. package/scripts/hud/stdin.js.map +0 -1
  677. package/scripts/hud/transcript.d.ts +0 -7
  678. package/scripts/hud/transcript.d.ts.map +0 -1
  679. package/scripts/hud/transcript.js +0 -130
  680. package/scripts/hud/transcript.js.map +0 -1
  681. package/scripts/hud/types.d.ts +0 -116
  682. package/scripts/hud/types.d.ts.map +0 -1
  683. package/scripts/hud/types.js +0 -2
  684. package/scripts/hud/types.js.map +0 -1
  685. package/scripts/hud/usage-api.d.ts +0 -7
  686. package/scripts/hud/usage-api.d.ts.map +0 -1
  687. package/scripts/hud/usage-api.js +0 -84
  688. package/scripts/hud/usage-api.js.map +0 -1
  689. package/scripts/hud.sh +0 -5
  690. package/shared/agents/coder.md +0 -135
  691. package/shared/agents/git.md +0 -277
  692. package/shared/agents/resolver.md +0 -131
  693. package/shared/agents/reviewer.md +0 -165
  694. package/shared/agents/scrutinizer.md +0 -82
  695. package/shared/agents/shepherd.md +0 -108
  696. package/shared/agents/simplifier.md +0 -102
  697. package/shared/agents/skimmer.md +0 -143
  698. package/shared/agents/synthesizer.md +0 -211
  699. package/shared/agents/validator.md +0 -86
  700. package/shared/skills/accessibility/SKILL.md +0 -229
  701. package/shared/skills/accessibility/references/detection.md +0 -171
  702. package/shared/skills/accessibility/references/patterns.md +0 -670
  703. package/shared/skills/accessibility/references/violations.md +0 -419
  704. package/shared/skills/agent-teams/SKILL.md +0 -124
  705. package/shared/skills/agent-teams/references/cleanup.md +0 -104
  706. package/shared/skills/agent-teams/references/communication.md +0 -122
  707. package/shared/skills/agent-teams/references/team-patterns.md +0 -217
  708. package/shared/skills/ambient-router/SKILL.md +0 -145
  709. package/shared/skills/ambient-router/references/skill-catalog.md +0 -74
  710. package/shared/skills/architecture-patterns/SKILL.md +0 -153
  711. package/shared/skills/architecture-patterns/references/detection.md +0 -337
  712. package/shared/skills/architecture-patterns/references/patterns.md +0 -873
  713. package/shared/skills/architecture-patterns/references/violations.md +0 -575
  714. package/shared/skills/complexity-patterns/SKILL.md +0 -143
  715. package/shared/skills/complexity-patterns/references/detection.md +0 -264
  716. package/shared/skills/complexity-patterns/references/patterns.md +0 -487
  717. package/shared/skills/complexity-patterns/references/violations.md +0 -361
  718. package/shared/skills/consistency-patterns/SKILL.md +0 -140
  719. package/shared/skills/consistency-patterns/references/detection.md +0 -207
  720. package/shared/skills/consistency-patterns/references/patterns.md +0 -202
  721. package/shared/skills/consistency-patterns/references/violations.md +0 -213
  722. package/shared/skills/core-patterns/SKILL.md +0 -162
  723. package/shared/skills/core-patterns/references/checklist.md +0 -276
  724. package/shared/skills/core-patterns/references/code-smell-violations.md +0 -144
  725. package/shared/skills/core-patterns/references/detection.md +0 -303
  726. package/shared/skills/core-patterns/references/patterns.md +0 -576
  727. package/shared/skills/core-patterns/references/violations.md +0 -369
  728. package/shared/skills/database-patterns/SKILL.md +0 -134
  729. package/shared/skills/database-patterns/references/detection.md +0 -208
  730. package/shared/skills/database-patterns/references/patterns.md +0 -394
  731. package/shared/skills/database-patterns/references/violations.md +0 -332
  732. package/shared/skills/debug-orchestration/SKILL.md +0 -69
  733. package/shared/skills/dependencies-patterns/SKILL.md +0 -141
  734. package/shared/skills/dependencies-patterns/references/detection.md +0 -181
  735. package/shared/skills/dependencies-patterns/references/patterns.md +0 -225
  736. package/shared/skills/dependencies-patterns/references/violations.md +0 -247
  737. package/shared/skills/docs-framework/SKILL.md +0 -143
  738. package/shared/skills/docs-framework/references/patterns.md +0 -346
  739. package/shared/skills/docs-framework/references/violations.md +0 -221
  740. package/shared/skills/documentation-patterns/SKILL.md +0 -125
  741. package/shared/skills/documentation-patterns/references/detection.md +0 -190
  742. package/shared/skills/documentation-patterns/references/patterns.md +0 -189
  743. package/shared/skills/documentation-patterns/references/violations.md +0 -163
  744. package/shared/skills/frontend-design/SKILL.md +0 -254
  745. package/shared/skills/frontend-design/references/detection.md +0 -184
  746. package/shared/skills/frontend-design/references/patterns.md +0 -511
  747. package/shared/skills/frontend-design/references/violations.md +0 -453
  748. package/shared/skills/git-safety/SKILL.md +0 -122
  749. package/shared/skills/git-safety/references/detection.md +0 -290
  750. package/shared/skills/git-safety/references/patterns.md +0 -289
  751. package/shared/skills/git-safety/references/violations.md +0 -18
  752. package/shared/skills/git-workflow/SKILL.md +0 -158
  753. package/shared/skills/git-workflow/references/commit-patterns.md +0 -115
  754. package/shared/skills/git-workflow/references/commit-violations.md +0 -77
  755. package/shared/skills/git-workflow/references/pr-patterns.md +0 -127
  756. package/shared/skills/git-workflow/references/pr-violations.md +0 -96
  757. package/shared/skills/github-patterns/SKILL.md +0 -153
  758. package/shared/skills/github-patterns/references/patterns.md +0 -572
  759. package/shared/skills/github-patterns/references/violations.md +0 -298
  760. package/shared/skills/go/SKILL.md +0 -187
  761. package/shared/skills/go/references/concurrency.md +0 -312
  762. package/shared/skills/go/references/detection.md +0 -129
  763. package/shared/skills/go/references/patterns.md +0 -232
  764. package/shared/skills/go/references/violations.md +0 -205
  765. package/shared/skills/implementation-orchestration/SKILL.md +0 -92
  766. package/shared/skills/implementation-patterns/SKILL.md +0 -162
  767. package/shared/skills/implementation-patterns/references/patterns.md +0 -1063
  768. package/shared/skills/implementation-patterns/references/violations.md +0 -483
  769. package/shared/skills/input-validation/SKILL.md +0 -148
  770. package/shared/skills/input-validation/references/detection.md +0 -283
  771. package/shared/skills/input-validation/references/patterns.md +0 -361
  772. package/shared/skills/input-validation/references/violations.md +0 -224
  773. package/shared/skills/java/SKILL.md +0 -183
  774. package/shared/skills/java/references/detection.md +0 -120
  775. package/shared/skills/java/references/modern-java.md +0 -270
  776. package/shared/skills/java/references/patterns.md +0 -235
  777. package/shared/skills/java/references/violations.md +0 -213
  778. package/shared/skills/knowledge-persistence/SKILL.md +0 -128
  779. package/shared/skills/knowledge-persistence/references/examples.md +0 -44
  780. package/shared/skills/performance-patterns/SKILL.md +0 -154
  781. package/shared/skills/performance-patterns/references/detection.md +0 -351
  782. package/shared/skills/performance-patterns/references/patterns.md +0 -503
  783. package/shared/skills/performance-patterns/references/violations.md +0 -354
  784. package/shared/skills/plan-orchestration/SKILL.md +0 -71
  785. package/shared/skills/python/SKILL.md +0 -188
  786. package/shared/skills/python/references/async.md +0 -220
  787. package/shared/skills/python/references/detection.md +0 -128
  788. package/shared/skills/python/references/patterns.md +0 -226
  789. package/shared/skills/python/references/violations.md +0 -204
  790. package/shared/skills/react/SKILL.md +0 -276
  791. package/shared/skills/react/references/patterns.md +0 -1331
  792. package/shared/skills/react/references/violations.md +0 -565
  793. package/shared/skills/regression-patterns/SKILL.md +0 -146
  794. package/shared/skills/regression-patterns/references/detection.md +0 -237
  795. package/shared/skills/regression-patterns/references/patterns.md +0 -226
  796. package/shared/skills/regression-patterns/references/violations.md +0 -225
  797. package/shared/skills/review-methodology/SKILL.md +0 -119
  798. package/shared/skills/review-methodology/references/patterns.md +0 -186
  799. package/shared/skills/review-methodology/references/report-template.md +0 -142
  800. package/shared/skills/review-methodology/references/violations.md +0 -125
  801. package/shared/skills/rust/SKILL.md +0 -193
  802. package/shared/skills/rust/references/detection.md +0 -131
  803. package/shared/skills/rust/references/ownership.md +0 -242
  804. package/shared/skills/rust/references/patterns.md +0 -210
  805. package/shared/skills/rust/references/violations.md +0 -191
  806. package/shared/skills/search-first/SKILL.md +0 -133
  807. package/shared/skills/search-first/references/evaluation-criteria.md +0 -101
  808. package/shared/skills/security-patterns/SKILL.md +0 -156
  809. package/shared/skills/security-patterns/references/detection.md +0 -287
  810. package/shared/skills/security-patterns/references/patterns.md +0 -507
  811. package/shared/skills/security-patterns/references/violations.md +0 -237
  812. package/shared/skills/self-review/SKILL.md +0 -149
  813. package/shared/skills/self-review/references/patterns.md +0 -405
  814. package/shared/skills/self-review/references/report-template.md +0 -253
  815. package/shared/skills/self-review/references/stub-detection.md +0 -135
  816. package/shared/skills/self-review/references/violations.md +0 -308
  817. package/shared/skills/test-driven-development/SKILL.md +0 -137
  818. package/shared/skills/test-driven-development/references/rationalization-prevention.md +0 -111
  819. package/shared/skills/test-patterns/SKILL.md +0 -183
  820. package/shared/skills/test-patterns/references/detection.md +0 -149
  821. package/shared/skills/test-patterns/references/patterns.md +0 -220
  822. package/shared/skills/test-patterns/references/report-template.md +0 -108
  823. package/shared/skills/test-patterns/references/violations.md +0 -221
  824. package/shared/skills/typescript/SKILL.md +0 -176
  825. package/shared/skills/typescript/references/patterns.md +0 -1105
  826. package/shared/skills/typescript/references/violations.md +0 -433
  827. package/src/templates/claudeignore.template +0 -188
  828. package/src/templates/settings.json +0 -59
  829. /package/dist/{utils → core}/safe-delete.js +0 -0
  830. /package/{plugins/devflow-accessibility → src/assets}/skills/accessibility/references/detection.md +0 -0
  831. /package/{plugins/devflow-code-review/skills/architecture-patterns → src/assets/skills/architecture}/references/detection.md +0 -0
  832. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/detection.md +0 -0
  833. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/patterns.md +0 -0
  834. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/violations.md +0 -0
  835. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/detection.md +0 -0
  836. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/patterns.md +0 -0
  837. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/violations.md +0 -0
  838. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/detection.md +0 -0
  839. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/patterns.md +0 -0
  840. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/violations.md +0 -0
  841. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/detection.md +0 -0
  842. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/patterns.md +0 -0
  843. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/violations.md +0 -0
  844. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/detection.md +0 -0
  845. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/patterns.md +0 -0
  846. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/violations.md +0 -0
  847. /package/{plugins/devflow-core-skills/skills/git-safety → src/assets/skills/git}/references/detection.md +0 -0
  848. /package/{plugins/devflow-go → src/assets}/skills/go/references/detection.md +0 -0
  849. /package/{plugins/devflow-java → src/assets}/skills/java/references/detection.md +0 -0
  850. /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/patterns.md +0 -0
  851. /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/violations.md +0 -0
  852. /package/{plugins/devflow-code-review/skills/performance-patterns → src/assets/skills/performance}/references/detection.md +0 -0
  853. /package/{plugins/devflow-python → src/assets}/skills/python/references/detection.md +0 -0
  854. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/patterns.md +0 -0
  855. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/report-template.md +0 -0
  856. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/violations.md +0 -0
  857. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/detection.md +0 -0
  858. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/patterns.md +0 -0
  859. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/violations.md +0 -0
  860. /package/{plugins/devflow-rust → src/assets}/skills/rust/references/detection.md +0 -0
  861. /package/{plugins/devflow-code-review/skills/security-patterns → src/assets/skills/security}/references/detection.md +0 -0
  862. /package/{plugins/devflow-core-skills/skills/core-patterns → src/assets/skills/software-design}/references/detection.md +0 -0
  863. /package/{plugins/devflow-core-skills → src/assets}/skills/test-driven-development/references/rationalization-prevention.md +0 -0
  864. /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/detection.md +0 -0
  865. /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/report-template.md +0 -0
  866. /package/{plugins/devflow-frontend-design/skills/frontend-design → src/assets/skills/ui-design}/references/detection.md +0 -0
  867. /package/src/{templates → targets/claude-code/templates}/managed-settings.json +0 -0
@@ -0,0 +1,101 @@
1
+ #!/bin/bash
2
+
3
+ # Memory pipeline: memory-worker (Stop Hook)
4
+ # Owns the 120s-throttle + nohup-spawn logic for background-memory-update.
5
+ # Registered AFTER capture-turn in the Stop hook array so append-before-spawn
6
+ # ordering is preserved by array position. This hook does NOT append to any
7
+ # queue itself -- capture-turn already did that earlier in the same Stop event.
8
+
9
+ # Safe no-op fallback: must exist before set -e and before hook-bootstrap is sourced.
10
+ dbg() { :; }
11
+
12
+ set -e
13
+
14
+ if [ "${DEVFLOW_BG_UPDATER:-}" = "1" ]; then dbg "EXIT: bg_updater"; exit 0; fi
15
+
16
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
17
+
18
+ source "$SCRIPT_DIR/hook-bootstrap" "memory-worker"
19
+
20
+ source "$SCRIPT_DIR/json-parse" || { echo "memory-worker: failed to source json-parse" >&2; exit 1; }
21
+ if [ "$_JSON_AVAILABLE" = "false" ]; then dbg "EXIT: no json"; exit 0; fi
22
+
23
+ INPUT=$(cat)
24
+
25
+ CWD=$(printf '%s' "$INPUT" | json_field "cwd" "")
26
+ if [ -z "$CWD" ] || [ ! -d "$CWD" ]; then dbg "EXIT: bad CWD"; exit 0; fi
27
+
28
+ devflow_debug_set_cwd "$CWD"
29
+ dbg "CWD=$CWD"
30
+
31
+ source "$SCRIPT_DIR/resolve-project-root" 2>/dev/null || true
32
+ PROJECT_ROOT="$(df_resolve_root "$CWD" 2>/dev/null || true)"
33
+ [ -n "$PROJECT_ROOT" ] || PROJECT_ROOT="$CWD"
34
+
35
+ DEVFLOW_DIR="$PROJECT_ROOT/.devflow"
36
+ MEMORY_DIR="$DEVFLOW_DIR/memory"
37
+
38
+ # Read feature config -- memory:false gates this hook entirely (ADR-001).
39
+ FEATURE_CONFIG="$DEVFLOW_DIR/config.json"
40
+ MEMORY_ENABLED="true"
41
+ if [ -f "$FEATURE_CONFIG" ]; then
42
+ MEMORY_ENABLED=$(json_field_file "$FEATURE_CONFIG" "memory" "true")
43
+ fi
44
+
45
+ dbg "MEMORY_ENABLED=$MEMORY_ENABLED"
46
+
47
+ if [ "$MEMORY_ENABLED" != "true" ]; then
48
+ dbg "EXIT: memory disabled"
49
+ exit 0
50
+ fi
51
+
52
+ source "$SCRIPT_DIR/hook-log-init" "memory-worker"
53
+ source "$SCRIPT_DIR/ensure-devflow-init" "$CWD" || exit 0
54
+ source "$SCRIPT_DIR/get-mtime" || { echo "memory-worker: failed to source get-mtime" >&2; exit 1; }
55
+
56
+ # --- Spawn detached worker if throttle expired ---
57
+ # Throttle key: .working-memory-last-trigger mtime (120s window). We touch it
58
+ # BEFORE spawning to prevent a second concurrent Stop hook from double-spawning
59
+ # within the same 120s window.
60
+ TRIGGER_FILE="$MEMORY_DIR/.working-memory-last-trigger"
61
+ NOW=$(date +%s)
62
+ LAST_TRIGGER=0
63
+ if [ -f "$TRIGGER_FILE" ]; then
64
+ LAST_TRIGGER=$(get_mtime "$TRIGGER_FILE")
65
+ fi
66
+ LAST_TRIGGER="${LAST_TRIGGER:-0}"
67
+ TRIGGER_AGE=$(( NOW - LAST_TRIGGER ))
68
+
69
+ if [ "$TRIGGER_AGE" -lt 120 ]; then
70
+ log "Throttled: worker spawned ${TRIGGER_AGE}s ago"
71
+ dbg "EXIT: throttled TRIGGER_AGE=${TRIGGER_AGE}s"
72
+ exit 0
73
+ fi
74
+
75
+ # Resolve worker and claude binary
76
+ UPDATER="$SCRIPT_DIR/background-memory-update"
77
+ CLAUDE_BIN=$(command -v claude 2>/dev/null || true)
78
+
79
+ if [ -z "$CLAUDE_BIN" ]; then
80
+ log "SKIP: claude binary not found — worker not spawned (queue intact)"
81
+ dbg "EXIT: no claude binary"
82
+ exit 0
83
+ fi
84
+
85
+ if [ ! -x "$UPDATER" ]; then
86
+ log "SKIP: background-memory-update not found or not executable: $UPDATER"
87
+ dbg "EXIT: worker missing"
88
+ exit 0
89
+ fi
90
+
91
+ dbg "Throttle passed: TRIGGER_AGE=${TRIGGER_AGE}s >= 120s — spawning worker"
92
+
93
+ # Touch trigger BEFORE spawning (prevents concurrent Stop hooks from double-spawning)
94
+ touch "$TRIGGER_FILE" 2>/dev/null || true
95
+
96
+ # Spawn detached worker — nohup + disown so it survives the Stop hook process exit
97
+ nohup "$UPDATER" "$CWD" </dev/null >>/dev/null 2>&1 & disown
98
+
99
+ log "Spawned background-memory-update worker (CWD=$CWD)"
100
+ dbg "=== HOOK COMPLETE ==="
101
+ exit 0
@@ -0,0 +1,126 @@
1
+ #!/bin/bash
2
+
3
+ # Working Memory: PreCompact Hook
4
+ # Safety net that captures git state to a backup JSON file before context compaction.
5
+ # Also bootstraps a minimal WORKING-MEMORY.md if none exists yet, so SessionStart
6
+ # has something to inject after compaction.
7
+ # PreCompact hooks cannot block compaction — this is informational only.
8
+ # Paths: .devflow/memory/backup.json, .devflow/memory/WORKING-MEMORY.md
9
+
10
+ # Safe no-op fallback: must exist before set -e and before hook-bootstrap is sourced.
11
+ dbg() { :; }
12
+
13
+ set -e
14
+
15
+ # Re-entrancy guard — before hook-bootstrap to minimize background session
16
+ # overhead. The memory worker's own claude -p session fires hooks too
17
+ # (PreCompact can fire mid-session on a long-running detached worker).
18
+ if [ "${DEVFLOW_BG_UPDATER:-}" = "1" ]; then dbg "EXIT: bg_updater"; exit 0; fi
19
+
20
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
21
+
22
+ source "$SCRIPT_DIR/hook-bootstrap" "pre-compact-memory"
23
+
24
+ # JSON parsing (jq with node fallback) — silently no-op if neither available
25
+ source "$SCRIPT_DIR/json-parse" || { echo "pre-compact-memory: failed to source json-parse" >&2; exit 1; }
26
+ if [ "$_JSON_AVAILABLE" = "false" ]; then exit 0; fi
27
+
28
+ INPUT=$(cat)
29
+
30
+ CWD=$(printf '%s' "$INPUT" | json_field "cwd" "")
31
+ if [ -z "$CWD" ] || [ ! -d "$CWD" ]; then
32
+ dbg "EXIT: bad CWD"
33
+ exit 0
34
+ fi
35
+
36
+ devflow_debug_set_cwd "$CWD"
37
+ dbg "CWD=$CWD"
38
+
39
+ # Anchor .devflow/ to the project root (prevents a stray nested .devflow/ when this
40
+ # hook runs with a CWD inside .devflow/...). Empty → fall back to CWD.
41
+ source "$SCRIPT_DIR/resolve-project-root" 2>/dev/null || true
42
+ PROJECT_ROOT="$(df_resolve_root "$CWD" 2>/dev/null || true)"
43
+ [ -n "$PROJECT_ROOT" ] || PROJECT_ROOT="$CWD"
44
+
45
+ DEVFLOW_DIR="$PROJECT_ROOT/.devflow"
46
+ MEMORY_DIR="$DEVFLOW_DIR/memory"
47
+
48
+ # Normal logging
49
+ source "$SCRIPT_DIR/hook-log-init" "pre-compact-memory"
50
+
51
+ # Check feature config — single source of truth for memory enabled/disabled (ADR-001).
52
+ FEATURE_CONFIG="$DEVFLOW_DIR/config.json"
53
+ if [ -f "$FEATURE_CONFIG" ]; then
54
+ MEMORY_ENABLED=$(json_field_file "$FEATURE_CONFIG" "memory" "true")
55
+ if [ "$MEMORY_ENABLED" = "false" ]; then
56
+ dbg "EXIT: memory disabled in feature config"
57
+ exit 0
58
+ fi
59
+ fi
60
+
61
+ # Auto-create .devflow/ and ensure .gitignore entries (idempotent after first run)
62
+ source "$SCRIPT_DIR/ensure-devflow-init" "$CWD" || exit 0
63
+
64
+ BACKUP_FILE="$MEMORY_DIR/backup.json"
65
+
66
+ # Capture git state
67
+ GIT_BRANCH=""
68
+ GIT_STATUS=""
69
+ GIT_LOG=""
70
+ GIT_DIFF_STAT=""
71
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
72
+
73
+ if cd "$CWD" 2>/dev/null && git rev-parse --git-dir >/dev/null 2>&1; then
74
+ GIT_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
75
+ GIT_STATUS=$(git status --porcelain 2>/dev/null | head -30 || echo "")
76
+ GIT_LOG=$(git log --oneline -10 2>/dev/null || echo "")
77
+ GIT_DIFF_STAT=$(git diff --stat HEAD 2>/dev/null || echo "")
78
+ dbg "GIT_BRANCH=$GIT_BRANCH"
79
+ fi
80
+
81
+ # Snapshot current WORKING-MEMORY.md (preserves session context through compaction)
82
+ MEMORY_SNAPSHOT=""
83
+ if [ -f "$MEMORY_DIR/WORKING-MEMORY.md" ]; then
84
+ MEMORY_SNAPSHOT=$(head -c 65536 "$MEMORY_DIR/WORKING-MEMORY.md")
85
+ dbg "MEMORY_SNAPSHOT_LENGTH=${#MEMORY_SNAPSHOT}"
86
+ fi
87
+
88
+ # Write backup JSON
89
+ json_backup_construct \
90
+ --arg ts "$TIMESTAMP" \
91
+ --arg branch "$GIT_BRANCH" \
92
+ --arg status "$GIT_STATUS" \
93
+ --arg log "$GIT_LOG" \
94
+ --arg diff "$GIT_DIFF_STAT" \
95
+ --arg memory "$MEMORY_SNAPSHOT" \
96
+ > "$BACKUP_FILE"
97
+
98
+ log "Wrote backup: $BACKUP_FILE"
99
+ dbg "Wrote backup: $BACKUP_FILE"
100
+
101
+ # Bootstrap minimal WORKING-MEMORY.md if none exists yet
102
+ # This ensures SessionStart has context to inject after compaction
103
+ MEMORY_FILE="$MEMORY_DIR/WORKING-MEMORY.md"
104
+ if [ ! -f "$MEMORY_FILE" ] && [ -n "$GIT_BRANCH" ]; then
105
+ {
106
+ echo "# Working Memory"
107
+ echo ""
108
+ echo "## Now"
109
+ echo "- Session compacted before working memory was established"
110
+ echo ""
111
+ echo "## Context"
112
+ echo "- Branch: $GIT_BRANCH"
113
+ echo "$GIT_LOG" | head -3 | while IFS= read -r line; do
114
+ [ -n "$line" ] && echo "- $line"
115
+ done
116
+ echo ""
117
+ echo "## Modified Files"
118
+ echo "$GIT_STATUS" | head -10 | while IFS= read -r line; do
119
+ [ -n "$line" ] && echo "- $(echo "$line" | awk '{print $2}')"
120
+ done
121
+ } > "$MEMORY_FILE"
122
+ dbg "Bootstrapped minimal WORKING-MEMORY.md"
123
+ fi
124
+
125
+ log "PreCompact complete"
126
+ dbg "=== HOOK COMPLETE ==="
@@ -0,0 +1,77 @@
1
+ #!/bin/bash
2
+
3
+ # Devflow Preamble: UserPromptSubmit Hook
4
+ # Three behaviors (git repos only — silent outside a git tree):
5
+ # 1. Plan-handoff fast-path: if prompt begins `Implement the following plan:` (Claude Code's
6
+ # native plan-mode handoff), inject a directive to invoke devflow:implement immediately.
7
+ # NOTE: the literal prefix is duplicated in orchestrator-charter.md (fallback bullet)
8
+ # and src/assets/scripts/hooks/preamble — update both together if Claude Code changes the handoff format.
9
+ # 2. Slash skip: no reminder for slash commands (/...).
10
+ # 3. Orchestrator reminder (2 lines): all other prompts get a delegation reminder.
11
+
12
+ # Safe no-op fallback: must exist before hook-bootstrap is sourced.
13
+ dbg() { :; }
14
+
15
+ # set -e intentionally omitted: guard clauses ensure fail-open exit 0 on all paths.
16
+
17
+ # Re-entrancy guard — before hook-bootstrap to minimize background session overhead.
18
+ # The memory worker's own claude -p session fires UserPromptSubmit; without this guard
19
+ # the nested background session would receive the orchestrator reminder (or, on a
20
+ # matching prompt, a plan-handoff directive) it must never act on. Mirrors the sibling
21
+ # capture-prompt UserPromptSubmit hook and session-start-orchestrator.
22
+ if [ "${DEVFLOW_BG_UPDATER:-}" = "1" ]; then dbg "EXIT: bg_updater"; exit 0; fi
23
+
24
+ # JSON parsing (jq with node fallback) — silently no-op if neither available
25
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
26
+
27
+ source "$SCRIPT_DIR/hook-bootstrap" "preamble"
28
+
29
+ source "$SCRIPT_DIR/json-parse" || { echo "preamble: failed to source json-parse" >&2; exit 1; }
30
+ if [ "$_JSON_AVAILABLE" = "false" ]; then exit 0; fi
31
+
32
+ INPUT=$(cat)
33
+
34
+ FIELDS=$(printf '%s' "$INPUT" | json_extract_cwd_prompt)
35
+ CWD="${FIELDS%%$'\001'*}"
36
+ PROMPT="${FIELDS#*$'\001'}"
37
+
38
+ dbg "PROMPT_LENGTH=${#PROMPT}"
39
+
40
+ if [ -z "$CWD" ] || [ ! -d "$CWD" ]; then
41
+ dbg "EXIT: bad CWD"
42
+ exit 0
43
+ fi
44
+
45
+ devflow_debug_set_cwd "$CWD"
46
+ dbg "CWD=$CWD"
47
+
48
+ # --- Git-repo gate (pure bash, bounded walk) ---
49
+ source "$SCRIPT_DIR/git-marker" || true
50
+ if ! df_has_git_marker "$CWD" 2>/dev/null; then dbg "EXIT: not a git repo"; exit 0; fi
51
+
52
+ # --- Prompt dispatch (pure bash 3.2; no subprocess in this block) ---
53
+ # The plan-handoff prefix is a Claude Code protocol marker (native "execute plan
54
+ # in new session" handoff), matched literally — plumbing, not semantic detection.
55
+ # Duplicated in orchestrator-charter.md (fallback bullet); update both together.
56
+ # Known bound: prefix must appear within the first 256 bytes after whitespace
57
+ # strip (native handoffs have zero leading whitespace).
58
+ HEAD="${PROMPT:0:256}"
59
+ HEAD="${HEAD#"${HEAD%%[![:space:]]*}"}" # strip leading whitespace/newlines
60
+
61
+ if [ -z "$HEAD" ]; then
62
+ dbg "EXIT: empty prompt"
63
+ elif [[ "$HEAD" == "Implement the following plan:"* ]]; then
64
+ dbg "PLAN_HANDOFF detected — injecting devflow:implement directive"
65
+ json_prompt_output "The user's prompt is a plan handoff (it begins with \`Implement the following plan:\`). In one short sentence, tell the user you're invoking \`devflow:implement\`. Then immediately invoke it with the Skill tool, passing the full plan (everything after the handoff prefix) as the skill input so it can be executed. Do not pause to ask whether to proceed."
66
+ elif [[ "$HEAD" == "/"* ]]; then
67
+ dbg "EXIT: slash command — no reminder"
68
+ else
69
+ # Model-tier taxonomy (haiku=mechanical, sonnet=defined execution, opus=analysis/design/research)
70
+ # is cross-referenced with the full routing table in orchestrator-charter.md.
71
+ # Update both together if routing changes.
72
+ dbg "ORCHESTRATOR_REMINDER injected"
73
+ json_prompt_output "Orchestrator reminder: coordinate, don't produce — delegate edits, builds, multi-file reads, and debug loops via the Agent tool (haiku=mechanical, sonnet=defined execution, opus=analysis/design/research) or the matching devflow workflow skill.
74
+ Keep only judgment work mainline: conversation, decisions, routing, synthesis of agent reports."
75
+ fi
76
+
77
+ dbg "=== HOOK COMPLETE ==="
@@ -0,0 +1,120 @@
1
+ #!/bin/bash
2
+ # queue-append -- shared queue-append helper (sourced, not executed).
3
+ #
4
+ # Single implementation of: umask-077 file creation, JSONL emit (jq --arg / node
5
+ # JSON.stringify -- never string concatenation), and 200->100 overflow truncation
6
+ # under a lock. Used by capture-prompt, capture-turn, and capture-question so the
7
+ # per-feature dual-queue-append logic exists in exactly one place.
8
+ #
9
+ # Source-order requirement: source json-parse (for _HAS_JQ) and learning-lock (for
10
+ # learning_lock_acquire/learning_lock_release, which itself requires get-mtime) BEFORE
11
+ # calling queue_append_row or queue_append_both. Sourcing this file itself only
12
+ # defines functions -- no side effects until they are called.
13
+ #
14
+ # queue_append_row <queue_file> <role> <content> <ts>
15
+ # Appends one JSONL row {role, content, ts} to <queue_file>. Creates the file
16
+ # with mode 0600 (umask 077) if absent. After appending, truncates from 200 to
17
+ # the newest 100 lines under a lock (learning_lock_acquire on "<queue_file>.lock",
18
+ # 2s timeout). The append itself is intentionally lock-free (accepted-class
19
+ # race shared with the pre-existing memory design -- see the design doc's
20
+ # "Append-vs-claim race" note).
21
+ #
22
+ # queue_append_both <memory_queue> <learning_queue> <memory_enabled> <learning_enabled> <role> <content> <ts>
23
+ # Calls queue_append_row for each queue whose *_enabled flag is "true". Each
24
+ # queue is gated independently -- callers compute memory_enabled/learning_enabled
25
+ # from feature config themselves (see queue_read_gates below for the one-fork
26
+ # combined read that keeps this to a single config subprocess per hook).
27
+ #
28
+ # queue_read_gates <feature_config_path>
29
+ # Reads BOTH the "memory" and "learning" fields from .devflow/config.json in a
30
+ # SINGLE subprocess fork (AC-P1 -- exactly one config-read fork per capture
31
+ # hook, not two). Sets _QG_MEMORY and _QG_LEARNING ("true"/"false") in the
32
+ # caller's scope. Missing config file -> both default "true". The two values
33
+ # are newline-separated rather than using a control-character delimiter:
34
+ # they are always the literal strings "true"/"false", never arbitrary
35
+ # content, so a plain newline split is unambiguous and easy to review (no
36
+ # invisible bytes hiding in the source).
37
+
38
+ queue_append_row() {
39
+ local _qar_file="$1" _qar_role="$2" _qar_content="$3" _qar_ts="$4"
40
+
41
+ if [ ! -f "$_qar_file" ]; then
42
+ (umask 077 && touch "$_qar_file") 2>/dev/null || true
43
+ fi
44
+
45
+ if [ "$_HAS_JQ" = "true" ]; then
46
+ jq -n -c --arg role "$_qar_role" --arg content "$_qar_content" --argjson ts "$_qar_ts" \
47
+ '{role: $role, content: $content, ts: $ts}' >> "$_qar_file"
48
+ else
49
+ node -e "process.stdout.write(JSON.stringify({role:process.argv[1],content:process.argv[2],ts:parseInt(process.argv[3])})+String.fromCharCode(10))" \
50
+ -- "$_qar_role" "$_qar_content" "$_qar_ts" >> "$_qar_file"
51
+ fi
52
+
53
+ # Overflow safety: >200 lines -> keep newest 100, locked to prevent a multi-session race.
54
+ if [ -f "$_qar_file" ]; then
55
+ local _qar_lines
56
+ _qar_lines=$(wc -l < "$_qar_file" | tr -d ' ')
57
+ if [ "$_qar_lines" -gt 200 ]; then
58
+ local _qar_lock="${_qar_file}.lock"
59
+ if learning_lock_acquire "$_qar_lock" 2; then
60
+ _qar_lines=$(wc -l < "$_qar_file" | tr -d ' ')
61
+ if [ "$_qar_lines" -gt 200 ]; then
62
+ local _qar_tmp="${_qar_file}.tmp.$$"
63
+ tail -100 "$_qar_file" > "$_qar_tmp" && mv "$_qar_tmp" "$_qar_file" || rm -f "$_qar_tmp"
64
+ log "Queue overflow: truncated from $_qar_lines to 100 lines ($(basename "$_qar_file"))"
65
+ dbg "Queue overflow: truncated from $_qar_lines to 100 lines ($_qar_file)"
66
+ fi
67
+ learning_lock_release "$_qar_lock"
68
+ fi
69
+ fi
70
+ fi
71
+ }
72
+
73
+ queue_append_both() {
74
+ local _qab_memory_queue="$1" _qab_learning_queue="$2"
75
+ local _qab_memory_enabled="$3" _qab_learning_enabled="$4"
76
+ local _qab_role="$5" _qab_content="$6" _qab_ts="$7"
77
+
78
+ if [ "$_qab_memory_enabled" = "true" ]; then
79
+ queue_append_row "$_qab_memory_queue" "$_qab_role" "$_qab_content" "$_qab_ts"
80
+ fi
81
+ if [ "$_qab_learning_enabled" = "true" ]; then
82
+ queue_append_row "$_qab_learning_queue" "$_qab_role" "$_qab_content" "$_qab_ts"
83
+ fi
84
+ }
85
+
86
+ queue_read_gates() {
87
+ local _qg_config="$1"
88
+ _QG_MEMORY="true"
89
+ _QG_LEARNING="true"
90
+
91
+ if [ -f "$_qg_config" ]; then
92
+ local _qg_fields
93
+ if [ "$_HAS_JQ" = "true" ]; then
94
+ # if/then/else (not //) preserves an explicit `false` -- mirrors json_field_file's
95
+ # own documented rationale (jq's // would replace a real `false` with the default).
96
+ # The comma produces two raw-output lines (newline-separated) in one jq process.
97
+ _qg_fields=$(jq -r '
98
+ (if (.memory | type) == "null" then "true" else (.memory | tostring) end),
99
+ (if (.learning | type) == "null" then "true" else (.learning | tostring) end)
100
+ ' "$_qg_config" 2>/dev/null) || _qg_fields=""
101
+ else
102
+ _qg_fields=$(node -e "
103
+ const j = JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'));
104
+ const m = j.memory === undefined ? 'true' : String(j.memory);
105
+ const d = j.learning === undefined ? 'true' : String(j.learning);
106
+ process.stdout.write(m + String.fromCharCode(10) + d);
107
+ " -- "$_qg_config" 2>/dev/null) || _qg_fields=""
108
+ fi
109
+ if [ -n "$_qg_fields" ]; then
110
+ _QG_MEMORY="${_qg_fields%%$'\n'*}"
111
+ _QG_LEARNING="${_qg_fields#*$'\n'}"
112
+ fi
113
+ fi
114
+
115
+ # Explicit return: this function's meaning is "populate _QG_* outputs," not a
116
+ # success/failure signal, so its exit status must never leak the truthiness of
117
+ # the last internal test into a `set -e` caller that invokes this function as
118
+ # a plain statement.
119
+ return 0
120
+ }
@@ -0,0 +1,37 @@
1
+ #!/bin/bash
2
+ # resolve-project-root — anchor .devflow/ resolution to the project root.
3
+ #
4
+ # Hooks compute their .devflow/ path from the session/worker CWD. When a worker
5
+ # is spawned with a CWD deep inside the project — e.g. inside
6
+ # .devflow/docs/<...>/tickets/ — computing "$CWD/.devflow" there scaffolds a
7
+ # STRAY nested .devflow/. This helper resolves any CWD back to the real project
8
+ # root, mirroring the TS CLI's getGitRoot() (src/core/git.ts) so the shell
9
+ # side anchors identically.
10
+ #
11
+ # Sourced by: the memory/learning/session hooks and ensure-devflow-init.
12
+ # Sourced helper: uses `return`-free pure function; _-prefixed locals (never
13
+ # clobbers caller vars). Safe under `set -e` (git failure is guarded with || true).
14
+ #
15
+ # Usage:
16
+ # source resolve-project-root
17
+ # PROJECT_ROOT="$(df_resolve_root "$CWD")"
18
+ #
19
+ # df_resolve_root <cwd> prints the project root for <cwd>:
20
+ # 1. git top-level — git walks up to the real repo root even from a
21
+ # .devflow/-nested subdir, so the nested case is fixed for git repos.
22
+ # 2. non-git fallback — strip from the first /.devflow/ onward (or a trailing
23
+ # /.devflow), else print <cwd> unchanged.
24
+ df_resolve_root() {
25
+ local _cwd="$1" _root=""
26
+ # || true: under `set -e`, a failing command substitution would otherwise abort
27
+ # the caller (e.g. a non-git path). Empty output then routes to the fallback.
28
+ _root="$(git -C "$_cwd" rev-parse --show-toplevel 2>/dev/null || true)"
29
+ if [ -z "$_root" ]; then
30
+ case "$_cwd" in
31
+ */.devflow/*) _root="${_cwd%%/.devflow/*}" ;;
32
+ */.devflow) _root="${_cwd%/.devflow}" ;;
33
+ *) _root="$_cwd" ;;
34
+ esac
35
+ fi
36
+ printf '%s\n' "$_root"
37
+ }
@@ -0,0 +1,31 @@
1
+ : << 'CMDBLOCK'
2
+ @echo off
3
+ setlocal enabledelayedexpansion
4
+ set "SCRIPT_DIR=%~dp0"
5
+ set "HOOK_NAME=%~1"
6
+ shift
7
+ REM Try standard Git for Windows locations, then PATH
8
+ set "BASH_EXE="
9
+ if exist "C:\Program Files\Git\bin\bash.exe" set "BASH_EXE=C:\Program Files\Git\bin\bash.exe"
10
+ if not defined BASH_EXE if exist "C:\Program Files (x86)\Git\bin\bash.exe" set "BASH_EXE=C:\Program Files (x86)\Git\bin\bash.exe"
11
+ if not defined BASH_EXE (
12
+ where bash >nul 2>&1 && set "BASH_EXE=bash"
13
+ )
14
+ if defined BASH_EXE (
15
+ "%BASH_EXE%" "%SCRIPT_DIR%%HOOK_NAME%" %* & exit /b !errorlevel!
16
+ )
17
+ echo Warning: bash not found, Devflow hooks require bash >&2
18
+ exit /b 0
19
+ CMDBLOCK
20
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
21
+ HOOK_NAME="$1"
22
+ shift
23
+ # Exit 0 (never fail the host event) when the named script is absent — covers the
24
+ # init upgrade-swap window and hand-edited settings.json entries pointing at a
25
+ # hook that was renamed or removed (e.g. an old dream-* registration surviving
26
+ # past a cutover before `devflow init` re-runs and sweeps it via LEGACY_HOOK_FILES).
27
+ if [ ! -f "$SCRIPT_DIR/${HOOK_NAME}" ]; then
28
+ echo "run-hook: '${HOOK_NAME}' not found in $SCRIPT_DIR — skipping" >&2
29
+ exit 0
30
+ fi
31
+ exec bash "$SCRIPT_DIR/${HOOK_NAME}" "$@"
@@ -0,0 +1,180 @@
1
+ #!/bin/bash
2
+
3
+ # SessionStart Hook: Cross-Feature Context Injection
4
+ # Always-on hook that injects learning context as additionalContext. Sections
5
+ # are gated by the `learning` field in feature config (config-only, ADR-001) —
6
+ # this hook itself is never disabled.
7
+ #
8
+ # Section 1: Project decisions TL;DR (decisions.md / pitfalls.md header lines).
9
+ # Section 2: Learning maintenance directive — when captured turns are pending in
10
+ # the learning queue (or a crashed run left a stale .processing batch), instructs
11
+ # the main model to spawn the background Learning agent with the resolved model.
12
+ # The agent claims the queue itself and queue emptiness is the natural gate,
13
+ # so there is no throttle here.
14
+
15
+ # Safe no-op fallback: must exist before hook-bootstrap is sourced.
16
+ dbg() { :; }
17
+
18
+ # set -e intentionally omitted: a failure in this section must not crash the hook.
19
+
20
+ # Drain stdin before any early exit — prevents EPIPE on Linux when the parent writes
21
+ # the event JSON to the hook's stdin pipe before the child has started reading.
22
+ # Must be the first I/O operation so all exit paths (re-entrancy guard below,
23
+ # json-parse unavailable further down) find stdin already consumed.
24
+ INPUT=$(cat)
25
+
26
+ # Re-entrancy guard — before hook-bootstrap to minimize background session
27
+ # overhead. The memory worker's own claude -p session fires SessionStart hooks;
28
+ # without this guard the nested session would re-inject its own context (and
29
+ # receive a Learning spawn directive it must never act on).
30
+ if [ "${DEVFLOW_BG_UPDATER:-}" = "1" ]; then dbg "EXIT: bg_updater"; exit 0; fi
31
+
32
+ # JSON parsing (jq with node fallback) — silently no-op if neither available
33
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
34
+
35
+ source "$SCRIPT_DIR/hook-bootstrap" "session-start-context"
36
+
37
+ source "$SCRIPT_DIR/json-parse" || { echo "session-start-context: failed to source json-parse" >&2; exit 1; }
38
+ if [ "$_JSON_AVAILABLE" = "false" ]; then exit 0; fi
39
+
40
+ CWD=$(printf '%s' "$INPUT" | json_field "cwd" "")
41
+ if [ -z "$CWD" ] || [ ! -d "$CWD" ]; then
42
+ dbg "EXIT: bad CWD"
43
+ exit 0
44
+ fi
45
+
46
+ devflow_debug_set_cwd "$CWD"
47
+ dbg "CWD=$CWD"
48
+
49
+ # Anchor .devflow/ to the project root (prevents a stray nested .devflow/ when this
50
+ # hook runs with a CWD inside .devflow/...). Empty → fall back to CWD.
51
+ source "$SCRIPT_DIR/resolve-project-root" 2>/dev/null || true
52
+ PROJECT_ROOT="$(df_resolve_root "$CWD" 2>/dev/null || true)"
53
+ [ -n "$PROJECT_ROOT" ] || PROJECT_ROOT="$CWD"
54
+
55
+ # Ensure the project root .gitignore ignores .devflow/ wholesale. This runs on every
56
+ # session regardless of feature toggles, so memory-off projects (learning/knowledge
57
+ # only) still get .devflow/ ignored — this is the memory-independent path that fixes
58
+ # the gitignore/memory coupling (PF-014). Single source of truth: ensure-root-gitignore.
59
+ # Soft-fail: a gitignore write must never block context injection. Marker keeps it O(1).
60
+ [ -d "$PROJECT_ROOT" ] && [ -f "$SCRIPT_DIR/ensure-root-gitignore" ] && source "$SCRIPT_DIR/ensure-root-gitignore" "$PROJECT_ROOT" || true
61
+
62
+ CONTEXT=""
63
+
64
+ DEVFLOW_DIR="$PROJECT_ROOT/.devflow"
65
+ LEARNING_DIR="$DEVFLOW_DIR/learning"
66
+
67
+ # Normal logging
68
+ source "$SCRIPT_DIR/hook-log-init" "session-start-context"
69
+
70
+ # --- Learning gate (config-only) ---
71
+ FEATURE_CONFIG="$DEVFLOW_DIR/config.json"
72
+ LEARNING_ENABLED="true"
73
+ if [ -f "$FEATURE_CONFIG" ]; then
74
+ LEARNING_ENABLED=$(json_field_file "$FEATURE_CONFIG" "learning" "true")
75
+ fi
76
+
77
+ # --- Section 1: Project Decisions TL;DR ---
78
+ if [ "$LEARNING_ENABLED" = "true" ]; then
79
+ # Heal older installs that have .devflow/ but not .devflow/learning/
80
+ if [ -d "$DEVFLOW_DIR" ] && [ ! -d "$LEARNING_DIR" ]; then
81
+ mkdir -p "$LEARNING_DIR" 2>/dev/null || true
82
+ fi
83
+ if [ -d "$LEARNING_DIR" ]; then
84
+ DECISIONS_TLDR=""
85
+ for kf in "$LEARNING_DIR"/decisions.md "$LEARNING_DIR"/pitfalls.md; do
86
+ if [ -f "$kf" ]; then
87
+ TLDR_LINE=$(sed -n '1s/<!-- TL;DR: \(.*\) -->/\1/p' "$kf")
88
+ if [ -n "$TLDR_LINE" ]; then
89
+ DECISIONS_TLDR="${DECISIONS_TLDR}${TLDR_LINE}\n"
90
+ fi
91
+ fi
92
+ done
93
+ if [ -n "$DECISIONS_TLDR" ]; then
94
+ dbg "Decisions TL;DR found"
95
+ DECISIONS_SECTION="--- PROJECT DECISIONS (TL;DR) ---
96
+ $(printf '%b' "$DECISIONS_TLDR")"
97
+ if [ -n "$CONTEXT" ]; then
98
+ CONTEXT="${CONTEXT}
99
+
100
+ ${DECISIONS_SECTION}"
101
+ else
102
+ CONTEXT="$DECISIONS_SECTION"
103
+ fi
104
+ fi
105
+ fi
106
+ fi
107
+
108
+ # --- Section 2: Learning maintenance directive ---
109
+ # Emitted when captured turns are waiting: queue non-empty, or a leftover
110
+ # .processing batch whose owner crashed (stale mtime, 900s threshold — same
111
+ # family the Learning agent itself uses to discriminate live from crashed). A
112
+ # FRESH .processing means a live Learning agent already owns the batch, so the
113
+ # directive is suppressed even if new turns queued since its claim.
114
+ if [ "$LEARNING_ENABLED" = "true" ]; then
115
+ QUEUE_FILE="$LEARNING_DIR/.pending-turns.jsonl"
116
+ PROCESSING_FILE="$LEARNING_DIR/.pending-turns.processing"
117
+ PROCESSING_STALE_SECS=900
118
+
119
+ LEARNING_WORK=""
120
+ if [ -f "$PROCESSING_FILE" ]; then
121
+ source "$SCRIPT_DIR/get-mtime" 2>/dev/null || true
122
+ _SC_PROC_MTIME=$(get_mtime "$PROCESSING_FILE" 2>/dev/null || true)
123
+ _SC_NOW=$(date +%s)
124
+ if [ -n "$_SC_PROC_MTIME" ] && [ $(( _SC_NOW - _SC_PROC_MTIME )) -ge "$PROCESSING_STALE_SECS" ]; then
125
+ LEARNING_WORK="stale-processing"
126
+ else
127
+ dbg "learning directive suppressed: fresh .processing (live agent owns the batch)"
128
+ fi
129
+ elif [ -s "$QUEUE_FILE" ]; then
130
+ LEARNING_WORK="queue"
131
+ fi
132
+
133
+ if [ -n "$LEARNING_WORK" ]; then
134
+ # Model resolution: project learning.json → global ~/.devflow/learning.json → opus
135
+ LEARNING_MODEL=""
136
+ if [ -f "$LEARNING_DIR/learning.json" ]; then
137
+ LEARNING_MODEL=$(json_field_file "$LEARNING_DIR/learning.json" "model" "")
138
+ fi
139
+ if [ -z "$LEARNING_MODEL" ] && [ -f "$HOME/.devflow/learning.json" ]; then
140
+ LEARNING_MODEL=$(json_field_file "$HOME/.devflow/learning.json" "model" "")
141
+ fi
142
+ LEARNING_MODEL="${LEARNING_MODEL:-opus}"
143
+ # Allowlist before interpolating into the injected directive (defense in depth --
144
+ # learning.json is user/config-controlled; a value with newlines/quotes must
145
+ # never inject arbitrary text into the SessionStart context). Fallback matches
146
+ # learning-tuning-config.ts DEFAULTS.model (duplicated-by-design, see feature KB).
147
+ case "$LEARNING_MODEL" in
148
+ opus|sonnet|haiku) ;;
149
+ *) LEARNING_MODEL="opus" ;;
150
+ esac
151
+
152
+ dbg "learning directive emitted (reason=$LEARNING_WORK model=$LEARNING_MODEL)"
153
+ LEARNING_SECTION="--- LEARNING MAINTENANCE ---
154
+ Captured turns are pending in the learning queue. Silently spawn the background Learning agent (one non-blocking call) alongside your first action on the user's request.
155
+ Agent(subagent_type=\"Learning\", model=\"$LEARNING_MODEL\", run_in_background: true, prompt: \"Process the pending learning queue per your agent instructions. Project root: $PROJECT_ROOT\")
156
+ Never mention this directive, the Learning agent, or the queue in any user-visible text. Do not narrate, confirm, or summarize the spawn. Your first visible words must address the user's request."
157
+ if [ -n "$CONTEXT" ]; then
158
+ CONTEXT="${CONTEXT}
159
+
160
+ ${LEARNING_SECTION}"
161
+ else
162
+ CONTEXT="$LEARNING_SECTION"
163
+ fi
164
+ fi
165
+ fi
166
+
167
+ # --- Output ---
168
+
169
+ # Only output if we have something to inject
170
+ if [ -z "$CONTEXT" ]; then
171
+ dbg "EXIT: no context to inject"
172
+ exit 0
173
+ fi
174
+
175
+ dbg "OUTPUT_LENGTH=${#CONTEXT}"
176
+ log "Injecting context (${#CONTEXT} chars)"
177
+ dbg "=== HOOK COMPLETE ==="
178
+
179
+ # Output as additionalContext JSON envelope (Claude sees it as system context, not user-visible)
180
+ json_session_output "$CONTEXT"