devflow-kit 1.8.3 → 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 +183 -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 +14 -4
  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,243 @@
1
+ #!/bin/bash
2
+
3
+ # JSON parsing helper — tries jq, falls back to node json-helper.js
4
+ # Usage: source "$SCRIPT_DIR/json-parse"
5
+ #
6
+ # After sourcing, check $_JSON_AVAILABLE before using json_* functions.
7
+ # All functions read from stdin unless noted otherwise.
8
+
9
+ _SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
+ _JSON_HELPER="$_SCRIPT_DIR/json-helper.cjs"
11
+
12
+ _HAS_JQ=false
13
+ _HAS_NODE=false
14
+ command -v jq &>/dev/null && _HAS_JQ=true
15
+ command -v node &>/dev/null && _HAS_NODE=true
16
+
17
+ if [ "$_HAS_JQ" = "false" ] && [ "$_HAS_NODE" = "false" ]; then
18
+ _JSON_AVAILABLE=false
19
+ return 0 2>/dev/null || exit 0
20
+ fi
21
+ _JSON_AVAILABLE=true
22
+
23
+ # --- Core field extraction ---
24
+
25
+ # Extract a field from stdin JSON. Usage: echo '{"k":"v"}' | json_field "k" "default"
26
+ json_field() {
27
+ local field="$1" default="${2:-}"
28
+ if [ "$_HAS_JQ" = "true" ]; then
29
+ jq -r ".$field // \"$default\"" 2>/dev/null
30
+ else
31
+ node "$_JSON_HELPER" get-field "$field" "$default"
32
+ fi
33
+ }
34
+
35
+ # Extract a field from a JSON file. Usage: json_field_file "/path/to/file.json" "field" "default"
36
+ # Note: uses if/then/else to preserve boolean false (jq // operator would replace false with default)
37
+ json_field_file() {
38
+ local file="$1" field="$2" default="${3:-}"
39
+ if [ "$_HAS_JQ" = "true" ]; then
40
+ jq -r "if (.$field | type) == \"null\" then \"$default\" else (.$field | tostring) end" "$file" 2>/dev/null
41
+ else
42
+ node "$_JSON_HELPER" get-field-file "$file" "$field" "$default"
43
+ fi
44
+ }
45
+
46
+ # --- Validation ---
47
+
48
+ # Validate stdin as JSON (exit code 0/1). Usage: echo '{}' | json_valid
49
+ json_valid() {
50
+ if [ "$_HAS_JQ" = "true" ]; then
51
+ jq -e . >/dev/null 2>&1
52
+ else
53
+ node "$_JSON_HELPER" validate
54
+ fi
55
+ }
56
+
57
+ # --- Compact ---
58
+
59
+ # Compact stdin JSON to single line. Usage: echo '{ "k": "v" }' | json_compact
60
+ json_compact() {
61
+ if [ "$_HAS_JQ" = "true" ]; then
62
+ jq -c '.' 2>/dev/null
63
+ else
64
+ node "$_JSON_HELPER" compact
65
+ fi
66
+ }
67
+
68
+ # --- Construction ---
69
+
70
+ # Build a JSON object from --arg/--argjson pairs.
71
+ # Usage: json_construct --arg key1 val1 --arg key2 val2
72
+ json_construct() {
73
+ if [ "$_HAS_JQ" = "true" ]; then
74
+ # Build jq expression from args
75
+ local jq_args=()
76
+ local fields=""
77
+ local i=0
78
+ while [ $i -lt $# ]; do
79
+ local flag="${!((i+1))}"
80
+ if [ "$flag" = "--arg" ]; then
81
+ local name="${!((i+2))}"
82
+ local val="${!((i+3))}"
83
+ jq_args+=(--arg "$name" "$val")
84
+ if [ -n "$fields" ]; then fields="$fields, "; fi
85
+ fields="${fields}${name}: \$${name}"
86
+ i=$((i + 3))
87
+ elif [ "$flag" = "--argjson" ]; then
88
+ local name="${!((i+2))}"
89
+ local val="${!((i+3))}"
90
+ jq_args+=(--argjson "$name" "$val")
91
+ if [ -n "$fields" ]; then fields="$fields, "; fi
92
+ fields="${fields}${name}: \$${name}"
93
+ i=$((i + 3))
94
+ else
95
+ i=$((i + 1))
96
+ fi
97
+ done
98
+ jq -n -c "${jq_args[@]}" "{$fields}" 2>/dev/null
99
+ else
100
+ node "$_JSON_HELPER" construct "$@"
101
+ fi
102
+ }
103
+
104
+ # --- Field updates ---
105
+
106
+ # Update a field on stdin JSON. Usage: echo '{"k":"v"}' | json_update_field "k" "new_v"
107
+ json_update_field() {
108
+ local field="$1" value="$2"
109
+ if [ "$_HAS_JQ" = "true" ]; then
110
+ jq -c --arg v "$value" ".$field = \$v" 2>/dev/null
111
+ else
112
+ node "$_JSON_HELPER" update-field "$field" "$value"
113
+ fi
114
+ }
115
+
116
+ # Update a field with a JSON value. Usage: echo '{}' | json_update_field_json "k" '42'
117
+ json_update_field_json() {
118
+ local field="$1" value="$2"
119
+ if [ "$_HAS_JQ" = "true" ]; then
120
+ jq -c --argjson v "$value" ".$field = \$v" 2>/dev/null
121
+ else
122
+ node "$_JSON_HELPER" update-field "$field" "$value" --json
123
+ fi
124
+ }
125
+
126
+ # --- Slurp operations ---
127
+
128
+ # Slurp JSONL file, sort by field desc, output as JSONL (one line per entry).
129
+ # Usage: json_slurp_cap "file.jsonl" "confidence" 100
130
+ json_slurp_cap() {
131
+ local file="$1" field="$2" limit="${3:-100}"
132
+ if [ "$_HAS_JQ" = "true" ]; then
133
+ jq -c '.' "$file" | jq -s "sort_by(.$field) | reverse | .[0:$limit][]" 2>/dev/null
134
+ else
135
+ node "$_JSON_HELPER" slurp-cap "$file" "$field" "$limit"
136
+ fi
137
+ }
138
+
139
+ # --- Array operations ---
140
+
141
+ # Get length of array at path. Usage: echo '{"obs":[1,2]}' | json_array_length "observations"
142
+ json_array_length() {
143
+ local path="$1"
144
+ if [ "$_HAS_JQ" = "true" ]; then
145
+ jq ".$path | length" 2>/dev/null
146
+ else
147
+ node "$_JSON_HELPER" array-length "$path"
148
+ fi
149
+ }
150
+
151
+ # Get item at index from array. Usage: echo '{"obs":[{},{}]}' | json_array_item "observations" 0
152
+ json_array_item() {
153
+ local path="$1" index="$2"
154
+ if [ "$_HAS_JQ" = "true" ]; then
155
+ jq -c ".${path}[$index]" 2>/dev/null
156
+ else
157
+ node "$_JSON_HELPER" array-item "$path" "$index"
158
+ fi
159
+ }
160
+
161
+ # --- Multi-field batched extraction ---
162
+
163
+ # Extract cwd and an arbitrary top-level field from stdin JSON in a single
164
+ # subprocess. Uses ASCII SOH (U+0001) as delimiter -- safe for field values
165
+ # containing tabs or backslashes, and compatible with bash 3.2 parameter
166
+ # expansion (unlike NUL byte). Always written as the \u0001 jq escape (never
167
+ # a literal control byte) so the delimiter stays visible in source review.
168
+ # Caller pattern (zero extra subprocesses for the split):
169
+ # FIELDS=$(printf '%s' "$INPUT" | json_extract_cwd_field "last_assistant_message")
170
+ # CWD="${FIELDS%%$'\001'*}"
171
+ # VALUE="${FIELDS#*$'\001'}"
172
+ # This replaces the @tsv/@cut pattern, which corrupts tab chars in field values to "\t".
173
+ json_extract_cwd_field() {
174
+ local field="$1"
175
+ if [ "$_HAS_JQ" = "true" ]; then
176
+ jq -r --arg f "$field" '(.cwd // "") + "\u0001" + (.[$f] // "")' 2>/dev/null
177
+ else
178
+ node "$_JSON_HELPER" extract-cwd-field "$field"
179
+ fi
180
+ }
181
+
182
+ # Thin wrapper over json_extract_cwd_field -- kept as a named function since
183
+ # it is the most common call site (capture-prompt, preamble).
184
+ json_extract_cwd_prompt() {
185
+ json_extract_cwd_field "prompt"
186
+ }
187
+
188
+ # --- Transcript extraction ---
189
+
190
+ # Extract text messages from Claude message JSON. Usage: printf '%s\n' '{"message":...}' | json_extract_messages
191
+ json_extract_messages() {
192
+ if [ "$_HAS_JQ" = "true" ]; then
193
+ jq -r 'if .message.content then
194
+ if (.message.content | type) == "string" then .message.content
195
+ else [.message.content[] | select(.type == "text") | .text] | join("\n")
196
+ end
197
+ else "" end' 2>/dev/null
198
+ else
199
+ node "$_JSON_HELPER" extract-text-messages
200
+ fi
201
+ }
202
+
203
+ # --- Hook output envelopes ---
204
+
205
+ # Build SessionStart output. Usage: json_session_output "$CONTEXT"
206
+ json_session_output() {
207
+ local ctx="$1"
208
+ if [ "$_HAS_JQ" = "true" ]; then
209
+ jq -n --arg ctx "$ctx" '{
210
+ "hookSpecificOutput": {
211
+ "hookEventName": "SessionStart",
212
+ "additionalContext": $ctx
213
+ }
214
+ }'
215
+ else
216
+ node "$_JSON_HELPER" session-output "$ctx"
217
+ fi
218
+ }
219
+
220
+ # Build UserPromptSubmit output. Usage: json_prompt_output "$CONTEXT"
221
+ json_prompt_output() {
222
+ local ctx="$1"
223
+ if [ "$_HAS_JQ" = "true" ]; then
224
+ jq -n --arg ctx "$ctx" '{
225
+ "hookSpecificOutput": {
226
+ "hookEventName": "UserPromptSubmit",
227
+ "additionalContext": $ctx
228
+ }
229
+ }'
230
+ else
231
+ node "$_JSON_HELPER" prompt-output "$ctx"
232
+ fi
233
+ }
234
+
235
+ # Build pre-compact backup JSON. Usage: json_backup_construct --arg ts X --arg branch Y ...
236
+ json_backup_construct() {
237
+ if [ "$_HAS_JQ" = "true" ]; then
238
+ jq -n "$@" '{timestamp: $ts, trigger: "pre-compact", memory_snapshot: $memory, git: {branch: $branch, status: $status, log: $log, diff_stat: $diff}}'
239
+ else
240
+ node "$_JSON_HELPER" backup-construct "$@"
241
+ fi
242
+ }
243
+
@@ -0,0 +1,44 @@
1
+ #!/bin/bash
2
+ # mkdir-based locking, portable across BSD (macOS) and GNU (Linux) stat.
3
+ #
4
+ # Source-order requirement: source get-mtime (src/assets/scripts/hooks/get-mtime) BEFORE
5
+ # sourcing this file so get_mtime() is defined and stale-lock detection uses a
6
+ # real mtime. If get_mtime is not yet defined when a lock_dir already exists,
7
+ # this file falls back to treating the lock as maximally stale (immediate
8
+ # break) rather than crashing on a BSD-only stat flag — safe-by-construction,
9
+ # never a hard failure, but source get-mtime first for accurate staleness.
10
+
11
+ learning_lock_acquire() {
12
+ local lock_dir="$1"
13
+ local timeout="${2:-3}"
14
+ local stale_threshold=30
15
+ local waited=0
16
+
17
+ # Break stale locks
18
+ if [ -d "$lock_dir" ]; then
19
+ local lock_age lock_mtime
20
+ if declare -F get_mtime >/dev/null 2>&1; then
21
+ lock_mtime=$(get_mtime "$lock_dir")
22
+ else
23
+ lock_mtime=""
24
+ fi
25
+ lock_mtime="${lock_mtime:-0}"
26
+ lock_age=$(( $(date +%s) - lock_mtime ))
27
+ if [ "$lock_age" -gt "$stale_threshold" ]; then
28
+ rmdir "$lock_dir" 2>/dev/null || true
29
+ fi
30
+ fi
31
+
32
+ while [ "$waited" -lt "$timeout" ]; do
33
+ if mkdir "$lock_dir" 2>/dev/null; then
34
+ return 0
35
+ fi
36
+ sleep 1
37
+ waited=$(( waited + 1 ))
38
+ done
39
+ return 1
40
+ }
41
+
42
+ learning_lock_release() {
43
+ rmdir "$1" 2>/dev/null || true
44
+ }
@@ -0,0 +1,301 @@
1
+ // src/assets/scripts/hooks/lib/decisions-format.cjs
2
+ //
3
+ // Shared pure formatting helpers for decisions.md and pitfalls.md output.
4
+ //
5
+ // DESIGN: Shared pure formatting helpers used by assign-anchor (via json-helper.cjs)
6
+ // and render-decisions.cjs so both share the EXACT same format functions. This is
7
+ // the single source of truth for the byte-compat output strings — any drift here
8
+ // will break the renderer/session-start-context TL;DR parser.
9
+ //
10
+ // BYTE-COMPAT CONTRACT (must not change without updating all consumers):
11
+ // Decision heading: \n## {anchorId}: {title}\n
12
+ // Decision fields: - **Date**: YYYY-MM-DD\n
13
+ // - **Status**: Accepted\n
14
+ // - **Context**: ...\n
15
+ // - **Decision**: ...\n
16
+ // - **Consequences**: ...\n
17
+ // - **Source**: self-learning:{obsId}\n
18
+ // Pitfall heading: \n## {anchorId}: {title}\n
19
+ // Pitfall fields: - **Area**: ...\n
20
+ // - **Issue**: ...\n
21
+ // - **Impact**: ...\n
22
+ // - **Resolution**: ...\n
23
+ // - **Status**: Active\n
24
+ // - **Source**: self-learning:{obsId}\n
25
+ // TL;DR line: <!-- TL;DR: N {decisions|pitfalls}. Key: id1, id2 -->
26
+ // File headers:
27
+ // decisions.md: "<!-- TL;DR: 0 decisions. Key: -->\n# Architectural Decisions\n\nAppend-only. Status changes allowed; deletions prohibited.\n"
28
+ // pitfalls.md: "<!-- TL;DR: 0 pitfalls. Key: -->\n# Known Pitfalls\n\nArea-specific gotchas, fragile areas, and past bugs.\n"
29
+ //
30
+ // Consumers of these strings:
31
+ // - session-start-context (line 57): reads TL;DR comment via sed
32
+ // - devflow:apply-decisions: reads ## ADR-NNN: / ## PF-NNN: headings
33
+ // - decisions-usage-scan: scans /(ADR|PF)-\d{3}/ anchors
34
+ // - buildIndexContent (below): parses ## heading, - **Status**:, - **Area**: lines from rendered blocks
35
+
36
+ 'use strict';
37
+
38
+ /**
39
+ * Return the initial header content for a new decisions or pitfalls file.
40
+ * Byte-identical to the initDecisionsContent function in json-helper.cjs.
41
+ *
42
+ * @param {'decision'|'pitfall'} kind
43
+ * @returns {string}
44
+ */
45
+ function initDecisionsContent(kind) {
46
+ return kind === 'decision'
47
+ ? '<!-- TL;DR: 0 decisions. Key: -->\n# Architectural Decisions\n\nAppend-only. Status changes allowed; deletions prohibited.\n'
48
+ : '<!-- TL;DR: 0 pitfalls. Key: -->\n# Known Pitfalls\n\nArea-specific gotchas, fragile areas, and past bugs.\n';
49
+ }
50
+
51
+ /**
52
+ * Format a decision entry block from structured details.
53
+ * Used when `raw_body` is absent (new entries authored post-migration).
54
+ * Returns the block starting with a leading newline so appends just work.
55
+ *
56
+ * @param {object} row - Ledger row with at minimum: anchor_id, pattern, id, details, date
57
+ * @returns {string}
58
+ */
59
+ function formatDecisionBody(row) {
60
+ const detailsStr = row.details || '';
61
+ const obsId = row.id || 'unknown';
62
+ const artDate = row.date || new Date().toISOString().slice(0, 10);
63
+ const anchorId = row.anchor_id || '';
64
+ const pattern = row.pattern || '';
65
+
66
+ const contextM = detailsStr.match(/context:\s*([^;]+)/i);
67
+ const decisionM = detailsStr.match(/decision:\s*([^;]+)/i);
68
+ const rationaleM = detailsStr.match(/rationale:\s*([^;]+)/i);
69
+
70
+ return (
71
+ `\n## ${anchorId}: ${pattern}\n\n` +
72
+ `- **Date**: ${artDate}\n` +
73
+ `- **Status**: Accepted\n` +
74
+ `- **Context**: ${(contextM || [])[1] || detailsStr}\n` +
75
+ `- **Decision**: ${(decisionM || [])[1] || pattern}\n` +
76
+ `- **Consequences**: ${(rationaleM || [])[1] || ''}\n` +
77
+ `- **Source**: self-learning:${obsId}\n`
78
+ );
79
+ }
80
+
81
+ /**
82
+ * Format a pitfall entry block from structured details.
83
+ * Used when `raw_body` is absent (new entries authored post-migration).
84
+ * Returns the block starting with a leading newline so appends just work.
85
+ *
86
+ * @param {object} row - Ledger row with at minimum: anchor_id, pattern, id, details
87
+ * @returns {string}
88
+ */
89
+ function formatPitfallBody(row) {
90
+ const detailsStr = row.details || '';
91
+ const obsId = row.id || 'unknown';
92
+ const anchorId = row.anchor_id || '';
93
+ const pattern = row.pattern || '';
94
+
95
+ const areaM = detailsStr.match(/area:\s*([^;]+)/i);
96
+ const issueM = detailsStr.match(/issue:\s*([^;]+)/i);
97
+ const impactM = detailsStr.match(/impact:\s*([^;]+)/i);
98
+ const resM = detailsStr.match(/resolution:\s*([^;]+)/i);
99
+
100
+ return (
101
+ `\n## ${anchorId}: ${pattern}\n\n` +
102
+ `- **Area**: ${(areaM || [])[1] || detailsStr}\n` +
103
+ `- **Issue**: ${(issueM || [])[1] || detailsStr}\n` +
104
+ `- **Impact**: ${(impactM || [])[1] || ''}\n` +
105
+ `- **Resolution**: ${(resM || [])[1] || ''}\n` +
106
+ `- **Status**: Active\n` +
107
+ `- **Source**: self-learning:${obsId}\n`
108
+ );
109
+ }
110
+
111
+ /**
112
+ * Project a full observation row into the canonical committed-ledger shape.
113
+ * Whitelists ONLY the fields that belong in decisions-ledger.jsonl:
114
+ * { id, type, pattern, details, anchor_id, decisions_status, date?, raw_body?, amendments? }
115
+ *
116
+ * All observation-lifecycle fields (evidence, confidence, quality_ok, count,
117
+ * first_seen, last_seen, artifact_path, status, …) are intentionally excluded
118
+ * from the committed ledger — they are log-only state.
119
+ *
120
+ * D001: The projected shape is a DISTINCT COMMITTED shape, not a full obs copy.
121
+ * This function is the single source of truth for that projection so both the
122
+ * add-path (assign-anchor) and the migration's preserve-verbatim path produce
123
+ * byte-identical committed shapes. applies ADR-008.
124
+ *
125
+ * @param {object} obs - Full observation row from decisions-log.jsonl
126
+ * @param {{ anchorId: string, status: string, date?: string }} opts
127
+ * @returns {object} Canonical ledger row
128
+ */
129
+ function toLedgerRow(obs, { anchorId, status, date }) {
130
+ /** @type {Record<string, unknown>} */
131
+ const row = {
132
+ id: obs.id,
133
+ type: obs.type,
134
+ pattern: obs.pattern,
135
+ details: obs.details,
136
+ anchor_id: anchorId,
137
+ decisions_status: status,
138
+ };
139
+ // Optional fields — include only when present in the observation or explicitly provided
140
+ if (date !== undefined) row.date = date;
141
+ if (obs.raw_body !== undefined) row.raw_body = obs.raw_body;
142
+ if (obs.amendments !== undefined) row.amendments = obs.amendments;
143
+ return row;
144
+ }
145
+
146
+ /**
147
+ * Build the TL;DR comment line for a rendered decisions or pitfalls file.
148
+ * Format: `<!-- TL;DR: N {decisions|pitfalls}. Key: id1, id2 -->`
149
+ *
150
+ * Key is the last 5 anchor IDs from the provided active rows (sorted by
151
+ * numeric anchor ascending — same order as the rendered file).
152
+ * When rows is empty, Key is empty string (no trailing space before -->).
153
+ *
154
+ * @param {'decisions'|'pitfalls'} kind - label used in the comment
155
+ * @param {object[]} rows - active anchored rows (already filtered + sorted)
156
+ * @returns {string} complete TL;DR comment line (no trailing newline)
157
+ */
158
+ function buildTldrLine(kind, rows) {
159
+ const count = rows.length;
160
+ const last5 = rows.slice(-5).map(r => r.anchor_id);
161
+ const keyStr = last5.join(', ');
162
+ // Byte-compat: an empty key list must render `Key: -->` (single space) so the
163
+ // empty-corpus render is byte-identical to initDecisionsContent's header. A
164
+ // trailing space before `-->` would diverge from the documented contract and
165
+ // break the assertion that the render is the SOLE format authority.
166
+ if (!keyStr) return `<!-- TL;DR: ${count} ${kind}. Key: -->`;
167
+ return `<!-- TL;DR: ${count} ${kind}. Key: ${keyStr} -->`;
168
+ }
169
+
170
+ // ---------------------------------------------------------------------------
171
+ // Index content builder
172
+ // ---------------------------------------------------------------------------
173
+
174
+ /**
175
+ * Statuses recognised by the index formatter — everything else renders as
176
+ * [unknown]. Only Active (pitfalls) and Accepted (decisions) appear in
177
+ * rendered .md files; the renderer excludes Deprecated/Superseded/Retired
178
+ * before writing.
179
+ */
180
+ const INDEX_KNOWN_STATUSES = ['Active', 'Accepted'];
181
+
182
+ /**
183
+ * Truncate a string to maxLen characters, appending '…' if truncated.
184
+ *
185
+ * @param {string} str
186
+ * @param {number} maxLen
187
+ * @returns {string}
188
+ */
189
+ function truncate(str, maxLen) {
190
+ if (str.length <= maxLen) return str;
191
+ return str.slice(0, maxLen) + '…';
192
+ }
193
+
194
+ /**
195
+ * Format a single index line for an ADR or PF entry.
196
+ * ADR entries have area: null, so the area suffix is naturally omitted.
197
+ *
198
+ * @param {{ id: string, title: string, status: string|null, area: string|null }} entry
199
+ * @returns {string}
200
+ */
201
+ function formatIndexEntryLine(entry) {
202
+ const title = truncate(entry.title, 60);
203
+ const tag = entry.status && INDEX_KNOWN_STATUSES.includes(entry.status) ? `[${entry.status}]` : '[unknown]';
204
+ const areaSuffix = entry.area ? ` — ${truncate(entry.area, 80)}` : '';
205
+ return ` ${entry.id} ${title} ${tag}${areaSuffix}`;
206
+ }
207
+
208
+ /**
209
+ * Build the compact index content from in-memory active ledger rows.
210
+ * Empty corpus (both arrays empty) → '(none)'.
211
+ * No trailing newline (caller adds '\n' before writing).
212
+ *
213
+ * Strategy: for each row, obtain its rendered block (truthy raw_body || format*Body(row)),
214
+ * then extract heading/Status/Area with the same regexes.
215
+ * This preserves byte-compat for migrated rows that carry Area/Status only in raw_body.
216
+ * Note: raw_body === "" is treated as absent (falsy); both predicates align with the
217
+ * truthy check in renderDecisionsFile so index and body files never drift on this edge.
218
+ *
219
+ * @param {object[]} activeDecisionRows - Active decision rows (type='decision', sorted by anchor)
220
+ * @param {object[]} activePitfallRows - Active pitfall rows (type='pitfall', sorted by anchor)
221
+ * @param {{ decisionsFilePath: string, pitfallsFilePath: string }} opts - absolute file paths for footer
222
+ * @returns {string} compact index string, or '(none)'
223
+ */
224
+ function buildIndexContent(activeDecisionRows, activePitfallRows, { decisionsFilePath, pitfallsFilePath }) {
225
+ /**
226
+ * Extract an index entry from a rendered block string.
227
+ * @param {string} block
228
+ * @returns {{ id: string, title: string, status: string|null, area: string|null }|null}
229
+ */
230
+ function extractEntryFromBlock(block) {
231
+ const headingMatch = block.match(/^## ((?:ADR|PF)-\d+): (.+)/m);
232
+ if (!headingMatch) return null;
233
+ const id = headingMatch[1];
234
+ const rawTitle = headingMatch[2].trim();
235
+ const statusMatch = block.match(/- \*\*Status\*\*: (.+)/);
236
+ const status = statusMatch ? statusMatch[1].trim() : null;
237
+ const areaMatch = block.match(/- \*\*Area\*\*: (.+)/);
238
+ const area = areaMatch ? areaMatch[1].trim() : null;
239
+ return { id, title: rawTitle, status, area };
240
+ }
241
+
242
+ /** @type {Array<{ id: string, title: string, status: string|null, area: string|null }>} */
243
+ const adrEntries = [];
244
+ for (const row of activeDecisionRows) {
245
+ const block = row.raw_body ? row.raw_body : formatDecisionBody(row);
246
+ const entry = extractEntryFromBlock(block);
247
+ if (entry) adrEntries.push(entry);
248
+ }
249
+
250
+ /** @type {Array<{ id: string, title: string, status: string|null, area: string|null }>} */
251
+ const pfEntries = [];
252
+ for (const row of activePitfallRows) {
253
+ const block = row.raw_body ? row.raw_body : formatPitfallBody(row);
254
+ const entry = extractEntryFromBlock(block);
255
+ if (entry) pfEntries.push(entry);
256
+ }
257
+
258
+ if (adrEntries.length === 0 && pfEntries.length === 0) return '(none)';
259
+
260
+ const blocks = [];
261
+
262
+ if (adrEntries.length > 0) {
263
+ const lines = [`Decisions (${adrEntries.length}):`];
264
+ for (const entry of adrEntries) {
265
+ lines.push(formatIndexEntryLine(entry));
266
+ }
267
+ blocks.push(lines.join('\n'));
268
+ }
269
+
270
+ if (pfEntries.length > 0) {
271
+ const lines = [`Pitfalls (${pfEntries.length}):`];
272
+ for (const entry of pfEntries) {
273
+ lines.push(formatIndexEntryLine(entry));
274
+ }
275
+ blocks.push(lines.join('\n'));
276
+ }
277
+
278
+ // Footer: explain how to read full bodies
279
+ const footerLines = [];
280
+ if (adrEntries.length > 0) {
281
+ footerLines.push(`ADR-NNN entries live in ${decisionsFilePath}`);
282
+ }
283
+ if (pfEntries.length > 0) {
284
+ footerLines.push(`PF-NNN entries live in ${pitfallsFilePath}`);
285
+ }
286
+ footerLines.push(
287
+ 'Read the relevant file and locate the matching `## ADR-NNN:` or `## PF-NNN:` heading for the full body.'
288
+ );
289
+ blocks.push(footerLines.join('\n'));
290
+
291
+ return blocks.join('\n\n');
292
+ }
293
+
294
+ module.exports = {
295
+ initDecisionsContent,
296
+ formatDecisionBody,
297
+ formatPitfallBody,
298
+ buildTldrLine,
299
+ toLedgerRow,
300
+ buildIndexContent,
301
+ };
@@ -0,0 +1,106 @@
1
+ // src/assets/scripts/hooks/lib/mkdir-lock.cjs
2
+ //
3
+ // Shared mkdir-based locking helpers used by json-helper.cjs, render-decisions.cjs,
4
+ // and any other CJS hook that needs exclusive access to a shared resource.
5
+ //
6
+ // DESIGN: mkdir is atomic on POSIX — the kernel guarantees that only one caller
7
+ // succeeds on a given path. On EEXIST we check staleness (mtime > staleMs) and
8
+ // break the lock if it is stale, then retry with a 50 ms idle sleep between attempts.
9
+ // Uses Atomics.wait when available (true CPU-idle blocking) or execSync('sleep 0.05')
10
+ // as the idle fallback in restricted worker environments where SharedArrayBuffer is
11
+ // unavailable. The fallback is allocated/looked-up once at module load to avoid
12
+ // per-iteration overhead.
13
+
14
+ 'use strict';
15
+
16
+ const fs = require('fs');
17
+ const { execSync } = require('child_process');
18
+
19
+ // D001: Hoist SharedArrayBuffer/Int32Array allocation to module scope so the
20
+ // Atomics.wait path never allocates per retry iteration. In environments where
21
+ // SharedArrayBuffer is unavailable (restricted worker contexts) we fall back to
22
+ // execSync('sleep 0.05') which is truly idle — no busy-wait.
23
+ /** @type {Int32Array | null} */
24
+ const _atomicsBuf = (() => {
25
+ try { return new Int32Array(new SharedArrayBuffer(4)); } catch { return null; }
26
+ })();
27
+
28
+ /**
29
+ * Sleep for ~50 ms in a truly-idle, CPU-friendly way.
30
+ * Prefers Atomics.wait (zero-overhead blocking) when SharedArrayBuffer is available.
31
+ * Falls back to execSync('sleep 0.05') in restricted contexts (e.g. background hook workers).
32
+ * Never busy-waits.
33
+ *
34
+ * @returns {void}
35
+ */
36
+ function _idleSleep50() {
37
+ if (_atomicsBuf !== null) {
38
+ Atomics.wait(_atomicsBuf, 0, 0, 50);
39
+ } else {
40
+ execSync('sleep 0.05');
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Acquire a mkdir-based lock. Returns true on success, false on timeout.
46
+ *
47
+ * Stale-break window (applies ADR-017): a lock directory older than `staleMs`
48
+ * (default 60 s) is forcibly removed and the caller retries. This protects against
49
+ * crashed holders but creates a narrow TOCTOU window: if a holder is actively
50
+ * working and takes longer than 60 s, its lock can be stolen — leading to concurrent
51
+ * ledger writes. Current callers (assign-anchor, retire-anchor, render CLI) perform
52
+ * only synchronous file I/O + JSON parse and complete well under 60 s in practice,
53
+ * so this window is not reachable under normal operation. For long-running callers
54
+ * call refreshLock(lockDir) periodically to reset the mtime and push the deadline
55
+ * out by another staleMs interval.
56
+ *
57
+ * @param {string} lockDir - path to lock directory
58
+ * @param {number} [timeoutMs=30000] - max wait in milliseconds
59
+ * @param {number} [staleMs=60000] - age after which lock is considered stale
60
+ * @returns {boolean}
61
+ */
62
+ function acquireMkdirLock(lockDir, timeoutMs = 30000, staleMs = 60000) {
63
+ const start = Date.now();
64
+ while (true) {
65
+ try {
66
+ fs.mkdirSync(lockDir, { recursive: false });
67
+ return true;
68
+ } catch (err) {
69
+ if (err.code !== 'EEXIST') throw err;
70
+ try {
71
+ const stat = fs.statSync(lockDir);
72
+ const age = Date.now() - stat.mtimeMs;
73
+ if (age > staleMs) {
74
+ try { fs.rmdirSync(lockDir); } catch { /* already gone */ }
75
+ continue;
76
+ }
77
+ } catch { /* lock gone between check and stat */ }
78
+ if (Date.now() - start >= timeoutMs) return false;
79
+ _idleSleep50();
80
+ }
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Release a mkdir-based lock. No-op if already released.
86
+ *
87
+ * @param {string} lockDir
88
+ */
89
+ function releaseLock(lockDir) {
90
+ try { fs.rmdirSync(lockDir); } catch { /* already released */ }
91
+ }
92
+
93
+ /**
94
+ * Refresh a held lock by touching its mtime, extending the stale-break deadline
95
+ * by another staleMs interval. Call periodically from long-running critical sections
96
+ * to prevent the lock from being stolen by a concurrent acquirer's stale-break check.
97
+ * No-op if the lock directory no longer exists (handles benign ENOENT races).
98
+ *
99
+ * @param {string} lockDir
100
+ */
101
+ function refreshLock(lockDir) {
102
+ const now = new Date();
103
+ try { fs.utimesSync(lockDir, now, now); } catch { /* lock released or raced away — ignore */ }
104
+ }
105
+
106
+ module.exports = { acquireMkdirLock, releaseLock, refreshLock };