agentsys 5.0.3 → 5.2.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 (1248) hide show
  1. package/.claude-plugin/marketplace.json +109 -39
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/AGENTS.md +2 -14
  4. package/CHANGELOG.md +65 -5
  5. package/README.md +143 -44
  6. package/SECURITY.md +1 -1
  7. package/adapters/README.md +6 -6
  8. package/adapters/codex/README.md +3 -3
  9. package/adapters/codex/install.sh +2 -2
  10. package/adapters/opencode/README.md +3 -3
  11. package/adapters/opencode/install.sh +2 -2
  12. package/agent-knowledge/AGENTS.md +144 -5
  13. package/agent-knowledge/all-in-one-plus-modular-packages.md +576 -0
  14. package/agent-knowledge/cli-browser-automation-agents.md +936 -0
  15. package/agent-knowledge/github-org-project-management.md +319 -0
  16. package/agent-knowledge/github-org-structure-patterns.md +268 -0
  17. package/agent-knowledge/multi-product-org-docs.md +622 -0
  18. package/agent-knowledge/oss-org-naming-patterns.md +368 -0
  19. package/agent-knowledge/resources/all-in-one-plus-modular-packages-sources.json +310 -0
  20. package/agent-knowledge/resources/cli-browser-automation-agents-sources.json +428 -0
  21. package/agent-knowledge/resources/github-org-project-management-sources.json +239 -0
  22. package/agent-knowledge/resources/github-org-structure-patterns-sources.json +293 -0
  23. package/agent-knowledge/resources/multi-product-org-docs-sources.json +514 -0
  24. package/agent-knowledge/resources/oss-org-naming-patterns-sources.json +458 -0
  25. package/agent-knowledge/resources/skill-plugin-distribution-patterns-sources.json +290 -0
  26. package/agent-knowledge/resources/terminal-browsers-agent-automation-sources.json +758 -0
  27. package/agent-knowledge/resources/web-session-persistence-cli-agents-sources.json +528 -0
  28. package/agent-knowledge/skill-plugin-distribution-patterns.md +661 -0
  29. package/agent-knowledge/terminal-browsers-agent-automation.md +776 -0
  30. package/agent-knowledge/web-session-persistence-cli-agents.md +1352 -0
  31. package/bin/cli.js +1289 -18
  32. package/bin/dev-cli.js +15 -24
  33. package/lib/adapter-transforms.js +171 -7
  34. package/lib/cross-platform/index.js +7 -3
  35. package/lib/discovery/index.js +26 -1
  36. package/lib/index.js +2 -0
  37. package/lib/package.json +1 -1
  38. package/lib/patterns/cli-enhancers.js +11 -2
  39. package/lib/sources/policy-questions.js +76 -2
  40. package/lib/state/workflow-state.js +18 -7
  41. package/meta/skills/maintain-cross-platform/SKILL.md +1 -1
  42. package/package.json +4 -4
  43. package/scripts/bump-version.js +1 -6
  44. package/scripts/dev-install.js +1 -1
  45. package/scripts/fix-graduated-repos.js +288 -0
  46. package/scripts/gen-adapters.js +6 -7
  47. package/scripts/generate-docs.js +4 -2
  48. package/scripts/graduate-plugin.js +433 -0
  49. package/scripts/plugins.txt +1 -0
  50. package/scripts/preflight.js +19 -48
  51. package/scripts/scaffold.js +2 -2
  52. package/scripts/setup-hooks.js +2 -9
  53. package/scripts/stamp-version.js +3 -34
  54. package/scripts/validate-agent-skill-compliance.js +2 -0
  55. package/scripts/validate-counts.js +27 -0
  56. package/site/assets/css/design-system/base.css +151 -0
  57. package/site/assets/css/design-system/tokens.css +354 -0
  58. package/site/assets/css/tokens.css +5 -469
  59. package/site/content.json +13 -13
  60. package/site/index.html +14 -13
  61. package/site/ux-spec.md +7 -7
  62. package/adapters/codex/skills/agnix/SKILL.md +0 -138
  63. package/adapters/codex/skills/audit-project/SKILL.md +0 -334
  64. package/adapters/codex/skills/audit-project-agents/SKILL.md +0 -459
  65. package/adapters/codex/skills/audit-project-github/SKILL.md +0 -146
  66. package/adapters/codex/skills/consult/SKILL.md +0 -245
  67. package/adapters/codex/skills/delivery-approval/SKILL.md +0 -339
  68. package/adapters/codex/skills/deslop/SKILL.md +0 -167
  69. package/adapters/codex/skills/drift-detect/SKILL.md +0 -268
  70. package/adapters/codex/skills/enhance/SKILL.md +0 -177
  71. package/adapters/codex/skills/learn/SKILL.md +0 -188
  72. package/adapters/codex/skills/next-task/SKILL.md +0 -546
  73. package/adapters/codex/skills/perf/SKILL.md +0 -469
  74. package/adapters/codex/skills/repo-map/SKILL.md +0 -132
  75. package/adapters/codex/skills/ship/SKILL.md +0 -491
  76. package/adapters/codex/skills/ship-ci-review-loop/SKILL.md +0 -473
  77. package/adapters/codex/skills/ship-deployment/SKILL.md +0 -336
  78. package/adapters/codex/skills/ship-error-handling/SKILL.md +0 -260
  79. package/adapters/codex/skills/sync-docs/SKILL.md +0 -186
  80. package/adapters/opencode/agents/agent-enhancer.md +0 -65
  81. package/adapters/opencode/agents/agnix-agent.md +0 -56
  82. package/adapters/opencode/agents/ci-fixer.md +0 -104
  83. package/adapters/opencode/agents/ci-monitor.md +0 -127
  84. package/adapters/opencode/agents/claudemd-enhancer.md +0 -66
  85. package/adapters/opencode/agents/consult-agent.md +0 -124
  86. package/adapters/opencode/agents/cross-file-enhancer.md +0 -54
  87. package/adapters/opencode/agents/delivery-validator.md +0 -115
  88. package/adapters/opencode/agents/deslop-agent.md +0 -88
  89. package/adapters/opencode/agents/docs-enhancer.md +0 -65
  90. package/adapters/opencode/agents/exploration-agent.md +0 -143
  91. package/adapters/opencode/agents/hooks-enhancer.md +0 -66
  92. package/adapters/opencode/agents/implementation-agent.md +0 -206
  93. package/adapters/opencode/agents/learn-agent.md +0 -279
  94. package/adapters/opencode/agents/map-validator.md +0 -65
  95. package/adapters/opencode/agents/perf-analyzer.md +0 -40
  96. package/adapters/opencode/agents/perf-code-paths.md +0 -12
  97. package/adapters/opencode/agents/perf-investigation-logger.md +0 -44
  98. package/adapters/opencode/agents/perf-orchestrator.md +0 -147
  99. package/adapters/opencode/agents/perf-theory-gatherer.md +0 -18
  100. package/adapters/opencode/agents/perf-theory-tester.md +0 -43
  101. package/adapters/opencode/agents/plan-synthesizer.md +0 -229
  102. package/adapters/opencode/agents/planning-agent.md +0 -235
  103. package/adapters/opencode/agents/plugin-enhancer.md +0 -64
  104. package/adapters/opencode/agents/prompt-enhancer.md +0 -58
  105. package/adapters/opencode/agents/simple-fixer.md +0 -107
  106. package/adapters/opencode/agents/skills-enhancer.md +0 -66
  107. package/adapters/opencode/agents/sync-docs-agent.md +0 -153
  108. package/adapters/opencode/agents/task-discoverer.md +0 -80
  109. package/adapters/opencode/agents/test-coverage-checker.md +0 -144
  110. package/adapters/opencode/agents/worktree-manager.md +0 -209
  111. package/adapters/opencode/commands/agnix.md +0 -106
  112. package/adapters/opencode/commands/audit-project-agents.md +0 -125
  113. package/adapters/opencode/commands/audit-project-github.md +0 -145
  114. package/adapters/opencode/commands/audit-project.md +0 -268
  115. package/adapters/opencode/commands/consult.md +0 -252
  116. package/adapters/opencode/commands/delivery-approval.md +0 -212
  117. package/adapters/opencode/commands/deslop.md +0 -132
  118. package/adapters/opencode/commands/drift-detect.md +0 -173
  119. package/adapters/opencode/commands/enhance.md +0 -183
  120. package/adapters/opencode/commands/learn.md +0 -116
  121. package/adapters/opencode/commands/next-task.md +0 -393
  122. package/adapters/opencode/commands/perf.md +0 -49
  123. package/adapters/opencode/commands/repo-map.md +0 -69
  124. package/adapters/opencode/commands/ship-ci-review-loop.md +0 -334
  125. package/adapters/opencode/commands/ship-deployment.md +0 -336
  126. package/adapters/opencode/commands/ship-error-handling.md +0 -248
  127. package/adapters/opencode/commands/ship.md +0 -371
  128. package/adapters/opencode/commands/sync-docs.md +0 -108
  129. package/adapters/opencode/skills/agnix/SKILL.md +0 -139
  130. package/adapters/opencode/skills/consult/SKILL.md +0 -308
  131. package/adapters/opencode/skills/deslop/SKILL.md +0 -169
  132. package/adapters/opencode/skills/discover-tasks/SKILL.md +0 -102
  133. package/adapters/opencode/skills/drift-analysis/SKILL.md +0 -279
  134. package/adapters/opencode/skills/enhance-agent-prompts/SKILL.md +0 -279
  135. package/adapters/opencode/skills/enhance-claude-memory/SKILL.md +0 -390
  136. package/adapters/opencode/skills/enhance-cross-file/SKILL.md +0 -112
  137. package/adapters/opencode/skills/enhance-docs/SKILL.md +0 -288
  138. package/adapters/opencode/skills/enhance-hooks/SKILL.md +0 -557
  139. package/adapters/opencode/skills/enhance-orchestrator/SKILL.md +0 -114
  140. package/adapters/opencode/skills/enhance-plugins/SKILL.md +0 -314
  141. package/adapters/opencode/skills/enhance-prompts/SKILL.md +0 -341
  142. package/adapters/opencode/skills/enhance-skills/SKILL.md +0 -443
  143. package/adapters/opencode/skills/learn/SKILL.md +0 -352
  144. package/adapters/opencode/skills/orchestrate-review/SKILL.md +0 -95
  145. package/adapters/opencode/skills/perf-analyzer/SKILL.md +0 -38
  146. package/adapters/opencode/skills/perf-baseline-manager/SKILL.md +0 -31
  147. package/adapters/opencode/skills/perf-benchmarker/SKILL.md +0 -49
  148. package/adapters/opencode/skills/perf-code-paths/SKILL.md +0 -33
  149. package/adapters/opencode/skills/perf-investigation-logger/SKILL.md +0 -42
  150. package/adapters/opencode/skills/perf-profiler/SKILL.md +0 -39
  151. package/adapters/opencode/skills/perf-theory-gatherer/SKILL.md +0 -36
  152. package/adapters/opencode/skills/perf-theory-tester/SKILL.md +0 -37
  153. package/adapters/opencode/skills/repo-mapping/SKILL.md +0 -86
  154. package/adapters/opencode/skills/sync-docs/SKILL.md +0 -246
  155. package/adapters/opencode/skills/validate-delivery/SKILL.md +0 -112
  156. package/plugins/agnix/.claude-plugin/plugin.json +0 -22
  157. package/plugins/agnix/agents/agnix-agent.md +0 -56
  158. package/plugins/agnix/commands/agnix.md +0 -139
  159. package/plugins/agnix/skills/agnix/SKILL.md +0 -138
  160. package/plugins/audit-project/.claude-plugin/plugin.json +0 -20
  161. package/plugins/audit-project/commands/audit-project-agents.md +0 -458
  162. package/plugins/audit-project/commands/audit-project-github.md +0 -144
  163. package/plugins/audit-project/commands/audit-project.md +0 -336
  164. package/plugins/audit-project/lib/adapter-transforms.js +0 -278
  165. package/plugins/audit-project/lib/collectors/codebase.js +0 -392
  166. package/plugins/audit-project/lib/collectors/docs-patterns.js +0 -713
  167. package/plugins/audit-project/lib/collectors/documentation.js +0 -219
  168. package/plugins/audit-project/lib/collectors/github.js +0 -330
  169. package/plugins/audit-project/lib/collectors/index.js +0 -126
  170. package/plugins/audit-project/lib/config/index.js +0 -14
  171. package/plugins/audit-project/lib/cross-platform/index.js +0 -539
  172. package/plugins/audit-project/lib/discovery/index.js +0 -352
  173. package/plugins/audit-project/lib/drift-detect/collectors.js +0 -37
  174. package/plugins/audit-project/lib/enhance/agent-analyzer.js +0 -421
  175. package/plugins/audit-project/lib/enhance/agent-patterns.js +0 -571
  176. package/plugins/audit-project/lib/enhance/auto-suppression.js +0 -622
  177. package/plugins/audit-project/lib/enhance/benchmark.js +0 -417
  178. package/plugins/audit-project/lib/enhance/cross-file-analyzer.js +0 -930
  179. package/plugins/audit-project/lib/enhance/cross-file-patterns.js +0 -370
  180. package/plugins/audit-project/lib/enhance/docs-analyzer.js +0 -325
  181. package/plugins/audit-project/lib/enhance/docs-patterns.js +0 -671
  182. package/plugins/audit-project/lib/enhance/fixer.js +0 -721
  183. package/plugins/audit-project/lib/enhance/hook-analyzer.js +0 -135
  184. package/plugins/audit-project/lib/enhance/hook-patterns.js +0 -40
  185. package/plugins/audit-project/lib/enhance/index.js +0 -127
  186. package/plugins/audit-project/lib/enhance/plugin-analyzer.js +0 -402
  187. package/plugins/audit-project/lib/enhance/plugin-patterns.js +0 -326
  188. package/plugins/audit-project/lib/enhance/projectmemory-analyzer.js +0 -551
  189. package/plugins/audit-project/lib/enhance/projectmemory-patterns.js +0 -617
  190. package/plugins/audit-project/lib/enhance/prompt-analyzer.js +0 -457
  191. package/plugins/audit-project/lib/enhance/prompt-patterns.js +0 -1484
  192. package/plugins/audit-project/lib/enhance/reporter.js +0 -1348
  193. package/plugins/audit-project/lib/enhance/security-patterns.js +0 -284
  194. package/plugins/audit-project/lib/enhance/skill-analyzer.js +0 -182
  195. package/plugins/audit-project/lib/enhance/skill-patterns.js +0 -147
  196. package/plugins/audit-project/lib/enhance/suppression.js +0 -352
  197. package/plugins/audit-project/lib/enhance/tool-patterns.js +0 -373
  198. package/plugins/audit-project/lib/index.js +0 -270
  199. package/plugins/audit-project/lib/patterns/cli-enhancers.js +0 -611
  200. package/plugins/audit-project/lib/patterns/pipeline.js +0 -948
  201. package/plugins/audit-project/lib/patterns/review-patterns.js +0 -558
  202. package/plugins/audit-project/lib/patterns/slop-analyzers.js +0 -2305
  203. package/plugins/audit-project/lib/patterns/slop-patterns.js +0 -1187
  204. package/plugins/audit-project/lib/perf/analyzer/index.js +0 -22
  205. package/plugins/audit-project/lib/perf/argument-parser.js +0 -105
  206. package/plugins/audit-project/lib/perf/baseline-comparator.js +0 -50
  207. package/plugins/audit-project/lib/perf/baseline-store.js +0 -127
  208. package/plugins/audit-project/lib/perf/benchmark-runner.js +0 -404
  209. package/plugins/audit-project/lib/perf/breaking-point-finder.js +0 -52
  210. package/plugins/audit-project/lib/perf/breaking-point-runner.js +0 -60
  211. package/plugins/audit-project/lib/perf/checkpoint.js +0 -123
  212. package/plugins/audit-project/lib/perf/code-paths.js +0 -86
  213. package/plugins/audit-project/lib/perf/consolidation.js +0 -37
  214. package/plugins/audit-project/lib/perf/constraint-runner.js +0 -71
  215. package/plugins/audit-project/lib/perf/experiment-runner.js +0 -32
  216. package/plugins/audit-project/lib/perf/index.js +0 -41
  217. package/plugins/audit-project/lib/perf/investigation-state.js +0 -874
  218. package/plugins/audit-project/lib/perf/optimization-runner.js +0 -79
  219. package/plugins/audit-project/lib/perf/profilers/go.js +0 -22
  220. package/plugins/audit-project/lib/perf/profilers/index.js +0 -46
  221. package/plugins/audit-project/lib/perf/profilers/java.js +0 -23
  222. package/plugins/audit-project/lib/perf/profilers/node.js +0 -27
  223. package/plugins/audit-project/lib/perf/profilers/python.js +0 -23
  224. package/plugins/audit-project/lib/perf/profilers/rust.js +0 -23
  225. package/plugins/audit-project/lib/perf/profiling-runner.js +0 -75
  226. package/plugins/audit-project/lib/perf/schemas.js +0 -140
  227. package/plugins/audit-project/lib/platform/detect-platform.js +0 -413
  228. package/plugins/audit-project/lib/platform/detection-configs.js +0 -93
  229. package/plugins/audit-project/lib/platform/state-dir.js +0 -132
  230. package/plugins/audit-project/lib/platform/verify-tools.js +0 -182
  231. package/plugins/audit-project/lib/repo-map/cache.js +0 -152
  232. package/plugins/audit-project/lib/repo-map/concurrency.js +0 -29
  233. package/plugins/audit-project/lib/repo-map/index.js +0 -222
  234. package/plugins/audit-project/lib/repo-map/installer.js +0 -212
  235. package/plugins/audit-project/lib/repo-map/queries/go.js +0 -27
  236. package/plugins/audit-project/lib/repo-map/queries/index.js +0 -100
  237. package/plugins/audit-project/lib/repo-map/queries/java.js +0 -38
  238. package/plugins/audit-project/lib/repo-map/queries/javascript.js +0 -55
  239. package/plugins/audit-project/lib/repo-map/queries/python.js +0 -24
  240. package/plugins/audit-project/lib/repo-map/queries/rust.js +0 -73
  241. package/plugins/audit-project/lib/repo-map/queries/typescript.js +0 -38
  242. package/plugins/audit-project/lib/repo-map/runner.js +0 -1364
  243. package/plugins/audit-project/lib/repo-map/updater.js +0 -562
  244. package/plugins/audit-project/lib/repo-map/usage-analyzer.js +0 -407
  245. package/plugins/audit-project/lib/schemas/plugin-manifest.schema.json +0 -57
  246. package/plugins/audit-project/lib/schemas/validator.js +0 -247
  247. package/plugins/audit-project/lib/sources/custom-handler.js +0 -199
  248. package/plugins/audit-project/lib/sources/policy-questions.js +0 -246
  249. package/plugins/audit-project/lib/sources/source-cache.js +0 -165
  250. package/plugins/audit-project/lib/state/workflow-state.js +0 -576
  251. package/plugins/audit-project/lib/types/agent-frontmatter.d.ts +0 -134
  252. package/plugins/audit-project/lib/types/command-frontmatter.d.ts +0 -107
  253. package/plugins/audit-project/lib/types/hook-frontmatter.d.ts +0 -115
  254. package/plugins/audit-project/lib/types/index.d.ts +0 -84
  255. package/plugins/audit-project/lib/types/plugin-manifest.d.ts +0 -102
  256. package/plugins/audit-project/lib/types/skill-frontmatter.d.ts +0 -89
  257. package/plugins/audit-project/lib/utils/atomic-write.js +0 -94
  258. package/plugins/audit-project/lib/utils/cache-manager.js +0 -159
  259. package/plugins/audit-project/lib/utils/command-parser.js +0 -0
  260. package/plugins/audit-project/lib/utils/context-optimizer.js +0 -300
  261. package/plugins/audit-project/lib/utils/deprecation.js +0 -37
  262. package/plugins/audit-project/lib/utils/shell-escape.js +0 -88
  263. package/plugins/audit-project/lib/utils/state-helpers.js +0 -61
  264. package/plugins/consult/.claude-plugin/plugin.json +0 -24
  265. package/plugins/consult/agents/consult-agent.md +0 -129
  266. package/plugins/consult/commands/consult.md +0 -248
  267. package/plugins/consult/skills/consult/SKILL.md +0 -301
  268. package/plugins/deslop/.claude-plugin/plugin.json +0 -20
  269. package/plugins/deslop/agents/deslop-agent.md +0 -88
  270. package/plugins/deslop/commands/deslop.md +0 -168
  271. package/plugins/deslop/lib/adapter-transforms.js +0 -278
  272. package/plugins/deslop/lib/collectors/codebase.js +0 -392
  273. package/plugins/deslop/lib/collectors/docs-patterns.js +0 -713
  274. package/plugins/deslop/lib/collectors/documentation.js +0 -219
  275. package/plugins/deslop/lib/collectors/github.js +0 -330
  276. package/plugins/deslop/lib/collectors/index.js +0 -126
  277. package/plugins/deslop/lib/config/index.js +0 -14
  278. package/plugins/deslop/lib/cross-platform/index.js +0 -539
  279. package/plugins/deslop/lib/discovery/index.js +0 -352
  280. package/plugins/deslop/lib/drift-detect/collectors.js +0 -37
  281. package/plugins/deslop/lib/enhance/agent-analyzer.js +0 -421
  282. package/plugins/deslop/lib/enhance/agent-patterns.js +0 -571
  283. package/plugins/deslop/lib/enhance/auto-suppression.js +0 -622
  284. package/plugins/deslop/lib/enhance/benchmark.js +0 -417
  285. package/plugins/deslop/lib/enhance/cross-file-analyzer.js +0 -930
  286. package/plugins/deslop/lib/enhance/cross-file-patterns.js +0 -370
  287. package/plugins/deslop/lib/enhance/docs-analyzer.js +0 -325
  288. package/plugins/deslop/lib/enhance/docs-patterns.js +0 -671
  289. package/plugins/deslop/lib/enhance/fixer.js +0 -721
  290. package/plugins/deslop/lib/enhance/hook-analyzer.js +0 -135
  291. package/plugins/deslop/lib/enhance/hook-patterns.js +0 -40
  292. package/plugins/deslop/lib/enhance/index.js +0 -127
  293. package/plugins/deslop/lib/enhance/plugin-analyzer.js +0 -402
  294. package/plugins/deslop/lib/enhance/plugin-patterns.js +0 -326
  295. package/plugins/deslop/lib/enhance/projectmemory-analyzer.js +0 -551
  296. package/plugins/deslop/lib/enhance/projectmemory-patterns.js +0 -617
  297. package/plugins/deslop/lib/enhance/prompt-analyzer.js +0 -457
  298. package/plugins/deslop/lib/enhance/prompt-patterns.js +0 -1484
  299. package/plugins/deslop/lib/enhance/reporter.js +0 -1348
  300. package/plugins/deslop/lib/enhance/security-patterns.js +0 -284
  301. package/plugins/deslop/lib/enhance/skill-analyzer.js +0 -182
  302. package/plugins/deslop/lib/enhance/skill-patterns.js +0 -147
  303. package/plugins/deslop/lib/enhance/suppression.js +0 -352
  304. package/plugins/deslop/lib/enhance/tool-patterns.js +0 -373
  305. package/plugins/deslop/lib/index.js +0 -270
  306. package/plugins/deslop/lib/patterns/cli-enhancers.js +0 -611
  307. package/plugins/deslop/lib/patterns/pipeline.js +0 -948
  308. package/plugins/deslop/lib/patterns/review-patterns.js +0 -558
  309. package/plugins/deslop/lib/patterns/slop-analyzers.js +0 -2305
  310. package/plugins/deslop/lib/patterns/slop-patterns.js +0 -1187
  311. package/plugins/deslop/lib/perf/analyzer/index.js +0 -22
  312. package/plugins/deslop/lib/perf/argument-parser.js +0 -105
  313. package/plugins/deslop/lib/perf/baseline-comparator.js +0 -50
  314. package/plugins/deslop/lib/perf/baseline-store.js +0 -127
  315. package/plugins/deslop/lib/perf/benchmark-runner.js +0 -404
  316. package/plugins/deslop/lib/perf/breaking-point-finder.js +0 -52
  317. package/plugins/deslop/lib/perf/breaking-point-runner.js +0 -60
  318. package/plugins/deslop/lib/perf/checkpoint.js +0 -123
  319. package/plugins/deslop/lib/perf/code-paths.js +0 -86
  320. package/plugins/deslop/lib/perf/consolidation.js +0 -37
  321. package/plugins/deslop/lib/perf/constraint-runner.js +0 -71
  322. package/plugins/deslop/lib/perf/experiment-runner.js +0 -32
  323. package/plugins/deslop/lib/perf/index.js +0 -41
  324. package/plugins/deslop/lib/perf/investigation-state.js +0 -874
  325. package/plugins/deslop/lib/perf/optimization-runner.js +0 -79
  326. package/plugins/deslop/lib/perf/profilers/go.js +0 -22
  327. package/plugins/deslop/lib/perf/profilers/index.js +0 -46
  328. package/plugins/deslop/lib/perf/profilers/java.js +0 -23
  329. package/plugins/deslop/lib/perf/profilers/node.js +0 -27
  330. package/plugins/deslop/lib/perf/profilers/python.js +0 -23
  331. package/plugins/deslop/lib/perf/profilers/rust.js +0 -23
  332. package/plugins/deslop/lib/perf/profiling-runner.js +0 -75
  333. package/plugins/deslop/lib/perf/schemas.js +0 -140
  334. package/plugins/deslop/lib/platform/detect-platform.js +0 -413
  335. package/plugins/deslop/lib/platform/detection-configs.js +0 -93
  336. package/plugins/deslop/lib/platform/state-dir.js +0 -132
  337. package/plugins/deslop/lib/platform/verify-tools.js +0 -182
  338. package/plugins/deslop/lib/repo-map/cache.js +0 -152
  339. package/plugins/deslop/lib/repo-map/concurrency.js +0 -29
  340. package/plugins/deslop/lib/repo-map/index.js +0 -222
  341. package/plugins/deslop/lib/repo-map/installer.js +0 -212
  342. package/plugins/deslop/lib/repo-map/queries/go.js +0 -27
  343. package/plugins/deslop/lib/repo-map/queries/index.js +0 -100
  344. package/plugins/deslop/lib/repo-map/queries/java.js +0 -38
  345. package/plugins/deslop/lib/repo-map/queries/javascript.js +0 -55
  346. package/plugins/deslop/lib/repo-map/queries/python.js +0 -24
  347. package/plugins/deslop/lib/repo-map/queries/rust.js +0 -73
  348. package/plugins/deslop/lib/repo-map/queries/typescript.js +0 -38
  349. package/plugins/deslop/lib/repo-map/runner.js +0 -1364
  350. package/plugins/deslop/lib/repo-map/updater.js +0 -562
  351. package/plugins/deslop/lib/repo-map/usage-analyzer.js +0 -407
  352. package/plugins/deslop/lib/schemas/plugin-manifest.schema.json +0 -57
  353. package/plugins/deslop/lib/schemas/validator.js +0 -247
  354. package/plugins/deslop/lib/sources/custom-handler.js +0 -199
  355. package/plugins/deslop/lib/sources/policy-questions.js +0 -246
  356. package/plugins/deslop/lib/sources/source-cache.js +0 -165
  357. package/plugins/deslop/lib/state/workflow-state.js +0 -576
  358. package/plugins/deslop/lib/types/agent-frontmatter.d.ts +0 -134
  359. package/plugins/deslop/lib/types/command-frontmatter.d.ts +0 -107
  360. package/plugins/deslop/lib/types/hook-frontmatter.d.ts +0 -115
  361. package/plugins/deslop/lib/types/index.d.ts +0 -84
  362. package/plugins/deslop/lib/types/plugin-manifest.d.ts +0 -102
  363. package/plugins/deslop/lib/types/skill-frontmatter.d.ts +0 -89
  364. package/plugins/deslop/lib/utils/atomic-write.js +0 -94
  365. package/plugins/deslop/lib/utils/cache-manager.js +0 -159
  366. package/plugins/deslop/lib/utils/command-parser.js +0 -0
  367. package/plugins/deslop/lib/utils/context-optimizer.js +0 -300
  368. package/plugins/deslop/lib/utils/deprecation.js +0 -37
  369. package/plugins/deslop/lib/utils/shell-escape.js +0 -88
  370. package/plugins/deslop/lib/utils/state-helpers.js +0 -61
  371. package/plugins/deslop/references/slop-categories.md +0 -122
  372. package/plugins/deslop/scripts/detect.js +0 -134
  373. package/plugins/deslop/skills/deslop/SKILL.md +0 -204
  374. package/plugins/drift-detect/.claude-plugin/plugin.json +0 -23
  375. package/plugins/drift-detect/agents/plan-synthesizer.md +0 -225
  376. package/plugins/drift-detect/commands/drift-detect.md +0 -269
  377. package/plugins/drift-detect/lib/adapter-transforms.js +0 -278
  378. package/plugins/drift-detect/lib/collectors/codebase.js +0 -392
  379. package/plugins/drift-detect/lib/collectors/docs-patterns.js +0 -713
  380. package/plugins/drift-detect/lib/collectors/documentation.js +0 -219
  381. package/plugins/drift-detect/lib/collectors/github.js +0 -330
  382. package/plugins/drift-detect/lib/collectors/index.js +0 -126
  383. package/plugins/drift-detect/lib/config/index.js +0 -14
  384. package/plugins/drift-detect/lib/cross-platform/index.js +0 -539
  385. package/plugins/drift-detect/lib/discovery/index.js +0 -352
  386. package/plugins/drift-detect/lib/drift-detect/collectors.js +0 -37
  387. package/plugins/drift-detect/lib/enhance/agent-analyzer.js +0 -421
  388. package/plugins/drift-detect/lib/enhance/agent-patterns.js +0 -571
  389. package/plugins/drift-detect/lib/enhance/auto-suppression.js +0 -622
  390. package/plugins/drift-detect/lib/enhance/benchmark.js +0 -417
  391. package/plugins/drift-detect/lib/enhance/cross-file-analyzer.js +0 -930
  392. package/plugins/drift-detect/lib/enhance/cross-file-patterns.js +0 -370
  393. package/plugins/drift-detect/lib/enhance/docs-analyzer.js +0 -325
  394. package/plugins/drift-detect/lib/enhance/docs-patterns.js +0 -671
  395. package/plugins/drift-detect/lib/enhance/fixer.js +0 -721
  396. package/plugins/drift-detect/lib/enhance/hook-analyzer.js +0 -135
  397. package/plugins/drift-detect/lib/enhance/hook-patterns.js +0 -40
  398. package/plugins/drift-detect/lib/enhance/index.js +0 -127
  399. package/plugins/drift-detect/lib/enhance/plugin-analyzer.js +0 -402
  400. package/plugins/drift-detect/lib/enhance/plugin-patterns.js +0 -326
  401. package/plugins/drift-detect/lib/enhance/projectmemory-analyzer.js +0 -551
  402. package/plugins/drift-detect/lib/enhance/projectmemory-patterns.js +0 -617
  403. package/plugins/drift-detect/lib/enhance/prompt-analyzer.js +0 -457
  404. package/plugins/drift-detect/lib/enhance/prompt-patterns.js +0 -1484
  405. package/plugins/drift-detect/lib/enhance/reporter.js +0 -1348
  406. package/plugins/drift-detect/lib/enhance/security-patterns.js +0 -284
  407. package/plugins/drift-detect/lib/enhance/skill-analyzer.js +0 -182
  408. package/plugins/drift-detect/lib/enhance/skill-patterns.js +0 -147
  409. package/plugins/drift-detect/lib/enhance/suppression.js +0 -352
  410. package/plugins/drift-detect/lib/enhance/tool-patterns.js +0 -373
  411. package/plugins/drift-detect/lib/index.js +0 -270
  412. package/plugins/drift-detect/lib/patterns/cli-enhancers.js +0 -611
  413. package/plugins/drift-detect/lib/patterns/pipeline.js +0 -948
  414. package/plugins/drift-detect/lib/patterns/review-patterns.js +0 -558
  415. package/plugins/drift-detect/lib/patterns/slop-analyzers.js +0 -2305
  416. package/plugins/drift-detect/lib/patterns/slop-patterns.js +0 -1187
  417. package/plugins/drift-detect/lib/perf/analyzer/index.js +0 -22
  418. package/plugins/drift-detect/lib/perf/argument-parser.js +0 -105
  419. package/plugins/drift-detect/lib/perf/baseline-comparator.js +0 -50
  420. package/plugins/drift-detect/lib/perf/baseline-store.js +0 -127
  421. package/plugins/drift-detect/lib/perf/benchmark-runner.js +0 -404
  422. package/plugins/drift-detect/lib/perf/breaking-point-finder.js +0 -52
  423. package/plugins/drift-detect/lib/perf/breaking-point-runner.js +0 -60
  424. package/plugins/drift-detect/lib/perf/checkpoint.js +0 -123
  425. package/plugins/drift-detect/lib/perf/code-paths.js +0 -86
  426. package/plugins/drift-detect/lib/perf/consolidation.js +0 -37
  427. package/plugins/drift-detect/lib/perf/constraint-runner.js +0 -71
  428. package/plugins/drift-detect/lib/perf/experiment-runner.js +0 -32
  429. package/plugins/drift-detect/lib/perf/index.js +0 -41
  430. package/plugins/drift-detect/lib/perf/investigation-state.js +0 -874
  431. package/plugins/drift-detect/lib/perf/optimization-runner.js +0 -79
  432. package/plugins/drift-detect/lib/perf/profilers/go.js +0 -22
  433. package/plugins/drift-detect/lib/perf/profilers/index.js +0 -46
  434. package/plugins/drift-detect/lib/perf/profilers/java.js +0 -23
  435. package/plugins/drift-detect/lib/perf/profilers/node.js +0 -27
  436. package/plugins/drift-detect/lib/perf/profilers/python.js +0 -23
  437. package/plugins/drift-detect/lib/perf/profilers/rust.js +0 -23
  438. package/plugins/drift-detect/lib/perf/profiling-runner.js +0 -75
  439. package/plugins/drift-detect/lib/perf/schemas.js +0 -140
  440. package/plugins/drift-detect/lib/platform/detect-platform.js +0 -413
  441. package/plugins/drift-detect/lib/platform/detection-configs.js +0 -93
  442. package/plugins/drift-detect/lib/platform/state-dir.js +0 -132
  443. package/plugins/drift-detect/lib/platform/verify-tools.js +0 -182
  444. package/plugins/drift-detect/lib/repo-map/cache.js +0 -152
  445. package/plugins/drift-detect/lib/repo-map/concurrency.js +0 -29
  446. package/plugins/drift-detect/lib/repo-map/index.js +0 -222
  447. package/plugins/drift-detect/lib/repo-map/installer.js +0 -212
  448. package/plugins/drift-detect/lib/repo-map/queries/go.js +0 -27
  449. package/plugins/drift-detect/lib/repo-map/queries/index.js +0 -100
  450. package/plugins/drift-detect/lib/repo-map/queries/java.js +0 -38
  451. package/plugins/drift-detect/lib/repo-map/queries/javascript.js +0 -55
  452. package/plugins/drift-detect/lib/repo-map/queries/python.js +0 -24
  453. package/plugins/drift-detect/lib/repo-map/queries/rust.js +0 -73
  454. package/plugins/drift-detect/lib/repo-map/queries/typescript.js +0 -38
  455. package/plugins/drift-detect/lib/repo-map/runner.js +0 -1364
  456. package/plugins/drift-detect/lib/repo-map/updater.js +0 -562
  457. package/plugins/drift-detect/lib/repo-map/usage-analyzer.js +0 -407
  458. package/plugins/drift-detect/lib/schemas/plugin-manifest.schema.json +0 -57
  459. package/plugins/drift-detect/lib/schemas/validator.js +0 -247
  460. package/plugins/drift-detect/lib/sources/custom-handler.js +0 -199
  461. package/plugins/drift-detect/lib/sources/policy-questions.js +0 -246
  462. package/plugins/drift-detect/lib/sources/source-cache.js +0 -165
  463. package/plugins/drift-detect/lib/state/workflow-state.js +0 -576
  464. package/plugins/drift-detect/lib/types/agent-frontmatter.d.ts +0 -134
  465. package/plugins/drift-detect/lib/types/command-frontmatter.d.ts +0 -107
  466. package/plugins/drift-detect/lib/types/hook-frontmatter.d.ts +0 -115
  467. package/plugins/drift-detect/lib/types/index.d.ts +0 -84
  468. package/plugins/drift-detect/lib/types/plugin-manifest.d.ts +0 -102
  469. package/plugins/drift-detect/lib/types/skill-frontmatter.d.ts +0 -89
  470. package/plugins/drift-detect/lib/utils/atomic-write.js +0 -94
  471. package/plugins/drift-detect/lib/utils/cache-manager.js +0 -159
  472. package/plugins/drift-detect/lib/utils/command-parser.js +0 -0
  473. package/plugins/drift-detect/lib/utils/context-optimizer.js +0 -300
  474. package/plugins/drift-detect/lib/utils/deprecation.js +0 -37
  475. package/plugins/drift-detect/lib/utils/shell-escape.js +0 -88
  476. package/plugins/drift-detect/lib/utils/state-helpers.js +0 -61
  477. package/plugins/drift-detect/skills/drift-analysis/SKILL.md +0 -324
  478. package/plugins/enhance/.claude-plugin/plugin.json +0 -20
  479. package/plugins/enhance/agents/agent-enhancer.md +0 -64
  480. package/plugins/enhance/agents/claudemd-enhancer.md +0 -65
  481. package/plugins/enhance/agents/cross-file-enhancer.md +0 -54
  482. package/plugins/enhance/agents/docs-enhancer.md +0 -64
  483. package/plugins/enhance/agents/hooks-enhancer.md +0 -64
  484. package/plugins/enhance/agents/plugin-enhancer.md +0 -63
  485. package/plugins/enhance/agents/prompt-enhancer.md +0 -58
  486. package/plugins/enhance/agents/skills-enhancer.md +0 -64
  487. package/plugins/enhance/commands/enhance.md +0 -178
  488. package/plugins/enhance/lib/adapter-transforms.js +0 -278
  489. package/plugins/enhance/lib/collectors/codebase.js +0 -392
  490. package/plugins/enhance/lib/collectors/docs-patterns.js +0 -713
  491. package/plugins/enhance/lib/collectors/documentation.js +0 -219
  492. package/plugins/enhance/lib/collectors/github.js +0 -330
  493. package/plugins/enhance/lib/collectors/index.js +0 -126
  494. package/plugins/enhance/lib/config/index.js +0 -14
  495. package/plugins/enhance/lib/cross-platform/index.js +0 -539
  496. package/plugins/enhance/lib/discovery/index.js +0 -352
  497. package/plugins/enhance/lib/drift-detect/collectors.js +0 -37
  498. package/plugins/enhance/lib/enhance/agent-analyzer.js +0 -421
  499. package/plugins/enhance/lib/enhance/agent-patterns.js +0 -571
  500. package/plugins/enhance/lib/enhance/auto-suppression.js +0 -622
  501. package/plugins/enhance/lib/enhance/benchmark.js +0 -417
  502. package/plugins/enhance/lib/enhance/cross-file-analyzer.js +0 -930
  503. package/plugins/enhance/lib/enhance/cross-file-patterns.js +0 -370
  504. package/plugins/enhance/lib/enhance/docs-analyzer.js +0 -325
  505. package/plugins/enhance/lib/enhance/docs-patterns.js +0 -671
  506. package/plugins/enhance/lib/enhance/fixer.js +0 -721
  507. package/plugins/enhance/lib/enhance/hook-analyzer.js +0 -135
  508. package/plugins/enhance/lib/enhance/hook-patterns.js +0 -40
  509. package/plugins/enhance/lib/enhance/index.js +0 -127
  510. package/plugins/enhance/lib/enhance/plugin-analyzer.js +0 -402
  511. package/plugins/enhance/lib/enhance/plugin-patterns.js +0 -326
  512. package/plugins/enhance/lib/enhance/projectmemory-analyzer.js +0 -551
  513. package/plugins/enhance/lib/enhance/projectmemory-patterns.js +0 -617
  514. package/plugins/enhance/lib/enhance/prompt-analyzer.js +0 -457
  515. package/plugins/enhance/lib/enhance/prompt-patterns.js +0 -1484
  516. package/plugins/enhance/lib/enhance/reporter.js +0 -1348
  517. package/plugins/enhance/lib/enhance/security-patterns.js +0 -284
  518. package/plugins/enhance/lib/enhance/skill-analyzer.js +0 -182
  519. package/plugins/enhance/lib/enhance/skill-patterns.js +0 -147
  520. package/plugins/enhance/lib/enhance/suppression.js +0 -352
  521. package/plugins/enhance/lib/enhance/tool-patterns.js +0 -373
  522. package/plugins/enhance/lib/index.js +0 -270
  523. package/plugins/enhance/lib/patterns/cli-enhancers.js +0 -611
  524. package/plugins/enhance/lib/patterns/pipeline.js +0 -948
  525. package/plugins/enhance/lib/patterns/review-patterns.js +0 -558
  526. package/plugins/enhance/lib/patterns/slop-analyzers.js +0 -2305
  527. package/plugins/enhance/lib/patterns/slop-patterns.js +0 -1187
  528. package/plugins/enhance/lib/perf/analyzer/index.js +0 -22
  529. package/plugins/enhance/lib/perf/argument-parser.js +0 -105
  530. package/plugins/enhance/lib/perf/baseline-comparator.js +0 -50
  531. package/plugins/enhance/lib/perf/baseline-store.js +0 -127
  532. package/plugins/enhance/lib/perf/benchmark-runner.js +0 -404
  533. package/plugins/enhance/lib/perf/breaking-point-finder.js +0 -52
  534. package/plugins/enhance/lib/perf/breaking-point-runner.js +0 -60
  535. package/plugins/enhance/lib/perf/checkpoint.js +0 -123
  536. package/plugins/enhance/lib/perf/code-paths.js +0 -86
  537. package/plugins/enhance/lib/perf/consolidation.js +0 -37
  538. package/plugins/enhance/lib/perf/constraint-runner.js +0 -71
  539. package/plugins/enhance/lib/perf/experiment-runner.js +0 -32
  540. package/plugins/enhance/lib/perf/index.js +0 -41
  541. package/plugins/enhance/lib/perf/investigation-state.js +0 -874
  542. package/plugins/enhance/lib/perf/optimization-runner.js +0 -79
  543. package/plugins/enhance/lib/perf/profilers/go.js +0 -22
  544. package/plugins/enhance/lib/perf/profilers/index.js +0 -46
  545. package/plugins/enhance/lib/perf/profilers/java.js +0 -23
  546. package/plugins/enhance/lib/perf/profilers/node.js +0 -27
  547. package/plugins/enhance/lib/perf/profilers/python.js +0 -23
  548. package/plugins/enhance/lib/perf/profilers/rust.js +0 -23
  549. package/plugins/enhance/lib/perf/profiling-runner.js +0 -75
  550. package/plugins/enhance/lib/perf/schemas.js +0 -140
  551. package/plugins/enhance/lib/platform/detect-platform.js +0 -413
  552. package/plugins/enhance/lib/platform/detection-configs.js +0 -93
  553. package/plugins/enhance/lib/platform/state-dir.js +0 -132
  554. package/plugins/enhance/lib/platform/verify-tools.js +0 -182
  555. package/plugins/enhance/lib/repo-map/cache.js +0 -152
  556. package/plugins/enhance/lib/repo-map/concurrency.js +0 -29
  557. package/plugins/enhance/lib/repo-map/index.js +0 -222
  558. package/plugins/enhance/lib/repo-map/installer.js +0 -212
  559. package/plugins/enhance/lib/repo-map/queries/go.js +0 -27
  560. package/plugins/enhance/lib/repo-map/queries/index.js +0 -100
  561. package/plugins/enhance/lib/repo-map/queries/java.js +0 -38
  562. package/plugins/enhance/lib/repo-map/queries/javascript.js +0 -55
  563. package/plugins/enhance/lib/repo-map/queries/python.js +0 -24
  564. package/plugins/enhance/lib/repo-map/queries/rust.js +0 -73
  565. package/plugins/enhance/lib/repo-map/queries/typescript.js +0 -38
  566. package/plugins/enhance/lib/repo-map/runner.js +0 -1364
  567. package/plugins/enhance/lib/repo-map/updater.js +0 -562
  568. package/plugins/enhance/lib/repo-map/usage-analyzer.js +0 -407
  569. package/plugins/enhance/lib/schemas/plugin-manifest.schema.json +0 -57
  570. package/plugins/enhance/lib/schemas/validator.js +0 -247
  571. package/plugins/enhance/lib/sources/custom-handler.js +0 -199
  572. package/plugins/enhance/lib/sources/policy-questions.js +0 -246
  573. package/plugins/enhance/lib/sources/source-cache.js +0 -165
  574. package/plugins/enhance/lib/state/workflow-state.js +0 -576
  575. package/plugins/enhance/lib/types/agent-frontmatter.d.ts +0 -134
  576. package/plugins/enhance/lib/types/command-frontmatter.d.ts +0 -107
  577. package/plugins/enhance/lib/types/hook-frontmatter.d.ts +0 -115
  578. package/plugins/enhance/lib/types/index.d.ts +0 -84
  579. package/plugins/enhance/lib/types/plugin-manifest.d.ts +0 -102
  580. package/plugins/enhance/lib/types/skill-frontmatter.d.ts +0 -89
  581. package/plugins/enhance/lib/utils/atomic-write.js +0 -94
  582. package/plugins/enhance/lib/utils/cache-manager.js +0 -159
  583. package/plugins/enhance/lib/utils/command-parser.js +0 -0
  584. package/plugins/enhance/lib/utils/context-optimizer.js +0 -300
  585. package/plugins/enhance/lib/utils/deprecation.js +0 -37
  586. package/plugins/enhance/lib/utils/shell-escape.js +0 -88
  587. package/plugins/enhance/lib/utils/state-helpers.js +0 -61
  588. package/plugins/enhance/skills/enhance-agent-prompts/SKILL.md +0 -277
  589. package/plugins/enhance/skills/enhance-claude-memory/SKILL.md +0 -387
  590. package/plugins/enhance/skills/enhance-cross-file/SKILL.md +0 -110
  591. package/plugins/enhance/skills/enhance-docs/SKILL.md +0 -298
  592. package/plugins/enhance/skills/enhance-hooks/SKILL.md +0 -554
  593. package/plugins/enhance/skills/enhance-orchestrator/SKILL.md +0 -255
  594. package/plugins/enhance/skills/enhance-plugins/SKILL.md +0 -319
  595. package/plugins/enhance/skills/enhance-prompts/SKILL.md +0 -340
  596. package/plugins/enhance/skills/enhance-skills/SKILL.md +0 -436
  597. package/plugins/learn/.claude-plugin/plugin.json +0 -21
  598. package/plugins/learn/agents/learn-agent.md +0 -331
  599. package/plugins/learn/commands/learn.md +0 -190
  600. package/plugins/learn/lib/adapter-transforms.js +0 -278
  601. package/plugins/learn/lib/collectors/codebase.js +0 -392
  602. package/plugins/learn/lib/collectors/docs-patterns.js +0 -713
  603. package/plugins/learn/lib/collectors/documentation.js +0 -219
  604. package/plugins/learn/lib/collectors/github.js +0 -330
  605. package/plugins/learn/lib/collectors/index.js +0 -126
  606. package/plugins/learn/lib/config/index.js +0 -14
  607. package/plugins/learn/lib/cross-platform/index.js +0 -539
  608. package/plugins/learn/lib/discovery/index.js +0 -352
  609. package/plugins/learn/lib/drift-detect/collectors.js +0 -37
  610. package/plugins/learn/lib/enhance/agent-analyzer.js +0 -421
  611. package/plugins/learn/lib/enhance/agent-patterns.js +0 -571
  612. package/plugins/learn/lib/enhance/auto-suppression.js +0 -622
  613. package/plugins/learn/lib/enhance/benchmark.js +0 -417
  614. package/plugins/learn/lib/enhance/cross-file-analyzer.js +0 -930
  615. package/plugins/learn/lib/enhance/cross-file-patterns.js +0 -370
  616. package/plugins/learn/lib/enhance/docs-analyzer.js +0 -325
  617. package/plugins/learn/lib/enhance/docs-patterns.js +0 -671
  618. package/plugins/learn/lib/enhance/fixer.js +0 -721
  619. package/plugins/learn/lib/enhance/hook-analyzer.js +0 -135
  620. package/plugins/learn/lib/enhance/hook-patterns.js +0 -40
  621. package/plugins/learn/lib/enhance/index.js +0 -127
  622. package/plugins/learn/lib/enhance/plugin-analyzer.js +0 -402
  623. package/plugins/learn/lib/enhance/plugin-patterns.js +0 -326
  624. package/plugins/learn/lib/enhance/projectmemory-analyzer.js +0 -551
  625. package/plugins/learn/lib/enhance/projectmemory-patterns.js +0 -617
  626. package/plugins/learn/lib/enhance/prompt-analyzer.js +0 -457
  627. package/plugins/learn/lib/enhance/prompt-patterns.js +0 -1484
  628. package/plugins/learn/lib/enhance/reporter.js +0 -1348
  629. package/plugins/learn/lib/enhance/security-patterns.js +0 -284
  630. package/plugins/learn/lib/enhance/skill-analyzer.js +0 -182
  631. package/plugins/learn/lib/enhance/skill-patterns.js +0 -147
  632. package/plugins/learn/lib/enhance/suppression.js +0 -352
  633. package/plugins/learn/lib/enhance/tool-patterns.js +0 -373
  634. package/plugins/learn/lib/index.js +0 -270
  635. package/plugins/learn/lib/patterns/cli-enhancers.js +0 -611
  636. package/plugins/learn/lib/patterns/pipeline.js +0 -948
  637. package/plugins/learn/lib/patterns/review-patterns.js +0 -558
  638. package/plugins/learn/lib/patterns/slop-analyzers.js +0 -2305
  639. package/plugins/learn/lib/patterns/slop-patterns.js +0 -1187
  640. package/plugins/learn/lib/perf/analyzer/index.js +0 -22
  641. package/plugins/learn/lib/perf/argument-parser.js +0 -105
  642. package/plugins/learn/lib/perf/baseline-comparator.js +0 -50
  643. package/plugins/learn/lib/perf/baseline-store.js +0 -127
  644. package/plugins/learn/lib/perf/benchmark-runner.js +0 -404
  645. package/plugins/learn/lib/perf/breaking-point-finder.js +0 -52
  646. package/plugins/learn/lib/perf/breaking-point-runner.js +0 -60
  647. package/plugins/learn/lib/perf/checkpoint.js +0 -123
  648. package/plugins/learn/lib/perf/code-paths.js +0 -86
  649. package/plugins/learn/lib/perf/consolidation.js +0 -37
  650. package/plugins/learn/lib/perf/constraint-runner.js +0 -71
  651. package/plugins/learn/lib/perf/experiment-runner.js +0 -32
  652. package/plugins/learn/lib/perf/index.js +0 -41
  653. package/plugins/learn/lib/perf/investigation-state.js +0 -874
  654. package/plugins/learn/lib/perf/optimization-runner.js +0 -79
  655. package/plugins/learn/lib/perf/profilers/go.js +0 -22
  656. package/plugins/learn/lib/perf/profilers/index.js +0 -46
  657. package/plugins/learn/lib/perf/profilers/java.js +0 -23
  658. package/plugins/learn/lib/perf/profilers/node.js +0 -27
  659. package/plugins/learn/lib/perf/profilers/python.js +0 -23
  660. package/plugins/learn/lib/perf/profilers/rust.js +0 -23
  661. package/plugins/learn/lib/perf/profiling-runner.js +0 -75
  662. package/plugins/learn/lib/perf/schemas.js +0 -140
  663. package/plugins/learn/lib/platform/detect-platform.js +0 -413
  664. package/plugins/learn/lib/platform/detection-configs.js +0 -93
  665. package/plugins/learn/lib/platform/state-dir.js +0 -132
  666. package/plugins/learn/lib/platform/verify-tools.js +0 -182
  667. package/plugins/learn/lib/repo-map/cache.js +0 -152
  668. package/plugins/learn/lib/repo-map/concurrency.js +0 -29
  669. package/plugins/learn/lib/repo-map/index.js +0 -222
  670. package/plugins/learn/lib/repo-map/installer.js +0 -212
  671. package/plugins/learn/lib/repo-map/queries/go.js +0 -27
  672. package/plugins/learn/lib/repo-map/queries/index.js +0 -100
  673. package/plugins/learn/lib/repo-map/queries/java.js +0 -38
  674. package/plugins/learn/lib/repo-map/queries/javascript.js +0 -55
  675. package/plugins/learn/lib/repo-map/queries/python.js +0 -24
  676. package/plugins/learn/lib/repo-map/queries/rust.js +0 -73
  677. package/plugins/learn/lib/repo-map/queries/typescript.js +0 -38
  678. package/plugins/learn/lib/repo-map/runner.js +0 -1364
  679. package/plugins/learn/lib/repo-map/updater.js +0 -562
  680. package/plugins/learn/lib/repo-map/usage-analyzer.js +0 -407
  681. package/plugins/learn/lib/schemas/plugin-manifest.schema.json +0 -57
  682. package/plugins/learn/lib/schemas/validator.js +0 -247
  683. package/plugins/learn/lib/sources/custom-handler.js +0 -199
  684. package/plugins/learn/lib/sources/policy-questions.js +0 -246
  685. package/plugins/learn/lib/sources/source-cache.js +0 -165
  686. package/plugins/learn/lib/state/workflow-state.js +0 -576
  687. package/plugins/learn/lib/types/agent-frontmatter.d.ts +0 -134
  688. package/plugins/learn/lib/types/command-frontmatter.d.ts +0 -107
  689. package/plugins/learn/lib/types/hook-frontmatter.d.ts +0 -115
  690. package/plugins/learn/lib/types/index.d.ts +0 -84
  691. package/plugins/learn/lib/types/plugin-manifest.d.ts +0 -102
  692. package/plugins/learn/lib/types/skill-frontmatter.d.ts +0 -89
  693. package/plugins/learn/lib/utils/atomic-write.js +0 -94
  694. package/plugins/learn/lib/utils/cache-manager.js +0 -159
  695. package/plugins/learn/lib/utils/command-parser.js +0 -0
  696. package/plugins/learn/lib/utils/context-optimizer.js +0 -300
  697. package/plugins/learn/lib/utils/deprecation.js +0 -37
  698. package/plugins/learn/lib/utils/shell-escape.js +0 -88
  699. package/plugins/learn/lib/utils/state-helpers.js +0 -61
  700. package/plugins/learn/skills/learn/SKILL.md +0 -349
  701. package/plugins/next-task/.claude-plugin/plugin.json +0 -24
  702. package/plugins/next-task/agents/ci-fixer.md +0 -259
  703. package/plugins/next-task/agents/ci-monitor.md +0 -342
  704. package/plugins/next-task/agents/delivery-validator.md +0 -115
  705. package/plugins/next-task/agents/exploration-agent.md +0 -316
  706. package/plugins/next-task/agents/implementation-agent.md +0 -465
  707. package/plugins/next-task/agents/planning-agent.md +0 -377
  708. package/plugins/next-task/agents/simple-fixer.md +0 -139
  709. package/plugins/next-task/agents/task-discoverer.md +0 -89
  710. package/plugins/next-task/agents/test-coverage-checker.md +0 -451
  711. package/plugins/next-task/agents/worktree-manager.md +0 -257
  712. package/plugins/next-task/commands/delivery-approval.md +0 -341
  713. package/plugins/next-task/commands/next-task.md +0 -547
  714. package/plugins/next-task/hooks/hooks.json +0 -14
  715. package/plugins/next-task/lib/adapter-transforms.js +0 -278
  716. package/plugins/next-task/lib/collectors/codebase.js +0 -392
  717. package/plugins/next-task/lib/collectors/docs-patterns.js +0 -713
  718. package/plugins/next-task/lib/collectors/documentation.js +0 -219
  719. package/plugins/next-task/lib/collectors/github.js +0 -330
  720. package/plugins/next-task/lib/collectors/index.js +0 -126
  721. package/plugins/next-task/lib/config/index.js +0 -14
  722. package/plugins/next-task/lib/cross-platform/index.js +0 -539
  723. package/plugins/next-task/lib/discovery/index.js +0 -352
  724. package/plugins/next-task/lib/drift-detect/collectors.js +0 -37
  725. package/plugins/next-task/lib/enhance/agent-analyzer.js +0 -421
  726. package/plugins/next-task/lib/enhance/agent-patterns.js +0 -571
  727. package/plugins/next-task/lib/enhance/auto-suppression.js +0 -622
  728. package/plugins/next-task/lib/enhance/benchmark.js +0 -417
  729. package/plugins/next-task/lib/enhance/cross-file-analyzer.js +0 -930
  730. package/plugins/next-task/lib/enhance/cross-file-patterns.js +0 -370
  731. package/plugins/next-task/lib/enhance/docs-analyzer.js +0 -325
  732. package/plugins/next-task/lib/enhance/docs-patterns.js +0 -671
  733. package/plugins/next-task/lib/enhance/fixer.js +0 -721
  734. package/plugins/next-task/lib/enhance/hook-analyzer.js +0 -135
  735. package/plugins/next-task/lib/enhance/hook-patterns.js +0 -40
  736. package/plugins/next-task/lib/enhance/index.js +0 -127
  737. package/plugins/next-task/lib/enhance/plugin-analyzer.js +0 -402
  738. package/plugins/next-task/lib/enhance/plugin-patterns.js +0 -326
  739. package/plugins/next-task/lib/enhance/projectmemory-analyzer.js +0 -551
  740. package/plugins/next-task/lib/enhance/projectmemory-patterns.js +0 -617
  741. package/plugins/next-task/lib/enhance/prompt-analyzer.js +0 -457
  742. package/plugins/next-task/lib/enhance/prompt-patterns.js +0 -1484
  743. package/plugins/next-task/lib/enhance/reporter.js +0 -1348
  744. package/plugins/next-task/lib/enhance/security-patterns.js +0 -284
  745. package/plugins/next-task/lib/enhance/skill-analyzer.js +0 -182
  746. package/plugins/next-task/lib/enhance/skill-patterns.js +0 -147
  747. package/plugins/next-task/lib/enhance/suppression.js +0 -352
  748. package/plugins/next-task/lib/enhance/tool-patterns.js +0 -373
  749. package/plugins/next-task/lib/index.js +0 -270
  750. package/plugins/next-task/lib/patterns/cli-enhancers.js +0 -611
  751. package/plugins/next-task/lib/patterns/pipeline.js +0 -948
  752. package/plugins/next-task/lib/patterns/review-patterns.js +0 -558
  753. package/plugins/next-task/lib/patterns/slop-analyzers.js +0 -2305
  754. package/plugins/next-task/lib/patterns/slop-patterns.js +0 -1187
  755. package/plugins/next-task/lib/perf/analyzer/index.js +0 -22
  756. package/plugins/next-task/lib/perf/argument-parser.js +0 -105
  757. package/plugins/next-task/lib/perf/baseline-comparator.js +0 -50
  758. package/plugins/next-task/lib/perf/baseline-store.js +0 -127
  759. package/plugins/next-task/lib/perf/benchmark-runner.js +0 -404
  760. package/plugins/next-task/lib/perf/breaking-point-finder.js +0 -52
  761. package/plugins/next-task/lib/perf/breaking-point-runner.js +0 -60
  762. package/plugins/next-task/lib/perf/checkpoint.js +0 -123
  763. package/plugins/next-task/lib/perf/code-paths.js +0 -86
  764. package/plugins/next-task/lib/perf/consolidation.js +0 -37
  765. package/plugins/next-task/lib/perf/constraint-runner.js +0 -71
  766. package/plugins/next-task/lib/perf/experiment-runner.js +0 -32
  767. package/plugins/next-task/lib/perf/index.js +0 -41
  768. package/plugins/next-task/lib/perf/investigation-state.js +0 -874
  769. package/plugins/next-task/lib/perf/optimization-runner.js +0 -79
  770. package/plugins/next-task/lib/perf/profilers/go.js +0 -22
  771. package/plugins/next-task/lib/perf/profilers/index.js +0 -46
  772. package/plugins/next-task/lib/perf/profilers/java.js +0 -23
  773. package/plugins/next-task/lib/perf/profilers/node.js +0 -27
  774. package/plugins/next-task/lib/perf/profilers/python.js +0 -23
  775. package/plugins/next-task/lib/perf/profilers/rust.js +0 -23
  776. package/plugins/next-task/lib/perf/profiling-runner.js +0 -75
  777. package/plugins/next-task/lib/perf/schemas.js +0 -140
  778. package/plugins/next-task/lib/platform/detect-platform.js +0 -413
  779. package/plugins/next-task/lib/platform/detection-configs.js +0 -93
  780. package/plugins/next-task/lib/platform/state-dir.js +0 -132
  781. package/plugins/next-task/lib/platform/verify-tools.js +0 -182
  782. package/plugins/next-task/lib/repo-map/cache.js +0 -152
  783. package/plugins/next-task/lib/repo-map/concurrency.js +0 -29
  784. package/plugins/next-task/lib/repo-map/index.js +0 -222
  785. package/plugins/next-task/lib/repo-map/installer.js +0 -212
  786. package/plugins/next-task/lib/repo-map/queries/go.js +0 -27
  787. package/plugins/next-task/lib/repo-map/queries/index.js +0 -100
  788. package/plugins/next-task/lib/repo-map/queries/java.js +0 -38
  789. package/plugins/next-task/lib/repo-map/queries/javascript.js +0 -55
  790. package/plugins/next-task/lib/repo-map/queries/python.js +0 -24
  791. package/plugins/next-task/lib/repo-map/queries/rust.js +0 -73
  792. package/plugins/next-task/lib/repo-map/queries/typescript.js +0 -38
  793. package/plugins/next-task/lib/repo-map/runner.js +0 -1364
  794. package/plugins/next-task/lib/repo-map/updater.js +0 -562
  795. package/plugins/next-task/lib/repo-map/usage-analyzer.js +0 -407
  796. package/plugins/next-task/lib/schemas/plugin-manifest.schema.json +0 -57
  797. package/plugins/next-task/lib/schemas/validator.js +0 -247
  798. package/plugins/next-task/lib/sources/custom-handler.js +0 -199
  799. package/plugins/next-task/lib/sources/policy-questions.js +0 -246
  800. package/plugins/next-task/lib/sources/source-cache.js +0 -165
  801. package/plugins/next-task/lib/state/workflow-state.js +0 -576
  802. package/plugins/next-task/lib/types/agent-frontmatter.d.ts +0 -134
  803. package/plugins/next-task/lib/types/command-frontmatter.d.ts +0 -107
  804. package/plugins/next-task/lib/types/hook-frontmatter.d.ts +0 -115
  805. package/plugins/next-task/lib/types/index.d.ts +0 -84
  806. package/plugins/next-task/lib/types/plugin-manifest.d.ts +0 -102
  807. package/plugins/next-task/lib/types/skill-frontmatter.d.ts +0 -89
  808. package/plugins/next-task/lib/utils/atomic-write.js +0 -94
  809. package/plugins/next-task/lib/utils/cache-manager.js +0 -159
  810. package/plugins/next-task/lib/utils/command-parser.js +0 -0
  811. package/plugins/next-task/lib/utils/context-optimizer.js +0 -300
  812. package/plugins/next-task/lib/utils/deprecation.js +0 -37
  813. package/plugins/next-task/lib/utils/shell-escape.js +0 -88
  814. package/plugins/next-task/lib/utils/state-helpers.js +0 -61
  815. package/plugins/next-task/skills/discover-tasks/SKILL.md +0 -191
  816. package/plugins/next-task/skills/orchestrate-review/SKILL.md +0 -239
  817. package/plugins/next-task/skills/validate-delivery/SKILL.md +0 -186
  818. package/plugins/perf/.claude-plugin/plugin.json +0 -20
  819. package/plugins/perf/agents/perf-analyzer.md +0 -43
  820. package/plugins/perf/agents/perf-code-paths.md +0 -16
  821. package/plugins/perf/agents/perf-investigation-logger.md +0 -47
  822. package/plugins/perf/agents/perf-orchestrator.md +0 -344
  823. package/plugins/perf/agents/perf-theory-gatherer.md +0 -25
  824. package/plugins/perf/agents/perf-theory-tester.md +0 -58
  825. package/plugins/perf/commands/perf.md +0 -470
  826. package/plugins/perf/hooks/checkpoint.md +0 -35
  827. package/plugins/perf/hooks/constraint-tester.md +0 -40
  828. package/plugins/perf/lib/adapter-transforms.js +0 -278
  829. package/plugins/perf/lib/collectors/codebase.js +0 -392
  830. package/plugins/perf/lib/collectors/docs-patterns.js +0 -713
  831. package/plugins/perf/lib/collectors/documentation.js +0 -219
  832. package/plugins/perf/lib/collectors/github.js +0 -330
  833. package/plugins/perf/lib/collectors/index.js +0 -126
  834. package/plugins/perf/lib/config/index.js +0 -14
  835. package/plugins/perf/lib/cross-platform/index.js +0 -539
  836. package/plugins/perf/lib/discovery/index.js +0 -352
  837. package/plugins/perf/lib/drift-detect/collectors.js +0 -37
  838. package/plugins/perf/lib/enhance/agent-analyzer.js +0 -421
  839. package/plugins/perf/lib/enhance/agent-patterns.js +0 -571
  840. package/plugins/perf/lib/enhance/auto-suppression.js +0 -622
  841. package/plugins/perf/lib/enhance/benchmark.js +0 -417
  842. package/plugins/perf/lib/enhance/cross-file-analyzer.js +0 -930
  843. package/plugins/perf/lib/enhance/cross-file-patterns.js +0 -370
  844. package/plugins/perf/lib/enhance/docs-analyzer.js +0 -325
  845. package/plugins/perf/lib/enhance/docs-patterns.js +0 -671
  846. package/plugins/perf/lib/enhance/fixer.js +0 -721
  847. package/plugins/perf/lib/enhance/hook-analyzer.js +0 -135
  848. package/plugins/perf/lib/enhance/hook-patterns.js +0 -40
  849. package/plugins/perf/lib/enhance/index.js +0 -127
  850. package/plugins/perf/lib/enhance/plugin-analyzer.js +0 -402
  851. package/plugins/perf/lib/enhance/plugin-patterns.js +0 -326
  852. package/plugins/perf/lib/enhance/projectmemory-analyzer.js +0 -551
  853. package/plugins/perf/lib/enhance/projectmemory-patterns.js +0 -617
  854. package/plugins/perf/lib/enhance/prompt-analyzer.js +0 -457
  855. package/plugins/perf/lib/enhance/prompt-patterns.js +0 -1484
  856. package/plugins/perf/lib/enhance/reporter.js +0 -1348
  857. package/plugins/perf/lib/enhance/security-patterns.js +0 -284
  858. package/plugins/perf/lib/enhance/skill-analyzer.js +0 -182
  859. package/plugins/perf/lib/enhance/skill-patterns.js +0 -147
  860. package/plugins/perf/lib/enhance/suppression.js +0 -352
  861. package/plugins/perf/lib/enhance/tool-patterns.js +0 -373
  862. package/plugins/perf/lib/index.js +0 -270
  863. package/plugins/perf/lib/patterns/cli-enhancers.js +0 -611
  864. package/plugins/perf/lib/patterns/pipeline.js +0 -948
  865. package/plugins/perf/lib/patterns/review-patterns.js +0 -558
  866. package/plugins/perf/lib/patterns/slop-analyzers.js +0 -2305
  867. package/plugins/perf/lib/patterns/slop-patterns.js +0 -1187
  868. package/plugins/perf/lib/perf/analyzer/index.js +0 -22
  869. package/plugins/perf/lib/perf/argument-parser.js +0 -105
  870. package/plugins/perf/lib/perf/baseline-comparator.js +0 -50
  871. package/plugins/perf/lib/perf/baseline-store.js +0 -127
  872. package/plugins/perf/lib/perf/benchmark-runner.js +0 -404
  873. package/plugins/perf/lib/perf/breaking-point-finder.js +0 -52
  874. package/plugins/perf/lib/perf/breaking-point-runner.js +0 -60
  875. package/plugins/perf/lib/perf/checkpoint.js +0 -123
  876. package/plugins/perf/lib/perf/code-paths.js +0 -86
  877. package/plugins/perf/lib/perf/consolidation.js +0 -37
  878. package/plugins/perf/lib/perf/constraint-runner.js +0 -71
  879. package/plugins/perf/lib/perf/experiment-runner.js +0 -32
  880. package/plugins/perf/lib/perf/index.js +0 -41
  881. package/plugins/perf/lib/perf/investigation-state.js +0 -874
  882. package/plugins/perf/lib/perf/optimization-runner.js +0 -79
  883. package/plugins/perf/lib/perf/profilers/go.js +0 -22
  884. package/plugins/perf/lib/perf/profilers/index.js +0 -46
  885. package/plugins/perf/lib/perf/profilers/java.js +0 -23
  886. package/plugins/perf/lib/perf/profilers/node.js +0 -27
  887. package/plugins/perf/lib/perf/profilers/python.js +0 -23
  888. package/plugins/perf/lib/perf/profilers/rust.js +0 -23
  889. package/plugins/perf/lib/perf/profiling-runner.js +0 -75
  890. package/plugins/perf/lib/perf/schemas.js +0 -140
  891. package/plugins/perf/lib/platform/detect-platform.js +0 -413
  892. package/plugins/perf/lib/platform/detection-configs.js +0 -93
  893. package/plugins/perf/lib/platform/state-dir.js +0 -132
  894. package/plugins/perf/lib/platform/verify-tools.js +0 -182
  895. package/plugins/perf/lib/repo-map/cache.js +0 -152
  896. package/plugins/perf/lib/repo-map/concurrency.js +0 -29
  897. package/plugins/perf/lib/repo-map/index.js +0 -222
  898. package/plugins/perf/lib/repo-map/installer.js +0 -212
  899. package/plugins/perf/lib/repo-map/queries/go.js +0 -27
  900. package/plugins/perf/lib/repo-map/queries/index.js +0 -100
  901. package/plugins/perf/lib/repo-map/queries/java.js +0 -38
  902. package/plugins/perf/lib/repo-map/queries/javascript.js +0 -55
  903. package/plugins/perf/lib/repo-map/queries/python.js +0 -24
  904. package/plugins/perf/lib/repo-map/queries/rust.js +0 -73
  905. package/plugins/perf/lib/repo-map/queries/typescript.js +0 -38
  906. package/plugins/perf/lib/repo-map/runner.js +0 -1364
  907. package/plugins/perf/lib/repo-map/updater.js +0 -562
  908. package/plugins/perf/lib/repo-map/usage-analyzer.js +0 -407
  909. package/plugins/perf/lib/schemas/plugin-manifest.schema.json +0 -57
  910. package/plugins/perf/lib/schemas/validator.js +0 -247
  911. package/plugins/perf/lib/sources/custom-handler.js +0 -199
  912. package/plugins/perf/lib/sources/policy-questions.js +0 -246
  913. package/plugins/perf/lib/sources/source-cache.js +0 -165
  914. package/plugins/perf/lib/state/workflow-state.js +0 -576
  915. package/plugins/perf/lib/types/agent-frontmatter.d.ts +0 -134
  916. package/plugins/perf/lib/types/command-frontmatter.d.ts +0 -107
  917. package/plugins/perf/lib/types/hook-frontmatter.d.ts +0 -115
  918. package/plugins/perf/lib/types/index.d.ts +0 -84
  919. package/plugins/perf/lib/types/plugin-manifest.d.ts +0 -102
  920. package/plugins/perf/lib/types/skill-frontmatter.d.ts +0 -89
  921. package/plugins/perf/lib/utils/atomic-write.js +0 -94
  922. package/plugins/perf/lib/utils/cache-manager.js +0 -159
  923. package/plugins/perf/lib/utils/command-parser.js +0 -0
  924. package/plugins/perf/lib/utils/context-optimizer.js +0 -300
  925. package/plugins/perf/lib/utils/deprecation.js +0 -37
  926. package/plugins/perf/lib/utils/shell-escape.js +0 -88
  927. package/plugins/perf/lib/utils/state-helpers.js +0 -61
  928. package/plugins/perf/skills/perf-analyzer/SKILL.md +0 -37
  929. package/plugins/perf/skills/perf-baseline-manager/SKILL.md +0 -30
  930. package/plugins/perf/skills/perf-benchmarker/SKILL.md +0 -52
  931. package/plugins/perf/skills/perf-code-paths/SKILL.md +0 -32
  932. package/plugins/perf/skills/perf-investigation-logger/SKILL.md +0 -41
  933. package/plugins/perf/skills/perf-profiler/SKILL.md +0 -42
  934. package/plugins/perf/skills/perf-theory-gatherer/SKILL.md +0 -35
  935. package/plugins/perf/skills/perf-theory-tester/SKILL.md +0 -36
  936. package/plugins/repo-map/.claude-plugin/plugin.json +0 -22
  937. package/plugins/repo-map/agents/map-validator.md +0 -60
  938. package/plugins/repo-map/commands/repo-map.md +0 -133
  939. package/plugins/repo-map/lib/adapter-transforms.js +0 -278
  940. package/plugins/repo-map/lib/collectors/codebase.js +0 -392
  941. package/plugins/repo-map/lib/collectors/docs-patterns.js +0 -713
  942. package/plugins/repo-map/lib/collectors/documentation.js +0 -219
  943. package/plugins/repo-map/lib/collectors/github.js +0 -330
  944. package/plugins/repo-map/lib/collectors/index.js +0 -126
  945. package/plugins/repo-map/lib/config/index.js +0 -14
  946. package/plugins/repo-map/lib/cross-platform/index.js +0 -539
  947. package/plugins/repo-map/lib/discovery/index.js +0 -352
  948. package/plugins/repo-map/lib/drift-detect/collectors.js +0 -37
  949. package/plugins/repo-map/lib/enhance/agent-analyzer.js +0 -421
  950. package/plugins/repo-map/lib/enhance/agent-patterns.js +0 -571
  951. package/plugins/repo-map/lib/enhance/auto-suppression.js +0 -622
  952. package/plugins/repo-map/lib/enhance/benchmark.js +0 -417
  953. package/plugins/repo-map/lib/enhance/cross-file-analyzer.js +0 -930
  954. package/plugins/repo-map/lib/enhance/cross-file-patterns.js +0 -370
  955. package/plugins/repo-map/lib/enhance/docs-analyzer.js +0 -325
  956. package/plugins/repo-map/lib/enhance/docs-patterns.js +0 -671
  957. package/plugins/repo-map/lib/enhance/fixer.js +0 -721
  958. package/plugins/repo-map/lib/enhance/hook-analyzer.js +0 -135
  959. package/plugins/repo-map/lib/enhance/hook-patterns.js +0 -40
  960. package/plugins/repo-map/lib/enhance/index.js +0 -127
  961. package/plugins/repo-map/lib/enhance/plugin-analyzer.js +0 -402
  962. package/plugins/repo-map/lib/enhance/plugin-patterns.js +0 -326
  963. package/plugins/repo-map/lib/enhance/projectmemory-analyzer.js +0 -551
  964. package/plugins/repo-map/lib/enhance/projectmemory-patterns.js +0 -617
  965. package/plugins/repo-map/lib/enhance/prompt-analyzer.js +0 -457
  966. package/plugins/repo-map/lib/enhance/prompt-patterns.js +0 -1484
  967. package/plugins/repo-map/lib/enhance/reporter.js +0 -1348
  968. package/plugins/repo-map/lib/enhance/security-patterns.js +0 -284
  969. package/plugins/repo-map/lib/enhance/skill-analyzer.js +0 -182
  970. package/plugins/repo-map/lib/enhance/skill-patterns.js +0 -147
  971. package/plugins/repo-map/lib/enhance/suppression.js +0 -352
  972. package/plugins/repo-map/lib/enhance/tool-patterns.js +0 -373
  973. package/plugins/repo-map/lib/index.js +0 -270
  974. package/plugins/repo-map/lib/patterns/cli-enhancers.js +0 -611
  975. package/plugins/repo-map/lib/patterns/pipeline.js +0 -948
  976. package/plugins/repo-map/lib/patterns/review-patterns.js +0 -558
  977. package/plugins/repo-map/lib/patterns/slop-analyzers.js +0 -2305
  978. package/plugins/repo-map/lib/patterns/slop-patterns.js +0 -1187
  979. package/plugins/repo-map/lib/perf/analyzer/index.js +0 -22
  980. package/plugins/repo-map/lib/perf/argument-parser.js +0 -105
  981. package/plugins/repo-map/lib/perf/baseline-comparator.js +0 -50
  982. package/plugins/repo-map/lib/perf/baseline-store.js +0 -127
  983. package/plugins/repo-map/lib/perf/benchmark-runner.js +0 -404
  984. package/plugins/repo-map/lib/perf/breaking-point-finder.js +0 -52
  985. package/plugins/repo-map/lib/perf/breaking-point-runner.js +0 -60
  986. package/plugins/repo-map/lib/perf/checkpoint.js +0 -123
  987. package/plugins/repo-map/lib/perf/code-paths.js +0 -86
  988. package/plugins/repo-map/lib/perf/consolidation.js +0 -37
  989. package/plugins/repo-map/lib/perf/constraint-runner.js +0 -71
  990. package/plugins/repo-map/lib/perf/experiment-runner.js +0 -32
  991. package/plugins/repo-map/lib/perf/index.js +0 -41
  992. package/plugins/repo-map/lib/perf/investigation-state.js +0 -874
  993. package/plugins/repo-map/lib/perf/optimization-runner.js +0 -79
  994. package/plugins/repo-map/lib/perf/profilers/go.js +0 -22
  995. package/plugins/repo-map/lib/perf/profilers/index.js +0 -46
  996. package/plugins/repo-map/lib/perf/profilers/java.js +0 -23
  997. package/plugins/repo-map/lib/perf/profilers/node.js +0 -27
  998. package/plugins/repo-map/lib/perf/profilers/python.js +0 -23
  999. package/plugins/repo-map/lib/perf/profilers/rust.js +0 -23
  1000. package/plugins/repo-map/lib/perf/profiling-runner.js +0 -75
  1001. package/plugins/repo-map/lib/perf/schemas.js +0 -140
  1002. package/plugins/repo-map/lib/platform/detect-platform.js +0 -413
  1003. package/plugins/repo-map/lib/platform/detection-configs.js +0 -93
  1004. package/plugins/repo-map/lib/platform/state-dir.js +0 -132
  1005. package/plugins/repo-map/lib/platform/verify-tools.js +0 -182
  1006. package/plugins/repo-map/lib/repo-map/cache.js +0 -152
  1007. package/plugins/repo-map/lib/repo-map/concurrency.js +0 -29
  1008. package/plugins/repo-map/lib/repo-map/index.js +0 -222
  1009. package/plugins/repo-map/lib/repo-map/installer.js +0 -212
  1010. package/plugins/repo-map/lib/repo-map/queries/go.js +0 -27
  1011. package/plugins/repo-map/lib/repo-map/queries/index.js +0 -100
  1012. package/plugins/repo-map/lib/repo-map/queries/java.js +0 -38
  1013. package/plugins/repo-map/lib/repo-map/queries/javascript.js +0 -55
  1014. package/plugins/repo-map/lib/repo-map/queries/python.js +0 -24
  1015. package/plugins/repo-map/lib/repo-map/queries/rust.js +0 -73
  1016. package/plugins/repo-map/lib/repo-map/queries/typescript.js +0 -38
  1017. package/plugins/repo-map/lib/repo-map/runner.js +0 -1364
  1018. package/plugins/repo-map/lib/repo-map/updater.js +0 -562
  1019. package/plugins/repo-map/lib/repo-map/usage-analyzer.js +0 -407
  1020. package/plugins/repo-map/lib/schemas/plugin-manifest.schema.json +0 -57
  1021. package/plugins/repo-map/lib/schemas/validator.js +0 -247
  1022. package/plugins/repo-map/lib/sources/custom-handler.js +0 -199
  1023. package/plugins/repo-map/lib/sources/policy-questions.js +0 -246
  1024. package/plugins/repo-map/lib/sources/source-cache.js +0 -165
  1025. package/plugins/repo-map/lib/state/workflow-state.js +0 -576
  1026. package/plugins/repo-map/lib/types/agent-frontmatter.d.ts +0 -134
  1027. package/plugins/repo-map/lib/types/command-frontmatter.d.ts +0 -107
  1028. package/plugins/repo-map/lib/types/hook-frontmatter.d.ts +0 -115
  1029. package/plugins/repo-map/lib/types/index.d.ts +0 -84
  1030. package/plugins/repo-map/lib/types/plugin-manifest.d.ts +0 -102
  1031. package/plugins/repo-map/lib/types/skill-frontmatter.d.ts +0 -89
  1032. package/plugins/repo-map/lib/utils/atomic-write.js +0 -94
  1033. package/plugins/repo-map/lib/utils/cache-manager.js +0 -159
  1034. package/plugins/repo-map/lib/utils/command-parser.js +0 -0
  1035. package/plugins/repo-map/lib/utils/context-optimizer.js +0 -300
  1036. package/plugins/repo-map/lib/utils/deprecation.js +0 -37
  1037. package/plugins/repo-map/lib/utils/shell-escape.js +0 -88
  1038. package/plugins/repo-map/lib/utils/state-helpers.js +0 -61
  1039. package/plugins/repo-map/skills/repo-mapping/SKILL.md +0 -83
  1040. package/plugins/ship/.claude-plugin/plugin.json +0 -21
  1041. package/plugins/ship/commands/ship-ci-review-loop.md +0 -472
  1042. package/plugins/ship/commands/ship-deployment.md +0 -335
  1043. package/plugins/ship/commands/ship-error-handling.md +0 -258
  1044. package/plugins/ship/commands/ship.md +0 -492
  1045. package/plugins/ship/lib/adapter-transforms.js +0 -278
  1046. package/plugins/ship/lib/collectors/codebase.js +0 -392
  1047. package/plugins/ship/lib/collectors/docs-patterns.js +0 -713
  1048. package/plugins/ship/lib/collectors/documentation.js +0 -219
  1049. package/plugins/ship/lib/collectors/github.js +0 -330
  1050. package/plugins/ship/lib/collectors/index.js +0 -126
  1051. package/plugins/ship/lib/config/index.js +0 -14
  1052. package/plugins/ship/lib/cross-platform/index.js +0 -539
  1053. package/plugins/ship/lib/discovery/index.js +0 -352
  1054. package/plugins/ship/lib/drift-detect/collectors.js +0 -37
  1055. package/plugins/ship/lib/enhance/agent-analyzer.js +0 -421
  1056. package/plugins/ship/lib/enhance/agent-patterns.js +0 -571
  1057. package/plugins/ship/lib/enhance/auto-suppression.js +0 -622
  1058. package/plugins/ship/lib/enhance/benchmark.js +0 -417
  1059. package/plugins/ship/lib/enhance/cross-file-analyzer.js +0 -930
  1060. package/plugins/ship/lib/enhance/cross-file-patterns.js +0 -370
  1061. package/plugins/ship/lib/enhance/docs-analyzer.js +0 -325
  1062. package/plugins/ship/lib/enhance/docs-patterns.js +0 -671
  1063. package/plugins/ship/lib/enhance/fixer.js +0 -721
  1064. package/plugins/ship/lib/enhance/hook-analyzer.js +0 -135
  1065. package/plugins/ship/lib/enhance/hook-patterns.js +0 -40
  1066. package/plugins/ship/lib/enhance/index.js +0 -127
  1067. package/plugins/ship/lib/enhance/plugin-analyzer.js +0 -402
  1068. package/plugins/ship/lib/enhance/plugin-patterns.js +0 -326
  1069. package/plugins/ship/lib/enhance/projectmemory-analyzer.js +0 -551
  1070. package/plugins/ship/lib/enhance/projectmemory-patterns.js +0 -617
  1071. package/plugins/ship/lib/enhance/prompt-analyzer.js +0 -457
  1072. package/plugins/ship/lib/enhance/prompt-patterns.js +0 -1484
  1073. package/plugins/ship/lib/enhance/reporter.js +0 -1348
  1074. package/plugins/ship/lib/enhance/security-patterns.js +0 -284
  1075. package/plugins/ship/lib/enhance/skill-analyzer.js +0 -182
  1076. package/plugins/ship/lib/enhance/skill-patterns.js +0 -147
  1077. package/plugins/ship/lib/enhance/suppression.js +0 -352
  1078. package/plugins/ship/lib/enhance/tool-patterns.js +0 -373
  1079. package/plugins/ship/lib/index.js +0 -270
  1080. package/plugins/ship/lib/patterns/cli-enhancers.js +0 -611
  1081. package/plugins/ship/lib/patterns/pipeline.js +0 -948
  1082. package/plugins/ship/lib/patterns/review-patterns.js +0 -558
  1083. package/plugins/ship/lib/patterns/slop-analyzers.js +0 -2305
  1084. package/plugins/ship/lib/patterns/slop-patterns.js +0 -1187
  1085. package/plugins/ship/lib/perf/analyzer/index.js +0 -22
  1086. package/plugins/ship/lib/perf/argument-parser.js +0 -105
  1087. package/plugins/ship/lib/perf/baseline-comparator.js +0 -50
  1088. package/plugins/ship/lib/perf/baseline-store.js +0 -127
  1089. package/plugins/ship/lib/perf/benchmark-runner.js +0 -404
  1090. package/plugins/ship/lib/perf/breaking-point-finder.js +0 -52
  1091. package/plugins/ship/lib/perf/breaking-point-runner.js +0 -60
  1092. package/plugins/ship/lib/perf/checkpoint.js +0 -123
  1093. package/plugins/ship/lib/perf/code-paths.js +0 -86
  1094. package/plugins/ship/lib/perf/consolidation.js +0 -37
  1095. package/plugins/ship/lib/perf/constraint-runner.js +0 -71
  1096. package/plugins/ship/lib/perf/experiment-runner.js +0 -32
  1097. package/plugins/ship/lib/perf/index.js +0 -41
  1098. package/plugins/ship/lib/perf/investigation-state.js +0 -874
  1099. package/plugins/ship/lib/perf/optimization-runner.js +0 -79
  1100. package/plugins/ship/lib/perf/profilers/go.js +0 -22
  1101. package/plugins/ship/lib/perf/profilers/index.js +0 -46
  1102. package/plugins/ship/lib/perf/profilers/java.js +0 -23
  1103. package/plugins/ship/lib/perf/profilers/node.js +0 -27
  1104. package/plugins/ship/lib/perf/profilers/python.js +0 -23
  1105. package/plugins/ship/lib/perf/profilers/rust.js +0 -23
  1106. package/plugins/ship/lib/perf/profiling-runner.js +0 -75
  1107. package/plugins/ship/lib/perf/schemas.js +0 -140
  1108. package/plugins/ship/lib/platform/detect-platform.js +0 -413
  1109. package/plugins/ship/lib/platform/detection-configs.js +0 -93
  1110. package/plugins/ship/lib/platform/state-dir.js +0 -132
  1111. package/plugins/ship/lib/platform/verify-tools.js +0 -182
  1112. package/plugins/ship/lib/repo-map/cache.js +0 -152
  1113. package/plugins/ship/lib/repo-map/concurrency.js +0 -29
  1114. package/plugins/ship/lib/repo-map/index.js +0 -222
  1115. package/plugins/ship/lib/repo-map/installer.js +0 -212
  1116. package/plugins/ship/lib/repo-map/queries/go.js +0 -27
  1117. package/plugins/ship/lib/repo-map/queries/index.js +0 -100
  1118. package/plugins/ship/lib/repo-map/queries/java.js +0 -38
  1119. package/plugins/ship/lib/repo-map/queries/javascript.js +0 -55
  1120. package/plugins/ship/lib/repo-map/queries/python.js +0 -24
  1121. package/plugins/ship/lib/repo-map/queries/rust.js +0 -73
  1122. package/plugins/ship/lib/repo-map/queries/typescript.js +0 -38
  1123. package/plugins/ship/lib/repo-map/runner.js +0 -1364
  1124. package/plugins/ship/lib/repo-map/updater.js +0 -562
  1125. package/plugins/ship/lib/repo-map/usage-analyzer.js +0 -407
  1126. package/plugins/ship/lib/schemas/plugin-manifest.schema.json +0 -57
  1127. package/plugins/ship/lib/schemas/validator.js +0 -247
  1128. package/plugins/ship/lib/sources/custom-handler.js +0 -199
  1129. package/plugins/ship/lib/sources/policy-questions.js +0 -246
  1130. package/plugins/ship/lib/sources/source-cache.js +0 -165
  1131. package/plugins/ship/lib/state/workflow-state.js +0 -576
  1132. package/plugins/ship/lib/types/agent-frontmatter.d.ts +0 -134
  1133. package/plugins/ship/lib/types/command-frontmatter.d.ts +0 -107
  1134. package/plugins/ship/lib/types/hook-frontmatter.d.ts +0 -115
  1135. package/plugins/ship/lib/types/index.d.ts +0 -84
  1136. package/plugins/ship/lib/types/plugin-manifest.d.ts +0 -102
  1137. package/plugins/ship/lib/types/skill-frontmatter.d.ts +0 -89
  1138. package/plugins/ship/lib/utils/atomic-write.js +0 -94
  1139. package/plugins/ship/lib/utils/cache-manager.js +0 -159
  1140. package/plugins/ship/lib/utils/command-parser.js +0 -0
  1141. package/plugins/ship/lib/utils/context-optimizer.js +0 -300
  1142. package/plugins/ship/lib/utils/deprecation.js +0 -37
  1143. package/plugins/ship/lib/utils/shell-escape.js +0 -88
  1144. package/plugins/ship/lib/utils/state-helpers.js +0 -61
  1145. package/plugins/sync-docs/.claude-plugin/plugin.json +0 -20
  1146. package/plugins/sync-docs/agents/sync-docs-agent.md +0 -154
  1147. package/plugins/sync-docs/commands/sync-docs.md +0 -186
  1148. package/plugins/sync-docs/lib/adapter-transforms.js +0 -278
  1149. package/plugins/sync-docs/lib/collectors/codebase.js +0 -392
  1150. package/plugins/sync-docs/lib/collectors/docs-patterns.js +0 -713
  1151. package/plugins/sync-docs/lib/collectors/documentation.js +0 -219
  1152. package/plugins/sync-docs/lib/collectors/github.js +0 -330
  1153. package/plugins/sync-docs/lib/collectors/index.js +0 -126
  1154. package/plugins/sync-docs/lib/config/index.js +0 -14
  1155. package/plugins/sync-docs/lib/cross-platform/index.js +0 -539
  1156. package/plugins/sync-docs/lib/discovery/index.js +0 -352
  1157. package/plugins/sync-docs/lib/drift-detect/collectors.js +0 -37
  1158. package/plugins/sync-docs/lib/enhance/agent-analyzer.js +0 -421
  1159. package/plugins/sync-docs/lib/enhance/agent-patterns.js +0 -571
  1160. package/plugins/sync-docs/lib/enhance/auto-suppression.js +0 -622
  1161. package/plugins/sync-docs/lib/enhance/benchmark.js +0 -417
  1162. package/plugins/sync-docs/lib/enhance/cross-file-analyzer.js +0 -930
  1163. package/plugins/sync-docs/lib/enhance/cross-file-patterns.js +0 -370
  1164. package/plugins/sync-docs/lib/enhance/docs-analyzer.js +0 -325
  1165. package/plugins/sync-docs/lib/enhance/docs-patterns.js +0 -671
  1166. package/plugins/sync-docs/lib/enhance/fixer.js +0 -721
  1167. package/plugins/sync-docs/lib/enhance/hook-analyzer.js +0 -135
  1168. package/plugins/sync-docs/lib/enhance/hook-patterns.js +0 -40
  1169. package/plugins/sync-docs/lib/enhance/index.js +0 -127
  1170. package/plugins/sync-docs/lib/enhance/plugin-analyzer.js +0 -402
  1171. package/plugins/sync-docs/lib/enhance/plugin-patterns.js +0 -326
  1172. package/plugins/sync-docs/lib/enhance/projectmemory-analyzer.js +0 -551
  1173. package/plugins/sync-docs/lib/enhance/projectmemory-patterns.js +0 -617
  1174. package/plugins/sync-docs/lib/enhance/prompt-analyzer.js +0 -457
  1175. package/plugins/sync-docs/lib/enhance/prompt-patterns.js +0 -1484
  1176. package/plugins/sync-docs/lib/enhance/reporter.js +0 -1348
  1177. package/plugins/sync-docs/lib/enhance/security-patterns.js +0 -284
  1178. package/plugins/sync-docs/lib/enhance/skill-analyzer.js +0 -182
  1179. package/plugins/sync-docs/lib/enhance/skill-patterns.js +0 -147
  1180. package/plugins/sync-docs/lib/enhance/suppression.js +0 -352
  1181. package/plugins/sync-docs/lib/enhance/tool-patterns.js +0 -373
  1182. package/plugins/sync-docs/lib/index.js +0 -270
  1183. package/plugins/sync-docs/lib/patterns/cli-enhancers.js +0 -611
  1184. package/plugins/sync-docs/lib/patterns/pipeline.js +0 -948
  1185. package/plugins/sync-docs/lib/patterns/review-patterns.js +0 -558
  1186. package/plugins/sync-docs/lib/patterns/slop-analyzers.js +0 -2305
  1187. package/plugins/sync-docs/lib/patterns/slop-patterns.js +0 -1187
  1188. package/plugins/sync-docs/lib/perf/analyzer/index.js +0 -22
  1189. package/plugins/sync-docs/lib/perf/argument-parser.js +0 -105
  1190. package/plugins/sync-docs/lib/perf/baseline-comparator.js +0 -50
  1191. package/plugins/sync-docs/lib/perf/baseline-store.js +0 -127
  1192. package/plugins/sync-docs/lib/perf/benchmark-runner.js +0 -404
  1193. package/plugins/sync-docs/lib/perf/breaking-point-finder.js +0 -52
  1194. package/plugins/sync-docs/lib/perf/breaking-point-runner.js +0 -60
  1195. package/plugins/sync-docs/lib/perf/checkpoint.js +0 -123
  1196. package/plugins/sync-docs/lib/perf/code-paths.js +0 -86
  1197. package/plugins/sync-docs/lib/perf/consolidation.js +0 -37
  1198. package/plugins/sync-docs/lib/perf/constraint-runner.js +0 -71
  1199. package/plugins/sync-docs/lib/perf/experiment-runner.js +0 -32
  1200. package/plugins/sync-docs/lib/perf/index.js +0 -41
  1201. package/plugins/sync-docs/lib/perf/investigation-state.js +0 -874
  1202. package/plugins/sync-docs/lib/perf/optimization-runner.js +0 -79
  1203. package/plugins/sync-docs/lib/perf/profilers/go.js +0 -22
  1204. package/plugins/sync-docs/lib/perf/profilers/index.js +0 -46
  1205. package/plugins/sync-docs/lib/perf/profilers/java.js +0 -23
  1206. package/plugins/sync-docs/lib/perf/profilers/node.js +0 -27
  1207. package/plugins/sync-docs/lib/perf/profilers/python.js +0 -23
  1208. package/plugins/sync-docs/lib/perf/profilers/rust.js +0 -23
  1209. package/plugins/sync-docs/lib/perf/profiling-runner.js +0 -75
  1210. package/plugins/sync-docs/lib/perf/schemas.js +0 -140
  1211. package/plugins/sync-docs/lib/platform/detect-platform.js +0 -413
  1212. package/plugins/sync-docs/lib/platform/detection-configs.js +0 -93
  1213. package/plugins/sync-docs/lib/platform/state-dir.js +0 -132
  1214. package/plugins/sync-docs/lib/platform/verify-tools.js +0 -182
  1215. package/plugins/sync-docs/lib/repo-map/cache.js +0 -152
  1216. package/plugins/sync-docs/lib/repo-map/concurrency.js +0 -29
  1217. package/plugins/sync-docs/lib/repo-map/index.js +0 -222
  1218. package/plugins/sync-docs/lib/repo-map/installer.js +0 -212
  1219. package/plugins/sync-docs/lib/repo-map/queries/go.js +0 -27
  1220. package/plugins/sync-docs/lib/repo-map/queries/index.js +0 -100
  1221. package/plugins/sync-docs/lib/repo-map/queries/java.js +0 -38
  1222. package/plugins/sync-docs/lib/repo-map/queries/javascript.js +0 -55
  1223. package/plugins/sync-docs/lib/repo-map/queries/python.js +0 -24
  1224. package/plugins/sync-docs/lib/repo-map/queries/rust.js +0 -73
  1225. package/plugins/sync-docs/lib/repo-map/queries/typescript.js +0 -38
  1226. package/plugins/sync-docs/lib/repo-map/runner.js +0 -1364
  1227. package/plugins/sync-docs/lib/repo-map/updater.js +0 -562
  1228. package/plugins/sync-docs/lib/repo-map/usage-analyzer.js +0 -407
  1229. package/plugins/sync-docs/lib/schemas/plugin-manifest.schema.json +0 -57
  1230. package/plugins/sync-docs/lib/schemas/validator.js +0 -247
  1231. package/plugins/sync-docs/lib/sources/custom-handler.js +0 -199
  1232. package/plugins/sync-docs/lib/sources/policy-questions.js +0 -246
  1233. package/plugins/sync-docs/lib/sources/source-cache.js +0 -165
  1234. package/plugins/sync-docs/lib/state/workflow-state.js +0 -576
  1235. package/plugins/sync-docs/lib/types/agent-frontmatter.d.ts +0 -134
  1236. package/plugins/sync-docs/lib/types/command-frontmatter.d.ts +0 -107
  1237. package/plugins/sync-docs/lib/types/hook-frontmatter.d.ts +0 -115
  1238. package/plugins/sync-docs/lib/types/index.d.ts +0 -84
  1239. package/plugins/sync-docs/lib/types/plugin-manifest.d.ts +0 -102
  1240. package/plugins/sync-docs/lib/types/skill-frontmatter.d.ts +0 -89
  1241. package/plugins/sync-docs/lib/utils/atomic-write.js +0 -94
  1242. package/plugins/sync-docs/lib/utils/cache-manager.js +0 -159
  1243. package/plugins/sync-docs/lib/utils/command-parser.js +0 -0
  1244. package/plugins/sync-docs/lib/utils/context-optimizer.js +0 -300
  1245. package/plugins/sync-docs/lib/utils/deprecation.js +0 -37
  1246. package/plugins/sync-docs/lib/utils/shell-escape.js +0 -88
  1247. package/plugins/sync-docs/lib/utils/state-helpers.js +0 -61
  1248. package/plugins/sync-docs/skills/sync-docs/SKILL.md +0 -351
