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,458 @@
1
+ /**
2
+ * Pure composition module for the compliance skill and rule.
3
+ *
4
+ * Composes the installed SKILL.md and rule file from a template + per-framework
5
+ * fragment files, so installed artifacts differ by selection rather than being
6
+ * static all-six blobs.
7
+ *
8
+ * Applies ADR-013: pure helpers in src/core/, no I/O.
9
+ * Applies PF-009: warn-not-throw for per-item failures.
10
+ */
11
+ import { COMPLIANCE_FRAMEWORKS, stampComplianceRule } from './compliance.js';
12
+ // ── Constants ──────────────────────────────────────────────────────────────────
13
+ /**
14
+ * The 6 framework mapping control columns — single source of truth for the
15
+ * transposed Framework Mapping table header and fragment cell-count validation.
16
+ */
17
+ export const COMPLIANCE_CONTROL_COLUMNS = [
18
+ 'Data Classification',
19
+ 'Sensitive Data in Logs',
20
+ 'Encryption',
21
+ 'Audit Trails',
22
+ 'Retention & Erasure',
23
+ 'IaC / Env Controls',
24
+ ];
25
+ /**
26
+ * The 5 substitution tokens in the SKILL.md template.
27
+ * Bidirectional parity: every token here must exist in the template; every
28
+ * template token must be listed here. Enforced against the SHIPPED SKILL.md by
29
+ * "shipped templates ↔ token registry" in tests/compliance-compose.test.ts —
30
+ * a typo'd token is otherwise stripped silently by C3 and never noticed.
31
+ */
32
+ export const COMPLIANCE_SKILL_TOKENS = [
33
+ '${DEVFLOW_COMPLIANCE_SCOPE}',
34
+ '${DEVFLOW_COMPLIANCE_ACTIVE}',
35
+ '${DEVFLOW_COMPLIANCE_MAPPING}',
36
+ '${DEVFLOW_COMPLIANCE_CHECKLIST}',
37
+ '${DEVFLOW_COMPLIANCE_REFERENCES}',
38
+ ];
39
+ /**
40
+ * The 1 rule substitution token beyond the existing COMPLIANCE_RULE_PLACEHOLDER.
41
+ * Bidirectional parity: every token here must exist in the rule template; every
42
+ * template token (beyond the existing placeholder) must be listed here. Enforced
43
+ * against the SHIPPED rule in tests/compliance-compose.test.ts.
44
+ */
45
+ export const COMPLIANCE_RULE_TOKENS = [
46
+ '${DEVFLOW_COMPLIANCE_RULE_BULLETS}',
47
+ ];
48
+ // ── Internal helpers ───────────────────────────────────────────────────────────
49
+ /**
50
+ * Matches any `${DEVFLOW_COMPLIANCE_*}` token left after the known substitutions.
51
+ *
52
+ * Deliberately as permissive as the C1 admission guard (`includes('${DEVFLOW_COMPLIANCE_')`):
53
+ * anything that gets a template past C1 must be strippable here, or C3 ("no token
54
+ * residue") would be false for that shape.
55
+ */
56
+ const UNKNOWN_TOKEN_PATTERN = /\$\{DEVFLOW_COMPLIANCE_[A-Z0-9_]*\}/g;
57
+ /** Label lookup from the COMPLIANCE_FRAMEWORKS registry. */
58
+ const LABEL_BY_ID = new Map(COMPLIANCE_FRAMEWORKS.map(fw => [fw.id, fw.label]));
59
+ /**
60
+ * Resolve IDs to {id, label} pairs, DROPPING anything absent from the registry.
61
+ *
62
+ * Fail-safe restatement of the C2 filter that the compose entry points already apply:
63
+ * every section builder resolves through here independently, so an ID that is not in
64
+ * LABEL_BY_ID contributes nothing at all — no label, no `references/{id}.md` path, no
65
+ * table row. If the C2 filter above is ever moved, weakened, or dropped, the failure
66
+ * mode is a missing row rather than an unvalidated ID echoed into an installed
67
+ * artifact that Claude Code loads into every prompt (AC-35, AC-36).
68
+ *
69
+ * Never `?? id`: falling back to the raw ID is exactly the echo C2 exists to prevent.
70
+ */
71
+ function resolveRegistryFrameworks(ids) {
72
+ const resolved = [];
73
+ const seen = new Set();
74
+ for (const id of ids) {
75
+ if (seen.has(id))
76
+ continue; // first-wins dedup — mirrors normalizeFrameworks upstream
77
+ const label = LABEL_BY_ID.get(id);
78
+ if (label === undefined)
79
+ continue;
80
+ seen.add(id);
81
+ resolved.push({ id, label });
82
+ }
83
+ return resolved;
84
+ }
85
+ /**
86
+ * Extract `## Heading` sections from markdown content.
87
+ * Returns a map of heading → section body (text after the heading, before the next
88
+ * `##` heading). Whitespace on both sides of each body is NOT trimmed here.
89
+ */
90
+ function extractSections(content) {
91
+ const sections = new Map();
92
+ const lines = content.split('\n');
93
+ let currentHeading = null;
94
+ let currentLines = [];
95
+ for (const line of lines) {
96
+ const match = /^##\s+(.+)$/.exec(line);
97
+ if (match) {
98
+ if (currentHeading !== null) {
99
+ sections.set(currentHeading, currentLines.join('\n'));
100
+ }
101
+ currentHeading = match[1].trim();
102
+ currentLines = [];
103
+ }
104
+ else if (currentHeading !== null) {
105
+ currentLines.push(line);
106
+ }
107
+ }
108
+ if (currentHeading !== null) {
109
+ sections.set(currentHeading, currentLines.join('\n'));
110
+ }
111
+ return sections;
112
+ }
113
+ /**
114
+ * Parse a markdown table row `| cell1 | cell2 | ... |` into an array of cell strings.
115
+ * Trims each cell. Returns [] for lines that don't look like table rows.
116
+ */
117
+ function parseTableRow(row) {
118
+ if (!row.includes('|'))
119
+ return [];
120
+ const parts = row.split('|');
121
+ // Slice off the leading and trailing empty parts from the outer pipes
122
+ return parts.slice(1, parts.length - 1).map(c => c.trim());
123
+ }
124
+ /**
125
+ * Collapse 3+ consecutive blank lines to exactly 2 consecutive blank lines.
126
+ * Applies C4: blank-line hygiene when a token is substituted.
127
+ */
128
+ function applyBlankLineHygiene(content) {
129
+ return content.replace(/\n{3,}/g, '\n\n');
130
+ }
131
+ /**
132
+ * Replace all occurrences of a literal token string in content with a replacement.
133
+ * Avoids regex for robustness with special characters in token names.
134
+ */
135
+ function replaceToken(content, token, replacement) {
136
+ return content.split(token).join(replacement);
137
+ }
138
+ // ── Composition helpers ────────────────────────────────────────────────────────
139
+ /**
140
+ * Build the ${DEVFLOW_COMPLIANCE_SCOPE} substitution.
141
+ * Active frameworks: "under GDPR, SOC 2"
142
+ * Zero frameworks: "under active compliance frameworks"
143
+ *
144
+ * Frameworks the registry cannot label degrade to the zero-framework wording rather
145
+ * than being named (see resolveRegistryFrameworks).
146
+ */
147
+ function buildScope(activeFrameworks) {
148
+ const resolved = resolveRegistryFrameworks(activeFrameworks);
149
+ if (resolved.length === 0) {
150
+ return 'under active compliance frameworks';
151
+ }
152
+ return `under ${resolved.map(fw => fw.label).join(', ')}`;
153
+ }
154
+ /**
155
+ * Collect C5 warnings for active frameworks that have no fragment.
156
+ *
157
+ * Emitted once, up front, by the compose entry points — never as a side effect of a
158
+ * section builder. Each builder skips fragment-less frameworks independently, so the
159
+ * warning must not depend on which builders run or in what order.
160
+ */
161
+ function collectMissingFragmentWarnings(fnName, activeFrameworks, fragments, omitted) {
162
+ const warnings = [];
163
+ for (const id of activeFrameworks) {
164
+ if (!fragments.has(id)) {
165
+ warnings.push(`${fnName}: no fragment for "${id}" — ${omitted}`);
166
+ }
167
+ }
168
+ return warnings;
169
+ }
170
+ /**
171
+ * Build the ${DEVFLOW_COMPLIANCE_ACTIVE} substitution — the body of the
172
+ * Active Frameworks section.
173
+ *
174
+ * Active: lists frameworks + instructs loading reference files.
175
+ * Zero: informs that generic controls only apply.
176
+ *
177
+ * File presence corroborates: note preserved so the agent keeps checking files.
178
+ *
179
+ * C5: a framework with no fragment still appears here — only its mapping row,
180
+ * checklist item and reference row are omitted.
181
+ *
182
+ * Frameworks the registry cannot label are dropped entirely: neither the label nor the
183
+ * `references/{id}.md` path is emitted (see resolveRegistryFrameworks).
184
+ */
185
+ function buildActiveSection(activeFrameworks) {
186
+ const resolved = resolveRegistryFrameworks(activeFrameworks);
187
+ if (resolved.length === 0) {
188
+ return [
189
+ 'No framework-specific reference files are active. Apply generic controls only.',
190
+ '',
191
+ 'NEVER fabricate framework-specific guidance for absent `references/{id}.md` files.',
192
+ 'If no reference file is present for a framework, apply generic controls only.',
193
+ ].join('\n');
194
+ }
195
+ const labels = resolved.map(fw => fw.label);
196
+ const refList = resolved.map(fw => `\`references/${fw.id}.md\``).join(' and ');
197
+ return [
198
+ `**Active: ${labels.join(', ')}.**`,
199
+ '',
200
+ `Load ${refList} for framework-specific controls. Apply generic controls always.`,
201
+ '',
202
+ 'File presence in the installed skill directory is the authoritative signal: if a',
203
+ '`references/{id}.md` file is absent, treat that framework as inactive regardless of',
204
+ 'this list.',
205
+ '',
206
+ 'NEVER fabricate framework-specific guidance for absent `references/{id}.md` files.',
207
+ ].join('\n');
208
+ }
209
+ /**
210
+ * Build the ${DEVFLOW_COMPLIANCE_MAPPING} substitution — the ENTIRE Framework
211
+ * Mapping section (heading + table), or empty string when zero frameworks.
212
+ *
213
+ * The section is omitted entirely at zero frameworks (plan: "section omitted
214
+ * entirely at zero frameworks"). C4 blank-line hygiene handles the gap.
215
+ *
216
+ * Row labels come only from the registry — an unlabelable framework yields no row
217
+ * rather than a row headed by its raw ID (see resolveRegistryFrameworks).
218
+ */
219
+ function buildMappingSection(activeFrameworks, fragments) {
220
+ const header = ['Framework', ...COMPLIANCE_CONTROL_COLUMNS];
221
+ const separator = header.map(() => '---');
222
+ const rows = [];
223
+ for (const { id, label } of resolveRegistryFrameworks(activeFrameworks)) {
224
+ const fragment = fragments.get(id);
225
+ if (!fragment) {
226
+ // C5: framework appears in scope/active but contributes no row.
227
+ continue;
228
+ }
229
+ const cells = [label, ...fragment.mappingCells];
230
+ rows.push(`| ${cells.join(' | ')} |`);
231
+ }
232
+ // No rows — zero frameworks, or every one of them unlabelable or fragment-less.
233
+ // Omit the section entirely; C4 blank-line hygiene closes the gap.
234
+ if (rows.length === 0) {
235
+ return '';
236
+ }
237
+ const tableLines = [
238
+ `| ${header.join(' | ')} |`,
239
+ `| ${separator.join(' | ')} |`,
240
+ ...rows,
241
+ ];
242
+ return ['## Framework Mapping', '', ...tableLines].join('\n');
243
+ }
244
+ /**
245
+ * Build the ${DEVFLOW_COMPLIANCE_CHECKLIST} substitution — per-framework
246
+ * checklist items concatenated in caller order.
247
+ */
248
+ function buildChecklist(activeFrameworks, fragments) {
249
+ const items = [];
250
+ for (const { id } of resolveRegistryFrameworks(activeFrameworks)) {
251
+ const fragment = fragments.get(id);
252
+ // C5: fragment-less frameworks contribute no checklist item.
253
+ if (!fragment)
254
+ continue;
255
+ items.push(...fragment.checklistItems);
256
+ }
257
+ return items.join('\n');
258
+ }
259
+ /**
260
+ * Build the ${DEVFLOW_COMPLIANCE_REFERENCES} substitution — per-framework
261
+ * reference table rows concatenated in caller order.
262
+ */
263
+ function buildReferences(activeFrameworks, fragments) {
264
+ const rows = [];
265
+ for (const { id } of resolveRegistryFrameworks(activeFrameworks)) {
266
+ const fragment = fragments.get(id);
267
+ // C5: fragment-less frameworks contribute no reference row.
268
+ if (!fragment)
269
+ continue;
270
+ rows.push(`| \`references/${id}.md\` | ${fragment.referenceBlurb} |`);
271
+ }
272
+ return rows.join('\n');
273
+ }
274
+ // ── Public API ─────────────────────────────────────────────────────────────────
275
+ /**
276
+ * Parse a fragment.md file into a ComplianceFragment.
277
+ *
278
+ * Strict boundary parser: validates all required sections (## Mapping / ##
279
+ * Reference / ## Checklist / ## Rule) and their structural constraints.
280
+ * CRLF-tolerant: Windows line endings are normalised before parsing.
281
+ * Never throws (PF-009): all errors return { ok: false, error }.
282
+ */
283
+ export function parseComplianceFragment(id, raw) {
284
+ // CRLF tolerance
285
+ const content = raw.replace(/\r\n/g, '\n');
286
+ const sections = extractSections(content);
287
+ const REQUIRED = ['Mapping', 'Reference', 'Checklist', 'Rule'];
288
+ for (const sec of REQUIRED) {
289
+ if (!sections.has(sec)) {
290
+ return { ok: false, error: `fragment "${id}": missing required section "## ${sec}"` };
291
+ }
292
+ }
293
+ // ── Parse Mapping ───────────────────────────────────────────────────────────
294
+ const mappingBody = (sections.get('Mapping') ?? '').trim();
295
+ const mappingLines = mappingBody.split('\n').map(l => l.trim()).filter(Boolean);
296
+ const tableRows = mappingLines.filter(l => l.startsWith('|'));
297
+ if (tableRows.length !== 1) {
298
+ return {
299
+ ok: false,
300
+ error: `fragment "${id}": Mapping section must have exactly 1 table row, got ${tableRows.length}`,
301
+ };
302
+ }
303
+ const mappingCells = parseTableRow(tableRows[0]);
304
+ if (mappingCells.length !== COMPLIANCE_CONTROL_COLUMNS.length) {
305
+ return {
306
+ ok: false,
307
+ error: `fragment "${id}": Mapping row must have ${COMPLIANCE_CONTROL_COLUMNS.length} cells (one per control column), got ${mappingCells.length}`,
308
+ };
309
+ }
310
+ // ── Parse Reference ─────────────────────────────────────────────────────────
311
+ const referenceBlurb = (sections.get('Reference') ?? '').trim();
312
+ if (!referenceBlurb) {
313
+ return { ok: false, error: `fragment "${id}": Reference section is empty` };
314
+ }
315
+ // ── Parse Checklist ─────────────────────────────────────────────────────────
316
+ const checklistBody = (sections.get('Checklist') ?? '').trim();
317
+ const checklistItems = checklistBody
318
+ ? checklistBody
319
+ .split('\n')
320
+ .map(l => l.trim())
321
+ .filter(l => l.startsWith('- '))
322
+ : [];
323
+ if (checklistItems.length > 2) {
324
+ return {
325
+ ok: false,
326
+ error: `fragment "${id}": Checklist section must have 0–2 items, got ${checklistItems.length}`,
327
+ };
328
+ }
329
+ // ── Parse Rule ──────────────────────────────────────────────────────────────
330
+ const ruleBody = (sections.get('Rule') ?? '').trim();
331
+ const ruleBullets = ruleBody
332
+ .split('\n')
333
+ .map(l => l.trim())
334
+ .filter(l => l.startsWith('- '));
335
+ if (ruleBullets.length !== 1) {
336
+ return {
337
+ ok: false,
338
+ error: `fragment "${id}": Rule section must have exactly 1 bullet, got ${ruleBullets.length}`,
339
+ };
340
+ }
341
+ const ruleBullet = ruleBullets[0];
342
+ if (ruleBullet.length > 200) {
343
+ return {
344
+ ok: false,
345
+ error: `fragment "${id}": Rule bullet exceeds 200 characters (${ruleBullet.length} chars)`,
346
+ };
347
+ }
348
+ return {
349
+ ok: true,
350
+ value: { id, mappingCells, referenceBlurb, checklistItems, ruleBullet },
351
+ };
352
+ }
353
+ /**
354
+ * Compose the compliance skill content from a template and per-framework fragments.
355
+ *
356
+ * Contracts:
357
+ * C1 — no ${DEVFLOW_COMPLIANCE_ token → byte-identical passthrough
358
+ * C2 — all framework labels from LABEL_BY_ID; unknown IDs dropped + warned
359
+ * C3 — unknown tokens stripped with warning
360
+ * C4 — blank-line hygiene when a token is substituted
361
+ * C5 — missing fragment → framework appears in scope/active/stamp; no row/item/bullet
362
+ * C6 — frameworks rendered in caller (manifest) order
363
+ * C7 — loops bounded by frameworks
364
+ */
365
+ export function composeComplianceSkill(template, frameworks, fragments) {
366
+ // C1: identity passthrough — no I/O overhead for token-less content (e.g. shadows)
367
+ if (!template.includes('${DEVFLOW_COMPLIANCE_')) {
368
+ return { content: template, warnings: [] };
369
+ }
370
+ const warnings = [];
371
+ // C2: filter to registry IDs only — unknown IDs never emitted
372
+ const activeFrameworks = frameworks.filter(id => {
373
+ if (!LABEL_BY_ID.has(id)) {
374
+ warnings.push(`composeComplianceSkill: unknown framework ID "${id}" dropped`);
375
+ return false;
376
+ }
377
+ return true;
378
+ });
379
+ // C5: warn once per fragment-less framework, before any section is built — the
380
+ // builders below each skip such frameworks independently and emit nothing.
381
+ warnings.push(...collectMissingFragmentWarnings('composeComplianceSkill', activeFrameworks, fragments, 'mapping row, checklist item and reference row omitted'));
382
+ // Build substitution values (C6: activeFrameworks is in caller order after filter)
383
+ const scope = buildScope(activeFrameworks);
384
+ const active = buildActiveSection(activeFrameworks);
385
+ const mapping = buildMappingSection(activeFrameworks, fragments);
386
+ const checklist = buildChecklist(activeFrameworks, fragments);
387
+ const references = buildReferences(activeFrameworks, fragments);
388
+ let content = template;
389
+ content = replaceToken(content, '${DEVFLOW_COMPLIANCE_SCOPE}', scope);
390
+ content = replaceToken(content, '${DEVFLOW_COMPLIANCE_ACTIVE}', active);
391
+ content = replaceToken(content, '${DEVFLOW_COMPLIANCE_MAPPING}', mapping);
392
+ content = replaceToken(content, '${DEVFLOW_COMPLIANCE_CHECKLIST}', checklist);
393
+ content = replaceToken(content, '${DEVFLOW_COMPLIANCE_REFERENCES}', references);
394
+ // C3: strip remaining unknown tokens with warning. The character class must cover
395
+ // every shape the C1 guard admits (it keys on the `${DEVFLOW_COMPLIANCE_` prefix
396
+ // alone) — digits included — or a token like ${DEVFLOW_COMPLIANCE_SOC2} in a user
397
+ // shadow would survive into the installed skill as literal residue.
398
+ content = content.replace(UNKNOWN_TOKEN_PATTERN, match => {
399
+ // Known tokens have already been replaced above
400
+ warnings.push(`composeComplianceSkill: unknown token "${match}" stripped`);
401
+ return '';
402
+ });
403
+ // C4: blank-line hygiene — collapse 3+ blank lines to 2
404
+ content = applyBlankLineHygiene(content);
405
+ return { content, warnings };
406
+ }
407
+ /**
408
+ * Compose the compliance rule content from a template and per-framework fragments.
409
+ *
410
+ * Handles ${DEVFLOW_COMPLIANCE_RULE_BULLETS} (per-framework bullets) and
411
+ * delegates ${DEVFLOW_COMPLIANCE_FRAMEWORKS} to the untouched stampComplianceRule.
412
+ *
413
+ * Contracts: same C1–C7 as composeComplianceSkill.
414
+ */
415
+ export function composeComplianceRule(template, frameworks, fragments) {
416
+ // C1: identity passthrough
417
+ if (!template.includes('${DEVFLOW_COMPLIANCE_')) {
418
+ return { content: template, warnings: [] };
419
+ }
420
+ const warnings = [];
421
+ // C2: filter to registry IDs only
422
+ const activeFrameworks = frameworks.filter(id => {
423
+ if (!LABEL_BY_ID.has(id)) {
424
+ warnings.push(`composeComplianceRule: unknown framework ID "${id}" dropped`);
425
+ return false;
426
+ }
427
+ return true;
428
+ });
429
+ // C5: warn once per fragment-less framework — the framework still reaches the
430
+ // ${DEVFLOW_COMPLIANCE_FRAMEWORKS} stamp below, only its bullet is omitted.
431
+ warnings.push(...collectMissingFragmentWarnings('composeComplianceRule', activeFrameworks, fragments, 'rule bullet omitted'));
432
+ // Build per-framework rule bullets (C6: caller order; C7: bounded by frameworks).
433
+ // Resolved through the registry so an unlabelable ID contributes no bullet.
434
+ const bullets = [];
435
+ for (const { id } of resolveRegistryFrameworks(activeFrameworks)) {
436
+ const fragment = fragments.get(id);
437
+ if (!fragment)
438
+ continue;
439
+ bullets.push(fragment.ruleBullet);
440
+ }
441
+ let content = replaceToken(template, '${DEVFLOW_COMPLIANCE_RULE_BULLETS}', bullets.join('\n'));
442
+ // C3: strip remaining unknown tokens EXCEPT ${DEVFLOW_COMPLIANCE_FRAMEWORKS}
443
+ // (preserved for stampComplianceRule below)
444
+ content = content.replace(UNKNOWN_TOKEN_PATTERN, match => {
445
+ if (match === '${DEVFLOW_COMPLIANCE_FRAMEWORKS}')
446
+ return match; // handled next
447
+ warnings.push(`composeComplianceRule: unknown token "${match}" stripped`);
448
+ return '';
449
+ });
450
+ // C4: blank-line hygiene before stamping (stampComplianceRule does not touch whitespace)
451
+ content = applyBlankLineHygiene(content);
452
+ // Delegate ${DEVFLOW_COMPLIANCE_FRAMEWORKS} stamp to the untouched function
453
+ // (passes `frameworks` — not just activeFrameworks — to preserve stampComplianceRule's
454
+ // own registry-ID filter behaviour, which drops unknowns silently)
455
+ content = stampComplianceRule(content, frameworks);
456
+ return { content, warnings };
457
+ }
458
+ //# sourceMappingURL=compliance-compose.js.map
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Core compliance framework registry and utilities.
3
+ *
4
+ * Pure module — no I/O, no side effects.
5
+ * Applies ADR-013: pure helpers in src/core/, I/O orchestration in src/targets/.
6
+ */
7
+ /**
8
+ * Canonical compliance framework registry.
9
+ * IDs match framework source directories: src/assets/skills/compliance/frameworks/{id}/
10
+ * Labels are stamped verbatim into installed artifacts — no user input is ever written.
11
+ * (AC-35, AC-36: no unvalidated ID reaches an fs path; no user-supplied string in artifacts)
12
+ */
13
+ export const COMPLIANCE_FRAMEWORKS = [
14
+ { id: 'gdpr', label: 'GDPR', hint: 'EU data protection and privacy regulation' },
15
+ { id: 'hipaa', label: 'HIPAA', hint: 'US health data privacy and security' },
16
+ { id: 'pci-dss', label: 'PCI DSS', hint: 'Payment card data security standard' },
17
+ { id: 'soc2', label: 'SOC 2', hint: 'Service organization security and availability' },
18
+ { id: 'iso-27001', label: 'ISO 27001', hint: 'International information security management' },
19
+ { id: 'sox', label: 'SOX', hint: 'US financial reporting controls' },
20
+ ];
21
+ /** Placeholder inserted in the compliance rule file and replaced at install time. */
22
+ export const COMPLIANCE_RULE_PLACEHOLDER = '${DEVFLOW_COMPLIANCE_FRAMEWORKS}';
23
+ /**
24
+ * Reference files always installed in the compliance skill directory,
25
+ * regardless of framework selection.
26
+ * detection.md — generic detection heuristics
27
+ * sources.md — authoritative source index
28
+ *
29
+ * Exported (ADR-013: pure constant in src/core/) so both compliance-install.ts
30
+ * (install) and compliance.ts CLI (status/drift detection) share a single
31
+ * definition. Adding a third always-present ref requires only one change here.
32
+ */
33
+ export const ALWAYS_PRESENT_REFS = ['detection.md', 'sources.md'];
34
+ // ---------------------------------------------------------------------------
35
+ // Internal helpers
36
+ // ---------------------------------------------------------------------------
37
+ const REGISTRY_SET = new Set(COMPLIANCE_FRAMEWORKS.map(fw => fw.id));
38
+ const LABEL_BY_ID = new Map(COMPLIANCE_FRAMEWORKS.map(fw => [fw.id, fw.label]));
39
+ const VALID_IDS_LIST = COMPLIANCE_FRAMEWORKS.map(fw => fw.id).join(', ');
40
+ /**
41
+ * Normalize a single framework string:
42
+ * 1. trim whitespace
43
+ * 2. lowercase
44
+ * 3. collapse spaces to dashes
45
+ * 4. apply known alias: iso27001 → iso-27001
46
+ */
47
+ function normalizeId(s) {
48
+ const normalized = s.trim().toLowerCase().replace(/\s+/g, '-');
49
+ if (normalized === 'iso27001')
50
+ return 'iso-27001';
51
+ return normalized;
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Exported functions
55
+ // ---------------------------------------------------------------------------
56
+ /**
57
+ * Tolerant parser: normalize an array of framework strings and DROP anything
58
+ * that is not a registry ID.
59
+ *
60
+ * This is the trust boundary for framework IDs that did not come through
61
+ * `parseFrameworkList` — most importantly `manifest.features.compliance.frameworks`,
62
+ * which `normalizeComplianceFeature` only type-checks (it cannot reject unknown IDs
63
+ * without violating the ADR-014 self-heal contract). Every framework ID that is about
64
+ * to become an fs path segment or be written into an installed artifact must pass
65
+ * through here first (AC-35, AC-36).
66
+ *
67
+ * Unlike `parseFrameworkList` this never errors — unknown IDs are dropped silently,
68
+ * so a manifest written by a newer devflow (or hand-edited) degrades to the subset
69
+ * this build understands instead of failing the install.
70
+ *
71
+ * Deduplication: first occurrence wins, subsequent occurrences of the same ID are
72
+ * dropped. This preserves the user's intended ordering while ensuring each framework
73
+ * appears exactly once in installed artifacts.
74
+ */
75
+ export function normalizeFrameworks(frameworks) {
76
+ const seen = new Set();
77
+ return frameworks.map(normalizeId).filter(id => {
78
+ if (!REGISTRY_SET.has(id))
79
+ return false;
80
+ if (seen.has(id))
81
+ return false;
82
+ seen.add(id);
83
+ return true;
84
+ });
85
+ }
86
+ /**
87
+ * Parse and validate a framework list (comma-separated string).
88
+ *
89
+ * Normalization: lowercase, trim, space→dash, iso27001 alias.
90
+ * Hard-rejects unknowns: error names every valid ID and every unknown ID.
91
+ * All-invalid input still produces an error — never a silent empty list.
92
+ * (AC-3, AC-4)
93
+ */
94
+ export function parseFrameworkList(input) {
95
+ const raw = input.split(',').filter(s => s.trim() !== '');
96
+ if (raw.length === 0) {
97
+ return { ok: true, value: [] };
98
+ }
99
+ const normalized = raw.map(normalizeId);
100
+ const unknowns = normalized.filter(id => !REGISTRY_SET.has(id));
101
+ if (unknowns.length > 0) {
102
+ return {
103
+ ok: false,
104
+ error: `Unknown framework ID(s): ${unknowns.join(', ')}. Valid IDs: ${VALID_IDS_LIST}`,
105
+ };
106
+ }
107
+ return { ok: true, value: normalized };
108
+ }
109
+ /**
110
+ * Normalize and self-heal a raw compliance feature value from JSON.
111
+ *
112
+ * Absent, null, malformed, or partially-valid → {enabled:false, frameworks:[]}.
113
+ * Preserves valid {enabled: boolean, frameworks: string[]}.
114
+ * (Applies ADR-014 self-heal idiom)
115
+ */
116
+ export function normalizeComplianceFeature(raw) {
117
+ const DEFAULT = { enabled: false, frameworks: [] };
118
+ if (raw === null || raw === undefined || typeof raw !== 'object' || Array.isArray(raw)) {
119
+ return DEFAULT;
120
+ }
121
+ const obj = raw;
122
+ if (typeof obj.enabled !== 'boolean')
123
+ return DEFAULT;
124
+ if (!Array.isArray(obj.frameworks))
125
+ return DEFAULT;
126
+ if (!obj.frameworks.every(f => typeof f === 'string'))
127
+ return DEFAULT;
128
+ return { enabled: obj.enabled, frameworks: obj.frameworks };
129
+ }
130
+ /**
131
+ * Stamp the compliance rule file content with the selected frameworks.
132
+ *
133
+ * Replaces ${DEVFLOW_COMPLIANCE_FRAMEWORKS} with a full self-contained clause:
134
+ * - "Active frameworks: GDPR, SOC 2 — their controls are binding." (non-empty list)
135
+ * - "Active frameworks: none declared — generic controls only." (empty list)
136
+ *
137
+ * The trailing clause lives here, not in the rule template, so the template line
138
+ * stays slim (`- ${DEVFLOW_COMPLIANCE_FRAMEWORKS}`) and the stamp is always a
139
+ * coherent sentence regardless of how the rule file is structured.
140
+ *
141
+ * The stamp replaces only the placeholder; surrounding prose is template/shadow-owned.
142
+ *
143
+ * If the placeholder is absent (e.g. a user shadow without it), content is returned
144
+ * unchanged — no-op stamp.
145
+ *
146
+ * Stamps static registry labels only — no user-supplied string is ever written
147
+ * to installed artifacts. (AC-35, AC-36)
148
+ */
149
+ export function stampComplianceRule(content, frameworks) {
150
+ if (!content.includes(COMPLIANCE_RULE_PLACEHOLDER)) {
151
+ return content;
152
+ }
153
+ // Look up static labels in order of the input frameworks array. Unknown IDs are
154
+ // DROPPED, never echoed — this function is the last writer before the rule lands
155
+ // in ~/.claude/rules/devflow/, which Claude Code loads into every prompt, so an
156
+ // unvalidated ID must not be able to inject text there (AC-35, AC-36).
157
+ const labels = frameworks
158
+ .map(id => LABEL_BY_ID.get(id))
159
+ .filter((label) => label !== undefined);
160
+ const stamp = labels.length === 0
161
+ ? 'Active frameworks: none declared — generic controls only.'
162
+ : `Active frameworks: ${labels.join(', ')} — their controls are binding.`;
163
+ return content.replace(/\$\{DEVFLOW_COMPLIANCE_FRAMEWORKS\}/g, stamp);
164
+ }
165
+ //# sourceMappingURL=compliance.js.map