agentsys 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1310) hide show
  1. package/.agnix.toml +49 -0
  2. package/.claude-plugin/marketplace.json +110 -0
  3. package/.claude-plugin/plugin.json +20 -0
  4. package/AGENTS.md +260 -0
  5. package/CHANGELOG.md +190 -0
  6. package/LICENSE +21 -0
  7. package/README.md +916 -0
  8. package/SECURITY.md +45 -0
  9. package/adapters/README.md +258 -0
  10. package/adapters/codex/README.md +273 -0
  11. package/adapters/codex/install.sh +260 -0
  12. package/adapters/codex/skills/agnix/SKILL.md +138 -0
  13. package/adapters/codex/skills/audit-project/SKILL.md +334 -0
  14. package/adapters/codex/skills/audit-project-agents/SKILL.md +459 -0
  15. package/adapters/codex/skills/audit-project-github/SKILL.md +146 -0
  16. package/adapters/codex/skills/consult/SKILL.md +245 -0
  17. package/adapters/codex/skills/delivery-approval/SKILL.md +339 -0
  18. package/adapters/codex/skills/deslop/SKILL.md +167 -0
  19. package/adapters/codex/skills/drift-detect/SKILL.md +268 -0
  20. package/adapters/codex/skills/enhance/SKILL.md +177 -0
  21. package/adapters/codex/skills/learn/SKILL.md +188 -0
  22. package/adapters/codex/skills/next-task/SKILL.md +546 -0
  23. package/adapters/codex/skills/perf/SKILL.md +469 -0
  24. package/adapters/codex/skills/repo-map/SKILL.md +132 -0
  25. package/adapters/codex/skills/ship/SKILL.md +491 -0
  26. package/adapters/codex/skills/ship-ci-review-loop/SKILL.md +473 -0
  27. package/adapters/codex/skills/ship-deployment/SKILL.md +336 -0
  28. package/adapters/codex/skills/ship-error-handling/SKILL.md +260 -0
  29. package/adapters/codex/skills/sync-docs/SKILL.md +186 -0
  30. package/adapters/opencode/README.md +302 -0
  31. package/adapters/opencode/agents/agent-enhancer.md +65 -0
  32. package/adapters/opencode/agents/agnix-agent.md +56 -0
  33. package/adapters/opencode/agents/ci-fixer.md +104 -0
  34. package/adapters/opencode/agents/ci-monitor.md +127 -0
  35. package/adapters/opencode/agents/claudemd-enhancer.md +66 -0
  36. package/adapters/opencode/agents/consult-agent.md +124 -0
  37. package/adapters/opencode/agents/cross-file-enhancer.md +54 -0
  38. package/adapters/opencode/agents/delivery-validator.md +115 -0
  39. package/adapters/opencode/agents/deslop-agent.md +88 -0
  40. package/adapters/opencode/agents/docs-enhancer.md +65 -0
  41. package/adapters/opencode/agents/exploration-agent.md +143 -0
  42. package/adapters/opencode/agents/hooks-enhancer.md +66 -0
  43. package/adapters/opencode/agents/implementation-agent.md +206 -0
  44. package/adapters/opencode/agents/learn-agent.md +279 -0
  45. package/adapters/opencode/agents/map-validator.md +65 -0
  46. package/adapters/opencode/agents/perf-analyzer.md +40 -0
  47. package/adapters/opencode/agents/perf-code-paths.md +12 -0
  48. package/adapters/opencode/agents/perf-investigation-logger.md +44 -0
  49. package/adapters/opencode/agents/perf-orchestrator.md +147 -0
  50. package/adapters/opencode/agents/perf-theory-gatherer.md +18 -0
  51. package/adapters/opencode/agents/perf-theory-tester.md +43 -0
  52. package/adapters/opencode/agents/plan-synthesizer.md +229 -0
  53. package/adapters/opencode/agents/planning-agent.md +235 -0
  54. package/adapters/opencode/agents/plugin-enhancer.md +64 -0
  55. package/adapters/opencode/agents/prompt-enhancer.md +58 -0
  56. package/adapters/opencode/agents/simple-fixer.md +107 -0
  57. package/adapters/opencode/agents/skills-enhancer.md +66 -0
  58. package/adapters/opencode/agents/sync-docs-agent.md +153 -0
  59. package/adapters/opencode/agents/task-discoverer.md +80 -0
  60. package/adapters/opencode/agents/test-coverage-checker.md +144 -0
  61. package/adapters/opencode/agents/worktree-manager.md +209 -0
  62. package/adapters/opencode/commands/agnix.md +106 -0
  63. package/adapters/opencode/commands/audit-project-agents.md +125 -0
  64. package/adapters/opencode/commands/audit-project-github.md +145 -0
  65. package/adapters/opencode/commands/audit-project.md +268 -0
  66. package/adapters/opencode/commands/consult.md +252 -0
  67. package/adapters/opencode/commands/delivery-approval.md +212 -0
  68. package/adapters/opencode/commands/deslop.md +132 -0
  69. package/adapters/opencode/commands/drift-detect.md +173 -0
  70. package/adapters/opencode/commands/enhance.md +183 -0
  71. package/adapters/opencode/commands/learn.md +116 -0
  72. package/adapters/opencode/commands/next-task.md +393 -0
  73. package/adapters/opencode/commands/perf.md +49 -0
  74. package/adapters/opencode/commands/repo-map.md +69 -0
  75. package/adapters/opencode/commands/ship-ci-review-loop.md +334 -0
  76. package/adapters/opencode/commands/ship-deployment.md +336 -0
  77. package/adapters/opencode/commands/ship-error-handling.md +248 -0
  78. package/adapters/opencode/commands/ship.md +371 -0
  79. package/adapters/opencode/commands/sync-docs.md +108 -0
  80. package/adapters/opencode/install.sh +322 -0
  81. package/adapters/opencode/skills/agnix/SKILL.md +139 -0
  82. package/adapters/opencode/skills/consult/SKILL.md +292 -0
  83. package/adapters/opencode/skills/deslop/SKILL.md +169 -0
  84. package/adapters/opencode/skills/discover-tasks/SKILL.md +102 -0
  85. package/adapters/opencode/skills/drift-analysis/SKILL.md +279 -0
  86. package/adapters/opencode/skills/enhance-agent-prompts/SKILL.md +279 -0
  87. package/adapters/opencode/skills/enhance-claude-memory/SKILL.md +390 -0
  88. package/adapters/opencode/skills/enhance-cross-file/SKILL.md +112 -0
  89. package/adapters/opencode/skills/enhance-docs/SKILL.md +288 -0
  90. package/adapters/opencode/skills/enhance-hooks/SKILL.md +557 -0
  91. package/adapters/opencode/skills/enhance-orchestrator/SKILL.md +114 -0
  92. package/adapters/opencode/skills/enhance-plugins/SKILL.md +314 -0
  93. package/adapters/opencode/skills/enhance-prompts/SKILL.md +341 -0
  94. package/adapters/opencode/skills/enhance-skills/SKILL.md +443 -0
  95. package/adapters/opencode/skills/learn/SKILL.md +352 -0
  96. package/adapters/opencode/skills/orchestrate-review/SKILL.md +95 -0
  97. package/adapters/opencode/skills/perf-analyzer/SKILL.md +38 -0
  98. package/adapters/opencode/skills/perf-baseline-manager/SKILL.md +31 -0
  99. package/adapters/opencode/skills/perf-benchmarker/SKILL.md +49 -0
  100. package/adapters/opencode/skills/perf-code-paths/SKILL.md +33 -0
  101. package/adapters/opencode/skills/perf-investigation-logger/SKILL.md +42 -0
  102. package/adapters/opencode/skills/perf-profiler/SKILL.md +39 -0
  103. package/adapters/opencode/skills/perf-theory-gatherer/SKILL.md +36 -0
  104. package/adapters/opencode/skills/perf-theory-tester/SKILL.md +37 -0
  105. package/adapters/opencode/skills/repo-mapping/SKILL.md +86 -0
  106. package/adapters/opencode/skills/sync-docs/SKILL.md +246 -0
  107. package/adapters/opencode/skills/validate-delivery/SKILL.md +112 -0
  108. package/adapters/opencode-plugin/index.ts +346 -0
  109. package/adapters/opencode-plugin/package.json +21 -0
  110. package/agent-knowledge/AGENTS.md +62 -0
  111. package/agent-knowledge/ai-cli-advanced-integration-patterns.md +670 -0
  112. package/agent-knowledge/ai-cli-non-interactive-programmatic-usage.md +1394 -0
  113. package/agent-knowledge/resources/ai-cli-non-interactive-programmatic-usage-sources.json +500 -0
  114. package/bin/cli.js +719 -0
  115. package/bin/dev-cli.js +587 -0
  116. package/lib/adapter-transforms.js +278 -0
  117. package/lib/collectors/codebase.js +392 -0
  118. package/lib/collectors/docs-patterns.js +713 -0
  119. package/lib/collectors/documentation.js +219 -0
  120. package/lib/collectors/github.js +266 -0
  121. package/lib/collectors/index.js +126 -0
  122. package/lib/config/index.js +14 -0
  123. package/lib/cross-platform/index.js +539 -0
  124. package/lib/discovery/index.js +352 -0
  125. package/lib/drift-detect/collectors.js +37 -0
  126. package/lib/enhance/agent-analyzer.js +421 -0
  127. package/lib/enhance/agent-patterns.js +571 -0
  128. package/lib/enhance/auto-suppression.js +622 -0
  129. package/lib/enhance/benchmark.js +417 -0
  130. package/lib/enhance/cross-file-analyzer.js +930 -0
  131. package/lib/enhance/cross-file-patterns.js +370 -0
  132. package/lib/enhance/docs-analyzer.js +325 -0
  133. package/lib/enhance/docs-patterns.js +671 -0
  134. package/lib/enhance/fixer.js +721 -0
  135. package/lib/enhance/hook-analyzer.js +135 -0
  136. package/lib/enhance/hook-patterns.js +40 -0
  137. package/lib/enhance/index.js +127 -0
  138. package/lib/enhance/plugin-analyzer.js +402 -0
  139. package/lib/enhance/plugin-patterns.js +326 -0
  140. package/lib/enhance/projectmemory-analyzer.js +551 -0
  141. package/lib/enhance/projectmemory-patterns.js +617 -0
  142. package/lib/enhance/prompt-analyzer.js +457 -0
  143. package/lib/enhance/prompt-patterns.js +1484 -0
  144. package/lib/enhance/reporter.js +1348 -0
  145. package/lib/enhance/security-patterns.js +284 -0
  146. package/lib/enhance/skill-analyzer.js +182 -0
  147. package/lib/enhance/skill-patterns.js +147 -0
  148. package/lib/enhance/suppression.js +352 -0
  149. package/lib/enhance/tool-patterns.js +373 -0
  150. package/lib/index.js +270 -0
  151. package/lib/package.json +25 -0
  152. package/lib/patterns/cli-enhancers.js +611 -0
  153. package/lib/patterns/pipeline.js +948 -0
  154. package/lib/patterns/review-patterns.js +558 -0
  155. package/lib/patterns/slop-analyzers.js +2305 -0
  156. package/lib/patterns/slop-patterns.js +1187 -0
  157. package/lib/perf/analyzer/index.js +22 -0
  158. package/lib/perf/argument-parser.js +105 -0
  159. package/lib/perf/baseline-comparator.js +50 -0
  160. package/lib/perf/baseline-store.js +127 -0
  161. package/lib/perf/benchmark-runner.js +399 -0
  162. package/lib/perf/breaking-point-finder.js +52 -0
  163. package/lib/perf/breaking-point-runner.js +60 -0
  164. package/lib/perf/checkpoint.js +123 -0
  165. package/lib/perf/code-paths.js +86 -0
  166. package/lib/perf/consolidation.js +37 -0
  167. package/lib/perf/constraint-runner.js +71 -0
  168. package/lib/perf/experiment-runner.js +32 -0
  169. package/lib/perf/index.js +41 -0
  170. package/lib/perf/investigation-state.js +875 -0
  171. package/lib/perf/optimization-runner.js +79 -0
  172. package/lib/perf/profilers/go.js +22 -0
  173. package/lib/perf/profilers/index.js +46 -0
  174. package/lib/perf/profilers/java.js +23 -0
  175. package/lib/perf/profilers/node.js +27 -0
  176. package/lib/perf/profilers/python.js +23 -0
  177. package/lib/perf/profilers/rust.js +23 -0
  178. package/lib/perf/profiling-runner.js +56 -0
  179. package/lib/perf/schemas.js +140 -0
  180. package/lib/platform/detect-platform.js +413 -0
  181. package/lib/platform/detection-configs.js +93 -0
  182. package/lib/platform/state-dir.js +132 -0
  183. package/lib/platform/verify-tools.js +182 -0
  184. package/lib/repo-map/cache.js +152 -0
  185. package/lib/repo-map/index.js +222 -0
  186. package/lib/repo-map/installer.js +212 -0
  187. package/lib/repo-map/queries/go.js +27 -0
  188. package/lib/repo-map/queries/index.js +100 -0
  189. package/lib/repo-map/queries/java.js +38 -0
  190. package/lib/repo-map/queries/javascript.js +55 -0
  191. package/lib/repo-map/queries/python.js +24 -0
  192. package/lib/repo-map/queries/rust.js +73 -0
  193. package/lib/repo-map/queries/typescript.js +38 -0
  194. package/lib/repo-map/runner.js +1165 -0
  195. package/lib/repo-map/updater.js +474 -0
  196. package/lib/repo-map/usage-analyzer.js +407 -0
  197. package/lib/schemas/plugin-manifest.schema.json +57 -0
  198. package/lib/schemas/validator.js +247 -0
  199. package/lib/sources/custom-handler.js +199 -0
  200. package/lib/sources/policy-questions.js +246 -0
  201. package/lib/sources/source-cache.js +165 -0
  202. package/lib/state/workflow-state.js +575 -0
  203. package/lib/types/agent-frontmatter.d.ts +134 -0
  204. package/lib/types/command-frontmatter.d.ts +107 -0
  205. package/lib/types/hook-frontmatter.d.ts +115 -0
  206. package/lib/types/index.d.ts +84 -0
  207. package/lib/types/plugin-manifest.d.ts +102 -0
  208. package/lib/types/skill-frontmatter.d.ts +89 -0
  209. package/lib/utils/atomic-write.js +94 -0
  210. package/lib/utils/cache-manager.js +159 -0
  211. package/lib/utils/context-optimizer.js +300 -0
  212. package/lib/utils/deprecation.js +37 -0
  213. package/lib/utils/shell-escape.js +88 -0
  214. package/meta/skills/maintain-cross-platform/SKILL.md +1022 -0
  215. package/package.json +92 -0
  216. package/plugins/agnix/.claude-plugin/plugin.json +22 -0
  217. package/plugins/agnix/agents/agnix-agent.md +56 -0
  218. package/plugins/agnix/commands/agnix.md +139 -0
  219. package/plugins/agnix/skills/agnix/SKILL.md +138 -0
  220. package/plugins/audit-project/.claude-plugin/plugin.json +20 -0
  221. package/plugins/audit-project/commands/audit-project-agents.md +458 -0
  222. package/plugins/audit-project/commands/audit-project-github.md +144 -0
  223. package/plugins/audit-project/commands/audit-project.md +336 -0
  224. package/plugins/audit-project/lib/adapter-transforms.js +278 -0
  225. package/plugins/audit-project/lib/collectors/codebase.js +392 -0
  226. package/plugins/audit-project/lib/collectors/docs-patterns.js +713 -0
  227. package/plugins/audit-project/lib/collectors/documentation.js +219 -0
  228. package/plugins/audit-project/lib/collectors/github.js +266 -0
  229. package/plugins/audit-project/lib/collectors/index.js +126 -0
  230. package/plugins/audit-project/lib/config/index.js +14 -0
  231. package/plugins/audit-project/lib/cross-platform/index.js +539 -0
  232. package/plugins/audit-project/lib/discovery/index.js +352 -0
  233. package/plugins/audit-project/lib/drift-detect/collectors.js +37 -0
  234. package/plugins/audit-project/lib/enhance/agent-analyzer.js +421 -0
  235. package/plugins/audit-project/lib/enhance/agent-patterns.js +571 -0
  236. package/plugins/audit-project/lib/enhance/auto-suppression.js +622 -0
  237. package/plugins/audit-project/lib/enhance/benchmark.js +417 -0
  238. package/plugins/audit-project/lib/enhance/cross-file-analyzer.js +930 -0
  239. package/plugins/audit-project/lib/enhance/cross-file-patterns.js +370 -0
  240. package/plugins/audit-project/lib/enhance/docs-analyzer.js +325 -0
  241. package/plugins/audit-project/lib/enhance/docs-patterns.js +671 -0
  242. package/plugins/audit-project/lib/enhance/fixer.js +721 -0
  243. package/plugins/audit-project/lib/enhance/hook-analyzer.js +135 -0
  244. package/plugins/audit-project/lib/enhance/hook-patterns.js +40 -0
  245. package/plugins/audit-project/lib/enhance/index.js +127 -0
  246. package/plugins/audit-project/lib/enhance/plugin-analyzer.js +402 -0
  247. package/plugins/audit-project/lib/enhance/plugin-patterns.js +326 -0
  248. package/plugins/audit-project/lib/enhance/projectmemory-analyzer.js +551 -0
  249. package/plugins/audit-project/lib/enhance/projectmemory-patterns.js +617 -0
  250. package/plugins/audit-project/lib/enhance/prompt-analyzer.js +457 -0
  251. package/plugins/audit-project/lib/enhance/prompt-patterns.js +1484 -0
  252. package/plugins/audit-project/lib/enhance/reporter.js +1348 -0
  253. package/plugins/audit-project/lib/enhance/security-patterns.js +284 -0
  254. package/plugins/audit-project/lib/enhance/skill-analyzer.js +182 -0
  255. package/plugins/audit-project/lib/enhance/skill-patterns.js +147 -0
  256. package/plugins/audit-project/lib/enhance/suppression.js +352 -0
  257. package/plugins/audit-project/lib/enhance/tool-patterns.js +373 -0
  258. package/plugins/audit-project/lib/index.js +270 -0
  259. package/plugins/audit-project/lib/patterns/cli-enhancers.js +611 -0
  260. package/plugins/audit-project/lib/patterns/pipeline.js +948 -0
  261. package/plugins/audit-project/lib/patterns/review-patterns.js +558 -0
  262. package/plugins/audit-project/lib/patterns/slop-analyzers.js +2305 -0
  263. package/plugins/audit-project/lib/patterns/slop-patterns.js +1187 -0
  264. package/plugins/audit-project/lib/perf/analyzer/index.js +22 -0
  265. package/plugins/audit-project/lib/perf/argument-parser.js +105 -0
  266. package/plugins/audit-project/lib/perf/baseline-comparator.js +50 -0
  267. package/plugins/audit-project/lib/perf/baseline-store.js +127 -0
  268. package/plugins/audit-project/lib/perf/benchmark-runner.js +399 -0
  269. package/plugins/audit-project/lib/perf/breaking-point-finder.js +52 -0
  270. package/plugins/audit-project/lib/perf/breaking-point-runner.js +60 -0
  271. package/plugins/audit-project/lib/perf/checkpoint.js +123 -0
  272. package/plugins/audit-project/lib/perf/code-paths.js +86 -0
  273. package/plugins/audit-project/lib/perf/consolidation.js +37 -0
  274. package/plugins/audit-project/lib/perf/constraint-runner.js +71 -0
  275. package/plugins/audit-project/lib/perf/experiment-runner.js +32 -0
  276. package/plugins/audit-project/lib/perf/index.js +41 -0
  277. package/plugins/audit-project/lib/perf/investigation-state.js +875 -0
  278. package/plugins/audit-project/lib/perf/optimization-runner.js +79 -0
  279. package/plugins/audit-project/lib/perf/profilers/go.js +22 -0
  280. package/plugins/audit-project/lib/perf/profilers/index.js +46 -0
  281. package/plugins/audit-project/lib/perf/profilers/java.js +23 -0
  282. package/plugins/audit-project/lib/perf/profilers/node.js +27 -0
  283. package/plugins/audit-project/lib/perf/profilers/python.js +23 -0
  284. package/plugins/audit-project/lib/perf/profilers/rust.js +23 -0
  285. package/plugins/audit-project/lib/perf/profiling-runner.js +56 -0
  286. package/plugins/audit-project/lib/perf/schemas.js +140 -0
  287. package/plugins/audit-project/lib/platform/detect-platform.js +413 -0
  288. package/plugins/audit-project/lib/platform/detection-configs.js +93 -0
  289. package/plugins/audit-project/lib/platform/state-dir.js +132 -0
  290. package/plugins/audit-project/lib/platform/verify-tools.js +182 -0
  291. package/plugins/audit-project/lib/repo-map/cache.js +152 -0
  292. package/plugins/audit-project/lib/repo-map/index.js +222 -0
  293. package/plugins/audit-project/lib/repo-map/installer.js +212 -0
  294. package/plugins/audit-project/lib/repo-map/queries/go.js +27 -0
  295. package/plugins/audit-project/lib/repo-map/queries/index.js +100 -0
  296. package/plugins/audit-project/lib/repo-map/queries/java.js +38 -0
  297. package/plugins/audit-project/lib/repo-map/queries/javascript.js +55 -0
  298. package/plugins/audit-project/lib/repo-map/queries/python.js +24 -0
  299. package/plugins/audit-project/lib/repo-map/queries/rust.js +73 -0
  300. package/plugins/audit-project/lib/repo-map/queries/typescript.js +38 -0
  301. package/plugins/audit-project/lib/repo-map/runner.js +1165 -0
  302. package/plugins/audit-project/lib/repo-map/updater.js +474 -0
  303. package/plugins/audit-project/lib/repo-map/usage-analyzer.js +407 -0
  304. package/plugins/audit-project/lib/schemas/plugin-manifest.schema.json +57 -0
  305. package/plugins/audit-project/lib/schemas/validator.js +247 -0
  306. package/plugins/audit-project/lib/sources/custom-handler.js +199 -0
  307. package/plugins/audit-project/lib/sources/policy-questions.js +246 -0
  308. package/plugins/audit-project/lib/sources/source-cache.js +165 -0
  309. package/plugins/audit-project/lib/state/workflow-state.js +575 -0
  310. package/plugins/audit-project/lib/types/agent-frontmatter.d.ts +134 -0
  311. package/plugins/audit-project/lib/types/command-frontmatter.d.ts +107 -0
  312. package/plugins/audit-project/lib/types/hook-frontmatter.d.ts +115 -0
  313. package/plugins/audit-project/lib/types/index.d.ts +84 -0
  314. package/plugins/audit-project/lib/types/plugin-manifest.d.ts +102 -0
  315. package/plugins/audit-project/lib/types/skill-frontmatter.d.ts +89 -0
  316. package/plugins/audit-project/lib/utils/atomic-write.js +94 -0
  317. package/plugins/audit-project/lib/utils/cache-manager.js +159 -0
  318. package/plugins/audit-project/lib/utils/context-optimizer.js +300 -0
  319. package/plugins/audit-project/lib/utils/deprecation.js +37 -0
  320. package/plugins/audit-project/lib/utils/shell-escape.js +88 -0
  321. package/plugins/consult/.claude-plugin/plugin.json +24 -0
  322. package/plugins/consult/agents/consult-agent.md +129 -0
  323. package/plugins/consult/commands/consult.md +248 -0
  324. package/plugins/consult/skills/consult/SKILL.md +285 -0
  325. package/plugins/deslop/.claude-plugin/plugin.json +20 -0
  326. package/plugins/deslop/agents/deslop-agent.md +88 -0
  327. package/plugins/deslop/commands/deslop.md +168 -0
  328. package/plugins/deslop/lib/adapter-transforms.js +278 -0
  329. package/plugins/deslop/lib/collectors/codebase.js +392 -0
  330. package/plugins/deslop/lib/collectors/docs-patterns.js +713 -0
  331. package/plugins/deslop/lib/collectors/documentation.js +219 -0
  332. package/plugins/deslop/lib/collectors/github.js +266 -0
  333. package/plugins/deslop/lib/collectors/index.js +126 -0
  334. package/plugins/deslop/lib/config/index.js +14 -0
  335. package/plugins/deslop/lib/cross-platform/index.js +539 -0
  336. package/plugins/deslop/lib/discovery/index.js +352 -0
  337. package/plugins/deslop/lib/drift-detect/collectors.js +37 -0
  338. package/plugins/deslop/lib/enhance/agent-analyzer.js +421 -0
  339. package/plugins/deslop/lib/enhance/agent-patterns.js +571 -0
  340. package/plugins/deslop/lib/enhance/auto-suppression.js +622 -0
  341. package/plugins/deslop/lib/enhance/benchmark.js +417 -0
  342. package/plugins/deslop/lib/enhance/cross-file-analyzer.js +930 -0
  343. package/plugins/deslop/lib/enhance/cross-file-patterns.js +370 -0
  344. package/plugins/deslop/lib/enhance/docs-analyzer.js +325 -0
  345. package/plugins/deslop/lib/enhance/docs-patterns.js +671 -0
  346. package/plugins/deslop/lib/enhance/fixer.js +721 -0
  347. package/plugins/deslop/lib/enhance/hook-analyzer.js +135 -0
  348. package/plugins/deslop/lib/enhance/hook-patterns.js +40 -0
  349. package/plugins/deslop/lib/enhance/index.js +127 -0
  350. package/plugins/deslop/lib/enhance/plugin-analyzer.js +402 -0
  351. package/plugins/deslop/lib/enhance/plugin-patterns.js +326 -0
  352. package/plugins/deslop/lib/enhance/projectmemory-analyzer.js +551 -0
  353. package/plugins/deslop/lib/enhance/projectmemory-patterns.js +617 -0
  354. package/plugins/deslop/lib/enhance/prompt-analyzer.js +457 -0
  355. package/plugins/deslop/lib/enhance/prompt-patterns.js +1484 -0
  356. package/plugins/deslop/lib/enhance/reporter.js +1348 -0
  357. package/plugins/deslop/lib/enhance/security-patterns.js +284 -0
  358. package/plugins/deslop/lib/enhance/skill-analyzer.js +182 -0
  359. package/plugins/deslop/lib/enhance/skill-patterns.js +147 -0
  360. package/plugins/deslop/lib/enhance/suppression.js +352 -0
  361. package/plugins/deslop/lib/enhance/tool-patterns.js +373 -0
  362. package/plugins/deslop/lib/index.js +270 -0
  363. package/plugins/deslop/lib/patterns/cli-enhancers.js +611 -0
  364. package/plugins/deslop/lib/patterns/pipeline.js +948 -0
  365. package/plugins/deslop/lib/patterns/review-patterns.js +558 -0
  366. package/plugins/deslop/lib/patterns/slop-analyzers.js +2305 -0
  367. package/plugins/deslop/lib/patterns/slop-patterns.js +1187 -0
  368. package/plugins/deslop/lib/perf/analyzer/index.js +22 -0
  369. package/plugins/deslop/lib/perf/argument-parser.js +105 -0
  370. package/plugins/deslop/lib/perf/baseline-comparator.js +50 -0
  371. package/plugins/deslop/lib/perf/baseline-store.js +127 -0
  372. package/plugins/deslop/lib/perf/benchmark-runner.js +399 -0
  373. package/plugins/deslop/lib/perf/breaking-point-finder.js +52 -0
  374. package/plugins/deslop/lib/perf/breaking-point-runner.js +60 -0
  375. package/plugins/deslop/lib/perf/checkpoint.js +123 -0
  376. package/plugins/deslop/lib/perf/code-paths.js +86 -0
  377. package/plugins/deslop/lib/perf/consolidation.js +37 -0
  378. package/plugins/deslop/lib/perf/constraint-runner.js +71 -0
  379. package/plugins/deslop/lib/perf/experiment-runner.js +32 -0
  380. package/plugins/deslop/lib/perf/index.js +41 -0
  381. package/plugins/deslop/lib/perf/investigation-state.js +875 -0
  382. package/plugins/deslop/lib/perf/optimization-runner.js +79 -0
  383. package/plugins/deslop/lib/perf/profilers/go.js +22 -0
  384. package/plugins/deslop/lib/perf/profilers/index.js +46 -0
  385. package/plugins/deslop/lib/perf/profilers/java.js +23 -0
  386. package/plugins/deslop/lib/perf/profilers/node.js +27 -0
  387. package/plugins/deslop/lib/perf/profilers/python.js +23 -0
  388. package/plugins/deslop/lib/perf/profilers/rust.js +23 -0
  389. package/plugins/deslop/lib/perf/profiling-runner.js +56 -0
  390. package/plugins/deslop/lib/perf/schemas.js +140 -0
  391. package/plugins/deslop/lib/platform/detect-platform.js +413 -0
  392. package/plugins/deslop/lib/platform/detection-configs.js +93 -0
  393. package/plugins/deslop/lib/platform/state-dir.js +132 -0
  394. package/plugins/deslop/lib/platform/verify-tools.js +182 -0
  395. package/plugins/deslop/lib/repo-map/cache.js +152 -0
  396. package/plugins/deslop/lib/repo-map/index.js +222 -0
  397. package/plugins/deslop/lib/repo-map/installer.js +212 -0
  398. package/plugins/deslop/lib/repo-map/queries/go.js +27 -0
  399. package/plugins/deslop/lib/repo-map/queries/index.js +100 -0
  400. package/plugins/deslop/lib/repo-map/queries/java.js +38 -0
  401. package/plugins/deslop/lib/repo-map/queries/javascript.js +55 -0
  402. package/plugins/deslop/lib/repo-map/queries/python.js +24 -0
  403. package/plugins/deslop/lib/repo-map/queries/rust.js +73 -0
  404. package/plugins/deslop/lib/repo-map/queries/typescript.js +38 -0
  405. package/plugins/deslop/lib/repo-map/runner.js +1165 -0
  406. package/plugins/deslop/lib/repo-map/updater.js +474 -0
  407. package/plugins/deslop/lib/repo-map/usage-analyzer.js +407 -0
  408. package/plugins/deslop/lib/schemas/plugin-manifest.schema.json +57 -0
  409. package/plugins/deslop/lib/schemas/validator.js +247 -0
  410. package/plugins/deslop/lib/sources/custom-handler.js +199 -0
  411. package/plugins/deslop/lib/sources/policy-questions.js +246 -0
  412. package/plugins/deslop/lib/sources/source-cache.js +165 -0
  413. package/plugins/deslop/lib/state/workflow-state.js +575 -0
  414. package/plugins/deslop/lib/types/agent-frontmatter.d.ts +134 -0
  415. package/plugins/deslop/lib/types/command-frontmatter.d.ts +107 -0
  416. package/plugins/deslop/lib/types/hook-frontmatter.d.ts +115 -0
  417. package/plugins/deslop/lib/types/index.d.ts +84 -0
  418. package/plugins/deslop/lib/types/plugin-manifest.d.ts +102 -0
  419. package/plugins/deslop/lib/types/skill-frontmatter.d.ts +89 -0
  420. package/plugins/deslop/lib/utils/atomic-write.js +94 -0
  421. package/plugins/deslop/lib/utils/cache-manager.js +159 -0
  422. package/plugins/deslop/lib/utils/context-optimizer.js +300 -0
  423. package/plugins/deslop/lib/utils/deprecation.js +37 -0
  424. package/plugins/deslop/lib/utils/shell-escape.js +88 -0
  425. package/plugins/deslop/references/slop-categories.md +122 -0
  426. package/plugins/deslop/scripts/detect.js +134 -0
  427. package/plugins/deslop/skills/deslop/SKILL.md +204 -0
  428. package/plugins/drift-detect/.claude-plugin/plugin.json +23 -0
  429. package/plugins/drift-detect/agents/plan-synthesizer.md +225 -0
  430. package/plugins/drift-detect/commands/drift-detect.md +269 -0
  431. package/plugins/drift-detect/lib/adapter-transforms.js +278 -0
  432. package/plugins/drift-detect/lib/collectors/codebase.js +392 -0
  433. package/plugins/drift-detect/lib/collectors/docs-patterns.js +713 -0
  434. package/plugins/drift-detect/lib/collectors/documentation.js +219 -0
  435. package/plugins/drift-detect/lib/collectors/github.js +266 -0
  436. package/plugins/drift-detect/lib/collectors/index.js +126 -0
  437. package/plugins/drift-detect/lib/config/index.js +14 -0
  438. package/plugins/drift-detect/lib/cross-platform/index.js +539 -0
  439. package/plugins/drift-detect/lib/discovery/index.js +352 -0
  440. package/plugins/drift-detect/lib/drift-detect/collectors.js +37 -0
  441. package/plugins/drift-detect/lib/enhance/agent-analyzer.js +421 -0
  442. package/plugins/drift-detect/lib/enhance/agent-patterns.js +571 -0
  443. package/plugins/drift-detect/lib/enhance/auto-suppression.js +622 -0
  444. package/plugins/drift-detect/lib/enhance/benchmark.js +417 -0
  445. package/plugins/drift-detect/lib/enhance/cross-file-analyzer.js +930 -0
  446. package/plugins/drift-detect/lib/enhance/cross-file-patterns.js +370 -0
  447. package/plugins/drift-detect/lib/enhance/docs-analyzer.js +325 -0
  448. package/plugins/drift-detect/lib/enhance/docs-patterns.js +671 -0
  449. package/plugins/drift-detect/lib/enhance/fixer.js +721 -0
  450. package/plugins/drift-detect/lib/enhance/hook-analyzer.js +135 -0
  451. package/plugins/drift-detect/lib/enhance/hook-patterns.js +40 -0
  452. package/plugins/drift-detect/lib/enhance/index.js +127 -0
  453. package/plugins/drift-detect/lib/enhance/plugin-analyzer.js +402 -0
  454. package/plugins/drift-detect/lib/enhance/plugin-patterns.js +326 -0
  455. package/plugins/drift-detect/lib/enhance/projectmemory-analyzer.js +551 -0
  456. package/plugins/drift-detect/lib/enhance/projectmemory-patterns.js +617 -0
  457. package/plugins/drift-detect/lib/enhance/prompt-analyzer.js +457 -0
  458. package/plugins/drift-detect/lib/enhance/prompt-patterns.js +1484 -0
  459. package/plugins/drift-detect/lib/enhance/reporter.js +1348 -0
  460. package/plugins/drift-detect/lib/enhance/security-patterns.js +284 -0
  461. package/plugins/drift-detect/lib/enhance/skill-analyzer.js +182 -0
  462. package/plugins/drift-detect/lib/enhance/skill-patterns.js +147 -0
  463. package/plugins/drift-detect/lib/enhance/suppression.js +352 -0
  464. package/plugins/drift-detect/lib/enhance/tool-patterns.js +373 -0
  465. package/plugins/drift-detect/lib/index.js +270 -0
  466. package/plugins/drift-detect/lib/patterns/cli-enhancers.js +611 -0
  467. package/plugins/drift-detect/lib/patterns/pipeline.js +948 -0
  468. package/plugins/drift-detect/lib/patterns/review-patterns.js +558 -0
  469. package/plugins/drift-detect/lib/patterns/slop-analyzers.js +2305 -0
  470. package/plugins/drift-detect/lib/patterns/slop-patterns.js +1187 -0
  471. package/plugins/drift-detect/lib/perf/analyzer/index.js +22 -0
  472. package/plugins/drift-detect/lib/perf/argument-parser.js +105 -0
  473. package/plugins/drift-detect/lib/perf/baseline-comparator.js +50 -0
  474. package/plugins/drift-detect/lib/perf/baseline-store.js +127 -0
  475. package/plugins/drift-detect/lib/perf/benchmark-runner.js +399 -0
  476. package/plugins/drift-detect/lib/perf/breaking-point-finder.js +52 -0
  477. package/plugins/drift-detect/lib/perf/breaking-point-runner.js +60 -0
  478. package/plugins/drift-detect/lib/perf/checkpoint.js +123 -0
  479. package/plugins/drift-detect/lib/perf/code-paths.js +86 -0
  480. package/plugins/drift-detect/lib/perf/consolidation.js +37 -0
  481. package/plugins/drift-detect/lib/perf/constraint-runner.js +71 -0
  482. package/plugins/drift-detect/lib/perf/experiment-runner.js +32 -0
  483. package/plugins/drift-detect/lib/perf/index.js +41 -0
  484. package/plugins/drift-detect/lib/perf/investigation-state.js +875 -0
  485. package/plugins/drift-detect/lib/perf/optimization-runner.js +79 -0
  486. package/plugins/drift-detect/lib/perf/profilers/go.js +22 -0
  487. package/plugins/drift-detect/lib/perf/profilers/index.js +46 -0
  488. package/plugins/drift-detect/lib/perf/profilers/java.js +23 -0
  489. package/plugins/drift-detect/lib/perf/profilers/node.js +27 -0
  490. package/plugins/drift-detect/lib/perf/profilers/python.js +23 -0
  491. package/plugins/drift-detect/lib/perf/profilers/rust.js +23 -0
  492. package/plugins/drift-detect/lib/perf/profiling-runner.js +56 -0
  493. package/plugins/drift-detect/lib/perf/schemas.js +140 -0
  494. package/plugins/drift-detect/lib/platform/detect-platform.js +413 -0
  495. package/plugins/drift-detect/lib/platform/detection-configs.js +93 -0
  496. package/plugins/drift-detect/lib/platform/state-dir.js +132 -0
  497. package/plugins/drift-detect/lib/platform/verify-tools.js +182 -0
  498. package/plugins/drift-detect/lib/repo-map/cache.js +152 -0
  499. package/plugins/drift-detect/lib/repo-map/index.js +222 -0
  500. package/plugins/drift-detect/lib/repo-map/installer.js +212 -0
  501. package/plugins/drift-detect/lib/repo-map/queries/go.js +27 -0
  502. package/plugins/drift-detect/lib/repo-map/queries/index.js +100 -0
  503. package/plugins/drift-detect/lib/repo-map/queries/java.js +38 -0
  504. package/plugins/drift-detect/lib/repo-map/queries/javascript.js +55 -0
  505. package/plugins/drift-detect/lib/repo-map/queries/python.js +24 -0
  506. package/plugins/drift-detect/lib/repo-map/queries/rust.js +73 -0
  507. package/plugins/drift-detect/lib/repo-map/queries/typescript.js +38 -0
  508. package/plugins/drift-detect/lib/repo-map/runner.js +1165 -0
  509. package/plugins/drift-detect/lib/repo-map/updater.js +474 -0
  510. package/plugins/drift-detect/lib/repo-map/usage-analyzer.js +407 -0
  511. package/plugins/drift-detect/lib/schemas/plugin-manifest.schema.json +57 -0
  512. package/plugins/drift-detect/lib/schemas/validator.js +247 -0
  513. package/plugins/drift-detect/lib/sources/custom-handler.js +199 -0
  514. package/plugins/drift-detect/lib/sources/policy-questions.js +246 -0
  515. package/plugins/drift-detect/lib/sources/source-cache.js +165 -0
  516. package/plugins/drift-detect/lib/state/workflow-state.js +575 -0
  517. package/plugins/drift-detect/lib/types/agent-frontmatter.d.ts +134 -0
  518. package/plugins/drift-detect/lib/types/command-frontmatter.d.ts +107 -0
  519. package/plugins/drift-detect/lib/types/hook-frontmatter.d.ts +115 -0
  520. package/plugins/drift-detect/lib/types/index.d.ts +84 -0
  521. package/plugins/drift-detect/lib/types/plugin-manifest.d.ts +102 -0
  522. package/plugins/drift-detect/lib/types/skill-frontmatter.d.ts +89 -0
  523. package/plugins/drift-detect/lib/utils/atomic-write.js +94 -0
  524. package/plugins/drift-detect/lib/utils/cache-manager.js +159 -0
  525. package/plugins/drift-detect/lib/utils/context-optimizer.js +300 -0
  526. package/plugins/drift-detect/lib/utils/deprecation.js +37 -0
  527. package/plugins/drift-detect/lib/utils/shell-escape.js +88 -0
  528. package/plugins/drift-detect/skills/drift-analysis/SKILL.md +324 -0
  529. package/plugins/enhance/.claude-plugin/plugin.json +20 -0
  530. package/plugins/enhance/agents/agent-enhancer.md +64 -0
  531. package/plugins/enhance/agents/claudemd-enhancer.md +65 -0
  532. package/plugins/enhance/agents/cross-file-enhancer.md +54 -0
  533. package/plugins/enhance/agents/docs-enhancer.md +64 -0
  534. package/plugins/enhance/agents/hooks-enhancer.md +64 -0
  535. package/plugins/enhance/agents/plugin-enhancer.md +63 -0
  536. package/plugins/enhance/agents/prompt-enhancer.md +58 -0
  537. package/plugins/enhance/agents/skills-enhancer.md +64 -0
  538. package/plugins/enhance/commands/enhance.md +178 -0
  539. package/plugins/enhance/lib/adapter-transforms.js +278 -0
  540. package/plugins/enhance/lib/collectors/codebase.js +392 -0
  541. package/plugins/enhance/lib/collectors/docs-patterns.js +713 -0
  542. package/plugins/enhance/lib/collectors/documentation.js +219 -0
  543. package/plugins/enhance/lib/collectors/github.js +266 -0
  544. package/plugins/enhance/lib/collectors/index.js +126 -0
  545. package/plugins/enhance/lib/config/index.js +14 -0
  546. package/plugins/enhance/lib/cross-platform/index.js +539 -0
  547. package/plugins/enhance/lib/discovery/index.js +352 -0
  548. package/plugins/enhance/lib/drift-detect/collectors.js +37 -0
  549. package/plugins/enhance/lib/enhance/agent-analyzer.js +421 -0
  550. package/plugins/enhance/lib/enhance/agent-patterns.js +571 -0
  551. package/plugins/enhance/lib/enhance/auto-suppression.js +622 -0
  552. package/plugins/enhance/lib/enhance/benchmark.js +417 -0
  553. package/plugins/enhance/lib/enhance/cross-file-analyzer.js +930 -0
  554. package/plugins/enhance/lib/enhance/cross-file-patterns.js +370 -0
  555. package/plugins/enhance/lib/enhance/docs-analyzer.js +325 -0
  556. package/plugins/enhance/lib/enhance/docs-patterns.js +671 -0
  557. package/plugins/enhance/lib/enhance/fixer.js +721 -0
  558. package/plugins/enhance/lib/enhance/hook-analyzer.js +135 -0
  559. package/plugins/enhance/lib/enhance/hook-patterns.js +40 -0
  560. package/plugins/enhance/lib/enhance/index.js +127 -0
  561. package/plugins/enhance/lib/enhance/plugin-analyzer.js +402 -0
  562. package/plugins/enhance/lib/enhance/plugin-patterns.js +326 -0
  563. package/plugins/enhance/lib/enhance/projectmemory-analyzer.js +551 -0
  564. package/plugins/enhance/lib/enhance/projectmemory-patterns.js +617 -0
  565. package/plugins/enhance/lib/enhance/prompt-analyzer.js +457 -0
  566. package/plugins/enhance/lib/enhance/prompt-patterns.js +1484 -0
  567. package/plugins/enhance/lib/enhance/reporter.js +1348 -0
  568. package/plugins/enhance/lib/enhance/security-patterns.js +284 -0
  569. package/plugins/enhance/lib/enhance/skill-analyzer.js +182 -0
  570. package/plugins/enhance/lib/enhance/skill-patterns.js +147 -0
  571. package/plugins/enhance/lib/enhance/suppression.js +352 -0
  572. package/plugins/enhance/lib/enhance/tool-patterns.js +373 -0
  573. package/plugins/enhance/lib/index.js +270 -0
  574. package/plugins/enhance/lib/patterns/cli-enhancers.js +611 -0
  575. package/plugins/enhance/lib/patterns/pipeline.js +948 -0
  576. package/plugins/enhance/lib/patterns/review-patterns.js +558 -0
  577. package/plugins/enhance/lib/patterns/slop-analyzers.js +2305 -0
  578. package/plugins/enhance/lib/patterns/slop-patterns.js +1187 -0
  579. package/plugins/enhance/lib/perf/analyzer/index.js +22 -0
  580. package/plugins/enhance/lib/perf/argument-parser.js +105 -0
  581. package/plugins/enhance/lib/perf/baseline-comparator.js +50 -0
  582. package/plugins/enhance/lib/perf/baseline-store.js +127 -0
  583. package/plugins/enhance/lib/perf/benchmark-runner.js +399 -0
  584. package/plugins/enhance/lib/perf/breaking-point-finder.js +52 -0
  585. package/plugins/enhance/lib/perf/breaking-point-runner.js +60 -0
  586. package/plugins/enhance/lib/perf/checkpoint.js +123 -0
  587. package/plugins/enhance/lib/perf/code-paths.js +86 -0
  588. package/plugins/enhance/lib/perf/consolidation.js +37 -0
  589. package/plugins/enhance/lib/perf/constraint-runner.js +71 -0
  590. package/plugins/enhance/lib/perf/experiment-runner.js +32 -0
  591. package/plugins/enhance/lib/perf/index.js +41 -0
  592. package/plugins/enhance/lib/perf/investigation-state.js +875 -0
  593. package/plugins/enhance/lib/perf/optimization-runner.js +79 -0
  594. package/plugins/enhance/lib/perf/profilers/go.js +22 -0
  595. package/plugins/enhance/lib/perf/profilers/index.js +46 -0
  596. package/plugins/enhance/lib/perf/profilers/java.js +23 -0
  597. package/plugins/enhance/lib/perf/profilers/node.js +27 -0
  598. package/plugins/enhance/lib/perf/profilers/python.js +23 -0
  599. package/plugins/enhance/lib/perf/profilers/rust.js +23 -0
  600. package/plugins/enhance/lib/perf/profiling-runner.js +56 -0
  601. package/plugins/enhance/lib/perf/schemas.js +140 -0
  602. package/plugins/enhance/lib/platform/detect-platform.js +413 -0
  603. package/plugins/enhance/lib/platform/detection-configs.js +93 -0
  604. package/plugins/enhance/lib/platform/state-dir.js +132 -0
  605. package/plugins/enhance/lib/platform/verify-tools.js +182 -0
  606. package/plugins/enhance/lib/repo-map/cache.js +152 -0
  607. package/plugins/enhance/lib/repo-map/index.js +222 -0
  608. package/plugins/enhance/lib/repo-map/installer.js +212 -0
  609. package/plugins/enhance/lib/repo-map/queries/go.js +27 -0
  610. package/plugins/enhance/lib/repo-map/queries/index.js +100 -0
  611. package/plugins/enhance/lib/repo-map/queries/java.js +38 -0
  612. package/plugins/enhance/lib/repo-map/queries/javascript.js +55 -0
  613. package/plugins/enhance/lib/repo-map/queries/python.js +24 -0
  614. package/plugins/enhance/lib/repo-map/queries/rust.js +73 -0
  615. package/plugins/enhance/lib/repo-map/queries/typescript.js +38 -0
  616. package/plugins/enhance/lib/repo-map/runner.js +1165 -0
  617. package/plugins/enhance/lib/repo-map/updater.js +474 -0
  618. package/plugins/enhance/lib/repo-map/usage-analyzer.js +407 -0
  619. package/plugins/enhance/lib/schemas/plugin-manifest.schema.json +57 -0
  620. package/plugins/enhance/lib/schemas/validator.js +247 -0
  621. package/plugins/enhance/lib/sources/custom-handler.js +199 -0
  622. package/plugins/enhance/lib/sources/policy-questions.js +246 -0
  623. package/plugins/enhance/lib/sources/source-cache.js +165 -0
  624. package/plugins/enhance/lib/state/workflow-state.js +575 -0
  625. package/plugins/enhance/lib/types/agent-frontmatter.d.ts +134 -0
  626. package/plugins/enhance/lib/types/command-frontmatter.d.ts +107 -0
  627. package/plugins/enhance/lib/types/hook-frontmatter.d.ts +115 -0
  628. package/plugins/enhance/lib/types/index.d.ts +84 -0
  629. package/plugins/enhance/lib/types/plugin-manifest.d.ts +102 -0
  630. package/plugins/enhance/lib/types/skill-frontmatter.d.ts +89 -0
  631. package/plugins/enhance/lib/utils/atomic-write.js +94 -0
  632. package/plugins/enhance/lib/utils/cache-manager.js +159 -0
  633. package/plugins/enhance/lib/utils/context-optimizer.js +300 -0
  634. package/plugins/enhance/lib/utils/deprecation.js +37 -0
  635. package/plugins/enhance/lib/utils/shell-escape.js +88 -0
  636. package/plugins/enhance/skills/enhance-agent-prompts/SKILL.md +277 -0
  637. package/plugins/enhance/skills/enhance-claude-memory/SKILL.md +387 -0
  638. package/plugins/enhance/skills/enhance-cross-file/SKILL.md +110 -0
  639. package/plugins/enhance/skills/enhance-docs/SKILL.md +298 -0
  640. package/plugins/enhance/skills/enhance-hooks/SKILL.md +554 -0
  641. package/plugins/enhance/skills/enhance-orchestrator/SKILL.md +255 -0
  642. package/plugins/enhance/skills/enhance-plugins/SKILL.md +319 -0
  643. package/plugins/enhance/skills/enhance-prompts/SKILL.md +340 -0
  644. package/plugins/enhance/skills/enhance-skills/SKILL.md +436 -0
  645. package/plugins/learn/.claude-plugin/plugin.json +21 -0
  646. package/plugins/learn/agents/learn-agent.md +331 -0
  647. package/plugins/learn/commands/learn.md +190 -0
  648. package/plugins/learn/lib/adapter-transforms.js +278 -0
  649. package/plugins/learn/lib/collectors/codebase.js +392 -0
  650. package/plugins/learn/lib/collectors/docs-patterns.js +713 -0
  651. package/plugins/learn/lib/collectors/documentation.js +219 -0
  652. package/plugins/learn/lib/collectors/github.js +266 -0
  653. package/plugins/learn/lib/collectors/index.js +126 -0
  654. package/plugins/learn/lib/config/index.js +14 -0
  655. package/plugins/learn/lib/cross-platform/index.js +539 -0
  656. package/plugins/learn/lib/discovery/index.js +352 -0
  657. package/plugins/learn/lib/drift-detect/collectors.js +37 -0
  658. package/plugins/learn/lib/enhance/agent-analyzer.js +421 -0
  659. package/plugins/learn/lib/enhance/agent-patterns.js +571 -0
  660. package/plugins/learn/lib/enhance/auto-suppression.js +622 -0
  661. package/plugins/learn/lib/enhance/benchmark.js +417 -0
  662. package/plugins/learn/lib/enhance/cross-file-analyzer.js +930 -0
  663. package/plugins/learn/lib/enhance/cross-file-patterns.js +370 -0
  664. package/plugins/learn/lib/enhance/docs-analyzer.js +325 -0
  665. package/plugins/learn/lib/enhance/docs-patterns.js +671 -0
  666. package/plugins/learn/lib/enhance/fixer.js +721 -0
  667. package/plugins/learn/lib/enhance/hook-analyzer.js +135 -0
  668. package/plugins/learn/lib/enhance/hook-patterns.js +40 -0
  669. package/plugins/learn/lib/enhance/index.js +127 -0
  670. package/plugins/learn/lib/enhance/plugin-analyzer.js +402 -0
  671. package/plugins/learn/lib/enhance/plugin-patterns.js +326 -0
  672. package/plugins/learn/lib/enhance/projectmemory-analyzer.js +551 -0
  673. package/plugins/learn/lib/enhance/projectmemory-patterns.js +617 -0
  674. package/plugins/learn/lib/enhance/prompt-analyzer.js +457 -0
  675. package/plugins/learn/lib/enhance/prompt-patterns.js +1484 -0
  676. package/plugins/learn/lib/enhance/reporter.js +1348 -0
  677. package/plugins/learn/lib/enhance/security-patterns.js +284 -0
  678. package/plugins/learn/lib/enhance/skill-analyzer.js +182 -0
  679. package/plugins/learn/lib/enhance/skill-patterns.js +147 -0
  680. package/plugins/learn/lib/enhance/suppression.js +352 -0
  681. package/plugins/learn/lib/enhance/tool-patterns.js +373 -0
  682. package/plugins/learn/lib/index.js +270 -0
  683. package/plugins/learn/lib/patterns/cli-enhancers.js +611 -0
  684. package/plugins/learn/lib/patterns/pipeline.js +948 -0
  685. package/plugins/learn/lib/patterns/review-patterns.js +558 -0
  686. package/plugins/learn/lib/patterns/slop-analyzers.js +2305 -0
  687. package/plugins/learn/lib/patterns/slop-patterns.js +1187 -0
  688. package/plugins/learn/lib/perf/analyzer/index.js +22 -0
  689. package/plugins/learn/lib/perf/argument-parser.js +105 -0
  690. package/plugins/learn/lib/perf/baseline-comparator.js +50 -0
  691. package/plugins/learn/lib/perf/baseline-store.js +127 -0
  692. package/plugins/learn/lib/perf/benchmark-runner.js +399 -0
  693. package/plugins/learn/lib/perf/breaking-point-finder.js +52 -0
  694. package/plugins/learn/lib/perf/breaking-point-runner.js +60 -0
  695. package/plugins/learn/lib/perf/checkpoint.js +123 -0
  696. package/plugins/learn/lib/perf/code-paths.js +86 -0
  697. package/plugins/learn/lib/perf/consolidation.js +37 -0
  698. package/plugins/learn/lib/perf/constraint-runner.js +71 -0
  699. package/plugins/learn/lib/perf/experiment-runner.js +32 -0
  700. package/plugins/learn/lib/perf/index.js +41 -0
  701. package/plugins/learn/lib/perf/investigation-state.js +875 -0
  702. package/plugins/learn/lib/perf/optimization-runner.js +79 -0
  703. package/plugins/learn/lib/perf/profilers/go.js +22 -0
  704. package/plugins/learn/lib/perf/profilers/index.js +46 -0
  705. package/plugins/learn/lib/perf/profilers/java.js +23 -0
  706. package/plugins/learn/lib/perf/profilers/node.js +27 -0
  707. package/plugins/learn/lib/perf/profilers/python.js +23 -0
  708. package/plugins/learn/lib/perf/profilers/rust.js +23 -0
  709. package/plugins/learn/lib/perf/profiling-runner.js +56 -0
  710. package/plugins/learn/lib/perf/schemas.js +140 -0
  711. package/plugins/learn/lib/platform/detect-platform.js +413 -0
  712. package/plugins/learn/lib/platform/detection-configs.js +93 -0
  713. package/plugins/learn/lib/platform/state-dir.js +132 -0
  714. package/plugins/learn/lib/platform/verify-tools.js +182 -0
  715. package/plugins/learn/lib/repo-map/cache.js +152 -0
  716. package/plugins/learn/lib/repo-map/index.js +222 -0
  717. package/plugins/learn/lib/repo-map/installer.js +212 -0
  718. package/plugins/learn/lib/repo-map/queries/go.js +27 -0
  719. package/plugins/learn/lib/repo-map/queries/index.js +100 -0
  720. package/plugins/learn/lib/repo-map/queries/java.js +38 -0
  721. package/plugins/learn/lib/repo-map/queries/javascript.js +55 -0
  722. package/plugins/learn/lib/repo-map/queries/python.js +24 -0
  723. package/plugins/learn/lib/repo-map/queries/rust.js +73 -0
  724. package/plugins/learn/lib/repo-map/queries/typescript.js +38 -0
  725. package/plugins/learn/lib/repo-map/runner.js +1165 -0
  726. package/plugins/learn/lib/repo-map/updater.js +474 -0
  727. package/plugins/learn/lib/repo-map/usage-analyzer.js +407 -0
  728. package/plugins/learn/lib/schemas/plugin-manifest.schema.json +57 -0
  729. package/plugins/learn/lib/schemas/validator.js +247 -0
  730. package/plugins/learn/lib/sources/custom-handler.js +199 -0
  731. package/plugins/learn/lib/sources/policy-questions.js +246 -0
  732. package/plugins/learn/lib/sources/source-cache.js +165 -0
  733. package/plugins/learn/lib/state/workflow-state.js +575 -0
  734. package/plugins/learn/lib/types/agent-frontmatter.d.ts +134 -0
  735. package/plugins/learn/lib/types/command-frontmatter.d.ts +107 -0
  736. package/plugins/learn/lib/types/hook-frontmatter.d.ts +115 -0
  737. package/plugins/learn/lib/types/index.d.ts +84 -0
  738. package/plugins/learn/lib/types/plugin-manifest.d.ts +102 -0
  739. package/plugins/learn/lib/types/skill-frontmatter.d.ts +89 -0
  740. package/plugins/learn/lib/utils/atomic-write.js +94 -0
  741. package/plugins/learn/lib/utils/cache-manager.js +159 -0
  742. package/plugins/learn/lib/utils/context-optimizer.js +300 -0
  743. package/plugins/learn/lib/utils/deprecation.js +37 -0
  744. package/plugins/learn/lib/utils/shell-escape.js +88 -0
  745. package/plugins/learn/skills/learn/SKILL.md +349 -0
  746. package/plugins/next-task/.claude-plugin/plugin.json +24 -0
  747. package/plugins/next-task/agents/ci-fixer.md +259 -0
  748. package/plugins/next-task/agents/ci-monitor.md +342 -0
  749. package/plugins/next-task/agents/delivery-validator.md +115 -0
  750. package/plugins/next-task/agents/exploration-agent.md +316 -0
  751. package/plugins/next-task/agents/implementation-agent.md +465 -0
  752. package/plugins/next-task/agents/planning-agent.md +377 -0
  753. package/plugins/next-task/agents/simple-fixer.md +139 -0
  754. package/plugins/next-task/agents/task-discoverer.md +89 -0
  755. package/plugins/next-task/agents/test-coverage-checker.md +451 -0
  756. package/plugins/next-task/agents/worktree-manager.md +257 -0
  757. package/plugins/next-task/commands/delivery-approval.md +341 -0
  758. package/plugins/next-task/commands/next-task.md +547 -0
  759. package/plugins/next-task/hooks/hooks.json +14 -0
  760. package/plugins/next-task/lib/adapter-transforms.js +278 -0
  761. package/plugins/next-task/lib/collectors/codebase.js +392 -0
  762. package/plugins/next-task/lib/collectors/docs-patterns.js +713 -0
  763. package/plugins/next-task/lib/collectors/documentation.js +219 -0
  764. package/plugins/next-task/lib/collectors/github.js +266 -0
  765. package/plugins/next-task/lib/collectors/index.js +126 -0
  766. package/plugins/next-task/lib/config/index.js +14 -0
  767. package/plugins/next-task/lib/cross-platform/index.js +539 -0
  768. package/plugins/next-task/lib/discovery/index.js +352 -0
  769. package/plugins/next-task/lib/drift-detect/collectors.js +37 -0
  770. package/plugins/next-task/lib/enhance/agent-analyzer.js +421 -0
  771. package/plugins/next-task/lib/enhance/agent-patterns.js +571 -0
  772. package/plugins/next-task/lib/enhance/auto-suppression.js +622 -0
  773. package/plugins/next-task/lib/enhance/benchmark.js +417 -0
  774. package/plugins/next-task/lib/enhance/cross-file-analyzer.js +930 -0
  775. package/plugins/next-task/lib/enhance/cross-file-patterns.js +370 -0
  776. package/plugins/next-task/lib/enhance/docs-analyzer.js +325 -0
  777. package/plugins/next-task/lib/enhance/docs-patterns.js +671 -0
  778. package/plugins/next-task/lib/enhance/fixer.js +721 -0
  779. package/plugins/next-task/lib/enhance/hook-analyzer.js +135 -0
  780. package/plugins/next-task/lib/enhance/hook-patterns.js +40 -0
  781. package/plugins/next-task/lib/enhance/index.js +127 -0
  782. package/plugins/next-task/lib/enhance/plugin-analyzer.js +402 -0
  783. package/plugins/next-task/lib/enhance/plugin-patterns.js +326 -0
  784. package/plugins/next-task/lib/enhance/projectmemory-analyzer.js +551 -0
  785. package/plugins/next-task/lib/enhance/projectmemory-patterns.js +617 -0
  786. package/plugins/next-task/lib/enhance/prompt-analyzer.js +457 -0
  787. package/plugins/next-task/lib/enhance/prompt-patterns.js +1484 -0
  788. package/plugins/next-task/lib/enhance/reporter.js +1348 -0
  789. package/plugins/next-task/lib/enhance/security-patterns.js +284 -0
  790. package/plugins/next-task/lib/enhance/skill-analyzer.js +182 -0
  791. package/plugins/next-task/lib/enhance/skill-patterns.js +147 -0
  792. package/plugins/next-task/lib/enhance/suppression.js +352 -0
  793. package/plugins/next-task/lib/enhance/tool-patterns.js +373 -0
  794. package/plugins/next-task/lib/index.js +270 -0
  795. package/plugins/next-task/lib/patterns/cli-enhancers.js +611 -0
  796. package/plugins/next-task/lib/patterns/pipeline.js +948 -0
  797. package/plugins/next-task/lib/patterns/review-patterns.js +558 -0
  798. package/plugins/next-task/lib/patterns/slop-analyzers.js +2305 -0
  799. package/plugins/next-task/lib/patterns/slop-patterns.js +1187 -0
  800. package/plugins/next-task/lib/perf/analyzer/index.js +22 -0
  801. package/plugins/next-task/lib/perf/argument-parser.js +105 -0
  802. package/plugins/next-task/lib/perf/baseline-comparator.js +50 -0
  803. package/plugins/next-task/lib/perf/baseline-store.js +127 -0
  804. package/plugins/next-task/lib/perf/benchmark-runner.js +399 -0
  805. package/plugins/next-task/lib/perf/breaking-point-finder.js +52 -0
  806. package/plugins/next-task/lib/perf/breaking-point-runner.js +60 -0
  807. package/plugins/next-task/lib/perf/checkpoint.js +123 -0
  808. package/plugins/next-task/lib/perf/code-paths.js +86 -0
  809. package/plugins/next-task/lib/perf/consolidation.js +37 -0
  810. package/plugins/next-task/lib/perf/constraint-runner.js +71 -0
  811. package/plugins/next-task/lib/perf/experiment-runner.js +32 -0
  812. package/plugins/next-task/lib/perf/index.js +41 -0
  813. package/plugins/next-task/lib/perf/investigation-state.js +875 -0
  814. package/plugins/next-task/lib/perf/optimization-runner.js +79 -0
  815. package/plugins/next-task/lib/perf/profilers/go.js +22 -0
  816. package/plugins/next-task/lib/perf/profilers/index.js +46 -0
  817. package/plugins/next-task/lib/perf/profilers/java.js +23 -0
  818. package/plugins/next-task/lib/perf/profilers/node.js +27 -0
  819. package/plugins/next-task/lib/perf/profilers/python.js +23 -0
  820. package/plugins/next-task/lib/perf/profilers/rust.js +23 -0
  821. package/plugins/next-task/lib/perf/profiling-runner.js +56 -0
  822. package/plugins/next-task/lib/perf/schemas.js +140 -0
  823. package/plugins/next-task/lib/platform/detect-platform.js +413 -0
  824. package/plugins/next-task/lib/platform/detection-configs.js +93 -0
  825. package/plugins/next-task/lib/platform/state-dir.js +132 -0
  826. package/plugins/next-task/lib/platform/verify-tools.js +182 -0
  827. package/plugins/next-task/lib/repo-map/cache.js +152 -0
  828. package/plugins/next-task/lib/repo-map/index.js +222 -0
  829. package/plugins/next-task/lib/repo-map/installer.js +212 -0
  830. package/plugins/next-task/lib/repo-map/queries/go.js +27 -0
  831. package/plugins/next-task/lib/repo-map/queries/index.js +100 -0
  832. package/plugins/next-task/lib/repo-map/queries/java.js +38 -0
  833. package/plugins/next-task/lib/repo-map/queries/javascript.js +55 -0
  834. package/plugins/next-task/lib/repo-map/queries/python.js +24 -0
  835. package/plugins/next-task/lib/repo-map/queries/rust.js +73 -0
  836. package/plugins/next-task/lib/repo-map/queries/typescript.js +38 -0
  837. package/plugins/next-task/lib/repo-map/runner.js +1165 -0
  838. package/plugins/next-task/lib/repo-map/updater.js +474 -0
  839. package/plugins/next-task/lib/repo-map/usage-analyzer.js +407 -0
  840. package/plugins/next-task/lib/schemas/plugin-manifest.schema.json +57 -0
  841. package/plugins/next-task/lib/schemas/validator.js +247 -0
  842. package/plugins/next-task/lib/sources/custom-handler.js +199 -0
  843. package/plugins/next-task/lib/sources/policy-questions.js +246 -0
  844. package/plugins/next-task/lib/sources/source-cache.js +165 -0
  845. package/plugins/next-task/lib/state/workflow-state.js +575 -0
  846. package/plugins/next-task/lib/types/agent-frontmatter.d.ts +134 -0
  847. package/plugins/next-task/lib/types/command-frontmatter.d.ts +107 -0
  848. package/plugins/next-task/lib/types/hook-frontmatter.d.ts +115 -0
  849. package/plugins/next-task/lib/types/index.d.ts +84 -0
  850. package/plugins/next-task/lib/types/plugin-manifest.d.ts +102 -0
  851. package/plugins/next-task/lib/types/skill-frontmatter.d.ts +89 -0
  852. package/plugins/next-task/lib/utils/atomic-write.js +94 -0
  853. package/plugins/next-task/lib/utils/cache-manager.js +159 -0
  854. package/plugins/next-task/lib/utils/context-optimizer.js +300 -0
  855. package/plugins/next-task/lib/utils/deprecation.js +37 -0
  856. package/plugins/next-task/lib/utils/shell-escape.js +88 -0
  857. package/plugins/next-task/skills/discover-tasks/SKILL.md +191 -0
  858. package/plugins/next-task/skills/orchestrate-review/SKILL.md +239 -0
  859. package/plugins/next-task/skills/validate-delivery/SKILL.md +186 -0
  860. package/plugins/perf/.claude-plugin/plugin.json +20 -0
  861. package/plugins/perf/agents/perf-analyzer.md +43 -0
  862. package/plugins/perf/agents/perf-code-paths.md +16 -0
  863. package/plugins/perf/agents/perf-investigation-logger.md +47 -0
  864. package/plugins/perf/agents/perf-orchestrator.md +344 -0
  865. package/plugins/perf/agents/perf-theory-gatherer.md +25 -0
  866. package/plugins/perf/agents/perf-theory-tester.md +58 -0
  867. package/plugins/perf/commands/perf.md +470 -0
  868. package/plugins/perf/hooks/checkpoint.md +35 -0
  869. package/plugins/perf/hooks/constraint-tester.md +40 -0
  870. package/plugins/perf/lib/adapter-transforms.js +278 -0
  871. package/plugins/perf/lib/collectors/codebase.js +392 -0
  872. package/plugins/perf/lib/collectors/docs-patterns.js +713 -0
  873. package/plugins/perf/lib/collectors/documentation.js +219 -0
  874. package/plugins/perf/lib/collectors/github.js +266 -0
  875. package/plugins/perf/lib/collectors/index.js +126 -0
  876. package/plugins/perf/lib/config/index.js +14 -0
  877. package/plugins/perf/lib/cross-platform/index.js +539 -0
  878. package/plugins/perf/lib/discovery/index.js +352 -0
  879. package/plugins/perf/lib/drift-detect/collectors.js +37 -0
  880. package/plugins/perf/lib/enhance/agent-analyzer.js +421 -0
  881. package/plugins/perf/lib/enhance/agent-patterns.js +571 -0
  882. package/plugins/perf/lib/enhance/auto-suppression.js +622 -0
  883. package/plugins/perf/lib/enhance/benchmark.js +417 -0
  884. package/plugins/perf/lib/enhance/cross-file-analyzer.js +930 -0
  885. package/plugins/perf/lib/enhance/cross-file-patterns.js +370 -0
  886. package/plugins/perf/lib/enhance/docs-analyzer.js +325 -0
  887. package/plugins/perf/lib/enhance/docs-patterns.js +671 -0
  888. package/plugins/perf/lib/enhance/fixer.js +721 -0
  889. package/plugins/perf/lib/enhance/hook-analyzer.js +135 -0
  890. package/plugins/perf/lib/enhance/hook-patterns.js +40 -0
  891. package/plugins/perf/lib/enhance/index.js +127 -0
  892. package/plugins/perf/lib/enhance/plugin-analyzer.js +402 -0
  893. package/plugins/perf/lib/enhance/plugin-patterns.js +326 -0
  894. package/plugins/perf/lib/enhance/projectmemory-analyzer.js +551 -0
  895. package/plugins/perf/lib/enhance/projectmemory-patterns.js +617 -0
  896. package/plugins/perf/lib/enhance/prompt-analyzer.js +457 -0
  897. package/plugins/perf/lib/enhance/prompt-patterns.js +1484 -0
  898. package/plugins/perf/lib/enhance/reporter.js +1348 -0
  899. package/plugins/perf/lib/enhance/security-patterns.js +284 -0
  900. package/plugins/perf/lib/enhance/skill-analyzer.js +182 -0
  901. package/plugins/perf/lib/enhance/skill-patterns.js +147 -0
  902. package/plugins/perf/lib/enhance/suppression.js +352 -0
  903. package/plugins/perf/lib/enhance/tool-patterns.js +373 -0
  904. package/plugins/perf/lib/index.js +270 -0
  905. package/plugins/perf/lib/patterns/cli-enhancers.js +611 -0
  906. package/plugins/perf/lib/patterns/pipeline.js +948 -0
  907. package/plugins/perf/lib/patterns/review-patterns.js +558 -0
  908. package/plugins/perf/lib/patterns/slop-analyzers.js +2305 -0
  909. package/plugins/perf/lib/patterns/slop-patterns.js +1187 -0
  910. package/plugins/perf/lib/perf/analyzer/index.js +22 -0
  911. package/plugins/perf/lib/perf/argument-parser.js +105 -0
  912. package/plugins/perf/lib/perf/baseline-comparator.js +50 -0
  913. package/plugins/perf/lib/perf/baseline-store.js +127 -0
  914. package/plugins/perf/lib/perf/benchmark-runner.js +399 -0
  915. package/plugins/perf/lib/perf/breaking-point-finder.js +52 -0
  916. package/plugins/perf/lib/perf/breaking-point-runner.js +60 -0
  917. package/plugins/perf/lib/perf/checkpoint.js +123 -0
  918. package/plugins/perf/lib/perf/code-paths.js +86 -0
  919. package/plugins/perf/lib/perf/consolidation.js +37 -0
  920. package/plugins/perf/lib/perf/constraint-runner.js +71 -0
  921. package/plugins/perf/lib/perf/experiment-runner.js +32 -0
  922. package/plugins/perf/lib/perf/index.js +41 -0
  923. package/plugins/perf/lib/perf/investigation-state.js +875 -0
  924. package/plugins/perf/lib/perf/optimization-runner.js +79 -0
  925. package/plugins/perf/lib/perf/profilers/go.js +22 -0
  926. package/plugins/perf/lib/perf/profilers/index.js +46 -0
  927. package/plugins/perf/lib/perf/profilers/java.js +23 -0
  928. package/plugins/perf/lib/perf/profilers/node.js +27 -0
  929. package/plugins/perf/lib/perf/profilers/python.js +23 -0
  930. package/plugins/perf/lib/perf/profilers/rust.js +23 -0
  931. package/plugins/perf/lib/perf/profiling-runner.js +56 -0
  932. package/plugins/perf/lib/perf/schemas.js +140 -0
  933. package/plugins/perf/lib/platform/detect-platform.js +413 -0
  934. package/plugins/perf/lib/platform/detection-configs.js +93 -0
  935. package/plugins/perf/lib/platform/state-dir.js +132 -0
  936. package/plugins/perf/lib/platform/verify-tools.js +182 -0
  937. package/plugins/perf/lib/repo-map/cache.js +152 -0
  938. package/plugins/perf/lib/repo-map/index.js +222 -0
  939. package/plugins/perf/lib/repo-map/installer.js +212 -0
  940. package/plugins/perf/lib/repo-map/queries/go.js +27 -0
  941. package/plugins/perf/lib/repo-map/queries/index.js +100 -0
  942. package/plugins/perf/lib/repo-map/queries/java.js +38 -0
  943. package/plugins/perf/lib/repo-map/queries/javascript.js +55 -0
  944. package/plugins/perf/lib/repo-map/queries/python.js +24 -0
  945. package/plugins/perf/lib/repo-map/queries/rust.js +73 -0
  946. package/plugins/perf/lib/repo-map/queries/typescript.js +38 -0
  947. package/plugins/perf/lib/repo-map/runner.js +1165 -0
  948. package/plugins/perf/lib/repo-map/updater.js +474 -0
  949. package/plugins/perf/lib/repo-map/usage-analyzer.js +407 -0
  950. package/plugins/perf/lib/schemas/plugin-manifest.schema.json +57 -0
  951. package/plugins/perf/lib/schemas/validator.js +247 -0
  952. package/plugins/perf/lib/sources/custom-handler.js +199 -0
  953. package/plugins/perf/lib/sources/policy-questions.js +246 -0
  954. package/plugins/perf/lib/sources/source-cache.js +165 -0
  955. package/plugins/perf/lib/state/workflow-state.js +575 -0
  956. package/plugins/perf/lib/types/agent-frontmatter.d.ts +134 -0
  957. package/plugins/perf/lib/types/command-frontmatter.d.ts +107 -0
  958. package/plugins/perf/lib/types/hook-frontmatter.d.ts +115 -0
  959. package/plugins/perf/lib/types/index.d.ts +84 -0
  960. package/plugins/perf/lib/types/plugin-manifest.d.ts +102 -0
  961. package/plugins/perf/lib/types/skill-frontmatter.d.ts +89 -0
  962. package/plugins/perf/lib/utils/atomic-write.js +94 -0
  963. package/plugins/perf/lib/utils/cache-manager.js +159 -0
  964. package/plugins/perf/lib/utils/context-optimizer.js +300 -0
  965. package/plugins/perf/lib/utils/deprecation.js +37 -0
  966. package/plugins/perf/lib/utils/shell-escape.js +88 -0
  967. package/plugins/perf/skills/perf-analyzer/SKILL.md +37 -0
  968. package/plugins/perf/skills/perf-baseline-manager/SKILL.md +30 -0
  969. package/plugins/perf/skills/perf-benchmarker/SKILL.md +52 -0
  970. package/plugins/perf/skills/perf-code-paths/SKILL.md +32 -0
  971. package/plugins/perf/skills/perf-investigation-logger/SKILL.md +41 -0
  972. package/plugins/perf/skills/perf-profiler/SKILL.md +42 -0
  973. package/plugins/perf/skills/perf-theory-gatherer/SKILL.md +35 -0
  974. package/plugins/perf/skills/perf-theory-tester/SKILL.md +36 -0
  975. package/plugins/repo-map/.claude-plugin/plugin.json +22 -0
  976. package/plugins/repo-map/agents/map-validator.md +60 -0
  977. package/plugins/repo-map/commands/repo-map.md +133 -0
  978. package/plugins/repo-map/lib/adapter-transforms.js +278 -0
  979. package/plugins/repo-map/lib/collectors/codebase.js +392 -0
  980. package/plugins/repo-map/lib/collectors/docs-patterns.js +713 -0
  981. package/plugins/repo-map/lib/collectors/documentation.js +219 -0
  982. package/plugins/repo-map/lib/collectors/github.js +266 -0
  983. package/plugins/repo-map/lib/collectors/index.js +126 -0
  984. package/plugins/repo-map/lib/config/index.js +14 -0
  985. package/plugins/repo-map/lib/cross-platform/index.js +539 -0
  986. package/plugins/repo-map/lib/discovery/index.js +352 -0
  987. package/plugins/repo-map/lib/drift-detect/collectors.js +37 -0
  988. package/plugins/repo-map/lib/enhance/agent-analyzer.js +421 -0
  989. package/plugins/repo-map/lib/enhance/agent-patterns.js +571 -0
  990. package/plugins/repo-map/lib/enhance/auto-suppression.js +622 -0
  991. package/plugins/repo-map/lib/enhance/benchmark.js +417 -0
  992. package/plugins/repo-map/lib/enhance/cross-file-analyzer.js +930 -0
  993. package/plugins/repo-map/lib/enhance/cross-file-patterns.js +370 -0
  994. package/plugins/repo-map/lib/enhance/docs-analyzer.js +325 -0
  995. package/plugins/repo-map/lib/enhance/docs-patterns.js +671 -0
  996. package/plugins/repo-map/lib/enhance/fixer.js +721 -0
  997. package/plugins/repo-map/lib/enhance/hook-analyzer.js +135 -0
  998. package/plugins/repo-map/lib/enhance/hook-patterns.js +40 -0
  999. package/plugins/repo-map/lib/enhance/index.js +127 -0
  1000. package/plugins/repo-map/lib/enhance/plugin-analyzer.js +402 -0
  1001. package/plugins/repo-map/lib/enhance/plugin-patterns.js +326 -0
  1002. package/plugins/repo-map/lib/enhance/projectmemory-analyzer.js +551 -0
  1003. package/plugins/repo-map/lib/enhance/projectmemory-patterns.js +617 -0
  1004. package/plugins/repo-map/lib/enhance/prompt-analyzer.js +457 -0
  1005. package/plugins/repo-map/lib/enhance/prompt-patterns.js +1484 -0
  1006. package/plugins/repo-map/lib/enhance/reporter.js +1348 -0
  1007. package/plugins/repo-map/lib/enhance/security-patterns.js +284 -0
  1008. package/plugins/repo-map/lib/enhance/skill-analyzer.js +182 -0
  1009. package/plugins/repo-map/lib/enhance/skill-patterns.js +147 -0
  1010. package/plugins/repo-map/lib/enhance/suppression.js +352 -0
  1011. package/plugins/repo-map/lib/enhance/tool-patterns.js +373 -0
  1012. package/plugins/repo-map/lib/index.js +270 -0
  1013. package/plugins/repo-map/lib/patterns/cli-enhancers.js +611 -0
  1014. package/plugins/repo-map/lib/patterns/pipeline.js +948 -0
  1015. package/plugins/repo-map/lib/patterns/review-patterns.js +558 -0
  1016. package/plugins/repo-map/lib/patterns/slop-analyzers.js +2305 -0
  1017. package/plugins/repo-map/lib/patterns/slop-patterns.js +1187 -0
  1018. package/plugins/repo-map/lib/perf/analyzer/index.js +22 -0
  1019. package/plugins/repo-map/lib/perf/argument-parser.js +105 -0
  1020. package/plugins/repo-map/lib/perf/baseline-comparator.js +50 -0
  1021. package/plugins/repo-map/lib/perf/baseline-store.js +127 -0
  1022. package/plugins/repo-map/lib/perf/benchmark-runner.js +399 -0
  1023. package/plugins/repo-map/lib/perf/breaking-point-finder.js +52 -0
  1024. package/plugins/repo-map/lib/perf/breaking-point-runner.js +60 -0
  1025. package/plugins/repo-map/lib/perf/checkpoint.js +123 -0
  1026. package/plugins/repo-map/lib/perf/code-paths.js +86 -0
  1027. package/plugins/repo-map/lib/perf/consolidation.js +37 -0
  1028. package/plugins/repo-map/lib/perf/constraint-runner.js +71 -0
  1029. package/plugins/repo-map/lib/perf/experiment-runner.js +32 -0
  1030. package/plugins/repo-map/lib/perf/index.js +41 -0
  1031. package/plugins/repo-map/lib/perf/investigation-state.js +875 -0
  1032. package/plugins/repo-map/lib/perf/optimization-runner.js +79 -0
  1033. package/plugins/repo-map/lib/perf/profilers/go.js +22 -0
  1034. package/plugins/repo-map/lib/perf/profilers/index.js +46 -0
  1035. package/plugins/repo-map/lib/perf/profilers/java.js +23 -0
  1036. package/plugins/repo-map/lib/perf/profilers/node.js +27 -0
  1037. package/plugins/repo-map/lib/perf/profilers/python.js +23 -0
  1038. package/plugins/repo-map/lib/perf/profilers/rust.js +23 -0
  1039. package/plugins/repo-map/lib/perf/profiling-runner.js +56 -0
  1040. package/plugins/repo-map/lib/perf/schemas.js +140 -0
  1041. package/plugins/repo-map/lib/platform/detect-platform.js +413 -0
  1042. package/plugins/repo-map/lib/platform/detection-configs.js +93 -0
  1043. package/plugins/repo-map/lib/platform/state-dir.js +132 -0
  1044. package/plugins/repo-map/lib/platform/verify-tools.js +182 -0
  1045. package/plugins/repo-map/lib/repo-map/cache.js +152 -0
  1046. package/plugins/repo-map/lib/repo-map/index.js +222 -0
  1047. package/plugins/repo-map/lib/repo-map/installer.js +212 -0
  1048. package/plugins/repo-map/lib/repo-map/queries/go.js +27 -0
  1049. package/plugins/repo-map/lib/repo-map/queries/index.js +100 -0
  1050. package/plugins/repo-map/lib/repo-map/queries/java.js +38 -0
  1051. package/plugins/repo-map/lib/repo-map/queries/javascript.js +55 -0
  1052. package/plugins/repo-map/lib/repo-map/queries/python.js +24 -0
  1053. package/plugins/repo-map/lib/repo-map/queries/rust.js +73 -0
  1054. package/plugins/repo-map/lib/repo-map/queries/typescript.js +38 -0
  1055. package/plugins/repo-map/lib/repo-map/runner.js +1165 -0
  1056. package/plugins/repo-map/lib/repo-map/updater.js +474 -0
  1057. package/plugins/repo-map/lib/repo-map/usage-analyzer.js +407 -0
  1058. package/plugins/repo-map/lib/schemas/plugin-manifest.schema.json +57 -0
  1059. package/plugins/repo-map/lib/schemas/validator.js +247 -0
  1060. package/plugins/repo-map/lib/sources/custom-handler.js +199 -0
  1061. package/plugins/repo-map/lib/sources/policy-questions.js +246 -0
  1062. package/plugins/repo-map/lib/sources/source-cache.js +165 -0
  1063. package/plugins/repo-map/lib/state/workflow-state.js +575 -0
  1064. package/plugins/repo-map/lib/types/agent-frontmatter.d.ts +134 -0
  1065. package/plugins/repo-map/lib/types/command-frontmatter.d.ts +107 -0
  1066. package/plugins/repo-map/lib/types/hook-frontmatter.d.ts +115 -0
  1067. package/plugins/repo-map/lib/types/index.d.ts +84 -0
  1068. package/plugins/repo-map/lib/types/plugin-manifest.d.ts +102 -0
  1069. package/plugins/repo-map/lib/types/skill-frontmatter.d.ts +89 -0
  1070. package/plugins/repo-map/lib/utils/atomic-write.js +94 -0
  1071. package/plugins/repo-map/lib/utils/cache-manager.js +159 -0
  1072. package/plugins/repo-map/lib/utils/context-optimizer.js +300 -0
  1073. package/plugins/repo-map/lib/utils/deprecation.js +37 -0
  1074. package/plugins/repo-map/lib/utils/shell-escape.js +88 -0
  1075. package/plugins/repo-map/skills/repo-mapping/SKILL.md +83 -0
  1076. package/plugins/ship/.claude-plugin/plugin.json +21 -0
  1077. package/plugins/ship/commands/ship-ci-review-loop.md +472 -0
  1078. package/plugins/ship/commands/ship-deployment.md +335 -0
  1079. package/plugins/ship/commands/ship-error-handling.md +258 -0
  1080. package/plugins/ship/commands/ship.md +492 -0
  1081. package/plugins/ship/lib/adapter-transforms.js +278 -0
  1082. package/plugins/ship/lib/collectors/codebase.js +392 -0
  1083. package/plugins/ship/lib/collectors/docs-patterns.js +713 -0
  1084. package/plugins/ship/lib/collectors/documentation.js +219 -0
  1085. package/plugins/ship/lib/collectors/github.js +266 -0
  1086. package/plugins/ship/lib/collectors/index.js +126 -0
  1087. package/plugins/ship/lib/config/index.js +14 -0
  1088. package/plugins/ship/lib/cross-platform/index.js +539 -0
  1089. package/plugins/ship/lib/discovery/index.js +352 -0
  1090. package/plugins/ship/lib/drift-detect/collectors.js +37 -0
  1091. package/plugins/ship/lib/enhance/agent-analyzer.js +421 -0
  1092. package/plugins/ship/lib/enhance/agent-patterns.js +571 -0
  1093. package/plugins/ship/lib/enhance/auto-suppression.js +622 -0
  1094. package/plugins/ship/lib/enhance/benchmark.js +417 -0
  1095. package/plugins/ship/lib/enhance/cross-file-analyzer.js +930 -0
  1096. package/plugins/ship/lib/enhance/cross-file-patterns.js +370 -0
  1097. package/plugins/ship/lib/enhance/docs-analyzer.js +325 -0
  1098. package/plugins/ship/lib/enhance/docs-patterns.js +671 -0
  1099. package/plugins/ship/lib/enhance/fixer.js +721 -0
  1100. package/plugins/ship/lib/enhance/hook-analyzer.js +135 -0
  1101. package/plugins/ship/lib/enhance/hook-patterns.js +40 -0
  1102. package/plugins/ship/lib/enhance/index.js +127 -0
  1103. package/plugins/ship/lib/enhance/plugin-analyzer.js +402 -0
  1104. package/plugins/ship/lib/enhance/plugin-patterns.js +326 -0
  1105. package/plugins/ship/lib/enhance/projectmemory-analyzer.js +551 -0
  1106. package/plugins/ship/lib/enhance/projectmemory-patterns.js +617 -0
  1107. package/plugins/ship/lib/enhance/prompt-analyzer.js +457 -0
  1108. package/plugins/ship/lib/enhance/prompt-patterns.js +1484 -0
  1109. package/plugins/ship/lib/enhance/reporter.js +1348 -0
  1110. package/plugins/ship/lib/enhance/security-patterns.js +284 -0
  1111. package/plugins/ship/lib/enhance/skill-analyzer.js +182 -0
  1112. package/plugins/ship/lib/enhance/skill-patterns.js +147 -0
  1113. package/plugins/ship/lib/enhance/suppression.js +352 -0
  1114. package/plugins/ship/lib/enhance/tool-patterns.js +373 -0
  1115. package/plugins/ship/lib/index.js +270 -0
  1116. package/plugins/ship/lib/patterns/cli-enhancers.js +611 -0
  1117. package/plugins/ship/lib/patterns/pipeline.js +948 -0
  1118. package/plugins/ship/lib/patterns/review-patterns.js +558 -0
  1119. package/plugins/ship/lib/patterns/slop-analyzers.js +2305 -0
  1120. package/plugins/ship/lib/patterns/slop-patterns.js +1187 -0
  1121. package/plugins/ship/lib/perf/analyzer/index.js +22 -0
  1122. package/plugins/ship/lib/perf/argument-parser.js +105 -0
  1123. package/plugins/ship/lib/perf/baseline-comparator.js +50 -0
  1124. package/plugins/ship/lib/perf/baseline-store.js +127 -0
  1125. package/plugins/ship/lib/perf/benchmark-runner.js +399 -0
  1126. package/plugins/ship/lib/perf/breaking-point-finder.js +52 -0
  1127. package/plugins/ship/lib/perf/breaking-point-runner.js +60 -0
  1128. package/plugins/ship/lib/perf/checkpoint.js +123 -0
  1129. package/plugins/ship/lib/perf/code-paths.js +86 -0
  1130. package/plugins/ship/lib/perf/consolidation.js +37 -0
  1131. package/plugins/ship/lib/perf/constraint-runner.js +71 -0
  1132. package/plugins/ship/lib/perf/experiment-runner.js +32 -0
  1133. package/plugins/ship/lib/perf/index.js +41 -0
  1134. package/plugins/ship/lib/perf/investigation-state.js +875 -0
  1135. package/plugins/ship/lib/perf/optimization-runner.js +79 -0
  1136. package/plugins/ship/lib/perf/profilers/go.js +22 -0
  1137. package/plugins/ship/lib/perf/profilers/index.js +46 -0
  1138. package/plugins/ship/lib/perf/profilers/java.js +23 -0
  1139. package/plugins/ship/lib/perf/profilers/node.js +27 -0
  1140. package/plugins/ship/lib/perf/profilers/python.js +23 -0
  1141. package/plugins/ship/lib/perf/profilers/rust.js +23 -0
  1142. package/plugins/ship/lib/perf/profiling-runner.js +56 -0
  1143. package/plugins/ship/lib/perf/schemas.js +140 -0
  1144. package/plugins/ship/lib/platform/detect-platform.js +413 -0
  1145. package/plugins/ship/lib/platform/detection-configs.js +93 -0
  1146. package/plugins/ship/lib/platform/state-dir.js +132 -0
  1147. package/plugins/ship/lib/platform/verify-tools.js +182 -0
  1148. package/plugins/ship/lib/repo-map/cache.js +152 -0
  1149. package/plugins/ship/lib/repo-map/index.js +222 -0
  1150. package/plugins/ship/lib/repo-map/installer.js +212 -0
  1151. package/plugins/ship/lib/repo-map/queries/go.js +27 -0
  1152. package/plugins/ship/lib/repo-map/queries/index.js +100 -0
  1153. package/plugins/ship/lib/repo-map/queries/java.js +38 -0
  1154. package/plugins/ship/lib/repo-map/queries/javascript.js +55 -0
  1155. package/plugins/ship/lib/repo-map/queries/python.js +24 -0
  1156. package/plugins/ship/lib/repo-map/queries/rust.js +73 -0
  1157. package/plugins/ship/lib/repo-map/queries/typescript.js +38 -0
  1158. package/plugins/ship/lib/repo-map/runner.js +1165 -0
  1159. package/plugins/ship/lib/repo-map/updater.js +474 -0
  1160. package/plugins/ship/lib/repo-map/usage-analyzer.js +407 -0
  1161. package/plugins/ship/lib/schemas/plugin-manifest.schema.json +57 -0
  1162. package/plugins/ship/lib/schemas/validator.js +247 -0
  1163. package/plugins/ship/lib/sources/custom-handler.js +199 -0
  1164. package/plugins/ship/lib/sources/policy-questions.js +246 -0
  1165. package/plugins/ship/lib/sources/source-cache.js +165 -0
  1166. package/plugins/ship/lib/state/workflow-state.js +575 -0
  1167. package/plugins/ship/lib/types/agent-frontmatter.d.ts +134 -0
  1168. package/plugins/ship/lib/types/command-frontmatter.d.ts +107 -0
  1169. package/plugins/ship/lib/types/hook-frontmatter.d.ts +115 -0
  1170. package/plugins/ship/lib/types/index.d.ts +84 -0
  1171. package/plugins/ship/lib/types/plugin-manifest.d.ts +102 -0
  1172. package/plugins/ship/lib/types/skill-frontmatter.d.ts +89 -0
  1173. package/plugins/ship/lib/utils/atomic-write.js +94 -0
  1174. package/plugins/ship/lib/utils/cache-manager.js +159 -0
  1175. package/plugins/ship/lib/utils/context-optimizer.js +300 -0
  1176. package/plugins/ship/lib/utils/deprecation.js +37 -0
  1177. package/plugins/ship/lib/utils/shell-escape.js +88 -0
  1178. package/plugins/sync-docs/.claude-plugin/plugin.json +20 -0
  1179. package/plugins/sync-docs/agents/sync-docs-agent.md +154 -0
  1180. package/plugins/sync-docs/commands/sync-docs.md +186 -0
  1181. package/plugins/sync-docs/lib/adapter-transforms.js +278 -0
  1182. package/plugins/sync-docs/lib/collectors/codebase.js +392 -0
  1183. package/plugins/sync-docs/lib/collectors/docs-patterns.js +713 -0
  1184. package/plugins/sync-docs/lib/collectors/documentation.js +219 -0
  1185. package/plugins/sync-docs/lib/collectors/github.js +266 -0
  1186. package/plugins/sync-docs/lib/collectors/index.js +126 -0
  1187. package/plugins/sync-docs/lib/config/index.js +14 -0
  1188. package/plugins/sync-docs/lib/cross-platform/index.js +539 -0
  1189. package/plugins/sync-docs/lib/discovery/index.js +352 -0
  1190. package/plugins/sync-docs/lib/drift-detect/collectors.js +37 -0
  1191. package/plugins/sync-docs/lib/enhance/agent-analyzer.js +421 -0
  1192. package/plugins/sync-docs/lib/enhance/agent-patterns.js +571 -0
  1193. package/plugins/sync-docs/lib/enhance/auto-suppression.js +622 -0
  1194. package/plugins/sync-docs/lib/enhance/benchmark.js +417 -0
  1195. package/plugins/sync-docs/lib/enhance/cross-file-analyzer.js +930 -0
  1196. package/plugins/sync-docs/lib/enhance/cross-file-patterns.js +370 -0
  1197. package/plugins/sync-docs/lib/enhance/docs-analyzer.js +325 -0
  1198. package/plugins/sync-docs/lib/enhance/docs-patterns.js +671 -0
  1199. package/plugins/sync-docs/lib/enhance/fixer.js +721 -0
  1200. package/plugins/sync-docs/lib/enhance/hook-analyzer.js +135 -0
  1201. package/plugins/sync-docs/lib/enhance/hook-patterns.js +40 -0
  1202. package/plugins/sync-docs/lib/enhance/index.js +127 -0
  1203. package/plugins/sync-docs/lib/enhance/plugin-analyzer.js +402 -0
  1204. package/plugins/sync-docs/lib/enhance/plugin-patterns.js +326 -0
  1205. package/plugins/sync-docs/lib/enhance/projectmemory-analyzer.js +551 -0
  1206. package/plugins/sync-docs/lib/enhance/projectmemory-patterns.js +617 -0
  1207. package/plugins/sync-docs/lib/enhance/prompt-analyzer.js +457 -0
  1208. package/plugins/sync-docs/lib/enhance/prompt-patterns.js +1484 -0
  1209. package/plugins/sync-docs/lib/enhance/reporter.js +1348 -0
  1210. package/plugins/sync-docs/lib/enhance/security-patterns.js +284 -0
  1211. package/plugins/sync-docs/lib/enhance/skill-analyzer.js +182 -0
  1212. package/plugins/sync-docs/lib/enhance/skill-patterns.js +147 -0
  1213. package/plugins/sync-docs/lib/enhance/suppression.js +352 -0
  1214. package/plugins/sync-docs/lib/enhance/tool-patterns.js +373 -0
  1215. package/plugins/sync-docs/lib/index.js +270 -0
  1216. package/plugins/sync-docs/lib/patterns/cli-enhancers.js +611 -0
  1217. package/plugins/sync-docs/lib/patterns/pipeline.js +948 -0
  1218. package/plugins/sync-docs/lib/patterns/review-patterns.js +558 -0
  1219. package/plugins/sync-docs/lib/patterns/slop-analyzers.js +2305 -0
  1220. package/plugins/sync-docs/lib/patterns/slop-patterns.js +1187 -0
  1221. package/plugins/sync-docs/lib/perf/analyzer/index.js +22 -0
  1222. package/plugins/sync-docs/lib/perf/argument-parser.js +105 -0
  1223. package/plugins/sync-docs/lib/perf/baseline-comparator.js +50 -0
  1224. package/plugins/sync-docs/lib/perf/baseline-store.js +127 -0
  1225. package/plugins/sync-docs/lib/perf/benchmark-runner.js +399 -0
  1226. package/plugins/sync-docs/lib/perf/breaking-point-finder.js +52 -0
  1227. package/plugins/sync-docs/lib/perf/breaking-point-runner.js +60 -0
  1228. package/plugins/sync-docs/lib/perf/checkpoint.js +123 -0
  1229. package/plugins/sync-docs/lib/perf/code-paths.js +86 -0
  1230. package/plugins/sync-docs/lib/perf/consolidation.js +37 -0
  1231. package/plugins/sync-docs/lib/perf/constraint-runner.js +71 -0
  1232. package/plugins/sync-docs/lib/perf/experiment-runner.js +32 -0
  1233. package/plugins/sync-docs/lib/perf/index.js +41 -0
  1234. package/plugins/sync-docs/lib/perf/investigation-state.js +875 -0
  1235. package/plugins/sync-docs/lib/perf/optimization-runner.js +79 -0
  1236. package/plugins/sync-docs/lib/perf/profilers/go.js +22 -0
  1237. package/plugins/sync-docs/lib/perf/profilers/index.js +46 -0
  1238. package/plugins/sync-docs/lib/perf/profilers/java.js +23 -0
  1239. package/plugins/sync-docs/lib/perf/profilers/node.js +27 -0
  1240. package/plugins/sync-docs/lib/perf/profilers/python.js +23 -0
  1241. package/plugins/sync-docs/lib/perf/profilers/rust.js +23 -0
  1242. package/plugins/sync-docs/lib/perf/profiling-runner.js +56 -0
  1243. package/plugins/sync-docs/lib/perf/schemas.js +140 -0
  1244. package/plugins/sync-docs/lib/platform/detect-platform.js +413 -0
  1245. package/plugins/sync-docs/lib/platform/detection-configs.js +93 -0
  1246. package/plugins/sync-docs/lib/platform/state-dir.js +132 -0
  1247. package/plugins/sync-docs/lib/platform/verify-tools.js +182 -0
  1248. package/plugins/sync-docs/lib/repo-map/cache.js +152 -0
  1249. package/plugins/sync-docs/lib/repo-map/index.js +222 -0
  1250. package/plugins/sync-docs/lib/repo-map/installer.js +212 -0
  1251. package/plugins/sync-docs/lib/repo-map/queries/go.js +27 -0
  1252. package/plugins/sync-docs/lib/repo-map/queries/index.js +100 -0
  1253. package/plugins/sync-docs/lib/repo-map/queries/java.js +38 -0
  1254. package/plugins/sync-docs/lib/repo-map/queries/javascript.js +55 -0
  1255. package/plugins/sync-docs/lib/repo-map/queries/python.js +24 -0
  1256. package/plugins/sync-docs/lib/repo-map/queries/rust.js +73 -0
  1257. package/plugins/sync-docs/lib/repo-map/queries/typescript.js +38 -0
  1258. package/plugins/sync-docs/lib/repo-map/runner.js +1165 -0
  1259. package/plugins/sync-docs/lib/repo-map/updater.js +474 -0
  1260. package/plugins/sync-docs/lib/repo-map/usage-analyzer.js +407 -0
  1261. package/plugins/sync-docs/lib/schemas/plugin-manifest.schema.json +57 -0
  1262. package/plugins/sync-docs/lib/schemas/validator.js +247 -0
  1263. package/plugins/sync-docs/lib/sources/custom-handler.js +199 -0
  1264. package/plugins/sync-docs/lib/sources/policy-questions.js +246 -0
  1265. package/plugins/sync-docs/lib/sources/source-cache.js +165 -0
  1266. package/plugins/sync-docs/lib/state/workflow-state.js +575 -0
  1267. package/plugins/sync-docs/lib/types/agent-frontmatter.d.ts +134 -0
  1268. package/plugins/sync-docs/lib/types/command-frontmatter.d.ts +107 -0
  1269. package/plugins/sync-docs/lib/types/hook-frontmatter.d.ts +115 -0
  1270. package/plugins/sync-docs/lib/types/index.d.ts +84 -0
  1271. package/plugins/sync-docs/lib/types/plugin-manifest.d.ts +102 -0
  1272. package/plugins/sync-docs/lib/types/skill-frontmatter.d.ts +89 -0
  1273. package/plugins/sync-docs/lib/utils/atomic-write.js +94 -0
  1274. package/plugins/sync-docs/lib/utils/cache-manager.js +159 -0
  1275. package/plugins/sync-docs/lib/utils/context-optimizer.js +300 -0
  1276. package/plugins/sync-docs/lib/utils/deprecation.js +37 -0
  1277. package/plugins/sync-docs/lib/utils/shell-escape.js +88 -0
  1278. package/plugins/sync-docs/skills/sync-docs/SKILL.md +351 -0
  1279. package/scripts/bump-version.js +92 -0
  1280. package/scripts/check-hardcoded-paths.js +199 -0
  1281. package/scripts/dev-install.js +493 -0
  1282. package/scripts/expand-templates.js +269 -0
  1283. package/scripts/gen-adapters.js +323 -0
  1284. package/scripts/generate-docs.js +558 -0
  1285. package/scripts/generate-plugin-list.js +20 -0
  1286. package/scripts/migrate-opencode.js +307 -0
  1287. package/scripts/perf/repo-map-create.js +46 -0
  1288. package/scripts/plugins.txt +12 -0
  1289. package/scripts/preflight.js +1263 -0
  1290. package/scripts/scaffold.js +490 -0
  1291. package/scripts/setup-hooks.js +169 -0
  1292. package/scripts/stamp-version.js +175 -0
  1293. package/scripts/test-transform.js +85 -0
  1294. package/scripts/validate-agent-skill-compliance.js +284 -0
  1295. package/scripts/validate-counts.js +457 -0
  1296. package/scripts/validate-cross-platform-docs.js +550 -0
  1297. package/scripts/validate-opencode-install.js +182 -0
  1298. package/site/assets/css/main.css +1525 -0
  1299. package/site/assets/css/tokens.css +493 -0
  1300. package/site/assets/favicon.svg +23 -0
  1301. package/site/assets/js/main.js +801 -0
  1302. package/site/assets/logo.png +0 -0
  1303. package/site/assets/og-image.html +163 -0
  1304. package/site/content.json +453 -0
  1305. package/site/index.html +698 -0
  1306. package/site/ux-spec.md +683 -0
  1307. package/site/version.json +5 -0
  1308. package/templates/agent-snippets/enhance-integration-points.md +6 -0
  1309. package/templates/agent-snippets/enhance-skill-delegation.md +18 -0
  1310. package/templates/agent-snippets/model-choice.md +6 -0
