agentsys 5.0.3 → 5.1.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 (264) hide show
  1. package/.claude-plugin/marketplace.json +21 -14
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/AGENTS.md +2 -1
  4. package/CHANGELOG.md +18 -0
  5. package/README.md +7 -6
  6. package/adapters/codex/skills/agnix/SKILL.md +0 -1
  7. package/adapters/codex/skills/audit-project/SKILL.md +0 -1
  8. package/adapters/codex/skills/audit-project-agents/SKILL.md +0 -1
  9. package/adapters/codex/skills/audit-project-github/SKILL.md +0 -1
  10. package/adapters/codex/skills/consult/SKILL.md +132 -57
  11. package/adapters/codex/skills/debate/SKILL.md +214 -0
  12. package/adapters/codex/skills/delivery-approval/SKILL.md +0 -1
  13. package/adapters/codex/skills/deslop/SKILL.md +0 -1
  14. package/adapters/codex/skills/drift-detect/SKILL.md +0 -1
  15. package/adapters/codex/skills/enhance/SKILL.md +0 -1
  16. package/adapters/codex/skills/learn/SKILL.md +0 -1
  17. package/adapters/codex/skills/next-task/SKILL.md +0 -1
  18. package/adapters/codex/skills/perf/SKILL.md +0 -1
  19. package/adapters/codex/skills/repo-map/SKILL.md +0 -1
  20. package/adapters/codex/skills/ship/SKILL.md +0 -1
  21. package/adapters/codex/skills/ship-ci-review-loop/SKILL.md +0 -1
  22. package/adapters/codex/skills/ship-deployment/SKILL.md +0 -1
  23. package/adapters/codex/skills/ship-error-handling/SKILL.md +0 -1
  24. package/adapters/codex/skills/sync-docs/SKILL.md +0 -1
  25. package/adapters/opencode/agents/agent-enhancer.md +0 -1
  26. package/adapters/opencode/agents/agnix-agent.md +0 -1
  27. package/adapters/opencode/agents/ci-fixer.md +0 -1
  28. package/adapters/opencode/agents/ci-monitor.md +0 -1
  29. package/adapters/opencode/agents/claudemd-enhancer.md +0 -1
  30. package/adapters/opencode/agents/consult-agent.md +122 -30
  31. package/adapters/opencode/agents/cross-file-enhancer.md +0 -1
  32. package/adapters/opencode/agents/debate-orchestrator.md +169 -0
  33. package/adapters/opencode/agents/delivery-validator.md +0 -1
  34. package/adapters/opencode/agents/deslop-agent.md +0 -1
  35. package/adapters/opencode/agents/docs-enhancer.md +0 -1
  36. package/adapters/opencode/agents/exploration-agent.md +0 -1
  37. package/adapters/opencode/agents/hooks-enhancer.md +0 -1
  38. package/adapters/opencode/agents/implementation-agent.md +0 -1
  39. package/adapters/opencode/agents/learn-agent.md +0 -1
  40. package/adapters/opencode/agents/map-validator.md +0 -1
  41. package/adapters/opencode/agents/perf-analyzer.md +0 -1
  42. package/adapters/opencode/agents/perf-code-paths.md +0 -1
  43. package/adapters/opencode/agents/perf-investigation-logger.md +0 -1
  44. package/adapters/opencode/agents/perf-orchestrator.md +0 -1
  45. package/adapters/opencode/agents/perf-theory-gatherer.md +0 -1
  46. package/adapters/opencode/agents/perf-theory-tester.md +0 -1
  47. package/adapters/opencode/agents/plan-synthesizer.md +0 -1
  48. package/adapters/opencode/agents/planning-agent.md +0 -1
  49. package/adapters/opencode/agents/plugin-enhancer.md +0 -1
  50. package/adapters/opencode/agents/prompt-enhancer.md +0 -1
  51. package/adapters/opencode/agents/simple-fixer.md +0 -1
  52. package/adapters/opencode/agents/skills-enhancer.md +0 -1
  53. package/adapters/opencode/agents/sync-docs-agent.md +0 -1
  54. package/adapters/opencode/agents/task-discoverer.md +0 -1
  55. package/adapters/opencode/agents/test-coverage-checker.md +0 -1
  56. package/adapters/opencode/agents/worktree-manager.md +0 -1
  57. package/adapters/opencode/commands/agnix.md +0 -1
  58. package/adapters/opencode/commands/audit-project-agents.md +0 -1
  59. package/adapters/opencode/commands/audit-project-github.md +0 -1
  60. package/adapters/opencode/commands/audit-project.md +0 -1
  61. package/adapters/opencode/commands/consult.md +133 -57
  62. package/adapters/opencode/commands/debate.md +224 -0
  63. package/adapters/opencode/commands/delivery-approval.md +0 -1
  64. package/adapters/opencode/commands/deslop.md +0 -1
  65. package/adapters/opencode/commands/drift-detect.md +0 -1
  66. package/adapters/opencode/commands/enhance.md +0 -1
  67. package/adapters/opencode/commands/learn.md +0 -1
  68. package/adapters/opencode/commands/next-task.md +0 -1
  69. package/adapters/opencode/commands/perf.md +0 -1
  70. package/adapters/opencode/commands/repo-map.md +0 -1
  71. package/adapters/opencode/commands/ship-ci-review-loop.md +0 -1
  72. package/adapters/opencode/commands/ship-deployment.md +0 -1
  73. package/adapters/opencode/commands/ship-error-handling.md +0 -1
  74. package/adapters/opencode/commands/ship.md +0 -1
  75. package/adapters/opencode/commands/sync-docs.md +0 -1
  76. package/adapters/opencode/skills/agnix/SKILL.md +1 -2
  77. package/adapters/opencode/skills/consult/SKILL.md +33 -23
  78. package/adapters/opencode/skills/debate/SKILL.md +245 -0
  79. package/adapters/opencode/skills/deslop/SKILL.md +1 -2
  80. package/adapters/opencode/skills/discover-tasks/SKILL.md +1 -2
  81. package/adapters/opencode/skills/drift-analysis/SKILL.md +1 -2
  82. package/adapters/opencode/skills/enhance-agent-prompts/SKILL.md +1 -2
  83. package/adapters/opencode/skills/enhance-claude-memory/SKILL.md +1 -2
  84. package/adapters/opencode/skills/enhance-cross-file/SKILL.md +1 -2
  85. package/adapters/opencode/skills/enhance-docs/SKILL.md +1 -2
  86. package/adapters/opencode/skills/enhance-hooks/SKILL.md +1 -2
  87. package/adapters/opencode/skills/enhance-orchestrator/SKILL.md +1 -2
  88. package/adapters/opencode/skills/enhance-plugins/SKILL.md +1 -2
  89. package/adapters/opencode/skills/enhance-prompts/SKILL.md +1 -2
  90. package/adapters/opencode/skills/enhance-skills/SKILL.md +1 -2
  91. package/adapters/opencode/skills/learn/SKILL.md +1 -2
  92. package/adapters/opencode/skills/orchestrate-review/SKILL.md +0 -1
  93. package/adapters/opencode/skills/perf-analyzer/SKILL.md +1 -2
  94. package/adapters/opencode/skills/perf-baseline-manager/SKILL.md +1 -2
  95. package/adapters/opencode/skills/perf-benchmarker/SKILL.md +1 -2
  96. package/adapters/opencode/skills/perf-code-paths/SKILL.md +1 -2
  97. package/adapters/opencode/skills/perf-investigation-logger/SKILL.md +1 -2
  98. package/adapters/opencode/skills/perf-profiler/SKILL.md +1 -2
  99. package/adapters/opencode/skills/perf-theory-gatherer/SKILL.md +1 -2
  100. package/adapters/opencode/skills/perf-theory-tester/SKILL.md +1 -2
  101. package/adapters/opencode/skills/repo-mapping/SKILL.md +1 -2
  102. package/adapters/opencode/skills/sync-docs/SKILL.md +1 -2
  103. package/adapters/opencode/skills/validate-delivery/SKILL.md +1 -2
  104. package/lib/adapter-transforms.js +24 -4
  105. package/package.json +1 -1
  106. package/plugins/agnix/.claude-plugin/plugin.json +1 -1
  107. package/plugins/agnix/skills/agnix/SKILL.md +1 -1
  108. package/plugins/audit-project/.claude-plugin/plugin.json +1 -1
  109. package/plugins/audit-project/lib/adapter-transforms.js +24 -4
  110. package/plugins/consult/.claude-plugin/plugin.json +1 -1
  111. package/plugins/consult/agents/consult-agent.md +122 -29
  112. package/plugins/consult/commands/consult.md +135 -58
  113. package/plugins/consult/skills/consult/SKILL.md +31 -20
  114. package/plugins/debate/.claude-plugin/plugin.json +21 -0
  115. package/plugins/debate/agents/debate-orchestrator.md +175 -0
  116. package/plugins/debate/commands/debate.md +221 -0
  117. package/plugins/debate/lib/adapter-transforms.js +298 -0
  118. package/plugins/debate/lib/collectors/codebase.js +392 -0
  119. package/plugins/debate/lib/collectors/docs-patterns.js +713 -0
  120. package/plugins/debate/lib/collectors/documentation.js +219 -0
  121. package/plugins/debate/lib/collectors/github.js +330 -0
  122. package/plugins/debate/lib/collectors/index.js +126 -0
  123. package/plugins/debate/lib/config/index.js +14 -0
  124. package/plugins/debate/lib/cross-platform/index.js +539 -0
  125. package/plugins/debate/lib/discovery/index.js +352 -0
  126. package/plugins/debate/lib/drift-detect/collectors.js +37 -0
  127. package/plugins/debate/lib/enhance/agent-analyzer.js +421 -0
  128. package/plugins/debate/lib/enhance/agent-patterns.js +571 -0
  129. package/plugins/debate/lib/enhance/auto-suppression.js +622 -0
  130. package/plugins/debate/lib/enhance/benchmark.js +417 -0
  131. package/plugins/debate/lib/enhance/cross-file-analyzer.js +930 -0
  132. package/plugins/debate/lib/enhance/cross-file-patterns.js +370 -0
  133. package/plugins/debate/lib/enhance/docs-analyzer.js +325 -0
  134. package/plugins/debate/lib/enhance/docs-patterns.js +671 -0
  135. package/plugins/debate/lib/enhance/fixer.js +721 -0
  136. package/plugins/debate/lib/enhance/hook-analyzer.js +135 -0
  137. package/plugins/debate/lib/enhance/hook-patterns.js +40 -0
  138. package/plugins/debate/lib/enhance/index.js +127 -0
  139. package/plugins/debate/lib/enhance/plugin-analyzer.js +402 -0
  140. package/plugins/debate/lib/enhance/plugin-patterns.js +326 -0
  141. package/plugins/debate/lib/enhance/projectmemory-analyzer.js +551 -0
  142. package/plugins/debate/lib/enhance/projectmemory-patterns.js +617 -0
  143. package/plugins/debate/lib/enhance/prompt-analyzer.js +457 -0
  144. package/plugins/debate/lib/enhance/prompt-patterns.js +1484 -0
  145. package/plugins/debate/lib/enhance/reporter.js +1348 -0
  146. package/plugins/debate/lib/enhance/security-patterns.js +284 -0
  147. package/plugins/debate/lib/enhance/skill-analyzer.js +182 -0
  148. package/plugins/debate/lib/enhance/skill-patterns.js +147 -0
  149. package/plugins/debate/lib/enhance/suppression.js +352 -0
  150. package/plugins/debate/lib/enhance/tool-patterns.js +373 -0
  151. package/plugins/debate/lib/index.js +270 -0
  152. package/plugins/debate/lib/patterns/cli-enhancers.js +611 -0
  153. package/plugins/debate/lib/patterns/pipeline.js +948 -0
  154. package/plugins/debate/lib/patterns/review-patterns.js +558 -0
  155. package/plugins/debate/lib/patterns/slop-analyzers.js +2305 -0
  156. package/plugins/debate/lib/patterns/slop-patterns.js +1187 -0
  157. package/plugins/debate/lib/perf/analyzer/index.js +22 -0
  158. package/plugins/debate/lib/perf/argument-parser.js +105 -0
  159. package/plugins/debate/lib/perf/baseline-comparator.js +50 -0
  160. package/plugins/debate/lib/perf/baseline-store.js +127 -0
  161. package/plugins/debate/lib/perf/benchmark-runner.js +404 -0
  162. package/plugins/debate/lib/perf/breaking-point-finder.js +52 -0
  163. package/plugins/debate/lib/perf/breaking-point-runner.js +60 -0
  164. package/plugins/debate/lib/perf/checkpoint.js +123 -0
  165. package/plugins/debate/lib/perf/code-paths.js +86 -0
  166. package/plugins/debate/lib/perf/consolidation.js +37 -0
  167. package/plugins/debate/lib/perf/constraint-runner.js +71 -0
  168. package/plugins/debate/lib/perf/experiment-runner.js +32 -0
  169. package/plugins/debate/lib/perf/index.js +41 -0
  170. package/plugins/debate/lib/perf/investigation-state.js +874 -0
  171. package/plugins/debate/lib/perf/optimization-runner.js +79 -0
  172. package/plugins/debate/lib/perf/profilers/go.js +22 -0
  173. package/plugins/debate/lib/perf/profilers/index.js +46 -0
  174. package/plugins/debate/lib/perf/profilers/java.js +23 -0
  175. package/plugins/debate/lib/perf/profilers/node.js +27 -0
  176. package/plugins/debate/lib/perf/profilers/python.js +23 -0
  177. package/plugins/debate/lib/perf/profilers/rust.js +23 -0
  178. package/plugins/debate/lib/perf/profiling-runner.js +75 -0
  179. package/plugins/debate/lib/perf/schemas.js +140 -0
  180. package/plugins/debate/lib/platform/detect-platform.js +413 -0
  181. package/plugins/debate/lib/platform/detection-configs.js +93 -0
  182. package/plugins/debate/lib/platform/state-dir.js +132 -0
  183. package/plugins/debate/lib/platform/verify-tools.js +182 -0
  184. package/plugins/debate/lib/repo-map/cache.js +152 -0
  185. package/plugins/debate/lib/repo-map/concurrency.js +29 -0
  186. package/plugins/debate/lib/repo-map/index.js +222 -0
  187. package/plugins/debate/lib/repo-map/installer.js +212 -0
  188. package/plugins/debate/lib/repo-map/queries/go.js +27 -0
  189. package/plugins/debate/lib/repo-map/queries/index.js +100 -0
  190. package/plugins/debate/lib/repo-map/queries/java.js +38 -0
  191. package/plugins/debate/lib/repo-map/queries/javascript.js +55 -0
  192. package/plugins/debate/lib/repo-map/queries/python.js +24 -0
  193. package/plugins/debate/lib/repo-map/queries/rust.js +73 -0
  194. package/plugins/debate/lib/repo-map/queries/typescript.js +38 -0
  195. package/plugins/debate/lib/repo-map/runner.js +1364 -0
  196. package/plugins/debate/lib/repo-map/updater.js +562 -0
  197. package/plugins/debate/lib/repo-map/usage-analyzer.js +407 -0
  198. package/plugins/debate/lib/schemas/plugin-manifest.schema.json +57 -0
  199. package/plugins/debate/lib/schemas/validator.js +247 -0
  200. package/plugins/debate/lib/sources/custom-handler.js +199 -0
  201. package/plugins/debate/lib/sources/policy-questions.js +246 -0
  202. package/plugins/debate/lib/sources/source-cache.js +165 -0
  203. package/plugins/debate/lib/state/workflow-state.js +576 -0
  204. package/plugins/debate/lib/types/agent-frontmatter.d.ts +134 -0
  205. package/plugins/debate/lib/types/command-frontmatter.d.ts +107 -0
  206. package/plugins/debate/lib/types/hook-frontmatter.d.ts +115 -0
  207. package/plugins/debate/lib/types/index.d.ts +84 -0
  208. package/plugins/debate/lib/types/plugin-manifest.d.ts +102 -0
  209. package/plugins/debate/lib/types/skill-frontmatter.d.ts +89 -0
  210. package/plugins/debate/lib/utils/atomic-write.js +94 -0
  211. package/plugins/debate/lib/utils/cache-manager.js +159 -0
  212. package/plugins/debate/lib/utils/command-parser.js +0 -0
  213. package/plugins/debate/lib/utils/context-optimizer.js +300 -0
  214. package/plugins/debate/lib/utils/deprecation.js +37 -0
  215. package/plugins/debate/lib/utils/shell-escape.js +88 -0
  216. package/plugins/debate/lib/utils/state-helpers.js +61 -0
  217. package/plugins/debate/skills/debate/SKILL.md +264 -0
  218. package/plugins/deslop/.claude-plugin/plugin.json +1 -1
  219. package/plugins/deslop/lib/adapter-transforms.js +24 -4
  220. package/plugins/deslop/skills/deslop/SKILL.md +1 -1
  221. package/plugins/drift-detect/.claude-plugin/plugin.json +1 -1
  222. package/plugins/drift-detect/lib/adapter-transforms.js +24 -4
  223. package/plugins/drift-detect/skills/drift-analysis/SKILL.md +1 -1
  224. package/plugins/enhance/.claude-plugin/plugin.json +1 -1
  225. package/plugins/enhance/lib/adapter-transforms.js +24 -4
  226. package/plugins/enhance/skills/enhance-agent-prompts/SKILL.md +1 -1
  227. package/plugins/enhance/skills/enhance-claude-memory/SKILL.md +1 -1
  228. package/plugins/enhance/skills/enhance-cross-file/SKILL.md +1 -1
  229. package/plugins/enhance/skills/enhance-docs/SKILL.md +1 -1
  230. package/plugins/enhance/skills/enhance-hooks/SKILL.md +1 -1
  231. package/plugins/enhance/skills/enhance-orchestrator/SKILL.md +1 -1
  232. package/plugins/enhance/skills/enhance-plugins/SKILL.md +1 -1
  233. package/plugins/enhance/skills/enhance-prompts/SKILL.md +1 -1
  234. package/plugins/enhance/skills/enhance-skills/SKILL.md +1 -1
  235. package/plugins/learn/.claude-plugin/plugin.json +1 -1
  236. package/plugins/learn/agents/learn-agent.md +1 -1
  237. package/plugins/learn/lib/adapter-transforms.js +24 -4
  238. package/plugins/learn/skills/learn/SKILL.md +1 -1
  239. package/plugins/next-task/.claude-plugin/plugin.json +1 -1
  240. package/plugins/next-task/agents/exploration-agent.md +1 -1
  241. package/plugins/next-task/lib/adapter-transforms.js +24 -4
  242. package/plugins/next-task/skills/discover-tasks/SKILL.md +1 -1
  243. package/plugins/next-task/skills/validate-delivery/SKILL.md +1 -1
  244. package/plugins/perf/.claude-plugin/plugin.json +1 -1
  245. package/plugins/perf/lib/adapter-transforms.js +24 -4
  246. package/plugins/perf/skills/perf-analyzer/SKILL.md +1 -1
  247. package/plugins/perf/skills/perf-baseline-manager/SKILL.md +1 -1
  248. package/plugins/perf/skills/perf-benchmarker/SKILL.md +1 -1
  249. package/plugins/perf/skills/perf-code-paths/SKILL.md +1 -1
  250. package/plugins/perf/skills/perf-investigation-logger/SKILL.md +1 -1
  251. package/plugins/perf/skills/perf-profiler/SKILL.md +1 -1
  252. package/plugins/perf/skills/perf-theory-gatherer/SKILL.md +1 -1
  253. package/plugins/perf/skills/perf-theory-tester/SKILL.md +1 -1
  254. package/plugins/repo-map/.claude-plugin/plugin.json +1 -1
  255. package/plugins/repo-map/lib/adapter-transforms.js +24 -4
  256. package/plugins/ship/.claude-plugin/plugin.json +1 -1
  257. package/plugins/ship/lib/adapter-transforms.js +24 -4
  258. package/plugins/sync-docs/.claude-plugin/plugin.json +1 -1
  259. package/plugins/sync-docs/lib/adapter-transforms.js +24 -4
  260. package/plugins/sync-docs/skills/sync-docs/SKILL.md +1 -1
  261. package/scripts/gen-adapters.js +6 -7
  262. package/scripts/generate-docs.js +4 -2
  263. package/scripts/plugins.txt +1 -0
  264. package/site/content.json +6 -6
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: debate
3
+ description: "Use when user asks to \"debate\", \"argue about\", \"compare perspectives\", \"stress test idea\", \"devil advocate\", \"codex vs gemini\". Runs structured multi-round debate between two AI tools with proposer/challenger roles."
4
+ ---
5
+
6
+ # /debate - Structured AI Dialectic
7
+
8
+ You are executing the /debate command. Your job is to parse the user's request, resolve missing parameters interactively, and spawn the debate orchestrator.
9
+
10
+ ## Constraints
11
+
12
+ - NEVER expose API keys in commands or output
13
+ - NEVER run with permission-bypassing flags
14
+ - MUST validate tool names against allow-list: gemini, codex, claude, opencode, copilot
15
+ - Proposer and challenger MUST be different tools
16
+ - Rounds MUST be 1-5 (default: 2)
17
+
18
+ ## Execution
19
+
20
+ ### Phase 1: Parse Input (Flags + Natural Language)
21
+
22
+ Parse `$ARGUMENTS` using both explicit flags and natural language. Flags take priority.
23
+
24
+ #### Step 1a: Extract explicit flags
25
+
26
+ 1. `--tools=TOOL1,TOOL2` (comma-separated pair, first is proposer, second is challenger)
27
+ 2. `--rounds=N` where N is 1-5
28
+ 3. `--effort=VALUE` where VALUE is one of: low, medium, high, max
29
+ 4. `--model-proposer=VALUE` (any string)
30
+ 5. `--model-challenger=VALUE` (any string)
31
+ 6. `--context=VALUE` where VALUE is: diff, file=PATH, or none (passed through to consult skill for each tool invocation)
32
+
33
+ Remove matched flags from `$ARGUMENTS`.
34
+
35
+ #### Step 1b: Natural language extraction
36
+
37
+ **Tool pair extraction** (case-insensitive):
38
+ - "{tool} vs {tool}" (e.g., "codex vs gemini") -> proposer, challenger
39
+ - "{tool} and {tool}" -> proposer, challenger
40
+ - "with {tool} and {tool}" -> proposer, challenger
41
+ - "between {tool} and {tool}" -> proposer, challenger
42
+ - Tool names: claude, gemini, codex, opencode, copilot
43
+
44
+ **Rounds extraction**:
45
+ - "{N} rounds" -> rounds=N
46
+ - "single round" / "one round" -> rounds=1
47
+ - "deep" / "extended" -> rounds=3
48
+
49
+ **Effort extraction** (same as consult):
50
+ - "quick" / "fast" -> effort=low
51
+ - "thorough" / "deep" / "carefully" -> effort=high
52
+ - "maximum" / "max effort" -> effort=max
53
+
54
+ **Topic extraction**:
55
+ - Text after "about" is the topic
56
+ - If no "about" pattern, remaining text after removing tool/rounds/effort markers
57
+
58
+ **Validation**: rounds must be 1-5. Proposer and challenger must differ. If same tool specified for both, show: `[ERROR] Proposer and challenger must be different tools.`
59
+
60
+ If no topic found: `[ERROR] Usage: /debate "your topic" or /debate codex vs gemini about your topic`
61
+
62
+ ### Phase 2: Interactive Parameter Resolution
63
+
64
+ MUST resolve ALL missing parameters. Do NOT silently default.
65
+
66
+ #### Step 2a: Detect installed tools
67
+
68
+ Run all 5 checks **in parallel** via Bash:
69
+ - `which <tool> 2>/dev/null && echo FOUND || echo NOTFOUND` (Unix)
70
+ - `where.exe <tool> 2>nul && echo FOUND || echo NOTFOUND` (Windows)
71
+
72
+ Check for: claude, gemini, codex, opencode, copilot.
73
+
74
+ If fewer than 2 tools installed: `[ERROR] Debate requires at least 2 AI CLI tools. Install more: npm i -g @anthropic-ai/claude-code, npm i -g @openai/codex`
75
+
76
+ #### Step 2b: Batch selection for missing params
77
+
78
+ Use a SINGLE request_user_input call for all missing params:
79
+
80
+ ```
81
+ request_user_input:
82
+ > **Codex**: Each question MUST include a unique `id` field (e.g., `id: "q1"`).
83
+ questions:
84
+ - id: "debate-proposer"
85
+ header: "Proposer" # SKIP if proposer resolved
86
+ question: "Which tool should PROPOSE (argue for)?"
87
+ options (only installed tools):
88
+ - label: "Claude" description: "Deep code reasoning"
89
+ - label: "Gemini" description: "Fast multimodal analysis"
90
+ - label: "Codex" description: "Agentic coding"
91
+ - label: "OpenCode" description: "Flexible model choice"
92
+ - label: "Copilot" description: "GitHub-integrated AI"
93
+
94
+ - id: "debate-challenger"
95
+ header: "Challenger" # SKIP if challenger resolved
96
+ question: "Which tool should CHALLENGE (find flaws)?"
97
+ options (only installed, excluding proposer):
98
+ [same list minus the proposer tool]
99
+
100
+ - id: "debate-effort"
101
+ header: "Effort" # SKIP if effort resolved
102
+ question: "What thinking effort level?"
103
+ options:
104
+ - label: "High (Recommended)" description: "Thorough analysis for debate"
105
+ - label: "Medium" description: "Balanced speed and quality"
106
+ - label: "Low" description: "Fast, minimal reasoning"
107
+ - label: "Max" description: "Maximum reasoning depth"
108
+
109
+ - id: "debate-rounds"
110
+ header: "Rounds" # SKIP if rounds resolved
111
+ question: "How many debate rounds?"
112
+ options:
113
+ - label: "2 (Recommended)" description: "Propose + challenge + defend + respond"
114
+ - label: "1 (Quick)" description: "Single propose + challenge"
115
+ - label: "3 (Extended)" description: "Three full exchanges"
116
+ - label: "5 (Exhaustive)" description: "Five rounds, deep exploration"
117
+
118
+ - id: "debate-context"
119
+ header: "Context" # SKIP if --context resolved
120
+ question: "Include codebase context for both tools?"
121
+ options:
122
+ - label: "None (Recommended)" description: "No extra context, just the topic"
123
+ - label: "Diff" description: "Include current git diff"
124
+ - label: "File" description: "Include a specific file (will ask path)"
125
+ ```
126
+
127
+ Map choices: "Claude" -> "claude", "High (Recommended)" -> "high", "2 (Recommended)" -> 2, "None (Recommended)" -> "none", "Diff" -> "diff", "File" -> "file" (then ask for path). Strip " (Recommended)" suffix.
128
+
129
+ If context resolved to "file":
130
+ Use a follow-up request_user_input to ask for the file path:
131
+ ```
132
+ request_user_input:
133
+ > **Codex**: Each question MUST include a unique `id` field (e.g., `id: "q1"`).
134
+ questions:
135
+ - id: "debate-file-path"
136
+ header: "File path"
137
+ question: "Which file should both tools see?"
138
+ options:
139
+ - label: "src/" description: "Source directory file"
140
+ - label: "README.md" description: "Project readme"
141
+ ```
142
+ The user can type any path via "Other".
143
+ After getting the path:
144
+ 1. Reject absolute paths outside the current working directory
145
+ 2. Reject paths containing `..` that escape the project root
146
+ 3. Reject UNC paths (`\\` or `//` prefix)
147
+ 4. Validate the file exists using the Read tool
148
+ If the path escapes the project: `[ERROR] Context file must be within the project directory`
149
+ If the file doesn't exist: `[ERROR] Context file not found: {PATH}`
150
+ If valid, set context to `file={user_provided_path}`.
151
+
152
+ If proposer and challenger resolve to the same tool after selection, show error and re-ask for challenger.
153
+
154
+ ### Phase 3: Spawn Debate Orchestrator
155
+
156
+ With all parameters resolved, spawn the debate orchestrator agent:
157
+
158
+ ```
159
+ Task:
160
+ subagent_type: "debate:debate-orchestrator"
161
+ model: opus
162
+ prompt: |
163
+ Execute a structured debate with these pre-resolved parameters:
164
+ - topic: [topic]
165
+ - proposer: [proposer tool]
166
+ - challenger: [challenger tool]
167
+ - effort: [effort]
168
+ - rounds: [rounds]
169
+ - model_proposer: [model or "omit"]
170
+ - model_challenger: [model or "omit"]
171
+
172
+ If model is "omit" or empty, do NOT include --model in consult skill invocations. The consult skill will use effort-based defaults.
173
+ - context: [context or "none"]
174
+
175
+ Follow the debate skill templates. Display each round progressively.
176
+ Deliver a verdict that picks a winner.
177
+ ```
178
+
179
+ ### Phase 4: Present Results
180
+
181
+ Display the orchestrator's output directly. It includes:
182
+ - Progressive round-by-round output (displayed as each round completes)
183
+ - Final synthesis with verdict, agreements, disagreements, and recommendation
184
+
185
+ On failure: `[ERROR] Debate Failed: {specific error message}`
186
+
187
+ ## Error Handling
188
+
189
+ | Error | Output |
190
+ |-------|--------|
191
+ | No topic provided | `[ERROR] Usage: /debate "your topic" or /debate codex vs gemini about your topic` |
192
+ | Tool not installed | `[ERROR] {tool} is not installed. Install with: {install command}` |
193
+ | Fewer than 2 tools | `[ERROR] Debate requires at least 2 AI CLI tools installed.` |
194
+ | Same tool for both | `[ERROR] Proposer and challenger must be different tools.` |
195
+ | Rounds out of range | `[ERROR] Rounds must be 1-5. Got: {rounds}` |
196
+ | Context file not found | `[ERROR] Context file not found: {PATH}` |
197
+ | Orchestrator fails | `[ERROR] Debate failed: {error}` |
198
+
199
+ ## Example Usage
200
+
201
+ ```bash
202
+ # Natural language
203
+ /debate codex vs gemini about microservices vs monolith
204
+ /debate with claude and codex about our auth implementation
205
+ /debate thoroughly gemini vs codex about database schema design
206
+ /debate codex vs gemini 3 rounds about event sourcing
207
+
208
+ # Explicit flags
209
+ /debate "Should we use event sourcing?" --tools=claude,gemini --rounds=3 --effort=high
210
+ /debate "Redis vs PostgreSQL for caching" --tools=codex,opencode
211
+
212
+ # Mixed
213
+ /debate codex vs gemini --effort=max about performance optimization strategies
214
+ ```
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: delivery-approval
4
3
  description: "Use when user asks to \"validate delivery\", \"approve for shipping\", \"check if ready to ship\", \"verify task completion\". Autonomous validation that tests pass, build succeeds, and requirements are met."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: deslop
