devflow-kit 0.8.1 → 1.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 (395) hide show
  1. package/CHANGELOG.md +185 -29
  2. package/LICENSE +1 -1
  3. package/README.md +179 -308
  4. package/dist/cli.js +3 -1
  5. package/dist/commands/init.d.ts +21 -0
  6. package/dist/commands/init.js +311 -575
  7. package/dist/commands/list.d.ts +3 -0
  8. package/dist/commands/list.js +20 -0
  9. package/dist/commands/uninstall.d.ts +10 -0
  10. package/dist/commands/uninstall.js +351 -78
  11. package/dist/plugins.d.ts +46 -0
  12. package/dist/plugins.js +162 -0
  13. package/dist/utils/cli.d.ts +5 -0
  14. package/dist/utils/cli.js +14 -0
  15. package/dist/utils/installer.d.ts +41 -0
  16. package/dist/utils/installer.js +177 -0
  17. package/dist/utils/paths.d.ts +10 -0
  18. package/dist/utils/paths.js +23 -3
  19. package/dist/utils/post-install.d.ts +68 -0
  20. package/dist/utils/post-install.js +427 -0
  21. package/dist/utils/safe-delete-install.d.ts +22 -0
  22. package/dist/utils/safe-delete-install.js +156 -0
  23. package/dist/utils/safe-delete.d.ts +12 -0
  24. package/dist/utils/safe-delete.js +83 -0
  25. package/package.json +18 -8
  26. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +7 -0
  27. package/plugins/devflow-audit-claude/README.md +46 -0
  28. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +134 -0
  29. package/plugins/devflow-audit-claude/commands/audit-claude.md +85 -0
  30. package/plugins/devflow-code-review/.claude-plugin/plugin.json +31 -0
  31. package/plugins/devflow-code-review/README.md +73 -0
  32. package/plugins/devflow-code-review/agents/git.md +272 -0
  33. package/plugins/devflow-code-review/agents/reviewer.md +119 -0
  34. package/plugins/devflow-code-review/agents/synthesizer.md +204 -0
  35. package/plugins/devflow-code-review/commands/code-review-teams.md +262 -0
  36. package/plugins/devflow-code-review/commands/code-review.md +141 -0
  37. package/plugins/devflow-code-review/skills/accessibility/SKILL.md +229 -0
  38. package/plugins/devflow-code-review/skills/accessibility/references/detection.md +171 -0
  39. package/plugins/devflow-code-review/skills/accessibility/references/patterns.md +670 -0
  40. package/plugins/devflow-code-review/skills/accessibility/references/violations.md +419 -0
  41. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +124 -0
  42. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +104 -0
  43. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +122 -0
  44. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +217 -0
  45. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +153 -0
  46. package/plugins/devflow-code-review/skills/architecture-patterns/references/detection.md +337 -0
  47. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +873 -0
  48. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +575 -0
  49. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +143 -0
  50. package/plugins/devflow-code-review/skills/complexity-patterns/references/detection.md +264 -0
  51. package/plugins/devflow-code-review/skills/complexity-patterns/references/patterns.md +487 -0
  52. package/plugins/devflow-code-review/skills/complexity-patterns/references/violations.md +361 -0
  53. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +140 -0
  54. package/plugins/devflow-code-review/skills/consistency-patterns/references/detection.md +207 -0
  55. package/plugins/devflow-code-review/skills/consistency-patterns/references/patterns.md +202 -0
  56. package/plugins/devflow-code-review/skills/consistency-patterns/references/violations.md +213 -0
  57. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +134 -0
  58. package/plugins/devflow-code-review/skills/database-patterns/references/detection.md +208 -0
  59. package/plugins/devflow-code-review/skills/database-patterns/references/patterns.md +394 -0
  60. package/plugins/devflow-code-review/skills/database-patterns/references/violations.md +332 -0
  61. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +141 -0
  62. package/plugins/devflow-code-review/skills/dependencies-patterns/references/detection.md +181 -0
  63. package/plugins/devflow-code-review/skills/dependencies-patterns/references/patterns.md +225 -0
  64. package/plugins/devflow-code-review/skills/dependencies-patterns/references/violations.md +247 -0
  65. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +125 -0
  66. package/plugins/devflow-code-review/skills/documentation-patterns/references/detection.md +190 -0
  67. package/plugins/devflow-code-review/skills/documentation-patterns/references/patterns.md +189 -0
  68. package/plugins/devflow-code-review/skills/documentation-patterns/references/violations.md +163 -0
  69. package/plugins/devflow-code-review/skills/frontend-design/SKILL.md +254 -0
  70. package/plugins/devflow-code-review/skills/frontend-design/references/detection.md +184 -0
  71. package/plugins/devflow-code-review/skills/frontend-design/references/patterns.md +511 -0
  72. package/plugins/devflow-code-review/skills/frontend-design/references/violations.md +453 -0
  73. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +154 -0
  74. package/plugins/devflow-code-review/skills/performance-patterns/references/detection.md +351 -0
  75. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +503 -0
  76. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +354 -0
  77. package/plugins/devflow-code-review/skills/react/SKILL.md +276 -0
  78. package/plugins/devflow-code-review/skills/react/references/patterns.md +1331 -0
  79. package/plugins/devflow-code-review/skills/react/references/violations.md +565 -0
  80. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +146 -0
  81. package/plugins/devflow-code-review/skills/regression-patterns/references/detection.md +237 -0
  82. package/plugins/devflow-code-review/skills/regression-patterns/references/patterns.md +226 -0
  83. package/plugins/devflow-code-review/skills/regression-patterns/references/violations.md +225 -0
  84. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +119 -0
  85. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +186 -0
  86. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +142 -0
  87. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +125 -0
  88. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +156 -0
  89. package/plugins/devflow-code-review/skills/security-patterns/references/detection.md +287 -0
  90. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +507 -0
  91. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +237 -0
  92. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +183 -0
  93. package/plugins/devflow-code-review/skills/test-patterns/references/detection.md +149 -0
  94. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +220 -0
  95. package/plugins/devflow-code-review/skills/test-patterns/references/report-template.md +108 -0
  96. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +221 -0
  97. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +27 -0
  98. package/plugins/devflow-core-skills/README.md +50 -0
  99. package/plugins/devflow-core-skills/skills/accessibility/SKILL.md +229 -0
  100. package/plugins/devflow-core-skills/skills/accessibility/references/detection.md +171 -0
  101. package/plugins/devflow-core-skills/skills/accessibility/references/patterns.md +670 -0
  102. package/plugins/devflow-core-skills/skills/accessibility/references/violations.md +419 -0
  103. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +162 -0
  104. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +276 -0
  105. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +144 -0
  106. package/plugins/devflow-core-skills/skills/core-patterns/references/detection.md +303 -0
  107. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +576 -0
  108. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +369 -0
  109. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +134 -0
  110. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +346 -0
  111. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +221 -0
  112. package/plugins/devflow-core-skills/skills/frontend-design/SKILL.md +254 -0
  113. package/plugins/devflow-core-skills/skills/frontend-design/references/detection.md +184 -0
  114. package/plugins/devflow-core-skills/skills/frontend-design/references/patterns.md +511 -0
  115. package/plugins/devflow-core-skills/skills/frontend-design/references/violations.md +453 -0
  116. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +122 -0
  117. package/plugins/devflow-core-skills/skills/git-safety/references/detection.md +290 -0
  118. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +289 -0
  119. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +18 -0
  120. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +158 -0
  121. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +115 -0
  122. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +77 -0
  123. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +127 -0
  124. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +96 -0
  125. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +153 -0
  126. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +572 -0
  127. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +298 -0
  128. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +148 -0
  129. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +283 -0
  130. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +361 -0
  131. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +224 -0
  132. package/plugins/devflow-core-skills/skills/react/SKILL.md +276 -0
  133. package/plugins/devflow-core-skills/skills/react/references/patterns.md +1331 -0
  134. package/plugins/devflow-core-skills/skills/react/references/violations.md +565 -0
  135. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +183 -0
  136. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +149 -0
  137. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +220 -0
  138. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +108 -0
  139. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +221 -0
  140. package/plugins/devflow-core-skills/skills/typescript/SKILL.md +176 -0
  141. package/plugins/devflow-core-skills/skills/typescript/references/patterns.md +1105 -0
  142. package/plugins/devflow-core-skills/skills/typescript/references/violations.md +433 -0
  143. package/plugins/devflow-debug/.claude-plugin/plugin.json +18 -0
  144. package/plugins/devflow-debug/README.md +65 -0
  145. package/plugins/devflow-debug/agents/git.md +272 -0
  146. package/plugins/devflow-debug/commands/debug-teams.md +231 -0
  147. package/plugins/devflow-debug/commands/debug.md +160 -0
  148. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +124 -0
  149. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +104 -0
  150. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +122 -0
  151. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +217 -0
  152. package/plugins/devflow-debug/skills/git-safety/SKILL.md +122 -0
  153. package/plugins/devflow-debug/skills/git-safety/references/detection.md +290 -0
  154. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +289 -0
  155. package/plugins/devflow-debug/skills/git-safety/references/violations.md +18 -0
  156. package/plugins/devflow-implement/.claude-plugin/plugin.json +21 -0
  157. package/plugins/devflow-implement/README.md +71 -0
  158. package/plugins/devflow-implement/agents/coder.md +122 -0
  159. package/plugins/devflow-implement/agents/git.md +272 -0
  160. package/plugins/devflow-implement/agents/scrutinizer.md +80 -0
  161. package/plugins/devflow-implement/agents/shepherd.md +94 -0
  162. package/plugins/devflow-implement/agents/simplifier.md +62 -0
  163. package/plugins/devflow-implement/agents/skimmer.md +88 -0
  164. package/plugins/devflow-implement/agents/synthesizer.md +204 -0
  165. package/plugins/devflow-implement/agents/validator.md +86 -0
  166. package/plugins/devflow-implement/commands/implement-teams.md +608 -0
  167. package/plugins/devflow-implement/commands/implement.md +426 -0
  168. package/plugins/devflow-implement/skills/accessibility/SKILL.md +229 -0
  169. package/plugins/devflow-implement/skills/accessibility/references/detection.md +171 -0
  170. package/plugins/devflow-implement/skills/accessibility/references/patterns.md +670 -0
  171. package/plugins/devflow-implement/skills/accessibility/references/violations.md +419 -0
  172. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +124 -0
  173. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +104 -0
  174. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +122 -0
  175. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +217 -0
  176. package/plugins/devflow-implement/skills/frontend-design/SKILL.md +254 -0
  177. package/plugins/devflow-implement/skills/frontend-design/references/detection.md +184 -0
  178. package/plugins/devflow-implement/skills/frontend-design/references/patterns.md +511 -0
  179. package/plugins/devflow-implement/skills/frontend-design/references/violations.md +453 -0
  180. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +162 -0
  181. package/plugins/devflow-implement/skills/implementation-patterns/references/patterns.md +1063 -0
  182. package/plugins/devflow-implement/skills/implementation-patterns/references/violations.md +483 -0
  183. package/plugins/devflow-implement/skills/self-review/SKILL.md +149 -0
  184. package/plugins/devflow-implement/skills/self-review/references/patterns.md +405 -0
  185. package/plugins/devflow-implement/skills/self-review/references/report-template.md +253 -0
  186. package/plugins/devflow-implement/skills/self-review/references/violations.md +308 -0
  187. package/plugins/devflow-resolve/.claude-plugin/plugin.json +19 -0
  188. package/plugins/devflow-resolve/README.md +65 -0
  189. package/plugins/devflow-resolve/agents/git.md +272 -0
  190. package/plugins/devflow-resolve/agents/resolver.md +131 -0
  191. package/plugins/devflow-resolve/agents/simplifier.md +62 -0
  192. package/plugins/devflow-resolve/commands/resolve-teams.md +298 -0
  193. package/plugins/devflow-resolve/commands/resolve.md +237 -0
  194. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +124 -0
  195. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +104 -0
  196. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +122 -0
  197. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +217 -0
  198. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +162 -0
  199. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +1063 -0
  200. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +483 -0
  201. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +156 -0
  202. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +287 -0
  203. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +507 -0
  204. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +237 -0
  205. package/plugins/devflow-self-review/.claude-plugin/plugin.json +7 -0
  206. package/plugins/devflow-self-review/README.md +38 -0
  207. package/plugins/devflow-self-review/agents/scrutinizer.md +80 -0
  208. package/plugins/devflow-self-review/agents/simplifier.md +62 -0
  209. package/plugins/devflow-self-review/agents/validator.md +86 -0
  210. package/plugins/devflow-self-review/commands/self-review.md +126 -0
  211. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +162 -0
  212. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +276 -0
  213. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +144 -0
  214. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +303 -0
  215. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +576 -0
  216. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +369 -0
  217. package/plugins/devflow-self-review/skills/self-review/SKILL.md +149 -0
  218. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +405 -0
  219. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +253 -0
  220. package/plugins/devflow-self-review/skills/self-review/references/violations.md +308 -0
  221. package/plugins/devflow-specify/.claude-plugin/plugin.json +15 -0
  222. package/plugins/devflow-specify/README.md +46 -0
  223. package/plugins/devflow-specify/agents/skimmer.md +88 -0
  224. package/plugins/devflow-specify/agents/synthesizer.md +204 -0
  225. package/plugins/devflow-specify/commands/specify-teams.md +314 -0
  226. package/plugins/devflow-specify/commands/specify.md +179 -0
  227. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +124 -0
  228. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +104 -0
  229. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +122 -0
  230. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +217 -0
  231. package/scripts/hooks/background-memory-update.sh +167 -0
  232. package/scripts/hooks/pre-compact-memory.sh +81 -0
  233. package/scripts/hooks/session-start-memory.sh +84 -0
  234. package/scripts/hooks/stop-update-memory.sh +81 -0
  235. package/shared/agents/coder.md +122 -0
  236. package/shared/agents/git.md +272 -0
  237. package/shared/agents/resolver.md +131 -0
  238. package/shared/agents/reviewer.md +119 -0
  239. package/shared/agents/scrutinizer.md +80 -0
  240. package/shared/agents/shepherd.md +94 -0
  241. package/shared/agents/simplifier.md +62 -0
  242. package/shared/agents/skimmer.md +88 -0
  243. package/shared/agents/synthesizer.md +204 -0
  244. package/shared/agents/validator.md +86 -0
  245. package/shared/skills/accessibility/SKILL.md +229 -0
  246. package/shared/skills/accessibility/references/detection.md +171 -0
  247. package/shared/skills/accessibility/references/patterns.md +670 -0
  248. package/shared/skills/accessibility/references/violations.md +419 -0
  249. package/shared/skills/agent-teams/SKILL.md +124 -0
  250. package/shared/skills/agent-teams/references/cleanup.md +104 -0
  251. package/shared/skills/agent-teams/references/communication.md +122 -0
  252. package/shared/skills/agent-teams/references/team-patterns.md +217 -0
  253. package/shared/skills/architecture-patterns/SKILL.md +153 -0
  254. package/shared/skills/architecture-patterns/references/detection.md +337 -0
  255. package/shared/skills/architecture-patterns/references/patterns.md +873 -0
  256. package/shared/skills/architecture-patterns/references/violations.md +575 -0
  257. package/shared/skills/complexity-patterns/SKILL.md +143 -0
  258. package/shared/skills/complexity-patterns/references/detection.md +264 -0
  259. package/shared/skills/complexity-patterns/references/patterns.md +487 -0
  260. package/shared/skills/complexity-patterns/references/violations.md +361 -0
  261. package/shared/skills/consistency-patterns/SKILL.md +140 -0
  262. package/shared/skills/consistency-patterns/references/detection.md +207 -0
  263. package/shared/skills/consistency-patterns/references/patterns.md +202 -0
  264. package/shared/skills/consistency-patterns/references/violations.md +213 -0
  265. package/shared/skills/core-patterns/SKILL.md +162 -0
  266. package/shared/skills/core-patterns/references/checklist.md +276 -0
  267. package/shared/skills/core-patterns/references/code-smell-violations.md +144 -0
  268. package/shared/skills/core-patterns/references/detection.md +303 -0
  269. package/shared/skills/core-patterns/references/patterns.md +576 -0
  270. package/shared/skills/core-patterns/references/violations.md +369 -0
  271. package/shared/skills/database-patterns/SKILL.md +134 -0
  272. package/shared/skills/database-patterns/references/detection.md +208 -0
  273. package/shared/skills/database-patterns/references/patterns.md +394 -0
  274. package/shared/skills/database-patterns/references/violations.md +332 -0
  275. package/shared/skills/dependencies-patterns/SKILL.md +141 -0
  276. package/shared/skills/dependencies-patterns/references/detection.md +181 -0
  277. package/shared/skills/dependencies-patterns/references/patterns.md +225 -0
  278. package/shared/skills/dependencies-patterns/references/violations.md +247 -0
  279. package/shared/skills/docs-framework/SKILL.md +134 -0
  280. package/shared/skills/docs-framework/references/patterns.md +346 -0
  281. package/shared/skills/docs-framework/references/violations.md +221 -0
  282. package/shared/skills/documentation-patterns/SKILL.md +125 -0
  283. package/shared/skills/documentation-patterns/references/detection.md +190 -0
  284. package/shared/skills/documentation-patterns/references/patterns.md +189 -0
  285. package/shared/skills/documentation-patterns/references/violations.md +163 -0
  286. package/shared/skills/frontend-design/SKILL.md +254 -0
  287. package/shared/skills/frontend-design/references/detection.md +184 -0
  288. package/shared/skills/frontend-design/references/patterns.md +511 -0
  289. package/shared/skills/frontend-design/references/violations.md +453 -0
  290. package/shared/skills/git-safety/SKILL.md +122 -0
  291. package/shared/skills/git-safety/references/detection.md +290 -0
  292. package/shared/skills/git-safety/references/patterns.md +289 -0
  293. package/shared/skills/git-safety/references/violations.md +18 -0
  294. package/shared/skills/git-workflow/SKILL.md +158 -0
  295. package/shared/skills/git-workflow/references/commit-patterns.md +115 -0
  296. package/shared/skills/git-workflow/references/commit-violations.md +77 -0
  297. package/shared/skills/git-workflow/references/pr-patterns.md +127 -0
  298. package/shared/skills/git-workflow/references/pr-violations.md +96 -0
  299. package/shared/skills/github-patterns/SKILL.md +153 -0
  300. package/shared/skills/github-patterns/references/patterns.md +572 -0
  301. package/shared/skills/github-patterns/references/violations.md +298 -0
  302. package/shared/skills/implementation-patterns/SKILL.md +162 -0
  303. package/shared/skills/implementation-patterns/references/patterns.md +1063 -0
  304. package/shared/skills/implementation-patterns/references/violations.md +483 -0
  305. package/shared/skills/input-validation/SKILL.md +148 -0
  306. package/shared/skills/input-validation/references/detection.md +283 -0
  307. package/shared/skills/input-validation/references/patterns.md +361 -0
  308. package/shared/skills/input-validation/references/violations.md +224 -0
  309. package/shared/skills/performance-patterns/SKILL.md +154 -0
  310. package/shared/skills/performance-patterns/references/detection.md +351 -0
  311. package/shared/skills/performance-patterns/references/patterns.md +503 -0
  312. package/shared/skills/performance-patterns/references/violations.md +354 -0
  313. package/shared/skills/react/SKILL.md +276 -0
  314. package/shared/skills/react/references/patterns.md +1331 -0
  315. package/shared/skills/react/references/violations.md +565 -0
  316. package/shared/skills/regression-patterns/SKILL.md +146 -0
  317. package/shared/skills/regression-patterns/references/detection.md +237 -0
  318. package/shared/skills/regression-patterns/references/patterns.md +226 -0
  319. package/shared/skills/regression-patterns/references/violations.md +225 -0
  320. package/shared/skills/review-methodology/SKILL.md +119 -0
  321. package/shared/skills/review-methodology/references/patterns.md +186 -0
  322. package/shared/skills/review-methodology/references/report-template.md +142 -0
  323. package/shared/skills/review-methodology/references/violations.md +125 -0
  324. package/shared/skills/security-patterns/SKILL.md +156 -0
  325. package/shared/skills/security-patterns/references/detection.md +287 -0
  326. package/shared/skills/security-patterns/references/patterns.md +507 -0
  327. package/shared/skills/security-patterns/references/violations.md +237 -0
  328. package/shared/skills/self-review/SKILL.md +149 -0
  329. package/shared/skills/self-review/references/patterns.md +405 -0
  330. package/shared/skills/self-review/references/report-template.md +253 -0
  331. package/shared/skills/self-review/references/violations.md +308 -0
  332. package/shared/skills/test-patterns/SKILL.md +183 -0
  333. package/shared/skills/test-patterns/references/detection.md +149 -0
  334. package/shared/skills/test-patterns/references/patterns.md +220 -0
  335. package/shared/skills/test-patterns/references/report-template.md +108 -0
  336. package/shared/skills/test-patterns/references/violations.md +221 -0
  337. package/shared/skills/typescript/SKILL.md +176 -0
  338. package/shared/skills/typescript/references/patterns.md +1105 -0
  339. package/shared/skills/typescript/references/violations.md +433 -0
  340. package/src/templates/claudeignore.template +188 -0
  341. package/src/templates/managed-settings.json +146 -0
  342. package/src/templates/settings.json +59 -0
  343. package/dist/cli.d.ts.map +0 -1
  344. package/dist/cli.js.map +0 -1
  345. package/dist/commands/init.d.ts.map +0 -1
  346. package/dist/commands/init.js.map +0 -1
  347. package/dist/commands/uninstall.d.ts.map +0 -1
  348. package/dist/commands/uninstall.js.map +0 -1
  349. package/dist/utils/git.d.ts.map +0 -1
  350. package/dist/utils/git.js.map +0 -1
  351. package/dist/utils/paths.d.ts.map +0 -1
  352. package/dist/utils/paths.js.map +0 -1
  353. package/src/claude/CLAUDE.md +0 -400
  354. package/src/claude/agents/devflow/audit-architecture.md +0 -132
  355. package/src/claude/agents/devflow/audit-complexity.md +0 -132
  356. package/src/claude/agents/devflow/audit-database.md +0 -132
  357. package/src/claude/agents/devflow/audit-dependencies.md +0 -132
  358. package/src/claude/agents/devflow/audit-documentation.md +0 -132
  359. package/src/claude/agents/devflow/audit-performance.md +0 -256
  360. package/src/claude/agents/devflow/audit-security.md +0 -259
  361. package/src/claude/agents/devflow/audit-tests.md +0 -132
  362. package/src/claude/agents/devflow/audit-typescript.md +0 -132
  363. package/src/claude/agents/devflow/brainstorm.md +0 -279
  364. package/src/claude/agents/devflow/catch-up.md +0 -345
  365. package/src/claude/agents/devflow/code-review.md +0 -307
  366. package/src/claude/agents/devflow/commit.md +0 -380
  367. package/src/claude/agents/devflow/debug.md +0 -476
  368. package/src/claude/agents/devflow/design.md +0 -491
  369. package/src/claude/agents/devflow/pr-comments.md +0 -285
  370. package/src/claude/agents/devflow/project-state.md +0 -419
  371. package/src/claude/agents/devflow/pull-request.md +0 -423
  372. package/src/claude/agents/devflow/release.md +0 -1137
  373. package/src/claude/agents/devflow/tech-debt.md +0 -338
  374. package/src/claude/commands/devflow/brainstorm.md +0 -68
  375. package/src/claude/commands/devflow/breakdown.md +0 -125
  376. package/src/claude/commands/devflow/catch-up.md +0 -29
  377. package/src/claude/commands/devflow/code-review.md +0 -237
  378. package/src/claude/commands/devflow/commit.md +0 -17
  379. package/src/claude/commands/devflow/debug.md +0 -56
  380. package/src/claude/commands/devflow/design.md +0 -82
  381. package/src/claude/commands/devflow/devlog.md +0 -408
  382. package/src/claude/commands/devflow/implement.md +0 -100
  383. package/src/claude/commands/devflow/plan.md +0 -223
  384. package/src/claude/commands/devflow/pull-request.md +0 -269
  385. package/src/claude/commands/devflow/release.md +0 -251
  386. package/src/claude/commands/devflow/resolve-comments.md +0 -583
  387. package/src/claude/scripts/statusline.sh +0 -47
  388. package/src/claude/settings.json +0 -6
  389. package/src/claude/skills/devflow/code-smell/SKILL.md +0 -428
  390. package/src/claude/skills/devflow/debug/SKILL.md +0 -119
  391. package/src/claude/skills/devflow/error-handling/SKILL.md +0 -597
  392. package/src/claude/skills/devflow/input-validation/SKILL.md +0 -514
  393. package/src/claude/skills/devflow/pattern-check/SKILL.md +0 -238
  394. package/src/claude/skills/devflow/research/SKILL.md +0 -138
  395. package/src/claude/skills/devflow/test-design/SKILL.md +0 -384
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const listCommand: Command;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1,20 @@
1
+ import { Command } from 'commander';
2
+ import * as p from '@clack/prompts';
3
+ import color from 'picocolors';
4
+ import { DEVFLOW_PLUGINS } from '../plugins.js';
5
+ export const listCommand = new Command('list')
6
+ .description('List available DevFlow plugins')
7
+ .action(() => {
8
+ p.intro(color.bgCyan(color.black(' DevFlow Plugins ')));
9
+ const maxNameLen = Math.max(...DEVFLOW_PLUGINS.map(p => p.name.length));
10
+ const pluginList = DEVFLOW_PLUGINS
11
+ .map(plugin => {
12
+ const cmds = plugin.commands.length > 0 ? plugin.commands.join(', ') : '(skills only)';
13
+ const optionalTag = plugin.optional ? color.dim(' (optional)') : '';
14
+ return `${color.cyan(plugin.name.padEnd(maxNameLen + 2))}${color.dim(plugin.description)}${optionalTag}\n${' '.repeat(maxNameLen + 2)}${color.yellow(cmds)}`;
15
+ })
16
+ .join('\n\n');
17
+ p.note(pluginList, 'Available plugins');
18
+ p.outro(color.dim('Install with: npx devflow-kit init --plugin=<name>'));
19
+ });
20
+ //# sourceMappingURL=list.js.map
@@ -1,3 +1,13 @@
1
1
  import { Command } from 'commander';