@@ -0,0 +1,1187 @@
1
+ /**
2
+ * Slop Detection Patterns
3
+ * Pattern library for detecting and removing AI-generated code slop
4
+ *
5
+ * @author Avi Fenesh
6
+ * @license MIT
7
+ */
8
+
9
+ /**
10
+ * Deep freeze an object for V8 optimization and immutability
11
+ * Optimized: uses for-of instead of forEach to avoid function call overhead
12
+ * @param {Object} obj - Object to freeze
13
+ * @returns {Object} Frozen object
14
+ */
15
+ function deepFreeze(obj) {
16
+ // Freeze the object first (fast path)
17
+ Object.freeze(obj);
18
+
19
+ // Then recursively freeze nested objects (only if needed)
20
+ // Use Object.keys() for cleaner iteration over own properties
21
+ for (const key of Object.keys(obj)) {
22
+ const value = obj[key];
23
+ if (value && typeof value === 'object' && !(value instanceof RegExp)) {
24
+ deepFreeze(value);
25
+ }
26
+ }
27
+
28
+ return obj;
29
+ }
30
+
31
+ // Pre-compiled regex cache for performance (limited to prevent memory growth)
32
+ const MAX_PATTERN_CACHE_SIZE = 50;
33
+ const _compiledExcludePatterns = new Map();
34
+
35
+ // Exclude result cache for directory-level caching (limited to prevent memory growth)
36
+ const MAX_EXCLUDE_RESULT_CACHE_SIZE = 200;
37
+ const _excludeResultCache = new Map();
38
+
39
+ /**
40
+ * Maximum allowed wildcards in a glob pattern to prevent ReDoS
41
+ */
42
+ const MAX_GLOB_WILDCARDS = 10;
43
+
44
+ /**
45
+ * Get a compiled regex for an exclude pattern (cached)
46
+ * Uses safe regex construction to prevent catastrophic backtracking
47
+ * Optimized: uses Map.get() instead of has() + get() (eliminates redundant lookup)
48
+ * @param {string} pattern - Glob pattern to compile
49
+ * @returns {RegExp} Compiled regex
50
+ */
51
+ function getCompiledPattern(pattern) {
52
+ // Try to get cached pattern (O(1) lookup)
53
+ let cached = _compiledExcludePatterns.get(pattern);
54
+ if (cached) {
55
+ return cached;
56
+ }
57
+
58
+ // Enforce cache size limit using FIFO eviction
59
+ if (_compiledExcludePatterns.size >= MAX_PATTERN_CACHE_SIZE) {
60
+ const firstKey = _compiledExcludePatterns.keys().next().value;
61
+ _compiledExcludePatterns.delete(firstKey);
62
+ }
63
+
64
+ // Count wildcards to prevent overly complex patterns
65
+ const wildcardCount = (pattern.match(/\*/g) || []).length;
66
+ if (wildcardCount > MAX_GLOB_WILDCARDS) {
67
+ // Too many wildcards - use a safe fallback that matches nothing dangerous
68
+ const safeRegex = /^$/;
69
+ _compiledExcludePatterns.set(pattern, safeRegex);
70
+ return safeRegex;
71
+ }
72
+
73
+ // Escape all regex metacharacters except *
74
+ const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
75
+
76
+ // Convert glob patterns to regex:
77
+ // - Both * and ** use .* for backward compatibility (patterns match anywhere in path)
78
+ // - ReDoS protection is provided by MAX_GLOB_WILDCARDS limit above
79
+ let regexStr = escaped
80
+ .replace(/\*\*/g, '\0GLOBSTAR\0') // Temporarily mark globstar
81
+ .replace(/\*/g, '.*') // Single star: match anything (backward compatible)
82
+ .replace(/\0GLOBSTAR\0/g, '.*'); // Globstar: match anything
83
+
84
+ regexStr = '^' + regexStr + '$';
85
+ const compiledRegex = new RegExp(regexStr);
86
+ _compiledExcludePatterns.set(pattern, compiledRegex);
87
+ return compiledRegex;
88
+ }
89
+
90
+ /**
91
+ * Helper to create secret detection pattern with common metadata
92
+ * Reduces duplication across similar secret patterns (all have same severity/autoFix/language)
93
+ * @param {RegExp} pattern - Detection regex pattern
94
+ * @param {string} description - Human-readable description
95
+ * @param {Array<string>} [additionalExcludes=[]] - Extra files to exclude beyond standard test files
96
+ * @returns {Object} Complete pattern object
97
+ */
98
+ function createSecretPattern(pattern, description, additionalExcludes = []) {
99
+ return {
100
+ pattern,
101
+ exclude: ['*.test.*', '*.spec.*', '*.example.*', ...additionalExcludes],
102
+ severity: 'critical',
103
+ autoFix: 'flag',
104
+ language: null,
105
+ description
106
+ };
107
+ }
108
+
109
+ /**
110
+ * Auto-fix strategies:
111
+ * - remove: Delete the matching line(s)
112
+ * - replace: Replace with suggested fix
113
+ * - add_logging: Add proper error logging
114
+ * - flag: Mark for manual review
115
+ * - none: Report only, no auto-fix
116
+ */
117
+
118
+ const slopPatterns = {
119
+ /**
120
+ * Console debugging in JavaScript/TypeScript
121
+ * IMPROVED: Only flags console.log and console.debug (actual debug statements)
122
+ * console.warn and console.error are legitimate for validation/error handling
123
+ * Excludes CLI tools, scripts, entry points that have legitimate console output
124
+ */
125
+ console_debugging: {
126
+ pattern: /console\.(log|debug)\(/,
127
+ exclude: [
128
+ '*.test.*', '*.spec.*', '*.config.*',
129
+ 'bin/**', '**/bin/**', 'scripts/**', '**/scripts/**',
130
+ 'cli.js', '**/cli.js', '**/cli/**',
131
+ '**/e2e/**', '**/test/**', '**/tests/**',
132
+ '**/seed*.{js,ts}', '**/fixtures/**', '**/mocks/**',
133
+ 'globalSetup.*', 'globalTeardown.*',
134
+ '**/*-manager.{js,ts}', '**/*Manager.{js,ts}',
135
+ '**/mcp-server/**', '**/index.js',
136
+ '**/validator.js', '**/verify-tools.js', '**/detect-platform.js' // CLI tools with stdout output
137
+ ],
138
+ severity: 'medium',
139
+ autoFix: 'remove',
140
+ language: 'javascript',
141
+ description: 'console.log/debug statements (console.warn/error are legitimate)'
142
+ },
143
+
144
+ /**
145
+ * Python debugging statements
146
+ */
147
+ python_debugging: {
148
+ pattern: /(print\(|import pdb|breakpoint\(\)|import ipdb)/,
149
+ exclude: ['test_*.py', '*_test.py', 'conftest.py'],
150
+ severity: 'medium',
151
+ autoFix: 'remove',
152
+ language: 'python',
153
+ description: 'Debug print/breakpoint statements in production'
154
+ },
155
+
156
+ /**
157
+ * Rust debugging macros
158
+ */
159
+ rust_debugging: {
160
+ pattern: /(println!|dbg!|eprintln!)\(/,
161
+ exclude: ['*_test.rs', '*_tests.rs'],
162
+ severity: 'medium',
163
+ autoFix: 'remove',
164
+ language: 'rust',
165
+ description: 'Debug print macros in production code'
166
+ },
167
+
168
+ /**
169
+ * Old TODO comments (>90 days)
170
+ */
171
+ old_todos: {
172
+ pattern: /(TODO|FIXME|HACK|XXX):/,
173
+ exclude: [],
174
+ severity: 'low',
175
+ autoFix: 'flag',
176
+ language: null, // All languages
177
+ description: 'TODO/FIXME comments older than 90 days',
178
+ requiresAgeCheck: true,
179
+ ageThreshold: 90 // days
180
+ },
181
+
182
+ /**
183
+ * Commented out code blocks
184
+ */
185
+ commented_code: {
186
+ pattern: /^\s*(\/\/|#)\s*\w{5,}/,
187
+ exclude: [],
188
+ severity: 'medium',
189
+ autoFix: 'remove',
190
+ language: null,
191
+ description: 'Large blocks of commented-out code',
192
+ minConsecutiveLines: 5
193
+ },
194
+
195
+ /**
196
+ * Placeholder text
197
+ * IMPROVED: Only matches actual placeholder content, not legitimate uses of the word "placeholder"
198
+ * Now requires context: comments or string literals with multiple placeholder indicators
199
+ */
200
+ placeholder_text: {
201
+ pattern: /(?:\/\/|\/\*|#|["'`]).*?\b(lorem ipsum|test test test|asdf asdf|foo bar baz|replace (?:this|me)|todo:?\s+implement|this is a placeholder)/i,
202
+ exclude: ['*.test.*', '*.spec.*', 'README.*', '*.md', '**/slop-patterns.js', '**/slop-analyzers.js', '**/fixtures/**', '**/mocks/**'],
203
+ severity: 'high',
204
+ autoFix: 'flag',
205
+ language: null,
206
+ description: 'Placeholder text in comments/strings that should be replaced (excludes props like placeholder="...")'
207
+ },
208
+
209
+ // ============================================================================
210
+ // Placeholder Function Detection (#98)
211
+ // Detects compilable but non-functional placeholder code that linters miss
212
+ // ============================================================================
213
+
214
+ /**
215
+ * JavaScript/TypeScript: Stub return values
216
+ * Detects functions returning hardcoded 0, true, false, null, undefined, [], {}
217
+ */
218
+ placeholder_stub_returns_js: {
219
+ // Disabled: too many false positives with simple regex
220
+ // Needs multi-pass analysis to detect actual stub functions (single return as only statement)
221
+ pattern: null,
222
+ exclude: ['*.test.*', '*.spec.*', '*.config.*'],
223
+ severity: 'low',
224
+ autoFix: 'flag',
225
+ language: 'javascript',
226
+ description: 'Stub function returning hardcoded value (requires multi-pass analysis)',
227
+ requiresMultiPass: true
228
+ },
229
+
230
+ /**
231
+ * JavaScript/TypeScript: throw Error("TODO/not implemented")
232
+ */
233
+ placeholder_not_implemented_js: {
234
+ pattern: /throw\s+new\s+Error\s*\(\s*['"`].*(?:TODO|implement|not\s+impl)/i,
235
+ exclude: ['*.test.*', '*.spec.*'],
236
+ severity: 'high',
237
+ autoFix: 'flag',
238
+ language: 'javascript',
239
+ description: 'throw new Error("TODO: implement...") placeholder'
240
+ },
241
+
242
+ /**
243
+ * JavaScript/TypeScript: Empty function bodies
244
+ */
245
+ placeholder_empty_function_js: {
246
+ pattern: /(?:function\s+\w+\s*\([^)]*\)|=>\s*)\s*\{\s*\}/,
247
+ exclude: ['*.test.*', '*.spec.*', '*.d.ts'],
248
+ severity: 'high',
249
+ autoFix: 'flag',
250
+ language: 'javascript',
251
+ description: 'Empty function body (placeholder)'
252
+ },
253
+
254
+ /**
255
+ * Rust: todo!() and unimplemented!() macros
256
+ */
257
+ placeholder_todo_rust: {
258
+ pattern: /\b(?:todo|unimplemented)!\s*\(/,
259
+ exclude: ['*_test.rs', '*_tests.rs', '**/tests/**'],
260
+ severity: 'high',
261
+ autoFix: 'flag',
262
+ language: 'rust',
263
+ description: 'Rust todo!() or unimplemented!() macro'
264
+ },
265
+
266
+ /**
267
+ * Rust: panic!("TODO: ...") placeholder
268
+ */
269
+ placeholder_panic_todo_rust: {
270
+ pattern: /\bpanic!\s*\(\s*["'].*(?:TODO|implement)/i,
271
+ exclude: ['*_test.rs', '*_tests.rs', '**/tests/**'],
272
+ severity: 'high',
273
+ autoFix: 'flag',
274
+ language: 'rust',
275
+ description: 'Rust panic!("TODO: ...") placeholder'
276
+ },
277
+
278
+ /**
279
+ * Rust: Bare .unwrap() calls without error context
280
+ * Can cause panics in production - prefer:
281
+ * - .unwrap_or(default) / .unwrap_or_else(|| ...)
282
+ * - .unwrap_or_default()
283
+ * - .expect("descriptive message")
284
+ * - ? operator for propagation
285
+ * - .ok() / .map() / .and_then() for transformation
286
+ */
287
+ rust_bare_unwrap: {
288
+ pattern: /\.unwrap\(\s*\)(?!\s*\.)/,
289
+ exclude: ['*_test.rs', '*_tests.rs', '**/tests/**', '**/examples/**', '**/benches/**'],
290
+ severity: 'medium',
291
+ autoFix: 'flag',
292
+ language: 'rust',
293
+ description: 'Bare .unwrap() can panic - use .expect(), .unwrap_or(), or ? operator'
294
+ },
295
+
296
+ /**
297
+ * Python: raise NotImplementedError
298
+ */
299
+ placeholder_not_implemented_py: {
300
+ pattern: /raise\s+NotImplementedError/,
301
+ exclude: ['test_*.py', '*_test.py', 'conftest.py', '**/tests/**'],
302
+ severity: 'high',
303
+ autoFix: 'flag',
304
+ language: 'python',
305
+ description: 'Python raise NotImplementedError placeholder'
306
+ },
307
+
308
+ /**
309
+ * Python: Function with only pass statement
310
+ * Matches both single-line (def foo(): pass) and multi-line formats
311
+ */
312
+ placeholder_pass_only_py: {
313
+ pattern: /def\s+\w+\s*\([^)]*\)\s*:\s*(?:pass|\n\s+pass)\s*$/m,
314
+ exclude: ['test_*.py', '*_test.py', 'conftest.py'],
315
+ severity: 'high',
316
+ autoFix: 'flag',
317
+ language: 'python',
318
+ description: 'Python function with only pass statement'
319
+ },
320
+
321
+ /**
322
+ * Python: Function with only ellipsis (...)
323
+ * Matches both single-line (def foo(): ...) and multi-line formats
324
+ * Note: .pyi stub files legitimately use ellipsis, so excluded
325
+ */
326
+ placeholder_ellipsis_py: {
327
+ pattern: /def\s+\w+\s*\([^)]*\)\s*:\s*(?:\.\.\.|\n\s+\.\.\.)\s*$/m,
328
+ exclude: ['*.pyi', 'test_*.py', '*_test.py'],
329
+ severity: 'high',
330
+ autoFix: 'flag',
331
+ language: 'python',
332
+ description: 'Python function with only ellipsis (...)'
333
+ },
334
+
335
+ /**
336
+ * Go: panic("TODO: ...") placeholder
337
+ */
338
+ placeholder_panic_go: {
339
+ pattern: /panic\s*\(\s*["'].*(?:TODO|implement|not\s+impl)/i,
340
+ exclude: ['*_test.go', '**/testdata/**'],
341
+ severity: 'high',
342
+ autoFix: 'flag',
343
+ language: 'go',
344
+ description: 'Go panic("TODO: ...") placeholder'
345
+ },
346
+
347
+ /**
348
+ * Java: throw new UnsupportedOperationException()
349
+ */
350
+ placeholder_unsupported_java: {
351
+ pattern: /throw\s+new\s+UnsupportedOperationException\s*\(/,
352
+ exclude: ['*Test.java', '**/test/**'],
353
+ severity: 'high',
354
+ autoFix: 'flag',
355
+ language: 'java',
356
+ description: 'Java throw new UnsupportedOperationException() placeholder'
357
+ },
358
+
359
+ /**
360
+ * Empty catch blocks (JavaScript/TypeScript)
361
+ * Only matches truly empty catches - those with comments are intentional
362
+ * Pattern: catch (e) {} but NOT catch { [comment] }
363
+ */
364
+ empty_catch_js: {
365
+ pattern: /catch\s*(?:\([^)]*\))?\s*\{\s*\}/,
366
+ exclude: ['*.test.*', '*.spec.*'],
367
+ severity: 'high',
368
+ autoFix: 'add_logging',
369
+ language: 'javascript',
370
+ description: 'Empty catch blocks without error handling or comment'
371
+ },
372
+
373
+ /**
374
+ * Empty except blocks (Python)
375
+ */
376
+ empty_except_py: {
377
+ pattern: /except\s*[^:]*:\s*pass\s*$/,
378
+ exclude: [],
379
+ severity: 'high',
380
+ autoFix: 'add_logging',
381
+ language: 'python',
382
+ description: 'Empty except blocks with just pass'
383
+ },
384
+
385
+ /**
386
+ * Magic numbers in business logic
387
+ * DISABLED: Too many false positives - thresholds, limits, timeouts are intentional
388
+ * Semantic analysis needed to distinguish magic numbers from config values
389
+ * Use ESLint no-magic-numbers rule with ignores instead
390
+ */
391
+ magic_numbers: {
392
+ pattern: null, // DISABLED - requires semantic analysis
393
+ exclude: [],
394
+ severity: 'low',
395
+ autoFix: 'flag',
396
+ language: null,
397
+ description: 'Magic numbers detection disabled (use ESLint no-magic-numbers instead)',
398
+ requiresMultiPass: true // Mark as needing semantic analysis
399
+ },
400
+
401
+ /**
402
+ * Disabled linter rules
403
+ * IMPROVED: Lower severity - many disables have legitimate explanatory comments
404
+ * Flag for review but not aggressive auto-fix
405
+ */
406
+ disabled_linter: {
407
+ pattern: /(eslint-disable|pylint: disable|#\s*noqa|@SuppressWarnings|#\[allow\()/,
408
+ exclude: ['*.test.*', '*.spec.*', '**/tests/**', '**/test/**'],
409
+ severity: 'low', // Reduced from medium - many disables are justified
410
+ autoFix: 'flag',
411
+ language: null,
412
+ description: 'Disabled linter rules (review if justified with explanatory comment)'
413
+ },
414
+
415
+ /**
416
+ * Unused imports (basic pattern, language-specific tools better)
417
+ */
418
+ unused_imports_hint: {
419
+ pattern: /^import .* from .* \/\/ unused$/,
420
+ exclude: [],
421
+ severity: 'low',
422
+ autoFix: 'remove',
423
+ language: null,
424
+ description: 'Imports marked as unused'
425
+ },
426
+
427
+ /**
428
+ * Duplicate string literals (same string >5 times)
429
+ */
430
+ duplicate_strings: {
431
+ pattern: null, // Requires multi-pass analysis
432
+ exclude: ['*.test.*', '*.spec.*'],
433
+ severity: 'low',
434
+ autoFix: 'flag',
435
+ language: null,
436
+ description: 'Duplicate string literals that should be constants',
437
+ requiresMultiPass: true
438
+ },
439
+
440
+ /**
441
+ * Inconsistent indentation markers
442
+ */
443
+ mixed_indentation: {
444
+ pattern: /^\t+ +|^ +\t+/,
445
+ exclude: ['Makefile', '*.mk'],
446
+ severity: 'low',
447
+ autoFix: 'replace',
448
+ language: null,
449
+ description: 'Mixed tabs and spaces'
450
+ },
451
+
452
+ /**
453
+ * Trailing whitespace
454
+ */
455
+ trailing_whitespace: {
456
+ pattern: /\s+$/,
457
+ exclude: ['*.md'], // Markdown uses trailing spaces for line breaks
458
+ severity: 'low',
459
+ autoFix: 'remove',
460
+ language: null,
461
+ description: 'Trailing whitespace at end of lines'
462
+ },
463
+
464
+ /**
465
+ * Multiple consecutive blank lines
466
+ */
467
+ multiple_blank_lines: {
468
+ pattern: /^\s*\n\s*\n\s*\n/,
469
+ exclude: [],
470
+ severity: 'low',
471
+ autoFix: 'replace',
472
+ language: null,
473
+ description: 'More than 2 consecutive blank lines'
474
+ },
475
+
476
+ /**
477
+ * Hardcoded credentials patterns (expanded for comprehensive detection)
478
+ * IMPROVED: Better test fixture detection
479
+ * Excludes common false positives:
480
+ * - Template placeholders: ${VAR}, {{VAR}}, <VAR>
481
+ * - Masked/example values: xxxxxxxx, ********
482
+ * - Test values: TestPassword, test-csrf-token, mock credentials
483
+ */
484
+ hardcoded_secrets: {
485
+ pattern: /(password|secret|api[_-]?key|token|credential|auth)[_-]?(key|token|secret|pass)?\s*[:=]\s*["'`](?!\$\{)(?!\{\{)(?!<[A-Z_])(?![x*#]{8,})(?![X*#]{8,})(?!test)(?!Test)(?!MOCK)(?!mock)(?!dummy)(?!Dummy)[^"'`\s]{8,}["'`]/i,
486
+ exclude: [
487
+ '*.test.*', '*.spec.*', '*.example.*', '*.sample.*', 'README.*', '*.md',
488
+ '**/fixtures/**', '**/mocks/**', '**/test/**', '**/tests/**', '**/e2e/**',
489
+ '**/*fixture*.{js,ts}', '**/*mock*.{js,ts}'
490
+ ],
491
+ severity: 'critical',
492
+ autoFix: 'flag',
493
+ language: null,
494
+ description: 'Potential hardcoded credentials (excludes test/mock/example values)'
495
+ },
496
+
497
+ /**
498
+ * JWT tokens (eyJ prefix indicates base64 JSON header)
499
+ */
500
+ jwt_tokens: createSecretPattern(
501
+ /eyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/,
502
+ 'Hardcoded JWT token'
503
+ ),
504
+
505
+ /**
506
+ * OpenAI API keys (sk-... format)
507
+ */
508
+ openai_api_key: createSecretPattern(
509
+ /sk-[a-zA-Z0-9]{32,}/,
510
+ 'Hardcoded OpenAI API key'
511
+ ),
512
+
513
+ /**
514
+ * GitHub tokens (personal access tokens, fine-grained tokens, OAuth)
515
+ */
516
+ github_token: createSecretPattern(
517
+ /(ghp_[a-zA-Z0-9]{36}|gho_[a-zA-Z0-9]{36}|ghu_[a-zA-Z0-9]{36}|ghs_[a-zA-Z0-9]{36}|ghr_[a-zA-Z0-9]{36}|github_pat_[a-zA-Z0-9]{22}_[a-zA-Z0-9]{59})/,
518
+ 'Hardcoded GitHub token'
519
+ ),
520
+
521
+ /**
522
+ * AWS credentials (access key IDs and secret keys)
523
+ */
524
+ aws_credentials: createSecretPattern(
525
+ /(AKIA[0-9A-Z]{16}|aws_secret_access_key\s*[:=]\s*["'`][A-Za-z0-9/+=]{40}["'`])/i,
526
+ 'Hardcoded AWS credentials'
527
+ ),
528
+
529
+ /**
530
+ * Google Cloud / Firebase API keys and service accounts
531
+ */
532
+ google_api_key: createSecretPattern(
533
+ /(AIza[0-9A-Za-z_-]{35}|[0-9]+-[a-z0-9_]{32}\.apps\.googleusercontent\.com)/,
534
+ 'Hardcoded Google/Firebase API key'
535
+ ),
536
+
537
+ /**
538
+ * Stripe API keys (live and test)
539
+ */
540
+ stripe_api_key: createSecretPattern(
541
+ /(sk_live_[a-zA-Z0-9]{24,}|sk_test_[a-zA-Z0-9]{24,}|rk_live_[a-zA-Z0-9]{24,}|rk_test_[a-zA-Z0-9]{24,})/,
542
+ 'Hardcoded Stripe API key'
543
+ ),
544
+
545
+ /**
546
+ * Slack tokens (bot, user, webhook)
547
+ */
548
+ slack_token: createSecretPattern(
549
+ /(xoxb-[0-9]{10,}-[0-9]{10,}-[a-zA-Z0-9]{24}|xoxp-[0-9]{10,}-[0-9]{10,}-[a-zA-Z0-9]{24}|xoxa-[0-9]{10,}-[a-zA-Z0-9]{24}|https:\/\/hooks\.slack\.com\/services\/T[A-Z0-9]{8}\/B[A-Z0-9]{8,}\/[a-zA-Z0-9]{24})/,
550
+ 'Hardcoded Slack token or webhook URL'
551
+ ),
552
+
553
+ /**
554
+ * Discord tokens and webhook URLs
555
+ */
556
+ discord_token: createSecretPattern(
557
+ /(discord.*["'`][A-Za-z0-9_-]{24}\.[A-Za-z0-9_-]{6}\.[A-Za-z0-9_-]{27}["'`]|https:\/\/discord(?:app)?\.com\/api\/webhooks\/[0-9]+\/[A-Za-z0-9_-]+)/i,
558
+ 'Hardcoded Discord token or webhook'
559
+ ),
560
+
561
+ /**
562
+ * SendGrid API key
563
+ */
564
+ sendgrid_api_key: createSecretPattern(
565
+ /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/,
566
+ 'Hardcoded SendGrid API key'
567
+ ),
568
+
569
+ /**
570
+ * Twilio credentials
571
+ */
572
+ twilio_credentials: createSecretPattern(
573
+ /(AC[a-f0-9]{32}|SK[a-f0-9]{32})/,
574
+ 'Hardcoded Twilio credentials'
575
+ ),
576
+
577
+ /**
578
+ * NPM tokens
579
+ */
580
+ npm_token: createSecretPattern(
581
+ /npm_[a-zA-Z0-9]{36}/,
582
+ 'Hardcoded NPM token'
583
+ ),
584
+
585
+ /**
586
+ * Private keys (RSA, DSA, EC, PGP)
587
+ */
588
+ private_key: createSecretPattern(
589
+ /-----BEGIN\s+(RSA\s+)?PRIVATE\s+KEY-----/,
590
+ 'Private key in source code',
591
+ ['*.pem.example'] // Additional excludes beyond standard test files
592
+ ),
593
+
594
+ /**
595
+ * Generic high-entropy strings (potential secrets)
596
+ */
597
+ high_entropy_string: {
598
+ pattern: /["'`][A-Za-z0-9+/=_-]{40,}["'`]/,
599
+ exclude: ['*.test.*', '*.spec.*', '*.example.*', '*.lock', 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'],
600
+ severity: 'medium',
601
+ autoFix: 'flag',
602
+ language: null,
603
+ description: 'High-entropy string that may be a secret',
604
+ requiresEntropyCheck: true,
605
+ entropyThreshold: 4.5
606
+ },
607
+
608
+ /**
609
+ * Process.exit in libraries
610
+ * DISABLED: Too many false positives in CLI tools, MCP servers, error handlers
611
+ * process.exit() is legitimate in entry points, CLI tools, and error boundaries
612
+ */
613
+ process_exit: {
614
+ pattern: null, // DISABLED - too many legitimate uses
615
+ exclude: [],
616
+ severity: 'high',
617
+ autoFix: 'flag',
618
+ language: 'javascript',
619
+ description: 'process.exit() detection disabled (legitimate in CLIs, servers, error handlers)'
620
+ },
621
+
622
+ /**
623
+ * Bare URLs in code (should use constants)
624
+ * DISABLED: Too many false positives - docs, links, comments are intentional
625
+ * URLs in comments/docs are not "hardcoded" in the code sense
626
+ */
627
+ bare_urls: {
628
+ pattern: null, // DISABLED - too noisy
629
+ exclude: [],
630
+ severity: 'low',
631
+ autoFix: 'flag',
632
+ language: null,
633
+ description: 'Bare URLs detection disabled (too many false positives in docs/comments)'
634
+ },
635
+
636
+ // ============================================================================
637
+ // Doc/Code Ratio Detection (#P1-T2)
638
+ // Detects JSDoc blocks that are disproportionately longer than function bodies
639
+ // ============================================================================
640
+
641
+ /**
642
+ * JSDoc-to-function ratio (excessive documentation)
643
+ * Flags when JSDoc is >3x the length of the function body
644
+ * Requires multi-pass analysis since simple regex can't compute ratios
645
+ */
646
+ doc_code_ratio_js: {
647
+ pattern: null, // Requires multi-pass analysis
648
+ exclude: ['*.test.*', '*.spec.*', '*.d.ts'],
649
+ severity: 'medium',
650
+ autoFix: 'flag',
651
+ language: 'javascript',
652
+ description: 'Documentation longer than code (JSDoc > 3x function body)',
653
+ requiresMultiPass: true,
654
+ minFunctionLines: 3, // Skip tiny functions
655
+ maxRatio: 3.0 // Doc can be 3x function length max
656
+ },
657
+
658
+ // ============================================================================
659
+ // Phantom Reference Detection (#P1-T3)
660
+ // Detects issue/PR mentions and file path references in code comments
661
+ // ============================================================================
662
+
663
+ /**
664
+ * Issue/PR/iteration references in code comments
665
+ * ANY mention of issue/PR numbers is treated as slop - context belongs in commits
666
+ */
667
+ issue_pr_references: {
668
+ pattern: /\/\/.*(?:#\d+|issue\s+#?\d+|PR\s+#?\d+|pull\s+request\s+#?\d+|fixed\s+in\s+#?\d+|closes?\s+#?\d+|resolves?\s+#?\d+|iteration\s+\d+)/i,
669
+ exclude: ['*.md', 'README.*', 'CHANGELOG.*', 'CONTRIBUTING.*'],
670
+ severity: 'medium',
671
+ autoFix: 'remove',
672
+ language: null, // Universal - all languages
673
+ description: 'Issue/PR/iteration references in comments (slop - remove context from code)'
674
+ },
675
+
676
+ /**
677
+ * File path references in code comments
678
+ * DISABLED: Too many false positives - documentation references are helpful
679
+ * These references add context, not slop
680
+ */
681
+ file_path_references: {
682
+ pattern: null, // DISABLED - references are helpful, not slop
683
+ exclude: [],
684
+ severity: 'low',
685
+ autoFix: 'flag',
686
+ language: null,
687
+ description: 'File path references detection disabled (helpful context, not slop)'
688
+ },
689
+
690
+ // ============================================================================
691
+ // Verbosity Detection
692
+ // Detects AI preambles, marketing buzzwords, hedging language, and excessive comments
693
+ // ============================================================================
694
+
695
+ /**
696
+ * AI preamble phrases in comments
697
+ * Detects filler language like "Certainly!", "I'd be happy to help!"
698
+ */
699
+ verbosity_preambles: {
700
+ pattern: /\/\/\s*(?:certainly|i'd\s+be\s+happy|great\s+question|absolutely|of\s+course|happy\s+to\s+help|let\s+me\s+help|i\s+can\s+help)/i,
701
+ exclude: ['*.test.*', '*.spec.*', '*.md'],
702
+ severity: 'low',
703
+ autoFix: 'flag',
704
+ language: null,
705
+ description: 'AI preamble phrases in comments - remove filler language'
706
+ },
707
+
708
+ /**
709
+ * Marketing buzzwords that obscure technical meaning
710
+ * Focus on flowery language, NOT standard SE terms like "leverage", "utilize", "orchestrate"
711
+ */
712
+ verbosity_buzzwords: {
713
+ pattern: /\b(?:synergize|operationalize|paradigm\s+shift|best-in-class|world-class|cutting-edge|game-changing|holistic|revolutionary|transformative|seamless|next-generation|bleeding-edge|industry-leading)\b/i,
714
+ exclude: ['*.test.*', '*.spec.*', '*.md', 'CHANGELOG.*', 'README.*'],
715
+ severity: 'low',
716
+ autoFix: 'flag',
717
+ language: null,
718
+ description: 'Marketing buzzwords that obscure technical meaning'
719
+ },
720
+
721
+ /**
722
+ * Hedging language in comments
723
+ * Indicates incomplete thinking - code should be definitive
724
+ */
725
+ verbosity_hedging: {
726
+ pattern: /\/\/.*\b(?:it'?s?\s+worth\s+noting|generally\s+speaking|more\s+or\s+less|arguably|perhaps|possibly|might\s+be|should\s+work|i\s+think|i\s+believe|probably|maybe)\b/i,
727
+ exclude: ['*.test.*', '*.spec.*'],
728
+ severity: 'low',
729
+ autoFix: 'flag',
730
+ language: null,
731
+ description: 'Hedging language in comments - be direct'
732
+ },
733
+
734
+ /**
735
+ * Excessive inline comments (comment-to-code ratio)
736
+ * Flags when inline comments exceed maxCommentRatio times the code lines
737
+ * Requires multi-pass analysis for ratio computation
738
+ */
739
+ verbosity_ratio: {
740
+ pattern: null, // Requires multi-pass analysis
741
+ requiresMultiPass: true,
742
+ exclude: ['*.test.*', '*.spec.*', '*.md', '*.d.ts'],
743
+ severity: 'medium',
744
+ autoFix: 'flag',
745
+ language: null,
746
+ description: 'Excessive inline comments (>2:1 comment-to-code ratio within function)',
747
+ maxCommentRatio: 2.0,
748
+ minCodeLines: 3
749
+ },
750
+
751
+ // ============================================================================
752
+ // Over-Engineering Detection
753
+ // Detects excessive complexity relative to public API surface
754
+ // ============================================================================
755
+
756
+ /**
757
+ * Over-engineering metrics (project-level analysis)
758
+ * Detects: file proliferation, code density, directory depth
759
+ * Requires multi-pass analysis - cannot be done with simple regex
760
+ */
761
+ over_engineering_metrics: {
762
+ pattern: null, // Requires multi-pass analysis
763
+ exclude: [], // Analyzes entire project
764
+ severity: 'high',
765
+ autoFix: 'flag', // Cannot auto-fix architectural issues
766
+ language: null, // Universal - all languages
767
+ description: 'Excessive files/lines relative to public API (over-engineering indicator)',
768
+ requiresMultiPass: true,
769
+ // Thresholds for violation detection
770
+ fileRatioThreshold: 20, // Max 20 files per export
771
+ linesPerExportThreshold: 500, // Max 500 lines per export
772
+ depthThreshold: 4 // Max 4 directory levels
773
+ },
774
+
775
+ // ============================================================================
776
+ // Buzzword Inflation Detection
777
+ // Detects quality claims without supporting code evidence
778
+ // ============================================================================
779
+
780
+ /**
781
+ * Buzzword inflation (project-level analysis)
782
+ * Detects claims like "production-ready", "secure", "scalable" in docs/comments
783
+ * without supporting evidence in the codebase
784
+ * Requires multi-pass analysis - extracts claims, searches for evidence
785
+ */
786
+ buzzword_inflation: {
787
+ pattern: null, // Requires multi-pass analysis
788
+ exclude: [], // Exclusions handled by analyzer (isTestFile, shouldExclude)
789
+ severity: 'high',
790
+ autoFix: 'flag', // Cannot auto-fix documentation claims
791
+ language: null, // Universal - all languages
792
+ description: 'Quality claims (production-ready, secure, scalable) without supporting code evidence',
793
+ requiresMultiPass: true,
794
+ // Minimum evidence matches required to substantiate a claim
795
+ minEvidenceMatches: 2
796
+ },
797
+
798
+ /**
799
+ * Infrastructure without implementation (multi-pass analysis)
800
+ * Detects infrastructure components (clients, connections, pools, services)
801
+ * that are instantiated/configured but never actually used
802
+ * Requires multi-pass - scans for setup patterns, then verifies usage
803
+ */
804
+ infrastructure_without_implementation: {
805
+ pattern: null, // Requires multi-pass analysis
806
+ exclude: ['node_modules', 'vendor', 'dist', 'build', '*.test.*', '*.spec.*'],
807
+ severity: 'high',
808
+ autoFix: 'flag', // Cannot safely remove - may be lazy loading or future use
809
+ language: null, // Universal - all languages
810
+ description: 'Infrastructure configured but never wired (setup without usage)',
811
+ requiresMultiPass: true
812
+ },
813
+
814
+ // ============================================================================
815
+ // Code Smell Detection (#106)
816
+ // High-impact code smell patterns for maintainability and readability
817
+ // ============================================================================
818
+
819
+ /**
820
+ * Boolean Blindness - functions called with 3+ consecutive boolean literals
821
+ * e.g., process(true, false, true) - unclear what each boolean means
822
+ * Suggests using named parameters or option objects
823
+ */
824
+ boolean_blindness: {
825
+ pattern: /\w+\s*\([^)]*(?:true|false)\s*,\s*(?:true|false)\s*,\s*(?:true|false)[^)]*\)/i,
826
+ exclude: ['*.test.*', '*.spec.*', '**/tests/**', '**/test/**'],
827
+ severity: 'medium',
828
+ autoFix: 'flag',
829
+ language: null, // Universal - JS, Python, Rust, Go, Java
830
+ description: 'Function call with 3+ boolean parameters (unclear meaning - use named params or options object)'
831
+ },
832
+
833
+ // REMOVED: message_chains_methods
834
+ // Reason: 100% false positive rate - can't distinguish fluent APIs (Zod, query builders)
835
+ // from actual Law of Demeter violations. Requires semantic analysis.
836
+ // Alternative: Use eslint-plugin-smells no-complex-chaining rule.
837
+
838
+ // REMOVED: message_chains_properties
839
+ // Reason: Same issue as message_chains_methods - flags config access, nested object
840
+ // destructuring, and other legitimate deep property patterns.
841
+
842
+ /**
843
+ * Mutable Globals - JavaScript/TypeScript
844
+ * Detects module-level mutable state using let/var with UPPERCASE names
845
+ * Convention: UPPERCASE = constant, but let/var makes it mutable = bug-prone
846
+ */
847
+ mutable_globals_js: {
848
+ pattern: /^(?:let|var)\s+[A-Z][A-Z0-9_]*\s*=/m,
849
+ exclude: ['*.test.*', '*.spec.*', '*.config.*', '**/tests/**', 'constants.js', 'constants.ts'],
850
+ severity: 'high',
851
+ autoFix: 'flag',
852
+ language: 'javascript',
853
+ description: 'Mutable global with UPPERCASE name (should be const or module-scoped)'
854
+ },
855
+
856
+ /**
857
+ * Mutable Globals - Python
858
+ * Detects module-level mutable collections assigned to UPPERCASE names
859
+ */
860
+ mutable_globals_py: {
861
+ pattern: /^[A-Z][A-Z0-9_]*\s*=\s*(?:\[|\{|dict\(|list\(|set\()/m,
862
+ exclude: ['test_*.py', '*_test.py', 'conftest.py', '**/tests/**', 'constants.py', 'settings.py'],
863
+ severity: 'high',
864
+ autoFix: 'flag',
865
+ language: 'python',
866
+ description: 'Mutable global collection (list/dict/set) - use module-level functions or classes'
867
+ },
868
+
869
+ /**
870
+ * Dead Code Detection (multi-pass analysis)
871
+ * Detects unreachable code after return/throw/break/continue
872
+ * Requires multi-pass analysis to handle control flow
873
+ */
874
+ dead_code: {
875
+ pattern: null, // Requires multi-pass analysis
876
+ exclude: ['*.test.*', '*.spec.*'],
877
+ severity: 'high',
878
+ autoFix: 'flag',
879
+ language: null,
880
+ description: 'Unreachable code after return/throw/break/continue',
881
+ requiresMultiPass: true
882
+ },
883
+
884
+ /**
885
+ * Shotgun Surgery Detection (multi-pass analysis)
886
+ * Detects files that frequently change together across commits
887
+ * Indicates tight coupling that should be refactored
888
+ * Requires git history analysis
889
+ */
890
+ shotgun_surgery: {
891
+ pattern: null, // Requires multi-pass analysis with git
892
+ exclude: [],
893
+ severity: 'high',
894
+ autoFix: 'flag',
895
+ language: null,
896
+ description: 'Files frequently change together (tight coupling - consider consolidation)',
897
+ requiresMultiPass: true,
898
+ // Configuration for git analysis
899
+ commitLimit: 100, // Analyze last 100 commits
900
+ clusterThreshold: 5 // Flag clusters with 5+ files changing together
901
+ },
902
+
903
+ // REMOVED: feature_envy
904
+ // Reason: 100% false positive rate with regex. Requires AST analysis.
905
+ // Alternative: Use eslint-plugin-clean-code for proper feature envy detection.
906
+
907
+ /**
908
+ * Speculative Generality - Unused parameters (heuristic)
909
+ * DISABLED: Underscore-prefixed params are often intentional (callback signatures, interface compliance)
910
+ * Use ESLint no-unused-vars with args: 'none' or argsIgnorePattern: '^_' instead
911
+ */
912
+ speculative_generality_unused_params: {
913
+ pattern: null, // DISABLED - underscore params are often intentional
914
+ exclude: [],
915
+ severity: 'low',
916
+ autoFix: 'flag',
917
+ language: 'javascript',
918
+ description: 'Unused params detection disabled (underscore convention is intentional)'
919
+ },
920
+
921
+ /**
922
+ * Speculative Generality - Empty interfaces (TypeScript)
923
+ * Detects interface definitions with no members
924
+ * May indicate premature abstraction
925
+ */
926
+ speculative_generality_empty_interface: {
927
+ pattern: /interface\s+\w+\s*(?:<[^>]*>)?\s*\{\s*\}/,
928
+ exclude: ['*.test.*', '*.spec.*', '**/tests/**'],
929
+ severity: 'low',
930
+ autoFix: 'flag',
931
+ language: 'javascript',
932
+ description: 'Empty interface (heuristic - may be premature abstraction)'
933
+ }
934
+ };
935
+
936
+ // Freeze the patterns object for V8 optimization
937
+ deepFreeze(slopPatterns);
938
+
939
+ // ============================================================================
940
+ // Pre-indexed Maps for O(1) lookup performance (#18)
941
+ // Built once at module load time, avoiding iteration on every lookup
942
+ // ============================================================================
943
+
944
+ /**
945
+ * Pre-indexed patterns by language
946
+ * Key: language name (or 'universal' for language-agnostic patterns)
947
+ * Value: Object of pattern name -> pattern definition
948
+ */
949
+ const _patternsByLanguage = new Map();
950
+
951
+ /**
952
+ * Pre-indexed patterns by severity
953
+ * Key: severity level ('critical', 'high', 'medium', 'low')
954
+ * Value: Object of pattern name -> pattern definition
955
+ */
956
+ const _patternsBySeverity = new Map();
957
+
958
+ /**
959
+ * Pre-indexed patterns by autoFix strategy
960
+ * Key: autoFix type ('remove', 'replace', 'add_logging', 'flag', 'none')
961
+ * Value: Object of pattern name -> pattern definition
962
+ */
963
+ const _patternsByAutoFix = new Map();
964
+
965
+ /**
966
+ * Set of all available languages for O(1) existence check
967
+ */
968
+ const _availableLanguages = new Set();
969
+
970
+ /**
971
+ * Set of all available severity levels for O(1) existence check
972
+ */
973
+ const _availableSeverities = new Set();
974
+
975
+ // Build indexes at module load time
976
+ (function buildIndexes() {
977
+ for (const [name, pattern] of Object.entries(slopPatterns)) {
978
+ // Index by language
979
+ const lang = pattern.language || 'universal';
980
+ if (!_patternsByLanguage.has(lang)) {
981
+ _patternsByLanguage.set(lang, {});
982
+ }
983
+ _patternsByLanguage.get(lang)[name] = pattern;
984
+ _availableLanguages.add(lang);
985
+
986
+ // Index by severity
987
+ const severity = pattern.severity;
988
+ if (!_patternsBySeverity.has(severity)) {
989
+ _patternsBySeverity.set(severity, {});
990
+ }
991
+ _patternsBySeverity.get(severity)[name] = pattern;
992
+ _availableSeverities.add(severity);
993
+
994
+ // Index by autoFix strategy
995
+ const autoFix = pattern.autoFix || 'none';
996
+ if (!_patternsByAutoFix.has(autoFix)) {
997
+ _patternsByAutoFix.set(autoFix, {});
998
+ }
999
+ _patternsByAutoFix.get(autoFix)[name] = pattern;
1000
+ }
1001
+ })();
1002
+
1003
+ // Freeze the index Sets
1004
+ Object.freeze(_availableLanguages);
1005
+ Object.freeze(_availableSeverities);
1006
+
1007
+ /**
1008
+ * Get patterns for a specific language (O(1) lookup via pre-indexed Map)
1009
+ * Includes universal patterns that apply to all languages
1010
+ * @param {string} language - Language identifier ('javascript', 'python', 'rust', etc.)
1011
+ * @returns {Object} Filtered patterns (language-specific + universal)
1012
+ */
1013
+ function getPatternsForLanguage(language) {
1014
+ const langPatterns = _patternsByLanguage.get(language) || {};
1015
+ const universalPatterns = _patternsByLanguage.get('universal') || {};
1016
+
1017
+ // Merge language-specific with universal patterns
1018
+ return { ...universalPatterns, ...langPatterns };
1019
+ }
1020
+
1021
+ /**
1022
+ * Get patterns for a specific language only (excludes universal patterns)
1023
+ * @param {string} language - Language identifier
1024
+ * @returns {Object} Language-specific patterns only
1025
+ */
1026
+ function getPatternsForLanguageOnly(language) {
1027
+ return _patternsByLanguage.get(language) || {};
1028
+ }
1029
+
1030
+ /**
1031
+ * Get universal patterns (apply to all languages)
1032
+ * @returns {Object} Universal patterns
1033
+ */
1034
+ function getUniversalPatterns() {
1035
+ return _patternsByLanguage.get('universal') || {};
1036
+ }
1037
+
1038
+ /**
1039
+ * Get patterns by severity (O(1) lookup via pre-indexed Map)
1040
+ * @param {string} severity - Severity level ('critical', 'high', 'medium', 'low')
1041
+ * @returns {Object} Filtered patterns
1042
+ */
1043
+ function getPatternsBySeverity(severity) {
1044
+ return _patternsBySeverity.get(severity) || {};
1045
+ }
1046
+
1047
+ /**
1048
+ * Get patterns by autoFix strategy (O(1) lookup via pre-indexed Map)
1049
+ * @param {string} autoFix - AutoFix strategy ('remove', 'replace', 'add_logging', 'flag', 'none')
1050
+ * @returns {Object} Filtered patterns
1051
+ */
1052
+ function getPatternsByAutoFix(autoFix) {
1053
+ return _patternsByAutoFix.get(autoFix) || {};
1054
+ }
1055
+
1056
+ /**
1057
+ * Get patterns matching multiple criteria (language AND severity)
1058
+ * Optimized: single-pass filtering instead of chained Object.entries
1059
+ * @param {Object} criteria - Filter criteria
1060
+ * @param {string} [criteria.language] - Language filter
1061
+ * @param {string} [criteria.severity] - Severity filter
1062
+ * @param {string} [criteria.autoFix] - AutoFix strategy filter
1063
+ * @returns {Object} Patterns matching all criteria
1064
+ */
1065
+ function getPatternsByCriteria(criteria = {}) {
1066
+ // Fast path: no criteria means return all patterns
1067
+ if (!criteria.language && !criteria.severity && !criteria.autoFix) {
1068
+ return { ...slopPatterns };
1069
+ }
1070
+
1071
+ // Pre-fetch filter sets (O(1) Map lookups)
1072
+ const langPatterns = criteria.language ? getPatternsForLanguage(criteria.language) : null;
1073
+ const severityPatterns = criteria.severity ? getPatternsBySeverity(criteria.severity) : null;
1074
+ const autoFixPatterns = criteria.autoFix ? getPatternsByAutoFix(criteria.autoFix) : null;
1075
+
1076
+ // Single-pass filter: check all criteria at once
1077
+ const result = {};
1078
+ for (const [name, pattern] of Object.entries(slopPatterns)) {
1079
+ // Check all criteria in one pass (short-circuit on first failure)
1080
+ if (langPatterns && !(name in langPatterns)) continue;
1081
+ if (severityPatterns && !(name in severityPatterns)) continue;
1082
+ if (autoFixPatterns && !(name in autoFixPatterns)) continue;
1083
+
1084
+ result[name] = pattern;
1085
+ }
1086
+
1087
+ return result;
1088
+ }
1089
+
1090
+ /**
1091
+ * Get all available languages
1092
+ * @returns {Array<string>} List of language identifiers
1093
+ */
1094
+ function getAvailableLanguages() {
1095
+ return Array.from(_availableLanguages);
1096
+ }
1097
+
1098
+ /**
1099
+ * Get all available severity levels
1100
+ * @returns {Array<string>} List of severity levels
1101
+ */
1102
+ function getAvailableSeverities() {
1103
+ return Array.from(_availableSeverities);
1104
+ }
1105
+
1106
+ /**
1107
+ * Check if patterns exist for a language
1108
+ * @param {string} language - Language identifier
1109
+ * @returns {boolean} True if patterns exist
1110
+ */
1111
+ function hasLanguage(language) {
1112
+ return _patternsByLanguage.has(language);
1113
+ }
1114
+
1115
+ /**
1116
+ * Check if a file should be excluded based on pattern rules
1117
+ * Uses pre-compiled regex cache and result cache for performance
1118
+ * @param {string} filePath - File path to check
1119
+ * @param {Array<string>} excludePatterns - Exclude patterns
1120
+ * @returns {boolean} True if file should be excluded
1121
+ */
1122
+ function isFileExcluded(filePath, excludePatterns) {
1123
+ if (!excludePatterns || excludePatterns.length === 0) return false;
1124
+
1125
+ // Normalize Windows backslashes to forward slashes for consistent pattern matching
1126
+ const normalizedPath = filePath.replace(/\\/g, '/');
1127
+
1128
+ // Create cache key using JSON.stringify for collision-resistant format
1129
+ const cacheKey = JSON.stringify([normalizedPath, excludePatterns]);
1130
+
1131
+ // Check cache first (O(1) lookup)
1132
+ const cached = _excludeResultCache.get(cacheKey);
1133
+ if (cached !== undefined) return cached;
1134
+
1135
+ // Compute result
1136
+ const result = excludePatterns.some(pattern => {
1137
+ const regex = getCompiledPattern(pattern);
1138
+ return regex.test(normalizedPath);
1139
+ });
1140
+
1141
+ // Store in cache with FIFO eviction
1142
+ if (_excludeResultCache.size >= MAX_EXCLUDE_RESULT_CACHE_SIZE) {
1143
+ const firstKey = _excludeResultCache.keys().next().value;
1144
+ _excludeResultCache.delete(firstKey);
1145
+ }
1146
+ _excludeResultCache.set(cacheKey, result);
1147
+
1148
+ return result;
1149
+ }
1150
+
1151
+ /**
1152
+ * Get patterns that require multi-pass analysis
1153
+ * These patterns have `requiresMultiPass: true` and need structural code analysis
1154
+ * @returns {Object} Patterns requiring multi-pass analysis
1155
+ */
1156
+ function getMultiPassPatterns() {
1157
+ const result = {};
1158
+ for (const [name, pattern] of Object.entries(slopPatterns)) {
1159
+ if (pattern.requiresMultiPass) {
1160
+ result[name] = pattern;
1161
+ }
1162
+ }
1163
+ return result;
1164
+ }
1165
+
1166
+ // Import analyzers for multi-pass patterns
1167
+ const analyzers = require('./slop-analyzers');
1168
+
1169
+ module.exports = {
1170
+ slopPatterns,
1171
+ // Pre-indexed lookup functions (O(1) performance)
1172
+ getPatternsForLanguage,
1173
+ getPatternsForLanguageOnly,
1174
+ getUniversalPatterns,
1175
+ getPatternsBySeverity,
1176
+ getPatternsByAutoFix,
1177
+ getPatternsByCriteria,
1178
+ // Metadata functions
1179
+ getAvailableLanguages,
1180
+ getAvailableSeverities,
1181
+ hasLanguage,
1182
+ // File exclusion
1183
+ isFileExcluded,
1184
+ // Multi-pass analysis
1185
+ getMultiPassPatterns,
1186
+ analyzers
1187
+ };