@@ -1,1484 +0,0 @@
1
- /**
2
- * Prompt Patterns
3
- * Detection patterns for general prompt engineering best practices
4
- *
5
- * @author Avi Fenesh
6
- * @license MIT
7
- */
8
-
9
- /**
10
- * Estimate tokens from text (1 token ~ 4 characters)
11
- * @param {string} text - Text to estimate
12
- * @returns {number} Estimated token count
13
- */
14
- function estimateTokens(text) {
15
- if (!text || typeof text !== 'string') return 0;
16
- return Math.ceil(text.length / 4);
17
- }
18
-
19
- // Pre-compiled regex patterns for performance (avoid compiling in hot paths)
20
- const FENCE_START_REGEX = /^(\s*)```(\w*)\s*$/;
21
- const FENCE_END_REGEX = /^(\s*)```\s*$/;
22
- // Match both good and bad example tags - skip both for code validation
23
- // (good examples may have simplified/pseudo-code, bad examples intentionally show errors)
24
- const EXAMPLE_TAG_REGEX = /<(?:good|bad)[_-]?example>([\s\S]*?)<\/(?:good|bad)[_-]?example>/gi;
25
-
26
- // Language detection patterns (pre-compiled for code_language_mismatch)
27
- const LOOKS_LIKE_JSON_START = /^\s*[\[{]/;
28
- const LOOKS_LIKE_JSON_CONTENT = /[:,]/;
29
- const NOT_JSON_KEYWORDS = /(function|const|let|var|if|for|while|class)\b/;
30
- // JS patterns require syntax context (not just keywords that might appear in JSON strings)
31
- const LOOKS_LIKE_JS = /\b(function\s*\(|const\s+\w+\s*=|let\s+\w+\s*=|var\s+\w+\s*=|=>\s*[{(]|async\s+function|await\s+\w|class\s+\w+\s*{|import\s+\{|export\s+(const|function|class|default)|require\s*\()/;
32
- const LOOKS_LIKE_PYTHON = /\b(def\s+\w+|import\s+\w+|from\s+\w+\s+import|class\s+\w+:|if\s[^:\n]*:|\s{4}|print\()\b/;
33
-
34
- // Memoization caches for performance (keyed by content hash)
35
- let _lastContent = null;
36
- let _exampleRanges = null;
37
- let _linePositions = null;
38
-
39
- /**
40
- * Extract fenced code blocks from markdown content
41
- * @param {string} content - Markdown content
42
- * @returns {Array<{language: string, code: string, startLine: number, endLine: number}>} Array of code blocks
43
- */
44
- function extractCodeBlocks(content) {
45
- if (!content || typeof content !== 'string') return [];
46
-
47
- const blocks = [];
48
- const lines = content.split('\n');
49
- let inCodeBlock = false;
50
- let currentBlock = null;
51
- let codeLines = [];
52
-
53
- for (let i = 0; i < lines.length; i++) {
54
- const line = lines[i];
55
- const lineNum = i + 1; // 1-indexed
56
-
57
- // Check for code fence start (``` with optional language)
58
- const fenceStartMatch = line.match(FENCE_START_REGEX);
59
- const fenceEndMatch = line.match(FENCE_END_REGEX);
60
-
61
- if (!inCodeBlock && fenceStartMatch) {
62
- // Start of code block
63
- inCodeBlock = true;
64
- currentBlock = {
65
- language: fenceStartMatch[2] || '', // Empty string if no language
66
- startLine: lineNum,
67
- indent: fenceStartMatch[1] || ''
68
- };
69
- codeLines = [];
70
- } else if (inCodeBlock && fenceEndMatch) {
71
- // End of code block
72
- inCodeBlock = false;
73
- if (currentBlock) {
74
- blocks.push({
75
- language: currentBlock.language,
76
- code: codeLines.join('\n'),
77
- startLine: currentBlock.startLine,
78
- endLine: lineNum
79
- });
80
- currentBlock = null;
81
- }
82
- codeLines = [];
83
- } else if (inCodeBlock) {
84
- // Inside code block - collect the code
85
- codeLines.push(line);
86
- }
87
- }
88
-
89
- // Handle unclosed code block at end of file
90
- if (inCodeBlock && currentBlock) {
91
- blocks.push({
92
- language: currentBlock.language,
93
- code: codeLines.join('\n'),
94
- startLine: currentBlock.startLine,
95
- endLine: lines.length
96
- });
97
- }
98
-
99
- return blocks;
100
- }
101
-
102
- /**
103
- * Build example ranges cache for a content string (both good and bad examples)
104
- * @param {string} content - Content to analyze
105
- * @returns {Array<{start: number, end: number}>} Array of example tag ranges
106
- */
107
- function buildExampleRanges(content) {
108
- const ranges = [];
109
- const regex = new RegExp(EXAMPLE_TAG_REGEX.source, EXAMPLE_TAG_REGEX.flags);
110
- let match;
111
-
112
- while ((match = regex.exec(content)) !== null) {
113
- ranges.push({
114
- start: match.index,
115
- end: match.index + match[0].length
116
- });
117
- }
118
- return ranges;
119
- }
120
-
121
- /**
122
- * Build line position cache for a content string
123
- * @param {string} content - Content to analyze
124
- * @returns {Array<number>} Array of character positions for each line start
125
- */
126
- function buildLinePositions(content) {
127
- const positions = [0]; // Line 1 starts at position 0
128
- let pos = 0;
129
- for (let i = 0; i < content.length; i++) {
130
- if (content[i] === '\n') {
131
- positions.push(i + 1);
132
- }
133
- }
134
- return positions;
135
- }
136
-
137
- /**
138
- * Invalidate cache if content changed
139
- * @param {string} content - Current content
140
- */
141
- function ensureCache(content) {
142
- if (content !== _lastContent) {
143
- _lastContent = content;
144
- _exampleRanges = buildExampleRanges(content);
145
- _linePositions = buildLinePositions(content);
146
- }
147
- }
148
-
149
- /**
150
- * Check if a position is inside an example tag (good or bad) (memoized)
151
- * @param {string} content - Full content
152
- * @param {number} position - Character position to check
153
- * @returns {boolean} True if inside example tags
154
- */
155
- function isInsideExampleTag(content, position) {
156
- if (!content || position < 0) return false;
157
-
158
- ensureCache(content);
159
-
160
- for (const range of _exampleRanges) {
161
- if (position >= range.start && position <= range.end) {
162
- return true;
163
- }
164
- }
165
-
166
- return false;
167
- }
168
-
169
- /**
170
- * Get character position for a line number (memoized)
171
- * @param {string} content - Content
172
- * @param {number} lineNumber - 1-indexed line number
173
- * @returns {number} Character position at start of line
174
- */
175
- function getPositionForLine(content, lineNumber) {
176
- if (!content || lineNumber < 1) return 0;
177
-
178
- ensureCache(content);
179
-
180
- const idx = lineNumber - 1;
181
- if (idx < _linePositions.length) {
182
- return _linePositions[idx];
183
- }
184
- return _linePositions[_linePositions.length - 1] || 0;
185
- }
186
-
187
- /**
188
- * Prompt patterns with certainty levels
189
- * Focuses on prompt quality (not agent-specific frontmatter/config)
190
- *
191
- * Categories:
192
- * - clarity: Clear, specific instructions
193
- * - structure: XML tags, sections, organization
194
- * - examples: Few-shot examples
195
- * - context: Context and motivation
196
- * - output: Output format specification
197
- * - anti-pattern: Common mistakes
198
- */
199
- const promptPatterns = {
200
- // ============================================
201
- // CLARITY PATTERNS (HIGH certainty)
202
- // ============================================
203
-
204
- /**
205
- * Vague instructions without specifics
206
- * HIGH certainty - fuzzy language reduces effectiveness
207
- */
208
- vague_instructions: {
209
- id: 'vague_instructions',
210
- category: 'clarity',
211
- certainty: 'HIGH',
212
- autoFix: false,
213
- description: 'Instructions use vague language like "usually", "sometimes", "try to"',
214
- check: (content) => {
215
- if (!content || typeof content !== 'string') return null;
216
-
217
- // Strip lines documenting vague patterns (not actual vague instructions)
218
- const lines = content.split('\n').filter(line => {
219
- const trimmed = line.trim().toLowerCase();
220
- // Skip lines listing vague terms as documentation
221
- if (/vague\s*(instructions?|terms?|language|patterns?)\s*[:"]/.test(trimmed)) return false;
222
- // Skip lines with quoted lists of vague words
223
- if (trimmed.includes('usually') && trimmed.includes('sometimes') && /["']/.test(trimmed)) return false;
224
- return true;
225
- });
226
- const filteredContent = lines.join('\n');
227
-
228
- const vaguePatterns = [
229
- { pattern: /\busually\b/gi, word: 'usually' },
230
- { pattern: /\bsometimes\b/gi, word: 'sometimes' },
231
- { pattern: /\boften\b/gi, word: 'often' },
232
- { pattern: /\brarely\b/gi, word: 'rarely' },
233
- { pattern: /\bmaybe\b/gi, word: 'maybe' },
234
- { pattern: /\bmight\b/gi, word: 'might' },
235
- { pattern: /\bshould probably\b/gi, word: 'should probably' },
236
- { pattern: /\btry to\b/gi, word: 'try to' },
237
- { pattern: /\bas much as possible\b/gi, word: 'as much as possible' },
238
- { pattern: /\bif possible\b/gi, word: 'if possible' },
239
- { pattern: /\bwhen appropriate\b/gi, word: 'when appropriate' },
240
- { pattern: /\bas needed\b/gi, word: 'as needed' }
241
- ];
242
-
243
- const found = [];
244
- for (const { pattern, word } of vaguePatterns) {
245
- const matches = filteredContent.match(pattern);
246
- if (matches) {
247
- found.push({ word, count: matches.length });
248
- }
249
- }
250
-
251
- const totalCount = found.reduce((sum, f) => sum + f.count, 0);
252
-
253
- if (totalCount >= 4) {
254
- const examples = found.slice(0, 3).map(f => `"${f.word}" (${f.count}x)`);
255
- return {
256
- issue: `Found ${totalCount} vague terms: ${examples.join(', ')}`,
257
- fix: 'Replace vague language with specific, deterministic instructions'
258
- };
259
- }
260
- return null;
261
- }
262
- },
263
-
264
- /**
265
- * Negative-only constraints without alternatives
266
- * HIGH certainty - "don't X" less effective than "do Y instead"
267
- */
268
- negative_only_constraints: {
269
- id: 'negative_only_constraints',
270
- category: 'clarity',
271
- certainty: 'HIGH',
272
- autoFix: false,
273
- description: 'Uses "don\'t", "never", "do not" without stating what TO do',
274
- check: (content) => {
275
- if (!content || typeof content !== 'string') return null;
276
-
277
- // Strip lines documenting bad patterns (not actual constraints)
278
- const lines = content.split('\n').filter(line => {
279
- const trimmed = line.trim().toLowerCase();
280
- // Skip lines that document anti-patterns
281
- if (/^-?\s*bad:|^\*\*bad\*\*:|^bad:/.test(trimmed)) return false;
282
- // Skip lines in "Bad/Good" comparison format
283
- if (/^-\s*"don't|^-\s*"never/.test(trimmed)) return false;
284
- return true;
285
- });
286
- const filteredContent = lines.join('\n');
287
-
288
- // Find negative constraints
289
- const negativePatterns = [
290
- /\bdon['']t\s+\w+/gi,
291
- /\bnever\s+\w+/gi,
292
- /\bdo not\s+\w+/gi,
293
- /\bavoid\s+\w+ing\b/gi,
294
- /\brefrain from\b/gi
295
- ];
296
-
297
- const negatives = [];
298
- for (const pattern of negativePatterns) {
299
- const matches = filteredContent.match(pattern);
300
- if (matches) {
301
- negatives.push(...matches.slice(0, 2));
302
- }
303
- }
304
-
305
- // Check if there are positive alternatives nearby
306
- const positiveIndicators = /\binstead\b|\brather\b|\buse\b.*\binstead\b|\bonly\s+\w+/gi;
307
- const hasAlternatives = positiveIndicators.test(filteredContent);
308
-
309
- if (negatives.length >= 5 && !hasAlternatives) {
310
- return {
311
- issue: `${negatives.length} negative constraints without positive alternatives`,
312
- fix: 'For each "don\'t X", also state what TO do instead',
313
- details: negatives.slice(0, 5)
314
- };
315
- }
316
- return null;
317
- }
318
- },
319
-
320
- /**
321
- * Missing explicit output format
322
- * HIGH certainty - prompts should specify expected output
323
- */
324
- missing_output_format: {
325
- id: 'missing_output_format',
326
- category: 'output',
327
- certainty: 'HIGH',
328
- autoFix: true,
329
- description: 'No clear output format specification',
330
- check: (content, filePath) => {
331
- if (!content || typeof content !== 'string') return null;
332
-
333
- // Skip workflow orchestrators that spawn agents/skills rather than produce output directly
334
- const lc = content.toLowerCase();
335
- const isOrchestrator = /##\s*Phase\s+\d+/i.test(content) || content.includes('Task({') ||
336
- (lc.includes('spawn') && lc.includes('agent')) || content.includes('subagent_type') ||
337
- content.includes('await Task(') || (lc.includes('invoke') && lc.includes('skill')) ||
338
- (/\bSkill\b/.test(content) && lc.includes('tool'));
339
- if (isOrchestrator) return null;
340
-
341
- // Skip reference docs and hooks (not prompts that produce conversational output)
342
- const isReferenceOrHook = /[/\\](?:references?|hooks?)[/\\]/i.test(filePath || '') ||
343
- /^##?\s*(?:reference|knowledge|background)/im.test(content);
344
- if (isReferenceOrHook) return null;
345
-
346
- // Check for output format indicators
347
- const outputIndicators = [
348
- /##\s*output\s*(?:format|templates?|expectations?)/i,
349
- /##\s*response\s*format/i,
350
- /##\s*(?:issue|report)\s*format/i,
351
- /##\s*format/i,
352
- /##\s*example\s*(?:input\/)?output/i,
353
- /\brespond\s+(?:with|in)\s+(?:JSON|XML|markdown|YAML)/i,
354
- /\boutput\s+a\s+(?:comprehensive|detailed|structured)/i,
355
- /\boutput\s*:\s*```/i,
356
- /<output_format>/i,
357
- /<response_format>/i,
358
- /your\s+(?:response|output)\s+should\s+(?:be|follow)/i,
359
- /\breturn(?:s|ing)?\s+(?:JSON|structured|formatted)/i
360
- ];
361
-
362
- for (const pattern of outputIndicators) {
363
- if (pattern.test(content)) {
364
- return null;
365
- }
366
- }
367
-
368
- // Only flag if prompt is substantial enough to warrant format spec
369
- const tokens = estimateTokens(content);
370
- if (tokens > 200) {
371
- return {
372
- issue: 'No output format specification found',
373
- fix: 'Add "## Output Format" section or <output_format> tags specifying expected response structure'
374
- };
375
- }
376
- return null;
377
- }
378
- },
379
-
380
- /**
381
- * Aggressive emphasis (CAPS, excessive emphasis)
382
- * HIGH certainty - overuse triggers over-indexing
383
- */
384
- aggressive_emphasis: {
385
- id: 'aggressive_emphasis',
386
- category: 'clarity',
387
- certainty: 'HIGH',
388
- autoFix: true,
389
- description: 'Excessive aggressive emphasis that may cause over-indexing',
390
- check: (content) => {
391
- if (!content || typeof content !== 'string') return null;
392
-
393
- // Detect specific aggressive patterns (CAPS only, not lowercase)
394
- const aggressivePatterns = [
395
- // Intensifiers that add no value (CAPS only)
396
- { pattern: /\bABSOLUTELY\b/g, word: 'ABSOLUTELY' },
397
- { pattern: /\bTOTALLY\b/g, word: 'TOTALLY' },
398
- { pattern: /\bCOMPLETELY\b/g, word: 'COMPLETELY' },
399
- { pattern: /\bENTIRELY\b/g, word: 'ENTIRELY' },
400
- { pattern: /\bDEFINITELY\b/g, word: 'DEFINITELY' },
401
- { pattern: /\bEXTREMELY\b/g, word: 'EXTREMELY' },
402
- // Aggressive phrases (CAPS only)
403
- { pattern: /\bEXTREMELY\s+IMPORTANT\b/g, word: 'EXTREMELY IMPORTANT' },
404
- { pattern: /\bSUPER\s+IMPORTANT\b/g, word: 'SUPER IMPORTANT' },
405
- { pattern: /\bVERY\s+VERY\b/g, word: 'VERY VERY' },
406
- // Excessive punctuation
407
- { pattern: /!{3,}/g, word: '!!!' },
408
- { pattern: /\?{3,}/g, word: '???' }
409
- ];
410
-
411
- const found = [];
412
- for (const { pattern, word } of aggressivePatterns) {
413
- const matches = content.match(pattern);
414
- if (matches) {
415
- found.push({ word, count: matches.length });
416
- }
417
- }
418
-
419
- const totalCount = found.reduce((sum, f) => sum + f.count, 0);
420
-
421
- // Only flag if multiple instances (threshold: 3+)
422
- if (totalCount >= 3) {
423
- const examples = found.slice(0, 3).map(f => `"${f.word}" (${f.count}x)`);
424
- return {
425
- issue: `${totalCount} instances of aggressive emphasis: ${examples.join(', ')}`,
426
- fix: 'Use normal language - models respond well to clear instructions without shouting',
427
- details: found.map(f => f.word)
428
- };
429
- }
430
- return null;
431
- }
432
- },
433
-
434
- // ============================================
435
- // STRUCTURE PATTERNS (HIGH/MEDIUM certainty)
436
- // ============================================
437
-
438
- /**
439
- * Missing XML structure for complex prompts
440
- * HIGH certainty - XML helps structure for Claude/GPT
441
- */
442
- missing_xml_structure: {
443
- id: 'missing_xml_structure',
444
- category: 'structure',
445
- certainty: 'LOW', // Very advisory - XML is optional enhancement
446
- autoFix: true,
447
- description: 'Complex prompt without XML tags for structure',
448
- check: (content) => {
449
- if (!content || typeof content !== 'string') return null;
450
-
451
- const tokens = estimateTokens(content);
452
- const sectionCount = (content.match(/^#{1,6}\s+/gm) || []).length;
453
- const hasCodeBlocks = /```/.test(content);
454
-
455
- // Complex prompt indicators
456
- const isComplex = tokens > 800 || (sectionCount >= 6 && hasCodeBlocks);
457
-
458
- // Check for XML tags
459
- const hasXML = /<[a-z_][a-z0-9_-]*>/i.test(content);
460
-
461
- if (isComplex && !hasXML) {
462
- return {
463
- issue: 'Complex prompt without XML structure tags',
464
- fix: 'Use XML tags like <role>, <constraints>, <examples>, <output_format> for key sections'
465
- };
466
- }
467
- return null;
468
- }
469
- },
470
-
471
- /**
472
- * Inconsistent section formatting
473
- * MEDIUM certainty - consistency aids parsing
474
- */
475
- inconsistent_sections: {
476
- id: 'inconsistent_sections',
477
- category: 'structure',
478
- certainty: 'LOW', // Style preference, not a real issue
479
- autoFix: false,
480
- description: 'Mixed heading styles or inconsistent section patterns',
481
- check: (content) => {
482
- if (!content || typeof content !== 'string') return null;
483
-
484
- // Check for mixed heading styles
485
- const h2Count = (content.match(/^##\s+/gm) || []).length;
486
- const boldHeadingCount = (content.match(/^\*\*[^*]+\*\*\s*$/gm) || []).length;
487
-
488
- if (h2Count >= 2 && boldHeadingCount >= 2) {
489
- return {
490
- issue: 'Mixed heading styles (## and **bold**)',
491
- fix: 'Use consistent heading format throughout the prompt'
492
- };
493
- }
494
-
495
- // Note: Heading hierarchy check moved to heading_hierarchy_gaps pattern
496
-
497
- return null;
498
- }
499
- },
500
-
501
- /**
502
- * Critical info buried in middle
503
- * MEDIUM certainty - lost-in-the-middle effect
504
- */
505
- critical_info_buried: {
506
- id: 'critical_info_buried',
507
- category: 'structure',
508
- certainty: 'MEDIUM',
509
- autoFix: false,
510
- description: 'Important instructions buried in middle of prompt',
511
- check: (content, filePath) => {
512
- if (!content || typeof content !== 'string') return null;
513
-
514
- const lines = content.split('\n').filter(l => l.trim());
515
- if (lines.length < 20) return null;
516
-
517
- // Skip skill files with workflow phases (natural structure)
518
- if (/SKILL\.md$/i.test(filePath || '') &&
519
- /##?\s*(?:workflow|phase\s*\d)/i.test(content)) {
520
- return null;
521
- }
522
-
523
- // Check if file has a dedicated Critical Rules section at the start
524
- const first30Percent = lines.slice(0, Math.floor(lines.length * 0.3)).join('\n');
525
- if (/##?\s*(?:critical|important)\s*rules?\b/i.test(first30Percent)) {
526
- return null; // Has critical rules section at start, structure is intentional
527
- }
528
-
529
- const middleStart = Math.floor(lines.length * 0.3);
530
- const middleEnd = Math.floor(lines.length * 0.7);
531
- const middleSection = lines.slice(middleStart, middleEnd).join('\n');
532
-
533
- // Check for critical keywords in middle (outside code blocks)
534
- // Code blocks are excluded since they contain example code, not actual instructions
535
- const middleWithoutCode = middleSection.replace(/```[\s\S]*?```/g, '');
536
-
537
- // Design decision: Removed 'must' and 'required' from detection patterns
538
- // These words are too common in imperative documentation and cause false positives
539
- // Keeping 'important', 'critical', 'essential', 'mandatory' as stronger indicators
540
- const criticalPatterns = [
541
- /\b(?:important|critical|essential|mandatory)\b/gi,
542
- /\b(?:always|never)\s+\w+/gi,
543
- /\b(?:warning|caution)\s*:/gi
544
- ];
545
-
546
- let criticalInMiddle = 0;
547
- for (const pattern of criticalPatterns) {
548
- const matches = middleWithoutCode.match(pattern);
549
- if (matches) criticalInMiddle += matches.length;
550
- }
551
-
552
- // Design decision: Threshold of 8 chosen based on analysis
553
- // Original threshold of 5 flagged too many workflow files with legitimate
554
- // middle content (phase descriptions, step details). 8 catches files with
555
- // genuinely dense critical instructions in the middle.
556
- if (criticalInMiddle >= 8) {
557
- return {
558
- issue: `${criticalInMiddle} critical instructions in the middle 40% of prompt`,
559
- fix: 'Move critical instructions to the beginning or end (lost-in-the-middle effect)'
560
- };
561
- }
562
- return null;
563
- }
564
- },
565
-
566
- // ============================================
567
- // EXAMPLE PATTERNS (HIGH/MEDIUM certainty)
568
- // ============================================
569
-
570
- /**
571
- * No examples in complex prompt
572
- * HIGH certainty - few-shot improves accuracy
573
- */
574
- missing_examples: {
575
- id: 'missing_examples',
576
- category: 'examples',
577
- certainty: 'MEDIUM', // Context-dependent - not all prompts need examples
578
- autoFix: true,
579
- description: 'Complex prompt without examples (few-shot)',
580
- check: (content, filePath) => {
581
- if (!content || typeof content !== 'string') return null;
582
-
583
- const tokens = estimateTokens(content);
584
-
585
- // Skip if prompt is simple
586
- if (tokens < 300) return null;
587
-
588
- // Skip reference docs, research files, agents, skills, and non-prompt content
589
- const isNonPrompt = /[/\\](?:references?|docs?|agents?)[/\\]/i.test(filePath || '') ||
590
- /(?:RESEARCH|SKILL)\.md$/i.test(filePath || '') ||
591
- /^---\s*\nname:/m.test(content) || // Agent frontmatter
592
- /\*\*Parent document\*\*:/i.test(content) || // Sub-reference file
593
- /^##?\s*(?:reference|research|background|knowledge)/im.test(content);
594
- if (isNonPrompt) return null;
595
-
596
- // Skip workflow orchestrators and command files
597
- const lc2 = content.toLowerCase();
598
- const isOrchestrator = /##\s*Phase\s+\d+/i.test(content) || content.includes('Task({') ||
599
- (lc2.includes('spawn') && lc2.includes('agent')) || content.includes('subagent_type');
600
- if (isOrchestrator) return null;
601
-
602
- // Check for example indicators
603
- const exampleIndicators = [
604
- /##\s*example/i,
605
- /<example>/i,
606
- /<good[_-]?example>/i,
607
- /<bad[_-]?example>/i,
608
- /\bfor example\b/i,
609
- /\be\.g\.\b/i,
610
- /\bsample\s+(?:input|output|response)/i,
611
- /input:\s*\n.{1,500}\noutput:/is
612
- ];
613
-
614
- for (const pattern of exampleIndicators) {
615
- if (pattern.test(content)) {
616
- return null;
617
- }
618
- }
619
-
620
- // Check if it's asking for specific format
621
- const needsExamples = /\bformat\b|\bjson\b|\bxml\b|\bstructured\b/i.test(content);
622
-
623
- if (needsExamples) {
624
- return {
625
- issue: 'Complex prompt with format requirements but no examples',
626
- fix: 'Add 2-5 few-shot examples showing expected input/output format'
627
- };
628
- }
629
- return null;
630
- }
631
- },
632
-
633
- /**
634
- * Example count not optimal (2-5 is ideal)
635
- * MEDIUM certainty - too few or too many examples
636
- */
637
- suboptimal_example_count: {
638
- id: 'suboptimal_example_count',
639
- category: 'examples',
640
- certainty: 'LOW', // Advisory - example count is flexible
641
- autoFix: false,
642
- description: 'Example count outside optimal 2-5 range',
643
- check: (content) => {
644
- if (!content || typeof content !== 'string') return null;
645
-
646
- // Count examples
647
- const exampleSections = (content.match(/##\s*example/gi) || []).length;
648
- const goodExamples = (content.match(/<good[_-]?example>/gi) || []).length;
649
- const badExamples = (content.match(/<bad[_-]?example>/gi) || []).length;
650
- const exampleTags = (content.match(/<example>/gi) || []).length;
651
-
652
- const totalExamples = exampleSections + goodExamples + badExamples + exampleTags;
653
-
654
- if (totalExamples === 0) return null; // Handled by missing_examples
655
-
656
- if (totalExamples === 1) {
657
- return {
658
- issue: 'Only 1 example (optimal: 2-5)',
659
- fix: 'Add at least one more example - single examples may not demonstrate patterns effectively'
660
- };
661
- }
662
-
663
- if (totalExamples > 7) {
664
- return {
665
- issue: `${totalExamples} examples (optimal: 2-5)`,
666
- fix: 'Consider reducing examples to avoid token bloat - keep the most representative ones'
667
- };
668
- }
669
-
670
- return null;
671
- }
672
- },
673
-
674
- /**
675
- * Examples without clear good/bad distinction
676
- * MEDIUM certainty - showing both patterns helps
677
- */
678
- examples_without_contrast: {
679
- id: 'examples_without_contrast',
680
- category: 'examples',
681
- certainty: 'MEDIUM',
682
- autoFix: false,
683
- description: 'Examples lack good/bad contrast for pattern learning',
684
- check: (content) => {
685
- if (!content || typeof content !== 'string') return null;
686
-
687
- // Check if has examples
688
- const hasExamples = /<example>|##\s*example/i.test(content);
689
- if (!hasExamples) return null;
690
-
691
- // Check for contrast indicators
692
- const hasGood = /<good[_-]?example>|\bgood example\b|\bcorrect\b/i.test(content);
693
- const hasBad = /<bad[_-]?example>|\bbad example\b|\bincorrect\b|\bwrong\b/i.test(content);
694
-
695
- // Count total examples
696
- const exampleCount = (content.match(/<example>|##\s*example/gi) || []).length;
697
-
698
- if (exampleCount >= 3 && !hasGood && !hasBad) {
699
- return {
700
- issue: 'Multiple examples without good/bad distinction',
701
- fix: 'Label examples as good/bad or correct/incorrect to clarify expected patterns'
702
- };
703
- }
704
- return null;
705
- }
706
- },
707
-
708
- // ============================================
709
- // CONTEXT PATTERNS (MEDIUM certainty)
710
- // ============================================
711
-
712
- /**
713
- * Missing context/motivation for instructions
714
- * MEDIUM certainty - "why" improves compliance
715
- */
716
- missing_context_why: {
717
- id: 'missing_context_why',
718
- category: 'context',
719
- certainty: 'MEDIUM',
720
- autoFix: false,
721
- description: 'Instructions without explanation of why they matter',
722
- check: (content) => {
723
- if (!content || typeof content !== 'string') return null;
724
-
725
- const tokens = estimateTokens(content);
726
- if (tokens < 400) return null;
727
-
728
- // Count imperatives/rules
729
- const rulePatterns = [
730
- /\b(?:must|should|always|never)\s+\w+/gi,
731
- /\bdo not\b/gi,
732
- /\b(?:required|mandatory)\b/gi
733
- ];
734
-
735
- let ruleCount = 0;
736
- for (const pattern of rulePatterns) {
737
- const matches = content.match(pattern);
738
- if (matches) ruleCount += matches.length;
739
- }
740
-
741
- // Check for "why" explanations
742
- const whyPatterns = [
743
- /\bbecause\b/gi,
744
- /\bsince\b/gi,
745
- /\bthis (?:is|ensures?|prevents?|helps?)/gi,
746
- /\bto (?:ensure|prevent|avoid|maintain)/gi,
747
- /\bwhy:\s/gi,
748
- /\*why\*/i,
749
- // Inline explanations after dashes: "Rule - Explanation with verb"
750
- // Requires verb-like word (ending in s/es/ed/ing) to distinguish from bullet points
751
- /[-–]\s+[A-Z][a-z]+(?:s|es|ed|ing)\s+\w+/g,
752
- // Inline explanations in parens with prose (8+ chars, no code-like content)
753
- /\([^)(){}\[\]]{8,}\)/g,
754
- // Explicit WHY/rationale sections
755
- /##?\s*(?:why|rationale|reason)/gi,
756
- // "for X" explanations: "for efficiency", "for safety"
757
- /\bfor\s+(?:efficiency|safety|performance|security|clarity|consistency|reliability|maintainability)/gi
758
- ];
759
-
760
- let whyCount = 0;
761
- for (const pattern of whyPatterns) {
762
- const matches = content.match(pattern);
763
- if (matches) whyCount += matches.length;
764
- }
765
-
766
- // Ratio check: should have some explanation for rules
767
- if (ruleCount >= 8 && whyCount < ruleCount * 0.3) {
768
- return {
769
- issue: `${ruleCount} rules but few explanations (${whyCount} "why" phrases)`,
770
- fix: 'Add context explaining WHY instructions matter (improves compliance)'
771
- };
772
- }
773
- return null;
774
- }
775
- },
776
-
777
- /**
778
- * Missing instruction hierarchy/priority
779
- * MEDIUM certainty - helps with conflicting instructions
780
- */
781
- missing_instruction_priority: {
782
- id: 'missing_instruction_priority',
783
- category: 'context',
784
- certainty: 'MEDIUM',
785
- autoFix: false,
786
- description: 'No clear priority order for instructions',
787
- check: (content) => {
788
- if (!content || typeof content !== 'string') return null;
789
-
790
- const tokens = estimateTokens(content);
791
- if (tokens < 600) return null;
792
-
793
- // Check for instruction priority indicators
794
- const priorityIndicators = [
795
- /##\s*(?:priority|priorities)/i,
796
- /<instruction[_-]?priority>/i,
797
- /\bin case of conflict/i,
798
- /\bpriority\s*(?:order|:\s*\d)/i,
799
- /\b(?:highest|lowest)\s+priority\b/i,
800
- /\b(?:first|second|third)\s+priority\b/i,
801
- // Numbered rules section (implicit priority order)
802
- /##[ \t]*(?:critical|important)[ \t]*rules?[ \t]*\n[ \t]*1\.\s/i,
803
- // Precedence language
804
- /\btakes?\s+precedence\b/i,
805
- /\boverride[sd]?\b/i,
806
- // Ordered constraint list
807
- /##[ \t]*constraints?[ \t]*\n[ \t]*1\.\s/i
808
- ];
809
-
810
- for (const pattern of priorityIndicators) {
811
- if (pattern.test(content)) {
812
- return null;
813
- }
814
- }
815
-
816
- // Only flag if there are multiple top-level constraint sections (H2 only, not H3+)
817
- // Design decision: H3+ subsections are typically nested within a larger rules block
818
- // and don't indicate separate conflicting constraint sets
819
- const constraintSections = (content.match(/^##\s+(?:constraints?|rules?|requirements?)\b/gim) || []).length;
820
-
821
- // Design decision: Case-sensitive MUST to detect intentional emphasis only
822
- // Lowercase 'must' is common in prose and doesn't indicate constraint emphasis
823
- // Threshold of 10 chosen to avoid flagging files with few emphatic rules
824
- const mustClauses = (content.match(/\bMUST\b/g) || []).length;
825
-
826
- if (constraintSections >= 2 || mustClauses >= 10) {
827
- return {
828
- issue: 'Multiple constraint sections but no instruction priority order',
829
- fix: 'Add priority order: "In case of conflict: 1) Safety rules, 2) System instructions, 3) User requests"'
830
- };
831
- }
832
- return null;
833
- }
834
- },
835
-
836
- // ============================================
837
- // ANTI-PATTERN PATTERNS (HIGH/MEDIUM certainty)
838
- // ============================================
839
-
840
- /**
841
- * Redundant CoT for thinking models
842
- * HIGH certainty - wastes tokens with extended thinking models
843
- */
844
- redundant_cot: {
845
- id: 'redundant_cot',
846
- category: 'anti-pattern',
847
- certainty: 'HIGH',
848
- autoFix: false,
849
- description: '"Think step by step" redundant for models with extended thinking',
850
- check: (content) => {
851
- if (!content || typeof content !== 'string') return null;
852
-
853
- // Skip if this is documentation ABOUT CoT (describes the anti-pattern)
854
- // These files explain why step-by-step is redundant, not actually use it
855
- const lcContent = content.toLowerCase();
856
- if (/step[- ]by[- ]step/i.test(content) && lcContent.includes('redundant')) {
857
- return null;
858
- }
859
-
860
- // Check for explicit CoT instructions
861
- const cotPatterns = [
862
- /\bthink\s+step[- ]by[- ]step\b/gi,
863
- /\bstep[- ]by[- ]step\s+(?:reasoning|thinking|approach)\b/gi,
864
- /\blet['']s\s+think\s+(?:through|about)\s+this\b/gi,
865
- /\breason\s+through\s+each\s+step\b/gi
866
- ];
867
-
868
- const cotMatches = [];
869
- for (const pattern of cotPatterns) {
870
- const matches = content.match(pattern);
871
- if (matches) cotMatches.push(...matches);
872
- }
873
-
874
- if (cotMatches.length >= 2) {
875
- return {
876
- issue: `${cotMatches.length} explicit "step-by-step" instructions`,
877
- fix: 'Remove redundant CoT prompting - Claude 4.x and GPT-4 models reason by default',
878
- details: cotMatches.slice(0, 3)
879
- };
880
- }
881
- return null;
882
- }
883
- },
884
-
885
- /**
886
- * Overly prescriptive process
887
- * MEDIUM certainty - micro-managing reasoning can limit creativity
888
- */
889
- overly_prescriptive: {
890
- id: 'overly_prescriptive',
891
- category: 'anti-pattern',
892
- certainty: 'LOW', // Some workflows need detailed steps
893
- autoFix: false,
894
- description: 'Overly prescriptive step-by-step process that may limit model reasoning',
895
- check: (content) => {
896
- if (!content || typeof content !== 'string') return null;
897
-
898
- // Count numbered steps
899
- const numberedSteps = content.match(/^\s*\d+\.\s+\w+/gm) || [];
900
-
901
- // Check for micro-management indicators
902
- const microManagePatterns = [
903
- /\bfirst,?\s+(?:you\s+)?(?:must|should|need to)\b/gi,
904
- /\bthen,?\s+(?:you\s+)?(?:must|should|need to)\b/gi,
905
- /\bnext,?\s+(?:you\s+)?(?:must|should|need to)\b/gi,
906
- /\bfinally,?\s+(?:you\s+)?(?:must|should|need to)\b/gi
907
- ];
908
-
909
- let microManageCount = 0;
910
- for (const pattern of microManagePatterns) {
911
- const matches = content.match(pattern);
912
- if (matches) microManageCount += matches.length;
913
- }
914
-
915
- if (numberedSteps.length >= 10 || microManageCount >= 6) {
916
- return {
917
- issue: `${numberedSteps.length} numbered steps, ${microManageCount} sequential directives`,
918
- fix: 'Consider high-level goals over step-by-step processes - model creativity may exceed prescribed approach'
919
- };
920
- }
921
- return null;
922
- }
923
- },
924
-
925
- /**
926
- * Prompt bloat (excessive tokens)
927
- * LOW certainty - long prompts cost more
928
- */
929
- prompt_bloat: {
930
- id: 'prompt_bloat',
931
- category: 'anti-pattern',
932
- certainty: 'LOW',
933
- autoFix: false,
934
- description: 'Prompt exceeds recommended token count',
935
- maxTokens: 2500,
936
- check: (content) => {
937
- if (!content || typeof content !== 'string') return null;
938
-
939
- const tokens = estimateTokens(content);
940
-
941
- if (tokens > 2500) {
942
- return {
943
- issue: `Prompt ~${tokens} tokens (recommended max: 2500)`,
944
- fix: 'Consider splitting into smaller prompts or using XML compression'
945
- };
946
- }
947
- return null;
948
- }
949
- },
950
-
951
- // ============================================
952
- // OUTPUT FORMAT PATTERNS (MEDIUM certainty)
953
- // ============================================
954
-
955
- /**
956
- * JSON request without schema
957
- * MEDIUM certainty - schema improves consistency
958
- */
959
- json_without_schema: {
960
- id: 'json_without_schema',
961
- category: 'output',
962
- certainty: 'MEDIUM',
963
- autoFix: false,
964
- description: 'Requests JSON output without providing schema/example',
965
- check: (content) => {
966
- if (!content || typeof content !== 'string') return null;
967
-
968
- // Check if requests JSON (exclude CLI flags and function descriptions)
969
- // Exclude: "--output json", "analyzer returns JSON", "function returns JSON"
970
- const requestsJson = (
971
- (/\b(?:respond|output|return)[ \t]+(?:(?:with|in|as)[ \t]+)?JSON\b/i.test(content) &&
972
- !/--output\s+json/i.test(content) &&
973
- !/(?:analyzer|function|method)\s+returns?\s+JSON/i.test(content))
974
- ) ||
975
- /\bJSON\s+(?:object|response|format)\b/i.test(content);
976
-
977
- if (!requestsJson) return null;
978
-
979
- // Check if provides schema or example
980
- const hasSchema = /\bproperties\b.{1,200}\btype\b/is.test(content) ||
981
- (content.includes('```json') && content.includes('{')) ||
982
- /<json[_-]?schema>/i.test(content) ||
983
- // JSON in JavaScript/TypeScript code blocks (quoted keys)
984
- (/```(?:javascript|js|typescript|ts)\b/.test(content) && /\{\s*"[a-zA-Z]+"/i.test(content)) ||
985
- // JavaScript object literal assignment (const x = { prop: ... })
986
- (/\b(?:const|let|var)\b/.test(content) && /=\s*\{/.test(content)) ||
987
- // JSON example with quoted property names in prose
988
- /\{"[a-zA-Z_]+"[ \t]*:/i.test(content) || /\{\n[ \t]*"[a-zA-Z_]+"[ \t]*:/i.test(content) ||
989
- // Inline schema description: { prop, prop, prop } or { prop: type, ... }
990
- /\{[ \t]*[a-zA-Z_]+[ \t]*,[ \t]*[a-zA-Z_]+[ \t]*,[ \t]*[a-zA-Z_]+/i.test(content) ||
991
- // Interface-style: { prop: value } patterns with multiple lines
992
- /\{\n[ \t]+[a-zA-Z_]+[ \t]*:[ \t]*[\[\{"']/i.test(content);
993
-
994
- if (!hasSchema) {
995
- return {
996
- issue: 'Requests JSON output but no schema or example provided',
997
- fix: 'Add JSON schema or example structure to ensure consistent output format'
998
- };
999
- }
1000
- return null;
1001
- }
1002
- },
1003
-
1004
- // ============================================
1005
- // VERIFICATION PATTERNS (from Claude Code Best Practices)
1006
- // Source: https://code.claude.com/docs/en/best-practices
1007
- // ============================================
1008
-
1009
- /**
1010
- * Missing verification criteria
1011
- * HIGH certainty - single highest-leverage improvement
1012
- * "Give Claude a way to verify its work"
1013
- */
1014
- missing_verification_criteria: {
1015
- id: 'missing_verification_criteria',
1016
- category: 'clarity',
1017
- certainty: 'MEDIUM', // Context-dependent - not all prompts are task-oriented
1018
- autoFix: true,
1019
- description: 'Task lacks verification criteria (tests, screenshots, expected output)',
1020
- check: (content, filePath) => {
1021
- if (!content || typeof content !== 'string') return null;
1022
-
1023
- const tokens = estimateTokens(content);
1024
- if (tokens < 150) return null; // Too short to need verification
1025
-
1026
- // Skip SKILL.md files (implementation definitions, not tasks)
1027
- // Skip agent files (they define behavior, verification is in workflow)
1028
- // Skip command files that delegate to agents (verification in agent)
1029
- const isSkillOrAgent = /SKILL\.md$/i.test(filePath || '') ||
1030
- /[/\\]agents?[/\\]/i.test(filePath || '') ||
1031
- /^---\s*\nname:/m.test(content); // Agent frontmatter
1032
- if (isSkillOrAgent) return null;
1033
-
1034
- // Design decision: Skip commands that delegate to agents
1035
- // When a command uses Task({ subagent_type: ... }), verification responsibility
1036
- // belongs to the spawned agent, not the orchestrating command.
1037
- // This is project-specific syntax for AgentSys plugin system.
1038
- if (/Task\s*\(/i.test(content) && /subagent_type/i.test(content)) return null;
1039
-
1040
- // Check for implementation/action indicators
1041
- const isActionTask = /\b(?:implement|create|build|write|add|fix|update|refactor|modify)\b/i.test(content);
1042
- if (!isActionTask) return null;
1043
-
1044
- // Check for verification indicators
1045
- const verificationPatterns = [
1046
- /\btest(?:s|ing)?\b/i,
1047
- /\bverify\b/i,
1048
- /\bvalidate\b/i,
1049
- /\bscreenshot\b/i,
1050
- /\bexpected\s+(?:output|result|behavior)\b/i,
1051
- /\bshould\s+(?:return|output|produce)\b/i,
1052
- /\bexample\s+(?:input|output)\b/i,
1053
- /\bcheck\s+(?:that|if)\b/i,
1054
- /\brun\s+(?:the\s+)?tests?\b/i,
1055
- /\bcompare\s+(?:to|with)\b/i,
1056
- /\bassert\b/i,
1057
- // Performance verification
1058
- /\bbaseline\b/i,
1059
- /\bbenchmark\b/i,
1060
- /\bprofil(?:e|ing)\b/i
1061
- ];
1062
-
1063
- for (const pattern of verificationPatterns) {
1064
- if (pattern.test(content)) {
1065
- return null;
1066
- }
1067
- }
1068
-
1069
- return {
1070
- issue: 'Task lacks verification criteria - no tests, expected output, or validation steps',
1071
- fix: 'Add verification: "run tests after implementing" or "expected output: X" or "take screenshot and compare"'
1072
- };
1073
- }
1074
- },
1075
-
1076
- /**
1077
- * Unscoped task description
1078
- * HIGH certainty - vague scope leads to wrong solutions
1079
- */
1080
- unscoped_task: {
1081
- id: 'unscoped_task',
1082
- category: 'clarity',
1083
- certainty: 'HIGH',
1084
- autoFix: false,
1085
- description: 'Task description lacks specific scope (file, scenario, constraints)',
1086
- check: (content) => {
1087
- if (!content || typeof content !== 'string') return null;
1088
-
1089
- const tokens = estimateTokens(content);
1090
- if (tokens < 50) return null;
1091
-
1092
- // Check for action without scope
1093
- const vagueActions = [
1094
- /^(?:fix|add|implement|update|change)\s+(?:the|a|some)?\s*\w+$/im,
1095
- /\bfix\s+(?:the\s+)?bug\b/i,
1096
- /\badd\s+(?:a\s+)?(?:feature|function|test)\b/i,
1097
- /\bupdate\s+(?:the\s+)?(?:code|logic)\b/i
1098
- ];
1099
-
1100
- const hasVagueAction = vagueActions.some(p => p.test(content));
1101
-
1102
- // Check for scope indicators
1103
- const scopePatterns = [
1104
- /\bin\s+(?:file|folder|directory|module)\s+\S+/i,
1105
- /\b(?:src|lib|test)\/\S+/,
1106
- /\.(?:js|ts|py|rs|go|java|rb)\b/,
1107
- /\bwhen\s+(?:the|a)\s+\w+/i,
1108
- /\bfor\s+(?:the|a)\s+(?:case|scenario)\b/i,
1109
- /\bspecifically\b/i,
1110
- /\bedge\s+case/i
1111
- ];
1112
-
1113
- const hasScope = scopePatterns.some(p => p.test(content));
1114
-
1115
- if (hasVagueAction && !hasScope && tokens < 200) {
1116
- return {
1117
- issue: 'Task lacks specific scope (which file, what scenario, what constraints)',
1118
- fix: 'Specify: "in src/auth/login.js" or "for the edge case where user is logged out" or "without using library X"'
1119
- };
1120
- }
1121
- return null;
1122
- }
1123
- },
1124
-
1125
- /**
1126
- * Missing pattern reference
1127
- * MEDIUM certainty - pointing to existing patterns improves consistency
1128
- */
1129
- missing_pattern_reference: {
1130
- id: 'missing_pattern_reference',
1131
- category: 'context',
1132
- certainty: 'MEDIUM',
1133
- autoFix: false,
1134
- description: 'Task could benefit from referencing existing patterns in codebase',
1135
- check: (content) => {
1136
- if (!content || typeof content !== 'string') return null;
1137
-
1138
- // Only for tasks that involve creating new things
1139
- const creationTasks = /\b(?:create|add|implement|build)\s+(?:a\s+)?(?:new\s+)?(?:component|widget|endpoint|handler|service|module)\b/i;
1140
- if (!creationTasks.test(content)) return null;
1141
-
1142
- // Check for pattern reference indicators
1143
- // Use string-based checks to avoid ReDoS from overlapping optional groups
1144
- const lcRef = content.toLowerCase();
1145
- if (/\blike\s+\S+\b/i.test(content) ||
1146
- lcRef.includes('similar to') ||
1147
- (lcRef.includes('follow') && lcRef.includes('pattern')) ||
1148
- (lcRef.includes('see ') && lcRef.includes('example')) ||
1149
- (lcRef.includes('look at')) ||
1150
- (/\.(?:js|ts|py)\b/.test(content) && lcRef.includes('example'))) {
1151
- return null;
1152
- }
1153
-
1154
- return {
1155
- issue: 'Creating new code without referencing existing patterns in codebase',
1156
- fix: 'Add: "look at how widgets are implemented in HomePage.tsx" or "follow the pattern in existing handlers"'
1157
- };
1158
- }
1159
- },
1160
-
1161
- /**
1162
- * Missing source direction
1163
- * MEDIUM certainty - directing to sources saves exploration time
1164
- */
1165
- missing_source_direction: {
1166
- id: 'missing_source_direction',
1167
- category: 'context',
1168
- certainty: 'MEDIUM',
1169
- autoFix: false,
1170
- description: 'Question/investigation without directing to likely sources',
1171
- check: (content) => {
1172
- if (!content || typeof content !== 'string') return null;
1173
-
1174
- // Only for investigation/question tasks
1175
- const investigationPatterns = [
1176
- /\bwhy\s+does\b/i,
1177
- /\bhow\s+does\b/i,
1178
- /\bwhere\s+is\b/i,
1179
- /\bwhat\s+(?:is|are|does)\b/i,
1180
- /\bfind\s+(?:out|the)\b/i,
1181
- /\binvestigate\b/i,
1182
- /\bunderstand\b/i
1183
- ];
1184
-
1185
- const isInvestigation = investigationPatterns.some(p => p.test(content));
1186
- if (!isInvestigation) return null;
1187
-
1188
- // Check for source directions
1189
- const sourceDirections = [
1190
- /\blook\s+(?:at|in|through)\b/i,
1191
- /\bcheck\s+(?:the|in)\b/i,
1192
- /\bstart\s+(?:with|from|in)\b/i,
1193
- /\bsee\s+\S+\b/i,
1194
- /\bin\s+(?:the\s+)?\S+\s+(?:file|folder|directory)\b/i,
1195
- /\bgit\s+(?:log|history|blame)\b/i
1196
- ];
1197
-
1198
- for (const pattern of sourceDirections) {
1199
- if (pattern.test(content)) {
1200
- return null;
1201
- }
1202
- }
1203
-
1204
- const tokens = estimateTokens(content);
1205
- if (tokens < 100) {
1206
- return {
1207
- issue: 'Investigation task without directing to likely sources',
1208
- fix: 'Add: "look through git history" or "check the auth flow in src/auth/" or "start in the config files"'
1209
- };
1210
- }
1211
- return null;
1212
- }
1213
- },
1214
-
1215
- // ============================================
1216
- // CODE VALIDATION PATTERNS (HIGH/MEDIUM certainty)
1217
- // ============================================
1218
-
1219
- /**
1220
- * Invalid JSON in code blocks
1221
- * HIGH certainty - JSON syntax errors are unambiguous
1222
- */
1223
- invalid_json_in_code_block: {
1224
- id: 'invalid_json_in_code_block',
1225
- category: 'code-validation',
1226
- certainty: 'HIGH',
1227
- autoFix: false,
1228
- description: 'JSON code block contains invalid JSON syntax',
1229
- check: (content) => {
1230
- if (!content || typeof content !== 'string') return null;
1231
-
1232
- const blocks = extractCodeBlocks(content);
1233
- const jsonBlocks = blocks.filter(b =>
1234
- b.language.toLowerCase() === 'json'
1235
- );
1236
-
1237
- for (const block of jsonBlocks) {
1238
- // Skip if inside bad-example tags
1239
- const position = getPositionForLine(content, block.startLine);
1240
- if (isInsideExampleTag(content, position)) {
1241
- continue;
1242
- }
1243
-
1244
- // Skip empty blocks
1245
- if (!block.code.trim()) continue;
1246
-
1247
- // Skip very large blocks (>50KB) for performance
1248
- if (block.code.length > 50000) continue;
1249
-
1250
- // Skip blocks with placeholder syntax (common in documentation)
1251
- // e.g., [...], {...}, <...>, "...", etc.
1252
- if (/\[\.\.\.\]|\{\.\.\.\}|<\.\.\.>|"\.\.\."|\.\.\./g.test(block.code)) continue;
1253
-
1254
- // Skip blocks with comments (// or /* */) - not valid JSON but common in docs
1255
- if (/\/\/|\/\*/.test(block.code)) continue;
1256
-
1257
- // Skip blocks with template variables (${...}) - pseudo-code, not actual JSON
1258
- if (/\$\{/.test(block.code)) continue;
1259
-
1260
- // Skip blocks with type union syntax (|) - schema docs, not actual JSON
1261
- if (/\|/.test(block.code)) continue;
1262
-
1263
- try {
1264
- JSON.parse(block.code);
1265
- } catch (err) {
1266
- return {
1267
- issue: `Invalid JSON at line ${block.startLine}: ${err.message}`,
1268
- fix: 'Fix JSON syntax error in the code block'
1269
- };
1270
- }
1271
- }
1272
-
1273
- return null;
1274
- }
1275
- },
1276
-
1277
- // NOTE: JavaScript syntax validation removed - too many false positives
1278
- // (modules, async/await, JSX, TypeScript not supported by Function constructor)
1279
- // We can only reliably validate static formats: YAML frontmatter, JSON
1280
-
1281
- /**
1282
- * Code language tag mismatch
1283
- * MEDIUM certainty - heuristic detection may have false positives
1284
- */
1285
- code_language_mismatch: {
1286
- id: 'code_language_mismatch',
1287
- category: 'code-validation',
1288
- certainty: 'MEDIUM',
1289
- autoFix: false,
1290
- description: 'Code block language tag may not match actual content',
1291
- check: (content) => {
1292
- if (!content || typeof content !== 'string') return null;
1293
-
1294
- const blocks = extractCodeBlocks(content);
1295
-
1296
- for (const block of blocks) {
1297
- // Skip blocks without language tag or inside bad-example
1298
- if (!block.language) continue;
1299
- const position = getPositionForLine(content, block.startLine);
1300
- if (isInsideExampleTag(content, position)) continue;
1301
-
1302
- // Skip empty blocks
1303
- const code = block.code.trim();
1304
- if (!code) continue;
1305
-
1306
- const lang = block.language.toLowerCase();
1307
-
1308
- // JSON detection: starts with { or [ and contains : or ,
1309
- const looksLikeJson = LOOKS_LIKE_JSON_START.test(code) &&
1310
- LOOKS_LIKE_JSON_CONTENT.test(code) &&
1311
- !NOT_JSON_KEYWORDS.test(code);
1312
-
1313
- // JavaScript detection: has JS keywords
1314
- const looksLikeJs = LOOKS_LIKE_JS.test(code);
1315
-
1316
- // Python detection: has Python keywords
1317
- const looksLikePython = LOOKS_LIKE_PYTHON.test(code);
1318
-
1319
- // Check for clear mismatches
1320
- if (lang === 'json' && looksLikeJs && !looksLikeJson) {
1321
- return {
1322
- issue: `Line ${block.startLine}: Code tagged as JSON but appears to be JavaScript`,
1323
- fix: 'Change language tag from "json" to "javascript" or "js"'
1324
- };
1325
- }
1326
-
1327
- if (lang === 'json' && looksLikePython && !looksLikeJson) {
1328
- return {
1329
- issue: `Line ${block.startLine}: Code tagged as JSON but appears to be Python`,
1330
- fix: 'Change language tag from "json" to "python"'
1331
- };
1332
- }
1333
-
1334
- if ((lang === 'js' || lang === 'javascript') && looksLikeJson && !looksLikeJs) {
1335
- return {
1336
- issue: `Line ${block.startLine}: Code tagged as JavaScript but appears to be JSON`,
1337
- fix: 'Change language tag to "json"'
1338
- };
1339
- }
1340
-
1341
- if ((lang === 'js' || lang === 'javascript') && looksLikePython && !looksLikeJs) {
1342
- return {
1343
- issue: `Line ${block.startLine}: Code tagged as JavaScript but appears to be Python`,
1344
- fix: 'Change language tag to "python"'
1345
- };
1346
- }
1347
-
1348
- if ((lang === 'python' || lang === 'py') && looksLikeJs && !looksLikePython) {
1349
- return {
1350
- issue: `Line ${block.startLine}: Code tagged as Python but appears to be JavaScript`,
1351
- fix: 'Change language tag to "javascript" or "js"'
1352
- };
1353
- }
1354
- }
1355
-
1356
- return null;
1357
- }
1358
- },
1359
-
1360
- /**
1361
- * Heading hierarchy gaps
1362
- * HIGH certainty - heading levels should not skip
1363
- */
1364
- heading_hierarchy_gaps: {
1365
- id: 'heading_hierarchy_gaps',
1366
- category: 'structure',
1367
- certainty: 'HIGH',
1368
- autoFix: false,
1369
- description: 'Heading hierarchy skips levels (e.g., H1 to H3 without H2)',
1370
- check: (content) => {
1371
- if (!content || typeof content !== 'string') return null;
1372
-
1373
- // Get code block ranges to exclude headings inside them
1374
- const codeBlocks = extractCodeBlocks(content);
1375
- const codeBlockLines = new Set();
1376
- for (const block of codeBlocks) {
1377
- for (let line = block.startLine; line <= block.endLine; line++) {
1378
- codeBlockLines.add(line);
1379
- }
1380
- }
1381
-
1382
- // Extract headings with their levels and line numbers (excluding code blocks)
1383
- const lines = content.split('\n');
1384
- const headings = [];
1385
-
1386
- for (let i = 0; i < lines.length; i++) {
1387
- const lineNum = i + 1;
1388
- // Skip lines inside code blocks
1389
- if (codeBlockLines.has(lineNum)) continue;
1390
-
1391
- const line = lines[i];
1392
- const match = line.match(/^(#{1,6})[ \t]+(\S.*)$/);
1393
- if (match) {
1394
- headings.push({
1395
- level: match[1].length,
1396
- text: match[2].trim(),
1397
- line: lineNum
1398
- });
1399
- }
1400
- }
1401
-
1402
- // Need at least 2 headings to check hierarchy
1403
- if (headings.length < 2) return null;
1404
-
1405
- // Check for gaps in hierarchy
1406
- for (let i = 1; i < headings.length; i++) {
1407
- const current = headings[i];
1408
- const prev = headings[i - 1];
1409
-
1410
- // Only check if going to a more nested level
1411
- if (current.level > prev.level && current.level - prev.level > 1) {
1412
- return {
1413
- issue: `Line ${current.line}: Heading jumps from H${prev.level} to H${current.level} (skipped H${prev.level + 1})`,
1414
- fix: `Add intermediate H${prev.level + 1} heading or adjust heading levels to maintain hierarchy`
1415
- };
1416
- }
1417
- }
1418
-
1419
- return null;
1420
- }
1421
- }
1422
- };
1423
-
1424
- /**
1425
- * Get all patterns
1426
- * @returns {Object} All prompt patterns
1427
- */
1428
- function getAllPatterns() {
1429
- return promptPatterns;
1430
- }
1431
-
1432
- /**
1433
- * Get patterns by certainty level
1434
- * @param {string} certainty - HIGH, MEDIUM, or LOW
1435
- * @returns {Object} Filtered patterns
1436
- */
1437
- function getPatternsByCertainty(certainty) {
1438
- const result = {};
1439
- for (const [name, pattern] of Object.entries(promptPatterns)) {
1440
- if (pattern.certainty === certainty) {
1441
- result[name] = pattern;
1442
- }
1443
- }
1444
- return result;
1445
- }
1446
-
1447
- /**
1448
- * Get patterns by category
1449
- * @param {string} category - clarity, structure, examples, context, output, anti-pattern
1450
- * @returns {Object} Filtered patterns
1451
- */
1452
- function getPatternsByCategory(category) {
1453
- const result = {};
1454
- for (const [name, pattern] of Object.entries(promptPatterns)) {
1455
- if (pattern.category === category) {
1456
- result[name] = pattern;
1457
- }
1458
- }
1459
- return result;
1460
- }
1461
-
1462
- /**
1463
- * Get auto-fixable patterns
1464
- * @returns {Object} Patterns with autoFix: true
1465
- */
1466
- function getAutoFixablePatterns() {
1467
- const result = {};
1468
- for (const [name, pattern] of Object.entries(promptPatterns)) {
1469
- if (pattern.autoFix) {
1470
- result[name] = pattern;
1471
- }
1472
- }
1473
- return result;
1474
- }
1475
-
1476
- module.exports = {
1477
- promptPatterns,
1478
- estimateTokens,
1479
- extractCodeBlocks,
1480
- getAllPatterns,
1481
- getPatternsByCertainty,
1482
- getPatternsByCategory,
1483
- getAutoFixablePatterns
1484
- };