4
3
  description: "Use when user asks to \"clean up slop\", \"remove AI artifacts\", \"deslop the codebase\", \"find debug statements\", \"remove console.logs\", \"repo hygiene\". Detects and removes AI-generated slop patterns."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: drift-detect
4
3
  description: "Use when user asks to \"check plan drift\", \"compare docs to code\", \"verify roadmap\", \"scan for reality gaps\". Analyzes documentation vs actual code to detect drift and outdated plans."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: enhance
4
3
  description: "Use when user asks to \"enhance prompts\", \"improve agents\", \"analyze plugins\", \"optimize documentation\", \"review CLAUDE.md\". Runs 5 parallel analyzers on prompts, agents, plugins, docs, and project memory files."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: learn
4
3
  description: "Use when user asks to \"learn about topic\", \"research subject\", \"create learning guide\", \"build knowledge base\", \"study topic\". Gathers online sources and synthesizes comprehensive guide with RAG index."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: next-task
4
3
  description: "Use when user asks to \"find next task\", \"what should I work on\", \"automate workflow\", \"implement and ship\", \"run next-task\". Orchestrates complete task-to-production workflow: discovery, implementation, review, and delivery."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: perf
4
3
  description: "Use when user asks to \"run perf\", \"performance investigation\", \"benchmark regression\", \"profiling workflow\", \"baseline performance\". Runs structured perf investigations with baselines, profiling, hypotheses, and decisions."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: repo-map
