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.
- package/.claude-plugin/marketplace.json +21 -14
- package/.claude-plugin/plugin.json +1 -1
- package/AGENTS.md +2 -1
- package/CHANGELOG.md +18 -0
- package/README.md +7 -6
- package/adapters/codex/skills/agnix/SKILL.md +0 -1
- package/adapters/codex/skills/audit-project/SKILL.md +0 -1
- package/adapters/codex/skills/audit-project-agents/SKILL.md +0 -1
- package/adapters/codex/skills/audit-project-github/SKILL.md +0 -1
- package/adapters/codex/skills/consult/SKILL.md +132 -57
- package/adapters/codex/skills/debate/SKILL.md +214 -0
- package/adapters/codex/skills/delivery-approval/SKILL.md +0 -1
- package/adapters/codex/skills/deslop/SKILL.md +0 -1
- package/adapters/codex/skills/drift-detect/SKILL.md +0 -1
- package/adapters/codex/skills/enhance/SKILL.md +0 -1
- package/adapters/codex/skills/learn/SKILL.md +0 -1
- package/adapters/codex/skills/next-task/SKILL.md +0 -1
- package/adapters/codex/skills/perf/SKILL.md +0 -1
- package/adapters/codex/skills/repo-map/SKILL.md +0 -1
- package/adapters/codex/skills/ship/SKILL.md +0 -1
- package/adapters/codex/skills/ship-ci-review-loop/SKILL.md +0 -1
- package/adapters/codex/skills/ship-deployment/SKILL.md +0 -1
- package/adapters/codex/skills/ship-error-handling/SKILL.md +0 -1
- package/adapters/codex/skills/sync-docs/SKILL.md +0 -1
- package/adapters/opencode/agents/agent-enhancer.md +0 -1
- package/adapters/opencode/agents/agnix-agent.md +0 -1
- package/adapters/opencode/agents/ci-fixer.md +0 -1
- package/adapters/opencode/agents/ci-monitor.md +0 -1
- package/adapters/opencode/agents/claudemd-enhancer.md +0 -1
- package/adapters/opencode/agents/consult-agent.md +122 -30
- package/adapters/opencode/agents/cross-file-enhancer.md +0 -1
- package/adapters/opencode/agents/debate-orchestrator.md +169 -0
- package/adapters/opencode/agents/delivery-validator.md +0 -1
- package/adapters/opencode/agents/deslop-agent.md +0 -1
- package/adapters/opencode/agents/docs-enhancer.md +0 -1
- package/adapters/opencode/agents/exploration-agent.md +0 -1
- package/adapters/opencode/agents/hooks-enhancer.md +0 -1
- package/adapters/opencode/agents/implementation-agent.md +0 -1
- package/adapters/opencode/agents/learn-agent.md +0 -1
- package/adapters/opencode/agents/map-validator.md +0 -1
- package/adapters/opencode/agents/perf-analyzer.md +0 -1
- package/adapters/opencode/agents/perf-code-paths.md +0 -1
- package/adapters/opencode/agents/perf-investigation-logger.md +0 -1
- package/adapters/opencode/agents/perf-orchestrator.md +0 -1
- package/adapters/opencode/agents/perf-theory-gatherer.md +0 -1
- package/adapters/opencode/agents/perf-theory-tester.md +0 -1
- package/adapters/opencode/agents/plan-synthesizer.md +0 -1
- package/adapters/opencode/agents/planning-agent.md +0 -1
- package/adapters/opencode/agents/plugin-enhancer.md +0 -1
- package/adapters/opencode/agents/prompt-enhancer.md +0 -1
- package/adapters/opencode/agents/simple-fixer.md +0 -1
- package/adapters/opencode/agents/skills-enhancer.md +0 -1
- package/adapters/opencode/agents/sync-docs-agent.md +0 -1
- package/adapters/opencode/agents/task-discoverer.md +0 -1
- package/adapters/opencode/agents/test-coverage-checker.md +0 -1
- package/adapters/opencode/agents/worktree-manager.md +0 -1
- package/adapters/opencode/commands/agnix.md +0 -1
- package/adapters/opencode/commands/audit-project-agents.md +0 -1
- package/adapters/opencode/commands/audit-project-github.md +0 -1
- package/adapters/opencode/commands/audit-project.md +0 -1
- package/adapters/opencode/commands/consult.md +133 -57
- package/adapters/opencode/commands/debate.md +224 -0
- package/adapters/opencode/commands/delivery-approval.md +0 -1
- package/adapters/opencode/commands/deslop.md +0 -1
- package/adapters/opencode/commands/drift-detect.md +0 -1
- package/adapters/opencode/commands/enhance.md +0 -1
- package/adapters/opencode/commands/learn.md +0 -1
- package/adapters/opencode/commands/next-task.md +0 -1
- package/adapters/opencode/commands/perf.md +0 -1
- package/adapters/opencode/commands/repo-map.md +0 -1
- package/adapters/opencode/commands/ship-ci-review-loop.md +0 -1
- package/adapters/opencode/commands/ship-deployment.md +0 -1
- package/adapters/opencode/commands/ship-error-handling.md +0 -1
- package/adapters/opencode/commands/ship.md +0 -1
- package/adapters/opencode/commands/sync-docs.md +0 -1
- package/adapters/opencode/skills/agnix/SKILL.md +1 -2
- package/adapters/opencode/skills/consult/SKILL.md +33 -23
- package/adapters/opencode/skills/debate/SKILL.md +245 -0
- package/adapters/opencode/skills/deslop/SKILL.md +1 -2
- package/adapters/opencode/skills/discover-tasks/SKILL.md +1 -2
- package/adapters/opencode/skills/drift-analysis/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-agent-prompts/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-claude-memory/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-cross-file/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-docs/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-hooks/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-orchestrator/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-plugins/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-prompts/SKILL.md +1 -2
- package/adapters/opencode/skills/enhance-skills/SKILL.md +1 -2
- package/adapters/opencode/skills/learn/SKILL.md +1 -2
- package/adapters/opencode/skills/orchestrate-review/SKILL.md +0 -1
- package/adapters/opencode/skills/perf-analyzer/SKILL.md +1 -2
- package/adapters/opencode/skills/perf-baseline-manager/SKILL.md +1 -2
- package/adapters/opencode/skills/perf-benchmarker/SKILL.md +1 -2
- package/adapters/opencode/skills/perf-code-paths/SKILL.md +1 -2
- package/adapters/opencode/skills/perf-investigation-logger/SKILL.md +1 -2
- package/adapters/opencode/skills/perf-profiler/SKILL.md +1 -2
- package/adapters/opencode/skills/perf-theory-gatherer/SKILL.md +1 -2
- package/adapters/opencode/skills/perf-theory-tester/SKILL.md +1 -2
- package/adapters/opencode/skills/repo-mapping/SKILL.md +1 -2
- package/adapters/opencode/skills/sync-docs/SKILL.md +1 -2
- package/adapters/opencode/skills/validate-delivery/SKILL.md +1 -2
- package/lib/adapter-transforms.js +24 -4
- package/package.json +1 -1
- package/plugins/agnix/.claude-plugin/plugin.json +1 -1
- package/plugins/agnix/skills/agnix/SKILL.md +1 -1
- package/plugins/audit-project/.claude-plugin/plugin.json +1 -1
- package/plugins/audit-project/lib/adapter-transforms.js +24 -4
- package/plugins/consult/.claude-plugin/plugin.json +1 -1
- package/plugins/consult/agents/consult-agent.md +122 -29
- package/plugins/consult/commands/consult.md +135 -58
- package/plugins/consult/skills/consult/SKILL.md +31 -20
- package/plugins/debate/.claude-plugin/plugin.json +21 -0
- package/plugins/debate/agents/debate-orchestrator.md +175 -0
- package/plugins/debate/commands/debate.md +221 -0
- package/plugins/debate/lib/adapter-transforms.js +298 -0
- package/plugins/debate/lib/collectors/codebase.js +392 -0
- package/plugins/debate/lib/collectors/docs-patterns.js +713 -0
- package/plugins/debate/lib/collectors/documentation.js +219 -0
- package/plugins/debate/lib/collectors/github.js +330 -0
- package/plugins/debate/lib/collectors/index.js +126 -0
- package/plugins/debate/lib/config/index.js +14 -0
- package/plugins/debate/lib/cross-platform/index.js +539 -0
- package/plugins/debate/lib/discovery/index.js +352 -0
- package/plugins/debate/lib/drift-detect/collectors.js +37 -0
- package/plugins/debate/lib/enhance/agent-analyzer.js +421 -0
- package/plugins/debate/lib/enhance/agent-patterns.js +571 -0
- package/plugins/debate/lib/enhance/auto-suppression.js +622 -0
- package/plugins/debate/lib/enhance/benchmark.js +417 -0
- package/plugins/debate/lib/enhance/cross-file-analyzer.js +930 -0
- package/plugins/debate/lib/enhance/cross-file-patterns.js +370 -0
- package/plugins/debate/lib/enhance/docs-analyzer.js +325 -0
- package/plugins/debate/lib/enhance/docs-patterns.js +671 -0
- package/plugins/debate/lib/enhance/fixer.js +721 -0
- package/plugins/debate/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/debate/lib/enhance/hook-patterns.js +40 -0
- package/plugins/debate/lib/enhance/index.js +127 -0
- package/plugins/debate/lib/enhance/plugin-analyzer.js +402 -0
- package/plugins/debate/lib/enhance/plugin-patterns.js +326 -0
- package/plugins/debate/lib/enhance/projectmemory-analyzer.js +551 -0
- package/plugins/debate/lib/enhance/projectmemory-patterns.js +617 -0
- package/plugins/debate/lib/enhance/prompt-analyzer.js +457 -0
- package/plugins/debate/lib/enhance/prompt-patterns.js +1484 -0
- package/plugins/debate/lib/enhance/reporter.js +1348 -0
- package/plugins/debate/lib/enhance/security-patterns.js +284 -0
- package/plugins/debate/lib/enhance/skill-analyzer.js +182 -0
- package/plugins/debate/lib/enhance/skill-patterns.js +147 -0
- package/plugins/debate/lib/enhance/suppression.js +352 -0
- package/plugins/debate/lib/enhance/tool-patterns.js +373 -0
- package/plugins/debate/lib/index.js +270 -0
- package/plugins/debate/lib/patterns/cli-enhancers.js +611 -0
- package/plugins/debate/lib/patterns/pipeline.js +948 -0
- package/plugins/debate/lib/patterns/review-patterns.js +558 -0
- package/plugins/debate/lib/patterns/slop-analyzers.js +2305 -0
- package/plugins/debate/lib/patterns/slop-patterns.js +1187 -0
- package/plugins/debate/lib/perf/analyzer/index.js +22 -0
- package/plugins/debate/lib/perf/argument-parser.js +105 -0
- package/plugins/debate/lib/perf/baseline-comparator.js +50 -0
- package/plugins/debate/lib/perf/baseline-store.js +127 -0
- package/plugins/debate/lib/perf/benchmark-runner.js +404 -0
- package/plugins/debate/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/debate/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/debate/lib/perf/checkpoint.js +123 -0
- package/plugins/debate/lib/perf/code-paths.js +86 -0
- package/plugins/debate/lib/perf/consolidation.js +37 -0
- package/plugins/debate/lib/perf/constraint-runner.js +71 -0
- package/plugins/debate/lib/perf/experiment-runner.js +32 -0
- package/plugins/debate/lib/perf/index.js +41 -0
- package/plugins/debate/lib/perf/investigation-state.js +874 -0
- package/plugins/debate/lib/perf/optimization-runner.js +79 -0
- package/plugins/debate/lib/perf/profilers/go.js +22 -0
- package/plugins/debate/lib/perf/profilers/index.js +46 -0
- package/plugins/debate/lib/perf/profilers/java.js +23 -0
- package/plugins/debate/lib/perf/profilers/node.js +27 -0
- package/plugins/debate/lib/perf/profilers/python.js +23 -0
- package/plugins/debate/lib/perf/profilers/rust.js +23 -0
- package/plugins/debate/lib/perf/profiling-runner.js +75 -0
- package/plugins/debate/lib/perf/schemas.js +140 -0
- package/plugins/debate/lib/platform/detect-platform.js +413 -0
- package/plugins/debate/lib/platform/detection-configs.js +93 -0
- package/plugins/debate/lib/platform/state-dir.js +132 -0
- package/plugins/debate/lib/platform/verify-tools.js +182 -0
- package/plugins/debate/lib/repo-map/cache.js +152 -0
- package/plugins/debate/lib/repo-map/concurrency.js +29 -0
- package/plugins/debate/lib/repo-map/index.js +222 -0
- package/plugins/debate/lib/repo-map/installer.js +212 -0
- package/plugins/debate/lib/repo-map/queries/go.js +27 -0
- package/plugins/debate/lib/repo-map/queries/index.js +100 -0
- package/plugins/debate/lib/repo-map/queries/java.js +38 -0
- package/plugins/debate/lib/repo-map/queries/javascript.js +55 -0
- package/plugins/debate/lib/repo-map/queries/python.js +24 -0
- package/plugins/debate/lib/repo-map/queries/rust.js +73 -0
- package/plugins/debate/lib/repo-map/queries/typescript.js +38 -0
- package/plugins/debate/lib/repo-map/runner.js +1364 -0
- package/plugins/debate/lib/repo-map/updater.js +562 -0
- package/plugins/debate/lib/repo-map/usage-analyzer.js +407 -0
- package/plugins/debate/lib/schemas/plugin-manifest.schema.json +57 -0
- package/plugins/debate/lib/schemas/validator.js +247 -0
- package/plugins/debate/lib/sources/custom-handler.js +199 -0
- package/plugins/debate/lib/sources/policy-questions.js +246 -0
- package/plugins/debate/lib/sources/source-cache.js +165 -0
- package/plugins/debate/lib/state/workflow-state.js +576 -0
- package/plugins/debate/lib/types/agent-frontmatter.d.ts +134 -0
- package/plugins/debate/lib/types/command-frontmatter.d.ts +107 -0
- package/plugins/debate/lib/types/hook-frontmatter.d.ts +115 -0
- package/plugins/debate/lib/types/index.d.ts +84 -0
- package/plugins/debate/lib/types/plugin-manifest.d.ts +102 -0
- package/plugins/debate/lib/types/skill-frontmatter.d.ts +89 -0
- package/plugins/debate/lib/utils/atomic-write.js +94 -0
- package/plugins/debate/lib/utils/cache-manager.js +159 -0
- package/plugins/debate/lib/utils/command-parser.js +0 -0
- package/plugins/debate/lib/utils/context-optimizer.js +300 -0
- package/plugins/debate/lib/utils/deprecation.js +37 -0
- package/plugins/debate/lib/utils/shell-escape.js +88 -0
- package/plugins/debate/lib/utils/state-helpers.js +61 -0
- package/plugins/debate/skills/debate/SKILL.md +264 -0
- package/plugins/deslop/.claude-plugin/plugin.json +1 -1
- package/plugins/deslop/lib/adapter-transforms.js +24 -4
- package/plugins/deslop/skills/deslop/SKILL.md +1 -1
- package/plugins/drift-detect/.claude-plugin/plugin.json +1 -1
- package/plugins/drift-detect/lib/adapter-transforms.js +24 -4
- package/plugins/drift-detect/skills/drift-analysis/SKILL.md +1 -1
- package/plugins/enhance/.claude-plugin/plugin.json +1 -1
- package/plugins/enhance/lib/adapter-transforms.js +24 -4
- package/plugins/enhance/skills/enhance-agent-prompts/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-claude-memory/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-cross-file/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-docs/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-hooks/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-orchestrator/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-plugins/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-prompts/SKILL.md +1 -1
- package/plugins/enhance/skills/enhance-skills/SKILL.md +1 -1
- package/plugins/learn/.claude-plugin/plugin.json +1 -1
- package/plugins/learn/agents/learn-agent.md +1 -1
- package/plugins/learn/lib/adapter-transforms.js +24 -4
- package/plugins/learn/skills/learn/SKILL.md +1 -1
- package/plugins/next-task/.claude-plugin/plugin.json +1 -1
- package/plugins/next-task/agents/exploration-agent.md +1 -1
- package/plugins/next-task/lib/adapter-transforms.js +24 -4
- package/plugins/next-task/skills/discover-tasks/SKILL.md +1 -1
- package/plugins/next-task/skills/validate-delivery/SKILL.md +1 -1
- package/plugins/perf/.claude-plugin/plugin.json +1 -1
- package/plugins/perf/lib/adapter-transforms.js +24 -4
- package/plugins/perf/skills/perf-analyzer/SKILL.md +1 -1
- package/plugins/perf/skills/perf-baseline-manager/SKILL.md +1 -1
- package/plugins/perf/skills/perf-benchmarker/SKILL.md +1 -1
- package/plugins/perf/skills/perf-code-paths/SKILL.md +1 -1
- package/plugins/perf/skills/perf-investigation-logger/SKILL.md +1 -1
- package/plugins/perf/skills/perf-profiler/SKILL.md +1 -1
- package/plugins/perf/skills/perf-theory-gatherer/SKILL.md +1 -1
- package/plugins/perf/skills/perf-theory-tester/SKILL.md +1 -1
- package/plugins/repo-map/.claude-plugin/plugin.json +1 -1
- package/plugins/repo-map/lib/adapter-transforms.js +24 -4
- package/plugins/ship/.claude-plugin/plugin.json +1 -1
- package/plugins/ship/lib/adapter-transforms.js +24 -4
- package/plugins/sync-docs/.claude-plugin/plugin.json +1 -1
- package/plugins/sync-docs/lib/adapter-transforms.js +24 -4
- package/plugins/sync-docs/skills/sync-docs/SKILL.md +1 -1
- package/scripts/gen-adapters.js +6 -7
- package/scripts/generate-docs.js +4 -2
- package/scripts/plugins.txt +1 -0
- 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: 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,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
|
|
21
|
-
- **Agent** (this file): Programmatic entry point
|
|
22
|
-
- **Skill** (`consult`): Implementation source of truth. Provides provider configurations, model mappings, command templates, context packaging, and output parsing logic.
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|