2
+ import { type PluginDefinition } from '../plugins.js';
3
+ /**
4
+ * Compute which assets should be removed during selective plugin uninstall.
5
+ * Skills and agents shared by remaining plugins are retained.
6
+ */
7
+ export declare function computeAssetsToRemove(selectedPlugins: PluginDefinition[], allPlugins: PluginDefinition[]): {
8
+ skills: string[];
9
+ agents: string[];
10
+ commands: string[];
11
+ };
2
12
  export declare const uninstallCommand: Command;
3
13
  //# sourceMappingURL=uninstall.d.ts.map
@@ -1,8 +1,61 @@
1
1
  import { Command } from 'commander';
2
2
  import { promises as fs } from 'fs';
3
3
  import * as path from 'path';
4
- import { getInstallationPaths, getClaudeDirectory } from '../utils/paths.js';
4
+ import { fileURLToPath } from 'url';
5
+ import { execSync } from 'child_process';
6
+ import * as p from '@clack/prompts';
7
+ import color from 'picocolors';
8
+ import { getInstallationPaths, getClaudeDirectory, getManagedSettingsPath } from '../utils/paths.js';
5
9
  import { getGitRoot } from '../utils/git.js';
10
+ import { isClaudeCliAvailable } from '../utils/cli.js';
11
+ import { DEVFLOW_PLUGINS, getAllSkillNames, LEGACY_SKILL_NAMES } from '../plugins.js';
12
+ import { detectShell, getProfilePath } from '../utils/safe-delete.js';
13
+ import { isAlreadyInstalled, removeFromProfile } from '../utils/safe-delete-install.js';
14
+ import { removeManagedSettings } from '../utils/post-install.js';
15
+ /**
16
+ * Compute which assets should be removed during selective plugin uninstall.
17
+ * Skills and agents shared by remaining plugins are retained.
18
+ */
19
+ export function computeAssetsToRemove(selectedPlugins, allPlugins) {
20
+ const selectedNames = new Set(selectedPlugins.map(p => p.name));
21
+ const remainingPlugins = allPlugins.filter(p => !selectedNames.has(p.name));
22
+ const retainedSkills = new Set();
23
+ const retainedAgents = new Set();
24
+ for (const rp of remainingPlugins) {
25
+ for (const s of rp.skills)
26
+ retainedSkills.add(s);
27
+ for (const a of rp.agents)
28
+ retainedAgents.add(a);
29
+ }
30
+ const skills = [];
31
+ const agents = [];
32
+ const commands = [];
33
+ for (const plugin of selectedPlugins) {
34
+ for (const skill of plugin.skills) {
35
+ if (!retainedSkills.has(skill))
36
+ skills.push(skill);
37
+ }
38
+ for (const agent of plugin.agents) {
39
+ if (!retainedAgents.has(agent))
40
+ agents.push(agent);
41
+ }
42
+ commands.push(...plugin.commands);
43
+ }
44
+ return { skills, agents, commands };
45
+ }
46
+ /**
47
+ * Uninstall plugin using Claude CLI
48
+ */
49
+ function uninstallPluginViaCli(scope) {
50
+ try {
51
+ const cliScope = scope === 'local' ? 'project' : 'user';
52
+ execSync(`claude plugin uninstall devflow --scope ${cliScope}`, { stdio: 'inherit' });
53
+ return true;
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
6
59
  /**
7
60
  * Check if DevFlow is installed at the given paths
8
61
  */
@@ -19,15 +72,36 @@ export const uninstallCommand = new Command('uninstall')
19
72
  .description('Uninstall DevFlow from Claude Code')
20
73
  .option('--keep-docs', 'Keep .docs/ directory and documentation')
21
74
  .option('--scope <type>', 'Uninstall from specific scope only (default: auto-detect all)', /^(user|local)$/i)
75
+ .option('--plugin <names>', 'Uninstall specific plugin(s), comma-separated (e.g., implement,review)')
76
+ .option('--verbose', 'Show detailed uninstall output')
22
77
  .action(async (options) => {
23
- console.log('🧹 Uninstalling DevFlow...\n');
78
+ p.intro(color.bgRed(color.white(' Uninstalling DevFlow ')));
79
+ const verbose = options.verbose ?? false;
80
+ // Parse plugin selection
81
+ let selectedPluginNames = [];
82
+ if (options.plugin) {
83
+ selectedPluginNames = options.plugin.split(',').map((s) => {
84
+ const trimmed = s.trim();
85
+ return trimmed.startsWith('devflow-') ? trimmed : `devflow-${trimmed}`;
86
+ });
87
+ const validNames = DEVFLOW_PLUGINS.map(p => p.name);
88
+ const invalidPlugins = selectedPluginNames.filter(n => !validNames.includes(n));
89
+ if (invalidPlugins.length > 0) {
90
+ p.log.error(`Unknown plugin(s): ${invalidPlugins.join(', ')}`);
91
+ p.log.info(`Valid plugins: ${validNames.join(', ')}`);
92
+ process.exit(1);
93
+ }
94
+ }
95
+ const isSelectiveUninstall = selectedPluginNames.length > 0;
96
+ const selectedPlugins = isSelectiveUninstall
97
+ ? DEVFLOW_PLUGINS.filter(p => selectedPluginNames.includes(p.name))
98
+ : [];
24
99
  // Determine which scopes to uninstall
25
100
  let scopesToUninstall = [];
26
101
  if (options.scope) {
27
102
  scopesToUninstall = [options.scope.toLowerCase()];
28
103
  }
29
104
  else {
30
- // Auto-detect installed scopes
31
105
  const userClaudeDir = getClaudeDirectory();
32
106
  const gitRoot = await getGitRoot();
33
107
  if (await isDevFlowInstalled(userClaudeDir)) {
@@ -40,21 +114,36 @@ export const uninstallCommand = new Command('uninstall')
40
114
  }
41
115
  }
42
116
  if (scopesToUninstall.length === 0) {
43
- console.log('No DevFlow installation found');
44
- console.log(' Checked user scope (~/.claude/) and local scope (git-root/.claude/)\n');
117
+ p.log.error('No DevFlow installation found');
118
+ p.log.info('Checked user scope (~/.claude/) and local scope (git-root/.claude/)');
45
119
  process.exit(1);
46
120
  }
47
121
  if (scopesToUninstall.length > 1) {
48
- console.log('📦 Found DevFlow in multiple scopes:');
49
- console.log(' - User scope (~/.claude/)');
50
- console.log(' - Local scope (git-root/.claude/)');
51
- console.log('\n Uninstalling from both...\n');
122
+ if (process.stdin.isTTY) {
123
+ const scopeChoice = await p.select({
124
+ message: 'Found DevFlow in multiple scopes. Uninstall from:',
125
+ options: [
126
+ { value: 'both', label: 'Both', hint: 'user + local' },
127
+ { value: 'user', label: 'User scope', hint: '~/.claude/' },
128
+ { value: 'local', label: 'Local scope', hint: 'git-root/.claude/' },
129
+ ],
130
+ });
131
+ if (p.isCancel(scopeChoice)) {
132
+ p.cancel('Uninstall cancelled.');
133
+ process.exit(0);
134
+ }
135
+ if (scopeChoice !== 'both') {
136
+ scopesToUninstall = [scopeChoice];
137
+ }
138
+ }
139
+ else {
140
+ p.log.info('Multiple scopes detected, uninstalling from both...');
141
+ }
52
142
  }
53
143
  }
54
- let hasErrors = false;
144
+ const cliAvailable = isClaudeCliAvailable();
55
145
  // Uninstall from each scope
56
146
  for (const scope of scopesToUninstall) {
57
- // Get installation paths for this scope
58
147
  let claudeDir;
59
148
  let devflowScriptsDir;
60
149
  try {
@@ -62,98 +151,282 @@ export const uninstallCommand = new Command('uninstall')
62
151
  claudeDir = paths.claudeDir;
63
152
  devflowScriptsDir = paths.devflowDir;
64
153
  if (scope === 'user') {
65
- console.log('📍 Uninstalling user scope (~/.claude/)');
154
+ p.log.step('Uninstalling user scope (~/.claude/)');
66
155
  }
67
156
  else {
68
- console.log('📍 Uninstalling local scope (git-root/.claude/)');
157
+ p.log.step('Uninstalling local scope (git-root/.claude/)');
69
158
  }
70
159
  }
71
160
  catch (error) {
72
- console.log(`⚠️ Cannot uninstall ${scope} scope: ${error instanceof Error ? error.message : error}\n`);
161
+ p.log.warn(`Cannot uninstall ${scope} scope: ${error instanceof Error ? error.message : error}`);
73
162
  continue;
74
163
  }
75
- // DevFlow namespace directories to remove
76
- const devflowDirectories = [
77
- { path: path.join(claudeDir, 'commands', 'devflow'), name: 'commands' },
78
- { path: path.join(claudeDir, 'agents', 'devflow'), name: 'agents' },
79
- { path: devflowScriptsDir, name: 'scripts' }
80
- ];
81
- // Remove all DevFlow directories
82
- for (const dir of devflowDirectories) {
83
- try {
84
- await fs.rm(dir.path, { recursive: true, force: true });
85
- console.log(` ✅ Removed DevFlow ${dir.name}`);
86
- }
87
- catch (error) {
88
- console.error(` ⚠️ Could not remove ${dir.name}:`, error);
89
- hasErrors = true;
90
- }
91
- }
92
- // Remove individual DevFlow skills (flat structure)
93
- const skillsDir = path.join(claudeDir, 'skills');
94
- const devflowSkills = [
95
- 'pattern-check',
96
- 'test-design',
97
- 'code-smell',
98
- 'research',
99
- 'debug',
100
- 'input-validation',
101
- 'error-handling'
102
- ];
103
- let skillsRemoved = 0;
104
- for (const skillName of devflowSkills) {
105
- try {
106
- const skillPath = path.join(skillsDir, skillName);
107
- await fs.rm(skillPath, { recursive: true, force: true });
108
- skillsRemoved++;
164
+ // Try to uninstall plugin via Claude CLI first (only for full uninstall)
165
+ let usedCli = false;
166
+ if (cliAvailable && !isSelectiveUninstall) {
167
+ if (verbose) {
168
+ p.log.info('Uninstalling plugin via Claude CLI...');
109
169
  }
110
- catch (error) {
111
- // Skill might not exist, continue
170
+ usedCli = uninstallPluginViaCli(scope);
171
+ if (!usedCli && verbose) {
172
+ p.log.warn('Claude CLI uninstall failed, falling back to manual removal');
112
173
  }
113
174
  }
114
- if (skillsRemoved > 0) {
115
- console.log(` ✅ Removed ${skillsRemoved} DevFlow skills`);
175
+ // If CLI uninstall failed or unavailable, do manual removal
176
+ if (!usedCli) {
177
+ if (isSelectiveUninstall) {
178
+ await removeSelectedPlugins(claudeDir, selectedPlugins, verbose);
179
+ }
180
+ else {
181
+ await removeAllDevFlow(claudeDir, devflowScriptsDir, verbose);
182
+ }
116
183
  }
117
- // Also remove old nested skills structure if it exists (migration cleanup)
184
+ const pluginLabel = isSelectiveUninstall
185
+ ? ` (${selectedPluginNames.join(', ')})`
186
+ : '';
187
+ p.log.success(`Plugin removed${usedCli ? ' (via Claude CLI)' : ''}${pluginLabel}`);
188
+ }
189
+ // === CLEANUP EXTRAS (only for full uninstall) ===
190
+ if (!isSelectiveUninstall) {
191
+ const gitRoot = await getGitRoot();
192
+ // 1. .docs/ directory
193
+ const docsDir = path.join(process.cwd(), '.docs');
194
+ let docsExist = false;
118
195
  try {
119
- await fs.rm(path.join(claudeDir, 'skills', 'devflow'), { recursive: true, force: true });
196
+ await fs.access(docsDir);
197
+ docsExist = true;
198
+ }
199
+ catch { /* .docs doesn't exist */ }
200
+ if (docsExist) {
201
+ let shouldRemoveDocs = false;
202
+ if (options.keepDocs) {
203
+ shouldRemoveDocs = false;
204
+ }
205
+ else if (process.stdin.isTTY) {
206
+ const removeDocs = await p.confirm({
207
+ message: '.docs/ directory found. Remove project documentation?',
208
+ initialValue: false,
209
+ });
210
+ if (p.isCancel(removeDocs)) {
211
+ p.cancel('Uninstall cancelled.');
212
+ process.exit(0);
213
+ }
214
+ shouldRemoveDocs = removeDocs;
215
+ }
216
+ if (shouldRemoveDocs) {
217
+ await fs.rm(docsDir, { recursive: true, force: true });
218
+ p.log.success('.docs/ removed');
219
+ }
220
+ else {
221
+ p.log.info('.docs/ preserved');
222
+ }
223
+ }
224
+ // 2. .claudeignore
225
+ const claudeignorePath = gitRoot
226
+ ? path.join(gitRoot, '.claudeignore')
227
+ : path.join(process.cwd(), '.claudeignore');
228
+ let claudeignoreExists = false;
229
+ try {
230
+ await fs.access(claudeignorePath);
231
+ claudeignoreExists = true;
232
+ }
233
+ catch { /* doesn't exist */ }
234
+ if (claudeignoreExists) {
235
+ if (process.stdin.isTTY) {
236
+ const removeClaudeignore = await p.confirm({
237
+ message: '.claudeignore found. Remove it? (may contain custom rules)',
238
+ initialValue: false,
239
+ });
240
+ if (!p.isCancel(removeClaudeignore) && removeClaudeignore) {
241
+ await fs.rm(claudeignorePath, { force: true });
242
+ p.log.success('.claudeignore removed');
243
+ }
244
+ else {
245
+ p.log.info('.claudeignore preserved');
246
+ }
247
+ }
248
+ else {
249
+ p.log.info('.claudeignore preserved (non-interactive mode)');
250
+ }
251
+ }
252
+ // 3. settings.json (DevFlow hooks)
253
+ for (const scope of scopesToUninstall) {
254
+ try {
255
+ const paths = await getInstallationPaths(scope);
256
+ const settingsPath = path.join(paths.claudeDir, 'settings.json');
257
+ const settingsContent = await fs.readFile(settingsPath, 'utf-8');
258
+ const settings = JSON.parse(settingsContent);
259
+ if (settings.hooks) {
260
+ if (process.stdin.isTTY) {
261
+ const removeHooks = await p.confirm({
262
+ message: `Remove DevFlow hooks from settings.json (${scope} scope)? Other settings preserved.`,
263
+ initialValue: false,
264
+ });
265
+ if (!p.isCancel(removeHooks) && removeHooks) {
266
+ delete settings.hooks;
267
+ await fs.writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
268
+ p.log.success(`DevFlow hooks removed from settings.json (${scope})`);
269
+ }
270
+ else {
271
+ p.log.info(`settings.json hooks preserved (${scope})`);
272
+ }
273
+ }
274
+ else {
275
+ p.log.info(`settings.json hooks preserved (${scope}, non-interactive mode)`);
276
+ }
277
+ }
278
+ }
279
+ catch {
280
+ // settings.json doesn't exist or can't be parsed — skip
281
+ }
282
+ }
283
+ // 4. Managed settings (security deny list)
284
+ let managedSettingsExist = false;
285
+ try {
286
+ const managedPath = getManagedSettingsPath();
287
+ await fs.access(managedPath);
288
+ managedSettingsExist = true;
120
289
  }
121
290
  catch {
122
- // Old structure doesn't exist, ignore
291
+ // Managed settings don't exist or platform unsupported
292
+ }
293
+ if (managedSettingsExist) {
294
+ if (process.stdin.isTTY) {
295
+ const removeManagedConfirm = await p.confirm({
296
+ message: 'Remove DevFlow security deny list from managed settings?',
297
+ initialValue: false,
298
+ });
299
+ if (!p.isCancel(removeManagedConfirm) && removeManagedConfirm) {
300
+ // Resolve rootDir for the template path — use the dist directory
301
+ const uninstallRootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');
302
+ await removeManagedSettings(uninstallRootDir, verbose);
303
+ }
304
+ else {
305
+ p.log.info('Managed settings preserved');
306
+ }
307
+ }
308
+ else {
309
+ p.log.info('Managed settings preserved (non-interactive mode)');
310
+ }
311
+ }
312
+ // 5. Safe-delete shell function
313
+ const shell = detectShell();
314
+ const profilePath = getProfilePath(shell);
315
+ if (profilePath && await isAlreadyInstalled(profilePath)) {
316
+ if (process.stdin.isTTY) {
317
+ const removeSafeDelete = await p.confirm({
318
+ message: `Remove safe-delete function from ${profilePath}?`,
319
+ initialValue: false,
320
+ });
321
+ if (!p.isCancel(removeSafeDelete) && removeSafeDelete) {
322
+ const removed = await removeFromProfile(profilePath);
323
+ if (removed) {
324
+ p.log.success(`Safe-delete removed from ${profilePath}`);
325
+ }
326
+ else {
327
+ p.log.warn(`Could not remove safe-delete from ${profilePath}`);
328
+ }
329
+ }
330
+ else {
331
+ p.log.info('Safe-delete preserved in shell profile');
332
+ }
333
+ }
334
+ else {
335
+ p.log.info(`Safe-delete function preserved in ${profilePath} (non-interactive mode)`);
336
+ }
123
337
  }
124
- console.log();
125
338
  }
126
- // Handle .docs directory
127
- if (!options.keepDocs) {
128
- const docsDir = path.join(process.cwd(), '.docs');
339
+ const status = color.green('DevFlow uninstalled successfully');
340
+ p.outro(`${status}${color.dim(' Reinstall: npx devflow-kit init')}`);
341
+ });
342
+ /**
343
+ * Remove all DevFlow assets (full uninstall).
344
+ */
345
+ async function removeAllDevFlow(claudeDir, devflowScriptsDir, verbose) {
346
+ const devflowDirectories = [
347
+ { path: path.join(claudeDir, 'commands', 'devflow'), name: 'commands' },
348
+ { path: path.join(claudeDir, 'agents', 'devflow'), name: 'agents' },
349
+ { path: devflowScriptsDir, name: 'scripts' }
350
+ ];
351
+ for (const dir of devflowDirectories) {
129
352
  try {
130
- await fs.access(docsDir);
131
- console.log('\n⚠️ Found .docs/ directory in current project');
132
- console.log(' This contains your session documentation and history.');
133
- console.log(' Use --keep-docs to preserve it, or manually remove it.');
353
+ await fs.rm(dir.path, { recursive: true, force: true });
354
+ if (verbose) {
355
+ p.log.success(`Removed DevFlow ${dir.name}`);
356
+ }
357
+ }
358
+ catch (error) {
359
+ p.log.warn(`Could not remove ${dir.name}: ${error}`);
360
+ }
361
+ }
362
+ // Remove all DevFlow skills (current + legacy)
363
+ const allSkillNames = [...getAllSkillNames(), ...LEGACY_SKILL_NAMES];
364
+ const skillsDir = path.join(claudeDir, 'skills');
365
+ let skillsRemoved = 0;
366
+ for (const skillName of allSkillNames) {
367
+ try {
368
+ const skillPath = path.join(skillsDir, skillName);
369
+ await fs.rm(skillPath, { recursive: true, force: true });
370
+ skillsRemoved++;
134
371
  }
135
372
  catch {
136
- // .docs doesn't exist, nothing to warn about
373
+ // Skill might not exist
137
374
  }
138
375
  }
139
- // Remove .claudeignore (with warning)
140
- const claudeignorePath = path.join(process.cwd(), '.claudeignore');
376
+ if (skillsRemoved > 0 && verbose) {
377
+ p.log.success(`Removed ${skillsRemoved} DevFlow skills`);
378
+ }
379
+ // Also remove old nested skills structure if it exists
141
380
  try {
142
- await fs.access(claudeignorePath);
143
- console.log('\nℹ️ Found .claudeignore file');
144
- console.log(' Keeping it as it may contain custom rules.');
145
- console.log(' Remove manually if it was only for DevFlow.');
381
+ await fs.rm(path.join(claudeDir, 'skills', 'devflow'), { recursive: true, force: true });
146
382
  }
147
383
  catch {
148
- // .claudeignore doesn't exist
384
+ // Old structure doesn't exist
149
385
  }
150
- if (hasErrors) {
151
- console.log('\n⚠️ Uninstall completed with warnings');
152
- console.log(' Some components may not have been removed.');
386
+ }
387
+ /**
388
+ * Remove only specific plugin assets (selective uninstall).
389
+ * For commands and agents: remove files belonging to selected plugins.
390
+ * For skills: only remove skills that are NOT used by any remaining plugin.
391
+ */
392
+ async function removeSelectedPlugins(claudeDir, plugins, verbose) {
393
+ const { skills, agents, commands } = computeAssetsToRemove(plugins, DEVFLOW_PLUGINS);
394
+ const commandsDir = path.join(claudeDir, 'commands', 'devflow');
395
+ for (const cmd of commands) {
396
+ const cmdFileName = cmd.replace(/^\//, '') + '.md';
397
+ try {
398
+ await fs.rm(path.join(commandsDir, cmdFileName), { force: true });
399
+ if (verbose) {
400
+ p.log.success(`Removed command ${cmd}`);
401
+ }
402
+ }
403
+ catch {
404
+ // Command file might not exist
405
+ }
153
406
  }
154
- else {
155
- console.log('\n✅ DevFlow uninstalled successfully');
407
+ const agentsDir = path.join(claudeDir, 'agents', 'devflow');
408
+ for (const agent of agents) {
409
+ try {
410
+ await fs.rm(path.join(agentsDir, `${agent}.md`), { force: true });
411
+ if (verbose) {
412
+ p.log.success(`Removed agent ${agent}`);
413
+ }
414
+ }
415
+ catch {
416
+ // Agent file might not exist
417
+ }
156
418
  }
157
- console.log('\n💡 To reinstall: npm install -g devflow-kit && devflow init');
158
- });
419
+ const skillsDir = path.join(claudeDir, 'skills');
420
+ for (const skill of skills) {
421
+ try {
422
+ await fs.rm(path.join(skillsDir, skill), { recursive: true, force: true });
423
+ if (verbose) {
424
+ p.log.success(`Removed skill ${skill}`);
425
+ }
426
+ }
427
+ catch {
428
+ // Skill might not exist
429
+ }
430
+ }
431
+ }
159
432
  //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared plugin registry — single source of truth for all CLI commands.
3
+ */
4
+ /**
5
+ * Plugin definition with metadata
6
+ */
7
+ export interface PluginDefinition {
8
+ name: string;
9
+ description: string;
10
+ commands: string[];
11
+ agents: string[];
12
+ skills: string[];
13
+ /** Optional plugins are not installed by default — require explicit --plugin flag */
14
+ optional?: boolean;
15
+ }
16
+ /**
17
+ * Available DevFlow plugins
18
+ */
19
+ export declare const DEVFLOW_PLUGINS: PluginDefinition[];
20
+ /**
21
+ * Deprecated command names from old installations.
22
+ * Used during init to clean up stale command files on upgrade.
23
+ */
24
+ export declare const LEGACY_COMMAND_NAMES: string[];
25
+ /**
26
+ * Deprecated skill names from old installations (prefixed with devflow-).
27
+ * Used during uninstall to clean up legacy installs.
28
+ */
29
+ export declare const LEGACY_SKILL_NAMES: string[];
30
+ /**
31
+ * Derive unique skill names from all plugins.
32
+ */
33
+ export declare function getAllSkillNames(): string[];
34
+ /**
35
+ * Derive unique agent names from all plugins.
36
+ */
37
+ export declare function getAllAgentNames(): string[];
38
+ /**
39
+ * Build maps of unique assets to their source plugin (first plugin that declares them).
40
+ * This ensures each skill/agent is copied only once during installation.
41
+ */
42
+ export declare function buildAssetMaps(plugins: PluginDefinition[]): {
43
+ skillsMap: Map<string, string>;
44
+ agentsMap: Map<string, string>;
45
+ };
46
+ //# sourceMappingURL=plugins.d.ts.map