.claude/skills/adversarial-debate/SKILL.md
N-round opposing-stance debates for trade-off analysis. Assigns pro/con roles to agents, runs structured debate rounds with quality scoring, and produces a moderator synthesis with confidence-rated recommendation. Generalizable to architecture, technology, security, and design decisions.
npx skillsauth add oimiragieo/agent-studio adversarial-debateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Runs a structured N-round debate between two opposing agents (pro and con) on any decision-requiring topic, then synthesizes a moderator recommendation. Built for architectural decisions, technology choices, security trade-offs, and design reviews — anywhere strong opinions exist and the right answer is non-obvious.
Do not use for:
NO RECOMMENDATION WITHOUT CITED DEBATE EVIDENCE
The moderator's synthesis MUST reference specific arguments made during rounds. A recommendation that ignores debate content is invalid.
Before any rounds begin, the invoking agent MUST define:
Example:
Topic: Should we use event sourcing for the order service?
Pro stance: Yes — event sourcing provides audit trail and temporal queries
Con stance: No — event sourcing adds complexity; CRUD with snapshots is sufficient
Rounds: 3
Each round follows this fixed sequence:
Step 1: PRO Argument
PRO agent argues its stance with:
- 1 primary argument (specific, concrete)
- 1 supporting piece of evidence (metric, case study, or first-principles reasoning)
- 1 anticipated objection pre-addressed
Step 2: CON Rebuttal
CON agent responds with:
- Direct refutation of PRO's primary argument (must engage it — no deflection)
- 1 counter-argument from CON's stance
- 1 counter-evidence or challenge to PRO's evidence
Step 3: Round Score
Score each round immediately using this rubric (0–10 per dimension):
| Dimension | Description | | ---------------- | ----------------------------------------------------- | | Specificity | Arguments use concrete examples, not vague claims | | Evidence | Claims backed by data, precedent, or first principles | | Rebuttal Quality | Directly addresses opposing argument, no deflection | | Relevance | Arguments stay on the stated topic |
Round Score = mean(Specificity, Evidence, Rebuttal Quality, Relevance)
Track cumulative scores per agent across rounds.
After all rounds, the moderator agent produces a structured synthesis:
## Debate Summary
**Topic:** [restate topic]
**Rounds completed:** N
**PRO total score:** X.X/10
**CON total score:** X.X/10
## Key Arguments
**Strongest PRO argument:** [cite round + argument]
**Strongest CON argument:** [cite round + argument]
## Decision Factors
List 3-5 factors that should determine which stance wins in context:
1. Factor: [e.g., team expertise] → Favors: [PRO/CON/neutral]
2. ...
## Recommendation
**Decision:** [clear recommendation — not "it depends"]
**Confidence:** [High / Medium / Low]
**Rationale:** [2-3 sentences citing specific debate evidence from rounds]
## Conditions / Caveats
[Any conditions under which the recommendation should be revisited]
# Check for prior debate results on same topic
grep -r "adversarial-debate" C:/dev/projects/agent-studio/.claude/context/memory/decisions.md 2>/dev/null | tail -5
Check .claude/context/memory/decisions.md for prior ADRs on same topic. If a prior debate exists, acknowledge it and note whether conditions have changed.
Validate input against schemas/input.schema.json:
node .claude/skills/adversarial-debate/hooks/pre-execute.cjs '{"topic":"...","proStance":"...","conStance":"...","rounds":3}'
Expected output: { "valid": true } or error listing missing fields.
For each round 1..N:
scripts/main.cjs output bufferAfter all rounds, produce the Final Synthesis following the template in templates/implementation-template.md.
The moderator MUST:
Append result to .claude/context/memory/decisions.md:
echo "## [$(date +%Y-%m-%d)] Adversarial Debate: {TOPIC}
- Recommendation: {DECISION}
- Confidence: {CONFIDENCE}
- Rounds: {N}
- Cite: {KEY_EVIDENCE_SUMMARY}" >> .claude/context/memory/decisions.md
const { sendEvent } = require('.claude/tools/observability/send-event.cjs');
sendEvent({
tool_name: 'adversarial-debate',
agent_id: process.env.AGENT_ID || 'unknown',
session_id: process.env.SESSION_ID || 'unknown',
outcome: 'success',
});
Input validated against schemas/input.schema.json before execution.
Output contract defined in schemas/output.schema.json.
Pre-execution hook: hooks/pre-execute.cjs — validates topic, stances, rounds range (1-5).
Post-execution hook: hooks/post-execute.cjs — emits observability event via send-event.cjs.
llm-council — parallel multi-LLM synthesis (complementary: debate is sequential, council is parallel)advanced-elicitation — meta-cognitive reasoning for single-agent analysisplan-generator — use debate output as an ADR input to plan-generatorsequential-thinking — structured problem decomposition for the topic before debateBefore starting: Read .claude/context/memory/decisions.md for prior ADRs on related topics.
After completing: Append structured summary to .claude/context/memory/decisions.md with date, topic, recommendation, confidence, and key evidence citations.
Do not write directly to patterns.json, gotchas.json, or open-findings.json — use MemoryRecord tool.
tools
Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA, RSP, PPG, EMG, and EOG signals. Use this skill when processing cardiovascular signals, brain activity, electrodermal responses, respiratory patterns, muscle activity, or eye movements. Applicable for heart rate variability analysis, event-related potentials, complexity measures, autonomic nervous system assessment, psychophysiology research, and multi-modal physiological signal integration.
tools
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
data-ai
Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
development
Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.