4
3
  description: "Use when user asks to \"create repo map\", \"generate repo map\", \"update repo map\", \"repo map status\", \"map symbols\". Builds and updates AST-based repo map using ast-grep."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: ship
4
3
  description: "Use when user asks to \"ship this\", \"create PR\", \"merge to main\", \"deploy changes\", \"push to production\". Complete PR workflow: commit, create PR, monitor CI, merge, deploy, validate."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: ship-ci-review-loop
4
3
  description: "Use when monitoring CI and handling review comments during /ship. Details mandatory wait periods, auto-reviewer handling, and comment resolution."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: ship-deployment
4
3
  description: "Use when deploying and validating during /ship. Details Railway/Vercel deployment, smoke testing, and rollback procedures."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: ship-error-handling
4
3
  description: "Use when handling and recovering from /ship command errors."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: sync-docs
4
3
  description: "Use when user asks to \"update docs\", \"sync documentation\", \"fix outdated docs\", \"refresh README\". Compares documentation to actual code and fixes discrepancies."
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: agent-enhancer
4
3
  description: Analyze agent prompts for optimization opportunities
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: agnix-agent
4
3
  description: Lint agent configurations using agnix CLI. Invoke agnix skill and return validation results.
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: ci-fixer
4
3
  description: Fix CI failures and PR comments. Use this agent when ci-monitor detects issues that need code changes.
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: ci-monitor
4
3
  description: Monitor CI status and PR comments with sleep/check loops. Use this agent after PR creation to watch for issues and delegate fixes to ci-fixer.
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: claudemd-enhancer
4
3
  description: Analyzes and optimizes CLAUDE.md/AGENTS.md project memory files for better AI understanding
