agentsys 5.0.2 → 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 +24 -1
- 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 +133 -59
- 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 +123 -31
- 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 +134 -59
- 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 +41 -27
- 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 +123 -30
- package/plugins/consult/commands/consult.md +136 -60
- package/plugins/consult/skills/consult/SKILL.md +39 -24
- 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
|
@@ -1,61 +1,88 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: consult
|
|
3
3
|
description: Consult another AI CLI tool for a second opinion. Use when you want to cross-check ideas, get alternative approaches, or validate decisions with Gemini, Codex, Claude, OpenCode, or Copilot.
|
|
4
|
-
codex-description: 'Use when user asks to "consult gemini", "ask codex", "get second opinion", "cross-check with claude", "consult another AI", "ask opencode", "copilot opinion". Queries another AI CLI tool and returns the response.'
|
|
5
|
-
argument-hint: "[
|
|
6
|
-
allowed-tools: Skill, Bash(git:*), Bash(claude:*), Bash(gemini:*), Bash(codex:*), Bash(opencode:*), Bash(copilot:*), Bash(where.exe:*), Bash(which:*), Read, Write, AskUserQuestion
|
|
4
|
+
codex-description: 'Use when user asks to "consult gemini", "ask codex", "get second opinion", "cross-check with claude", "consult another AI", "ask opencode", "copilot opinion", "ask 3 codex", "multi-consult". Queries another AI CLI tool and returns the response.'
|
|
5
|
+
argument-hint: "[natural language or flags] [--tool] [--effort] [--model] [--context] [--continue] [--count=N]"
|
|
6
|
+
allowed-tools: Skill, Task, Bash(git:*), Bash(claude:*), Bash(gemini:*), Bash(codex:*), Bash(opencode:*), Bash(copilot:*), Bash(where.exe:*), Bash(which:*), Read, Write, AskUserQuestion
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# /consult - Cross-Tool AI Consultation
|
|
10
10
|
|
|
11
|
-
You are executing the /consult command. Your job is to
|
|
11
|
+
You are executing the /consult command. Your job is to parse the user's request (natural language or flags), resolve missing parameters interactively, and execute the consultation.
|
|
12
12
|
|
|
13
13
|
## Constraints
|
|
14
14
|
|
|
15
15
|
- NEVER expose API keys in commands or output
|
|
16
16
|
- NEVER run with permission-bypassing flags (`--dangerously-skip-permissions`, `bypassPermissions`)
|
|
17
|
-
- MUST use safe-mode defaults (
|
|
17
|
+
- MUST use safe-mode defaults (`--allowedTools "Read,Glob,Grep"` for Claude, `-c model_reasoning_effort` for Codex)
|
|
18
18
|
- MUST enforce 120s timeout on all tool executions
|
|
19
|
-
- MUST validate
|
|
19
|
+
- MUST validate tool names against allow-list: gemini, codex, claude, opencode, copilot (reject all others)
|
|
20
20
|
- MUST validate `--context=file=PATH` is within the project directory (reject absolute paths outside cwd)
|
|
21
21
|
- MUST quote all user-provided values in shell commands to prevent injection
|
|
22
22
|
- NEVER execute tools the user has not explicitly requested
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## Execution
|
|
25
25
|
|
|
26
|
-
Parse
|
|
26
|
+
### Phase 1: Parse Input (Flags + Natural Language)
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
- **--tool**: Target tool: `gemini`, `codex`, `claude`, `opencode`, `copilot` (interactive picker if omitted)
|
|
30
|
-
- **--effort**: Thinking effort: `low`, `medium`, `high`, `max` (interactive picker if omitted)
|
|
31
|
-
- **--model**: Specific model name (interactive picker if omitted). Free text.
|
|
32
|
-
- **--context**: Auto-include context: `diff` (git diff), `file=PATH` (attach specific file), `none` (default)
|
|
33
|
-
- **--continue**: Continue last consultation session, or `--continue=SESSION_ID` for specific session
|
|
28
|
+
Parse `$ARGUMENTS` using both explicit flags and natural language extraction. Flags always take priority over NLP when both provide the same parameter.
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
#### Step 1a: Extract explicit flags
|
|
31
|
+
|
|
32
|
+
Look for and remove these flags from `$ARGUMENTS`:
|
|
33
|
+
|
|
34
|
+
1. `--tool=VALUE` or `--tool VALUE` where VALUE is one of: gemini, codex, claude, opencode, copilot
|
|
35
|
+
2. `--effort=VALUE` or `--effort VALUE` where VALUE is one of: low, medium, high, max
|
|
36
|
+
3. `--model=VALUE` or `--model VALUE` (any string, including quoted)
|
|
37
|
+
4. `--context=VALUE` where VALUE is: diff, file=PATH, or none
|
|
38
|
+
5. `--continue` (optionally `--continue=SESSION_ID`)
|
|
39
|
+
6. `--count=N` where N is 1-5
|
|
40
|
+
|
|
41
|
+
Remove all matched flags and their values from `$ARGUMENTS`.
|
|
42
|
+
|
|
43
|
+
#### Step 1b: Natural language extraction (on remaining text)
|
|
44
|
+
|
|
45
|
+
After removing flags, parse the remaining text for these patterns:
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
**Tool extraction** (case-insensitive):
|
|
48
|
+
- "with {tool}" (e.g., "with codex") -> tool
|
|
49
|
+
- "ask {tool}" (e.g., "ask gemini") -> tool
|
|
50
|
+
- "consult {tool}" -> tool
|
|
51
|
+
- "{tool} about" (e.g., "codex about") -> tool
|
|
52
|
+
- Tool names: claude, gemini, codex, opencode, copilot
|
|
38
53
|
|
|
39
|
-
|
|
54
|
+
**Count extraction**:
|
|
55
|
+
- "ask {N} {tool}" (e.g., "ask 3 codex") -> count=N, tool
|
|
56
|
+
- "{N} {tool}" (e.g., "3 codex") -> count=N, tool
|
|
57
|
+
- "{N} instances" -> count=N
|
|
58
|
+
- "few instances" / "multiple" / "several" -> count=ambiguous (ask user in Phase 2)
|
|
40
59
|
|
|
41
|
-
1.
|
|
42
|
-
2. Look for `--effort=VALUE` or `--effort VALUE` where VALUE MUST be one of: low, medium, high, max
|
|
43
|
-
3. Look for `--model=VALUE` or `--model VALUE` (any string, including quoted strings like `"my model"`)
|
|
44
|
-
4. Look for `--context=VALUE` where VALUE is: diff, file=PATH, or none
|
|
45
|
-
5. Look for `--continue` (optionally `--continue=SESSION_ID`)
|
|
46
|
-
6. Remove all matched flags (including their values) from `$ARGUMENTS`. Handle quoted flag values (e.g., `--model "gpt 4"`) by removing the entire quoted string. Everything remaining is the **question**.
|
|
60
|
+
**Count validation**: After extracting count (from flags or NLP), validate: 1 <= count <= 5. If count < 1 or count > 5, show `[ERROR] Instance count must be 1-5. Got: {count}` and stop.
|
|
47
61
|
|
|
48
|
-
|
|
62
|
+
**Effort extraction**:
|
|
63
|
+
- "quick" / "fast" / "brief" -> effort=low
|
|
64
|
+
- "thorough" / "deep" / "carefully" / "detailed" -> effort=high
|
|
65
|
+
- "maximum" / "max effort" / "exhaustive" -> effort=max
|
|
66
|
+
|
|
67
|
+
**Question extraction**:
|
|
68
|
+
- Text after "about" is the question (e.g., "with codex about my auth approach" -> question="my auth approach")
|
|
69
|
+
- If no "about" pattern, everything remaining after removing tool/count/effort markers is the question
|
|
70
|
+
|
|
71
|
+
**Precedence rule**: Flags from Step 1a always override NLP from Step 1b.
|
|
72
|
+
|
|
73
|
+
If no question text and no `--continue` flag found after both steps:
|
|
49
74
|
```
|
|
50
|
-
[ERROR] Usage: /consult "your question"
|
|
75
|
+
[ERROR] Usage: /consult "your question" or /consult with gemini about your question
|
|
51
76
|
```
|
|
52
77
|
|
|
53
|
-
### Phase 2: Interactive Parameter
|
|
78
|
+
### Phase 2: Interactive Parameter Resolution
|
|
54
79
|
|
|
55
|
-
MUST resolve ALL missing parameters interactively
|
|
80
|
+
MUST resolve ALL missing parameters interactively. ONLY skip this phase if ALL required params (tool, effort, model) are resolved AND either a question exists or --continue is present. Do NOT silently default any parameter.
|
|
56
81
|
|
|
57
82
|
#### Step 2a: Handle --continue
|
|
58
83
|
|
|
84
|
+
**Note:** `--continue` and `--count > 1` are mutually exclusive. Session resume applies to a single tool session. If both are present, show `[ERROR] Cannot use --continue with --count > 1. Use --continue for single session resume.` and stop.
|
|
85
|
+
|
|
59
86
|
If `--continue` is present:
|
|
60
87
|
1. Read the session file at `{AI_STATE_DIR}/consult/last-session.json`
|
|
61
88
|
|
|
@@ -66,9 +93,9 @@ If `--continue` is present:
|
|
|
66
93
|
2. If the file exists, restore the saved tool, session_id, and model from it
|
|
67
94
|
3. If the file does not exist, show `[WARN] No previous session found` and proceed as a fresh consultation
|
|
68
95
|
|
|
69
|
-
#### Step 2b:
|
|
96
|
+
#### Step 2b: Detect installed tools
|
|
70
97
|
|
|
71
|
-
|
|
98
|
+
Run all 5 checks **in parallel** via Bash:
|
|
72
99
|
|
|
73
100
|
- `where.exe <tool> 2>nul && echo FOUND || echo NOTFOUND` (Windows)
|
|
74
101
|
- `which <tool> 2>/dev/null && echo FOUND || echo NOTFOUND` (Unix)
|
|
@@ -77,12 +104,14 @@ Check for: claude, gemini, codex, opencode, copilot.
|
|
|
77
104
|
|
|
78
105
|
If zero tools are installed: `[ERROR] No AI CLI tools found. Install at least one: npm i -g @anthropic-ai/claude-code, npm i -g @openai/codex, npm i -g opencode-ai`
|
|
79
106
|
|
|
80
|
-
|
|
107
|
+
#### Step 2c: Batch selection for missing params
|
|
108
|
+
|
|
109
|
+
Use a SINGLE AskUserQuestion call to ask all missing parameters at once. Include ONLY questions for parameters NOT already resolved from Phase 1:
|
|
81
110
|
|
|
82
111
|
```
|
|
83
112
|
AskUserQuestion:
|
|
84
113
|
questions:
|
|
85
|
-
- header: "AI Tool" # SKIP if
|
|
114
|
+
- header: "AI Tool" # SKIP if tool resolved
|
|
86
115
|
question: "Which AI tool should I consult?"
|
|
87
116
|
multiSelect: false
|
|
88
117
|
options (only if installed):
|
|
@@ -92,7 +121,7 @@ AskUserQuestion:
|
|
|
92
121
|
- label: "OpenCode" description: "Flexible model choice"
|
|
93
122
|
- label: "Copilot" description: "GitHub-integrated AI"
|
|
94
123
|
|
|
95
|
-
- header: "Effort" # SKIP if
|
|
124
|
+
- header: "Effort" # SKIP if effort resolved
|
|
96
125
|
question: "What thinking effort level?"
|
|
97
126
|
multiSelect: false
|
|
98
127
|
options:
|
|
@@ -100,16 +129,29 @@ AskUserQuestion:
|
|
|
100
129
|
- label: "Low" description: "Fast, minimal reasoning"
|
|
101
130
|
- label: "High" description: "Thorough analysis"
|
|
102
131
|
- label: "Max" description: "Maximum reasoning depth"
|
|
132
|
+
|
|
133
|
+
- header: "Instances" # SKIP if count resolved or not hinted
|
|
134
|
+
question: "How many parallel consultations?"
|
|
135
|
+
multiSelect: false
|
|
136
|
+
options:
|
|
137
|
+
- label: "1 (Single)" description: "Standard single consultation"
|
|
138
|
+
- label: "2 (Compare)" description: "Two responses to compare"
|
|
139
|
+
- label: "3 (Panel)" description: "Three perspectives"
|
|
140
|
+
- label: "5 (Full spread)" description: "Five diverse perspectives"
|
|
103
141
|
```
|
|
104
142
|
|
|
105
|
-
|
|
106
|
-
|
|
143
|
+
ONLY show the Instances question if:
|
|
144
|
+
- The user explicitly mentioned multiple instances (e.g., "few", "multiple", "several")
|
|
145
|
+
- The count was set but ambiguous
|
|
146
|
+
Do NOT show Instances question for simple single-tool requests. Default count=1 silently when no multi-instance intent detected.
|
|
107
147
|
|
|
108
|
-
|
|
148
|
+
Map tool choice to lowercase: "Claude" -> "claude", "Codex" -> "codex", etc.
|
|
149
|
+
Map effort choice: "Medium (Recommended)" -> "medium", "Low" -> "low", etc.
|
|
150
|
+
Map count choice: "1 (Single)" -> 1, "2 (Compare)" -> 2, "3 (Panel)" -> 3.
|
|
109
151
|
|
|
110
|
-
#### Step
|
|
152
|
+
#### Step 2d: Model selection (MUST ask if no --model)
|
|
111
153
|
|
|
112
|
-
After tool is resolved
|
|
154
|
+
After tool is resolved, present a model picker with options specific to the selected tool. The user can always type a custom model name via the "Other" option.
|
|
113
155
|
|
|
114
156
|
**For Claude:**
|
|
115
157
|
```
|
|
@@ -149,7 +191,7 @@ AskUserQuestion:
|
|
|
149
191
|
- label: "gpt-5.3-codex" description: "Latest, most capable coding model"
|
|
150
192
|
- label: "gpt-5.2-codex" description: "Strong coding model"
|
|
151
193
|
- label: "gpt-5.2" description: "General purpose GPT-5.2"
|
|
152
|
-
- label: "gpt-5-codex-
|
|
194
|
+
- label: "gpt-5.3-codex-spark" description: "Cost-effective, 4x more usage"
|
|
153
195
|
```
|
|
154
196
|
|
|
155
197
|
**For OpenCode:**
|
|
@@ -176,17 +218,21 @@ AskUserQuestion:
|
|
|
176
218
|
options:
|
|
177
219
|
- label: "claude-sonnet-4-5" description: "Default Copilot model"
|
|
178
220
|
- label: "claude-opus-4-6" description: "Most capable Claude model"
|
|
179
|
-
- label: "gpt-5.3-codex"
|
|
221
|
+
- label: "gpt-5.3-codex" description: "OpenAI GPT-5.3 Codex"
|
|
180
222
|
- label: "gemini-3-pro" description: "Google Gemini 3 Pro"
|
|
181
223
|
```
|
|
182
224
|
|
|
183
|
-
Map the user's choice to the model string (strip " (Recommended)" suffix if present).
|
|
225
|
+
Map the user's choice to the model string (strip " (Recommended)" suffix if present).
|
|
184
226
|
|
|
185
|
-
IMPORTANT: Do NOT skip
|
|
227
|
+
IMPORTANT: Do NOT skip model selection. Do NOT silently use a default model. If --model was not explicitly provided, you MUST present this picker.
|
|
186
228
|
|
|
187
|
-
### Phase 3:
|
|
229
|
+
### Phase 3: Execute Consultation
|
|
188
230
|
|
|
189
|
-
With all parameters resolved (tool, effort, model, question, and optionally context
|
|
231
|
+
With all parameters resolved (tool, effort, model, question, count, and optionally context/continue):
|
|
232
|
+
|
|
233
|
+
#### Single instance (count=1, the default)
|
|
234
|
+
|
|
235
|
+
Invoke the `consult` skill directly using the Skill tool:
|
|
190
236
|
|
|
191
237
|
```
|
|
192
238
|
Skill: consult
|
|
@@ -195,15 +241,35 @@ Args: "[question]" --tool=[tool] --effort=[effort] --model=[model] [--context=[c
|
|
|
195
241
|
Example: "Is this the right approach?" --tool=gemini --effort=high --model=gemini-3-pro
|
|
196
242
|
```
|
|
197
243
|
|
|
198
|
-
The skill handles the full consultation lifecycle:
|
|
244
|
+
The skill handles the full consultation lifecycle: model resolution, command building, context packaging, execution with 120s timeout, and returns a plain JSON result.
|
|
199
245
|
|
|
200
|
-
|
|
246
|
+
#### Multi-instance (count > 1)
|
|
201
247
|
|
|
202
|
-
|
|
248
|
+
Spawn the `consult:consult-agent` via the Task tool with all resolved parameters:
|
|
203
249
|
|
|
204
|
-
|
|
250
|
+
```
|
|
251
|
+
Task:
|
|
252
|
+
subagent_type: "consult:consult-agent"
|
|
253
|
+
prompt: |
|
|
254
|
+
Execute a multi-instance consultation with these pre-resolved parameters:
|
|
255
|
+
- tool: [tool]
|
|
256
|
+
- model: [model]
|
|
257
|
+
- effort: [effort]
|
|
258
|
+
- question: [question]
|
|
259
|
+
- count: [count]
|
|
260
|
+
- context: [context or none]
|
|
261
|
+
|
|
262
|
+
Run [count] parallel consultations with the same tool and parameters.
|
|
263
|
+
Return all responses formatted with numbered headers and a brief synthesis.
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
The agent handles parallel execution, temp file management, result parsing, and synthesis.
|
|
267
|
+
|
|
268
|
+
### Phase 4: Present Results
|
|
205
269
|
|
|
206
|
-
|
|
270
|
+
#### Single instance
|
|
271
|
+
|
|
272
|
+
Parse the skill's plain JSON output and display:
|
|
207
273
|
|
|
208
274
|
```
|
|
209
275
|
Tool: {tool}, Model: {model}, Effort: {effort}, Duration: {duration_ms}ms.
|
|
@@ -212,15 +278,13 @@ The results of the consultation are:
|
|
|
212
278
|
{response}
|
|
213
279
|
```
|
|
214
280
|
|
|
215
|
-
For continuable tools
|
|
216
|
-
|
|
281
|
+
For continuable tools (Claude, Gemini, Codex, OpenCode), display: `Session: {session_id} - use /consult --continue to resume`
|
|
282
|
+
|
|
283
|
+
Save session state to `{AI_STATE_DIR}/consult/last-session.json`.
|
|
217
284
|
|
|
218
|
-
|
|
285
|
+
#### Multi-instance
|
|
219
286
|
|
|
220
|
-
|
|
221
|
-
- Claude Code: `.claude/`
|
|
222
|
-
- OpenCode: `.opencode/`
|
|
223
|
-
- Codex CLI: `.codex/`
|
|
287
|
+
Display the agent's formatted output directly. The agent returns numbered responses with a synthesis section.
|
|
224
288
|
|
|
225
289
|
On failure: `[ERROR] Consultation Failed: {specific error message}`
|
|
226
290
|
|
|
@@ -228,22 +292,34 @@ On failure: `[ERROR] Consultation Failed: {specific error message}`
|
|
|
228
292
|
|
|
229
293
|
| Error | Output |
|
|
230
294
|
|-------|--------|
|
|
231
|
-
| No question provided | `[ERROR] Usage: /consult "your question"
|
|
295
|
+
| No question provided | `[ERROR] Usage: /consult "your question" or /consult with gemini about your question` |
|
|
232
296
|
| Tool not installed | `[ERROR] {tool} is not installed. Install with: {install command from skill}` |
|
|
233
297
|
| Tool execution fails | `[ERROR] {tool} failed: {error}. Try a different tool with --tool=[other]` |
|
|
234
298
|
| Timeout (>120s) | `[ERROR] {tool} timed out after 120s. Try --effort=low for faster response` |
|
|
235
299
|
| No tools available | `[ERROR] No AI CLI tools found. Install: npm i -g @anthropic-ai/claude-code` |
|
|
236
300
|
| Session not found | `[WARN] No previous session found. Starting fresh consultation.` |
|
|
237
301
|
| API key missing | `[ERROR] {tool} requires API key. Set {env var} (see skill for details)` |
|
|
302
|
+
| Count out of range | `[ERROR] Instance count must be 1-5. Got: {count}` |
|
|
303
|
+
| Multi-instance partial failure | Show successful responses, note failures |
|
|
238
304
|
|
|
239
305
|
## Example Usage
|
|
240
306
|
|
|
241
307
|
```bash
|
|
242
|
-
|
|
243
|
-
/consult
|
|
244
|
-
/consult
|
|
308
|
+
# Natural language (NLP parsing)
|
|
309
|
+
/consult with codex about my auth approach
|
|
310
|
+
/consult ask 3 codex about this design
|
|
311
|
+
/consult gemini should I use redis or postgres
|
|
312
|
+
/consult thoroughly ask claude about error handling
|
|
313
|
+
/consult codex few instances about performance
|
|
314
|
+
|
|
315
|
+
# Explicit flags (backward compatible)
|
|
316
|
+
/consult "Is this the right approach?" --tool=gemini --effort=high
|
|
317
|
+
/consult "Review this function" --tool=codex --count=3
|
|
245
318
|
/consult "Suggest improvements" --tool=opencode --model=github-copilot/claude-opus-4-6
|
|
246
|
-
/consult
|
|
319
|
+
/consult --continue
|
|
247
320
|
/consult "Explain this error" --context=diff --tool=gemini
|
|
248
321
|
/consult "Review this file" --context=file=src/index.js --tool=claude
|
|
322
|
+
|
|
323
|
+
# Mixed (flags + natural language)
|
|
324
|
+
/consult with gemini --effort=max about database schema design
|
|
249
325
|
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: consult
|
|
3
3
|
description: "Cross-tool AI consultation. Use when user asks to 'consult gemini', 'ask codex', 'get second opinion', 'cross-check with claude', 'consult another AI', 'ask opencode', 'copilot opinion', or wants a second opinion from a different AI tool."
|
|
4
|
-
version: 5.0
|
|
4
|
+
version: 5.1.0
|
|
5
5
|
argument-hint: "[question] [--tool] [--effort] [--model] [--context] [--continue]"
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -60,37 +60,41 @@ Command: gemini -p "QUESTION" --output-format json -m "MODEL"
|
|
|
60
60
|
Session resume: --resume "SESSION_ID"
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
Models: gemini-2.5-flash, gemini-2.5-pro, gemini-3-flash
|
|
63
|
+
Models: gemini-2.5-flash, gemini-2.5-pro, gemini-3-flash, gemini-3-pro
|
|
64
64
|
|
|
65
65
|
| Effort | Model |
|
|
66
66
|
|--------|-------|
|
|
67
67
|
| low | gemini-2.5-flash |
|
|
68
|
-
| medium | gemini-
|
|
69
|
-
| high | gemini-3-
|
|
70
|
-
| max | gemini-3-pro
|
|
68
|
+
| medium | gemini-3-flash |
|
|
69
|
+
| high | gemini-3-pro |
|
|
70
|
+
| max | gemini-3-pro |
|
|
71
71
|
|
|
72
72
|
**Parse output**: `JSON.parse(stdout).response`
|
|
73
|
+
**Session ID**: `JSON.parse(stdout).session_id`
|
|
73
74
|
**Continuable**: Yes (via `--resume`)
|
|
74
75
|
|
|
75
76
|
### Codex
|
|
76
77
|
|
|
77
78
|
```
|
|
78
|
-
Command: codex
|
|
79
|
-
Session resume: codex resume
|
|
79
|
+
Command: codex exec "QUESTION" --json -m "MODEL" -c model_reasoning_effort="LEVEL"
|
|
80
|
+
Session resume: codex exec resume SESSION_ID "QUESTION" --json
|
|
81
|
+
Session resume (latest): codex exec resume --last "QUESTION" --json
|
|
80
82
|
```
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
Note: `codex exec` is the non-interactive/headless mode. There is no `-q` flag. The TUI mode is `codex` (no subcommand).
|
|
85
|
+
|
|
86
|
+
Models: gpt-5.3-codex-spark, gpt-5-codex, gpt-5.1-codex, gpt-5.2-codex, gpt-5.3-codex, gpt-5.1-codex-max
|
|
83
87
|
|
|
84
88
|
| Effort | Model | Reasoning |
|
|
85
89
|
|--------|-------|-----------|
|
|
86
|
-
| low | gpt-5.
|
|
90
|
+
| low | gpt-5.3-codex-spark | low |
|
|
87
91
|
| medium | gpt-5.2-codex | medium |
|
|
88
92
|
| high | gpt-5.3-codex | high |
|
|
89
93
|
| max | gpt-5.3-codex | xhigh |
|
|
90
94
|
|
|
91
95
|
**Parse output**: `JSON.parse(stdout).message` or raw text
|
|
92
96
|
**Session ID**: Codex prints a resume hint at session end (e.g., `codex resume SESSION_ID`). Extract the session ID from stdout or from `JSON.parse(stdout).session_id` if available.
|
|
93
|
-
**Continuable**: Yes
|
|
97
|
+
**Continuable**: Yes. Sessions are stored as JSONL rollout files at `~/.codex/sessions/`. Non-interactive resume uses `codex exec resume SESSION_ID "follow-up prompt" --json`. Use `--last` instead of a session ID to resume the most recent session.
|
|
94
98
|
|
|
95
99
|
### OpenCode
|
|
96
100
|
|
|
@@ -155,7 +159,7 @@ Use the command template from the provider's configuration section. Substitute Q
|
|
|
155
159
|
|
|
156
160
|
If continuing a session:
|
|
157
161
|
- **Claude or Gemini**: append `--resume SESSION_ID` to the command.
|
|
158
|
-
- **Codex**:
|
|
162
|
+
- **Codex**: use `codex exec resume SESSION_ID "QUESTION" --json` instead of the standard command. Use `--last` instead of a session ID for the most recent session.
|
|
159
163
|
- **OpenCode**: append `--session SESSION_ID` to the command. If no session_id is saved, use `--continue` instead (resumes most recent session).
|
|
160
164
|
If OpenCode at max effort: append `--thinking`.
|
|
161
165
|
|
|
@@ -184,8 +188,9 @@ User-provided question text MUST NOT be interpolated into shell command strings.
|
|
|
184
188
|
| Claude (resume) | `claude -p - --output-format json --model "MODEL" --max-turns TURNS --allowedTools "Read,Glob,Grep" --resume "SESSION_ID" < "{AI_STATE_DIR}/consult/question.tmp"` |
|
|
185
189
|
| Gemini | `gemini -p - --output-format json -m "MODEL" < "{AI_STATE_DIR}/consult/question.tmp"` |
|
|
186
190
|
| Gemini (resume) | `gemini -p - --output-format json -m "MODEL" --resume "SESSION_ID" < "{AI_STATE_DIR}/consult/question.tmp"` |
|
|
187
|
-
| Codex | `codex
|
|
188
|
-
| Codex (
|
|
191
|
+
| Codex | `codex exec "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL" -c model_reasoning_effort="LEVEL"` (Codex exec lacks stdin mode -- cat reads from platform-controlled path, not user input) |
|
|
192
|
+
| Codex (resume) | `codex exec resume SESSION_ID "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL"` |
|
|
193
|
+
| Codex (resume latest) | `codex exec resume --last "$(cat "{AI_STATE_DIR}/consult/question.tmp")" --json -m "MODEL"` |
|
|
189
194
|
| OpenCode | `opencode run - --format json --model "MODEL" --variant "VARIANT" < "{AI_STATE_DIR}/consult/question.tmp"` |
|
|
190
195
|
| OpenCode (resume by ID) | `opencode run - --format json --model "MODEL" --variant "VARIANT" --session "SESSION_ID" < "{AI_STATE_DIR}/consult/question.tmp"` |
|
|
191
196
|
| OpenCode (resume latest) | `opencode run - --format json --model "MODEL" --variant "VARIANT" --continue < "{AI_STATE_DIR}/consult/question.tmp"` |
|
|
@@ -238,16 +243,26 @@ If session file not found, warn and proceed as fresh consultation.
|
|
|
238
243
|
|
|
239
244
|
## Output Sanitization
|
|
240
245
|
|
|
241
|
-
Before
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
246
|
+
Before including any consulted tool's response in the output, scan the response text and redact matches for these patterns:
|
|
247
|
+
|
|
248
|
+
| Pattern | Description | Replacement |
|
|
249
|
+
|---------|-------------|-------------|
|
|
250
|
+
| `sk-[a-zA-Z0-9_-]{20,}` | Anthropic API keys | `[REDACTED_API_KEY]` |
|
|
251
|
+
| `sk-proj-[a-zA-Z0-9_-]{20,}` | OpenAI project keys | `[REDACTED_API_KEY]` |
|
|
252
|
+
| `sk-ant-[a-zA-Z0-9_-]{20,}` | Anthropic API keys (ant prefix) | `[REDACTED_API_KEY]` |
|
|
253
|
+
| `AIza[a-zA-Z0-9_-]{30,}` | Google API keys | `[REDACTED_API_KEY]` |
|
|
254
|
+
| `ghp_[a-zA-Z0-9]{36,}` | GitHub personal access tokens | `[REDACTED_TOKEN]` |
|
|
255
|
+
| `gho_[a-zA-Z0-9]{36,}` | GitHub OAuth tokens | `[REDACTED_TOKEN]` |
|
|
256
|
+
| `github_pat_[a-zA-Z0-9_]{20,}` | GitHub fine-grained PATs | `[REDACTED_TOKEN]` |
|
|
257
|
+
| `ANTHROPIC_API_KEY=[^\s]+` | Key assignment in env output | `ANTHROPIC_API_KEY=[REDACTED]` |
|
|
258
|
+
| `OPENAI_API_KEY=[^\s]+` | Key assignment in env output | `OPENAI_API_KEY=[REDACTED]` |
|
|
259
|
+
| `GOOGLE_API_KEY=[^\s]+` | Key assignment in env output | `GOOGLE_API_KEY=[REDACTED]` |
|
|
260
|
+
| `GEMINI_API_KEY=[^\s]+` | Key assignment in env output | `GEMINI_API_KEY=[REDACTED]` |
|
|
261
|
+
| `AKIA[A-Z0-9]{16}` | AWS access keys | `[REDACTED_AWS_KEY]` |
|
|
262
|
+
| `ASIA[A-Z0-9]{16}` | AWS session tokens | `[REDACTED_AWS_KEY]` |
|
|
263
|
+
| `Bearer [a-zA-Z0-9_-]{20,}` | Authorization headers | `Bearer [REDACTED]` |
|
|
264
|
+
|
|
265
|
+
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.`
|
|
251
266
|
|
|
252
267
|
## Output Format
|
|
253
268
|
|
|
@@ -256,7 +271,7 @@ Return a plain JSON object to stdout (no markers or wrappers):
|
|
|
256
271
|
```json
|
|
257
272
|
{
|
|
258
273
|
"tool": "gemini",
|
|
259
|
-
"model": "gemini-3-pro
|
|
274
|
+
"model": "gemini-3-pro",
|
|
260
275
|
"effort": "high",
|
|
261
276
|
"duration_ms": 12300,
|
|
262
277
|
"response": "The AI's response text here...",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "debate",
|
|
3
|
+
"version": "5.1.0",
|
|
4
|
+
"description": "Structured multi-round debate between AI tools with proposer/challenger roles and verdict",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Avi Fenesh",
|
|
7
|
+
"email": "[email protected]",
|
|
8
|
+
"url": "https://github.com/avifenesh"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/avifenesh/agentsys#debate",
|
|
11
|
+
"repository": "https://github.com/avifenesh/agentsys",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"debate",
|
|
15
|
+
"dialectic",
|
|
16
|
+
"cross-tool",
|
|
17
|
+
"multi-model",
|
|
18
|
+
"adversarial",
|
|
19
|
+
"second-opinion"
|
|
20
|
+
]
|
|
21
|
+
}
|