@@ -1,7 +1,6 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: consult-agent
4
- description: "Execute cross-tool AI consultations via Task spawning. Use when agents or workflows need a second opinion from Gemini, Codex, Claude, OpenCode, or Copilot."
3
+ description: "Execute cross-tool AI consultations via Task spawning. Use when agents or workflows need a second opinion from Gemini, Codex, Claude, OpenCode, or Copilot. Supports multi-instance parallel consultations (count > 1)."
5
4
  mode: subagent
6
5
  ---
7
6
 
@@ -17,11 +16,13 @@ mode: subagent
17
16
 
18
17
  You are the programmatic interface for cross-tool AI consultations. The consult plugin follows the standard Command -> Agent -> Skill pattern:
19
18
 
20
- - **Command** (`/consult`): User-facing entry point. Handles interactive parameter selection (tool picker, effort picker, model picker via AskUserQuestion). Invokes the consult skill directly. Does NOT spawn this agent.
21
- - **Agent** (this file): Programmatic entry point for other agents and workflows via Task(). Requires all parameters pre-resolved by the caller. Invokes the consult skill, then executes the CLI command it returns via Bash.
22
- - **Skill** (`consult`): Implementation source of truth. Provides provider configurations, model mappings, command templates, context packaging, and output parsing logic. Both the command and this agent invoke the skill before executing anything.
19
+ - **Command** (`/consult`): User-facing entry point. Handles natural language parsing and interactive parameter selection. For single instance (count=1), invokes the consult skill directly. For multi-instance (count>1), spawns this agent.
20
+ - **Agent** (this file): Programmatic entry point. Requires all parameters pre-resolved by the caller. Handles both single-instance (invoke skill) and multi-instance (parallel execution). Used by the command for multi-instance and by other agents/workflows via Task().
21
+ - **Skill** (`consult`): Implementation source of truth. Provides provider configurations, model mappings, command templates, context packaging, and output parsing logic.
23
22
 
24
- Use this agent when the /consult command is not available (e.g., from other agents or automated workflows that need a second opinion).
23
+ Use this agent for:
24
+ 1. Multi-instance consultations (count > 1) dispatched by the /consult command
25
+ 2. Programmatic consultations from other agents or automated workflows
25
26
 
26
27
  ## Why Sonnet Model
27
28
 
@@ -43,13 +44,28 @@ Extract from prompt. ALL parameters MUST be pre-resolved by the caller (the /con
43
44
  - **context**: Context mode (diff, file, none) - default: none
44
45
  - **continueSession**: Session ID or true/false
45
46
  - **sessionFile**: Path to session state file
47
+ - **count**: Number of parallel instances (1-5, default: 1)
46
48
 
47
49
  If any required parameter is missing, return an error as plain JSON:
48
50
  ```json
49
51
  {"error": "Missing required parameter: [param]. The caller must resolve all parameters before spawning this agent."}
50
52
  ```
51
53
 
52
- ### 2. Invoke Consult Skill (MUST)
54
+ ### 2. Route: Single vs Multi-Instance
55
+
56
+ If both `continueSession` is set and `count > 1`, return:
57
+ ```json
58
+ {"error": "Cannot use --continue with count > 1. Session resume applies to a single tool session."}
59
+ ```
60
+
61
+ Validate count: if provided, must be 1-5. If out of range, return `{"error": "Instance count must be 1-5. Got: [count]"}`.
62
+
63
+ If `count` is 1 (or not provided), follow the **Single Instance** path (Step 3).
64
+ If `count` is 2-5, follow the **Multi-Instance** path (Step 4).
65
+
66
+ ### 3. Single Instance (count=1)
67
+
68
+ #### 3a. Invoke Consult Skill (MUST)
53
69
 
54
70
  You MUST invoke the `consult` skill using the Skill tool. Pass all parsed arguments. The skill is the authoritative source for provider configurations, model mappings, command building, context packaging, session loading, and output parsing. Do not bypass the skill.
55
71
 
@@ -60,11 +76,11 @@ Args: [question] --tool=[tool] --effort=[effort] [--model=[model]] [--context=[c
60
76
  Example: "Review this function" --tool=claude --effort=high --model=opus
61
77
  ```
62
78
 
63
- ### 3. Execute Command
79
+ #### 3b. Execute Command
64
80
 
65
81
  Run the CLI command returned by the skill via Bash with a 120-second timeout.
66
82
 
67
- ### 4. Parse and Return Result
83
+ #### 3c. Parse and Return Result
68
84
 
69
85
  Parse the response using the method specified by the skill for the target tool, then format and display the result as human-friendly text:
70
86
 
@@ -77,10 +93,105 @@ The results of the consultation are:
77
93
 
78
94
  Set `continuable: true` for Claude, Gemini, Codex, and OpenCode (tools with session resume support). Only Copilot is non-continuable. Each tool uses a different resume mechanism: Claude/Gemini use `--resume`, Codex uses `codex exec resume`, OpenCode uses `--session`/`--continue`.
79
95
 
80
- ### 5. Save Session State
96
+ #### 3d. Save Session State
81
97
 
82
98
  Write session state to the sessionFile path provided by the command for continuity.
83
99
 
100
+ ### 4. Multi-Instance (count > 1)
101
+
102
+ When count > 1, execute N parallel consultations with the same tool and parameters.
103
+
104
+ #### 4a. Invoke Consult Skill Once
105
+
106
+ Invoke the `consult` skill once to get the resolved command template and provider configuration. This gives you the exact CLI command to run for this tool/model/effort combination. Do NOT execute the command from the skill response yet.
107
+
108
+ #### 4b. Write Indexed Temp Files
109
+
110
+ Write the question to N indexed temp files using the Write tool:
111
+ - `{AI_STATE_DIR}/consult/question-1.tmp`
112
+ - `{AI_STATE_DIR}/consult/question-2.tmp`
113
+ - ... through `question-{count}.tmp`
114
+
115
+ Platform state directory:
116
+ - Claude Code: `.claude/`
117
+ - OpenCode: `.opencode/`
118
+ - Codex CLI: `.codex/`
119
+
120
+ All temp files contain the same question text (with context prepended if applicable).
121
+
122
+ #### 4c. Execute N Commands in Parallel
123
+
124
+ Run N Bash commands **in parallel** (multiple Bash tool calls in a single message). Each command uses the template from Step 4a but points to its own indexed temp file. Set 120-second timeout on each.
125
+
126
+ Example for 3 parallel Codex calls:
127
+ ```
128
+ Bash: codex exec "$(cat "{AI_STATE_DIR}/consult/question-1.tmp")" --json -m "gpt-5.3-codex" -c model_reasoning_effort="high"
129
+ Bash: codex exec "$(cat "{AI_STATE_DIR}/consult/question-2.tmp")" --json -m "gpt-5.3-codex" -c model_reasoning_effort="high"
130
+ Bash: codex exec "$(cat "{AI_STATE_DIR}/consult/question-3.tmp")" --json -m "gpt-5.3-codex" -c model_reasoning_effort="high"
131
+ ```
132
+
133
+ #### 4d. Parse and Format Results
134
+
135
+ Parse each response using the skill's output parsing rules for the target tool. Format as numbered responses:
136
+
137
+ ```
138
+ # Multi-Consultation Results
139
+
140
+ Tool: {tool}, Model: {model}, Effort: {effort}, Instances: {count}
141
+
142
+ ---
143
+
144
+ ## Response 1 (Duration: {duration_ms}ms)
145
+
146
+ {response_1}
147
+
148
+ ---
149
+
150
+ ## Response 2 (Duration: {duration_ms}ms)
151
+
152
+ {response_2}
153
+
154
+ ---
155
+
156
+ [... for each instance ...]
157
+
158
+ ---
159
+
160
+ ## Synthesis
161
+
162
+ Key agreement points:
163
+ - [Common themes across responses]
164
+
165
+ Key differences:
166
+ - [Where responses diverge]
167
+ ```
168
+
169
+ If some instances failed but others succeeded, show the successful responses and note failures:
170
+ `[WARN] Instance {N} failed: {error}. Showing {M} of {count} responses.`
171
+
172
+ #### 4e. Clean Up and Save State
173
+
174
+ 1. Delete all indexed temp files (`question-1.tmp` through `question-{count}.tmp`)
175
+ 2. Save multi-session state to `{AI_STATE_DIR}/consult/last-multi-session.json`:
176
+
177
+ ```json
178
+ {
179
+ "tool": "codex",
180
+ "model": "gpt-5.3-codex",
181
+ "effort": "high",
182
+ "count": 3,
183
+ "timestamp": "{ISO 8601 timestamp of execution}",
184
+ "question": "original question text",
185
+ "sessions": [
186
+ {"session_id": "abc-123", "continuable": true},
187
+ {"session_id": "def-456", "continuable": true},
188
+ {"session_id": "ghi-789", "continuable": true}
189
+ ]
190
+ }
191
+ ```
192
+
193
+ 3. Also save the first session to `{AI_STATE_DIR}/consult/last-session.json` (standard format) so `--continue` works.
194
+
84
195
  ## Error Handling
85
196
 
86
197
  | Error | Action |
@@ -93,26 +204,7 @@ Write session state to the sessionFile path provided by the command for continui
93
204
 
94
205
  ## Output Sanitization
95
206
 
96
- Before including any consulted tool's response in the output, scan the response text and redact matches for these patterns:
97
-
98
- | Pattern | Description | Replacement |
99
- |---------|-------------|-------------|
100
- | `sk-[a-zA-Z0-9_-]{20,}` | Anthropic API keys | `[REDACTED_API_KEY]` |
101
- | `sk-proj-[a-zA-Z0-9_-]{20,}` | OpenAI project keys | `[REDACTED_API_KEY]` |
102
- | `sk-ant-[a-zA-Z0-9_-]{20,}` | Anthropic API keys (ant prefix) | `[REDACTED_API_KEY]` |
103
- | `AIza[a-zA-Z0-9_-]{30,}` | Google API keys | `[REDACTED_API_KEY]` |
104
- | `ghp_[a-zA-Z0-9]{36,}` | GitHub personal access tokens | `[REDACTED_TOKEN]` |
105
- | `gho_[a-zA-Z0-9]{36,}` | GitHub OAuth tokens | `[REDACTED_TOKEN]` |
106
- | `github_pat_[a-zA-Z0-9_]{20,}` | GitHub fine-grained PATs | `[REDACTED_TOKEN]` |
107
- | `ANTHROPIC_API_KEY=[^\s]+` | Key assignment in env output | `ANTHROPIC_API_KEY=[REDACTED]` |
108
- | `OPENAI_API_KEY=[^\s]+` | Key assignment in env output | `OPENAI_API_KEY=[REDACTED]` |
109
- | `GOOGLE_API_KEY=[^\s]+` | Key assignment in env output | `GOOGLE_API_KEY=[REDACTED]` |
110
- | `GEMINI_API_KEY=[^\s]+` | Key assignment in env output | `GEMINI_API_KEY=[REDACTED]` |
111
- | `AKIA[A-Z0-9]{16}` | AWS access keys | `[REDACTED_AWS_KEY]` |
112
- | `ASIA[A-Z0-9]{16}` | AWS session tokens | `[REDACTED_AWS_KEY]` |
113
- | `Bearer [a-zA-Z0-9_-]{20,}` | Authorization headers | `Bearer [REDACTED]` |
114
-
115
- Apply redaction to the full response text before inserting into the result JSON. If any redaction occurs, append a note: `[WARN] Sensitive tokens were redacted from the response.`
207
+ Apply the redaction patterns from the consult skill (`plugins/consult/skills/consult/SKILL.md`, Output Sanitization section). The skill is the canonical source for all redaction patterns.
116
208
 
117
209
  ## Critical Constraints
118
210
 
@@ -1,4 +1,3 @@
1
- <!-- AUTO-GENERATED by scripts/gen-adapters.js - DO NOT EDIT -->
2
1
  ---
3
2
  name: cross-file-enhancer
4
3
  description: Analyze cross-file semantic consistency (tools, agents, rules)