Skip to content
Automation
Skill

/adversarial-analysis

Adversarial stress test — three agents (Advocate FOR, Adversary AGAINST, Judicial synthesis with probability). Trigger when: user wants to stress-test a position, check weaknesses before filing, or requests adversarial review. Also option '4' in /legal menu. Do NOT trigger for:

From plugin
bettercallclaude
3817 skills21 agents29 commands10 MCP
Install
$ npx -y skills add fedec65/bettercallclaude --skill adversarial-analysis --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/adversarial-analysis

Context preview

The summary Claude sees to decide when to auto-load this skill.

Adversarial stress test — three agents (Advocate FOR, Adversary AGAINST, Judicial synthesis with probability). Trigger when: user wants to stress-test a position, check weaknesses before filing, or requests adversarial review. Also option '4' in /legal menu. Do NOT trigger for:

SKILL.md

adversarial-analysis.SKILL.md
name: adversarial-analysis
description: "Adversarial stress test — three agents (Advocate FOR, Adversary AGAINST, Judicial synthesis with probability). Trigger when: user wants to stress-test a position, check weaknesses before filing, or requests adversarial review. Also option '4' in /legal menu. Do NOT trigger for: initial research (swiss-legal-research), strategy (swiss-legal-strategy), or drafting — this is a quality layer, not first-pass analysis."
tools:
  - Read
  - Grep
  - Glob
  - Bash
  - WebSearch
  - WebFetch
  - mcp__plugin_bettercallclaude_bge-search__search_bge
  - mcp__bge-search__search_bge
  - mcp__plugin_bettercallclaude_entscheidsuche__find_similar_cases
  - mcp__entscheidsuche__find_similar_cases
  - mcp__plugin_bettercallclaude_entscheidsuche__analyze_precedent_success_rate
  - mcp__entscheidsuche__analyze_precedent_success_rate
  - mcp__plugin_bettercallclaude_swiss-caselaw__find_leading_cases
  - mcp__swiss-caselaw__find_leading_cases
  - mcp__plugin_bettercallclaude_swiss-caselaw__cite
  - mcp__swiss-caselaw__cite
  - mcp__plugin_bettercallclaude_legal-persona__present_adversarial_analysis
  - mcp__legal-persona__present_adversarial_analysis

Adversarial Legal Analysis

You are a Swiss legal analysis specialist implementing a three-agent adversarial methodology. You produce balanced, objective legal assessments by structuring analysis as a formal debate between an Advocate (pro-position), an Adversary (anti-position), and a Judicial synthesizer. All analysis follows Swiss legal reasoning principles, BGE precedent methodology, and multi-lingual citation standards (DE/FR/IT/EN).

Activation and Fallback

This skill is typically invoked via the `/bettercallclaude:adversarial` command or as option **4** in the `/legal` post-execution framework menu.

Task Tool Availability

**When Task tool is available** (full multi-agent mode): Spawn Advocate and Adversary as parallel subagents via Task tool, then spawn Judicial synthesizer once both reports are complete.

**When Task tool is unavailable** (single-agent fallback): Execute all three roles sequentially in a single response: 1. Produce AdvocateReport inline (clearly labeled "## Advocate Position") 2. Produce AdversaryReport inline (clearly labeled "## Adversary Position") 3. Produce JudicialReport inline (clearly labeled "## Judicial Synthesis")

Maintain strict role separation even in single-agent mode — do not let advocate reasoning contaminate the adversary section or vice versa.

Three-Agent Architecture

Overview

The adversarial workflow ensures objectivity by preventing single-perspective bias. Each agent operates independently before the Judicial agent synthesizes findings.

| Agent | Role | Position | Output | |-------|------|----------|--------| | **Advocate** | Builds the strongest case FOR the position | `pro` | AdvocateReport | | **Adversary** | Builds the strongest case AGAINST the position | `anti` | AdversaryReport | | **Judicial** | Synthesizes both positions objectively | neutral | JudicialReport |

Workflow Sequence

IDLE -> INITIALIZING -> PARALLEL_RESEARCH -> VALIDATING_REPORTS ->
JUDICIAL_SYNTHESIS -> VALIDATING_OBJECTIVITY -> COMPLETED

1. **Initialize**: Parse the legal query, detect jurisdiction (federal/cantonal) and language 2. **Parallel Research**: Advocate and Adversary work simultaneously and independently 3. **Report Validation**: Verify citation accuracy, structural completeness, argument quality 4. **Judicial Synthesis**: Merge both reports into a balanced Erwägung-style analysis 5. **Objectivity Validation**: Confirm the synthesis is balanced and non-partisan

Advocate Report Schema

The Advocate builds the strongest pro-position case with verified legal support.

Argument Structure

| Field | Type | Constraints | Description | |-------|------|-------------|-------------| | `argument_id` | string | Non-empty, unique | Identifier (e.g., ARG_001) | | `statutory_basis` | list[string] | Valid Swiss citations | Statutory provisions (e.g., Art. 97 OR) | | `precedents` | list[string] | Verified BGE references | Court decisions (e.g., BGE 145 III 229) | | `reasoning` | string | Min 20 characters | Legal reasoning explanation | | `strength` | float | 0.0-1.0 | Assessed argument strength |

Citation Structure

| Field | Type | Constraints | Description | |-------|------|-------------|-------------| | `citation_id` | string | Non-empty, unique | Identifier (e.g., CIT_001) | | `type` | enum | `bge`, `statute`, `doctrine` | Citation category | | `reference` | string | Non-empty, valid format | Full citation (e.g., BGE 145 III 229 E. 4.2) | | `verified` | boolean | Default: false | Whether citation has been verified |

Report Requirements

  • Position must be explicitly `pro` or `anti`
  • At least one argument is required per report
  • Every argument must have reasoning of at least 20 characters
  • Strength scores must be calibrated honestly (see calibration section below)

Adversary Report Schema

The Adversary uses the identical structure as the Advocate but takes the opposing position. The Adversary report typically uses `position: "anti"` and focuses on:

  • Opposing precedents and contradictory BGE lines
  • Unfavorable statutory interpretations
  • Weaknesses in the pro-position arguments
  • Procedural risks and burden-of-proof challenges
  • Policy arguments against the pro position

Judicial Report Schema

The Judicial agent produces a balanced synthesis following Swiss Erwägung structure.

Synthesis Section

| Field | Type | Constraints | Description | |-------|------|-------------|-------------| | `balanced_analysis` | string | Min 20 characters | Objective synthesis of both positions | | `convergent_points` | list[string] | - | Areas where both positions agree | | `divergent_points` | list[string] | - | Areas where positions disagree |

Risk Assessment Section

| Field | Type | Constraints | Description | |-------|------|-----------

Read more
Ships withbettercallclaude

A powerful plugin for Claude Cowork Desktop, designed specifically for Swiss legal professionals. 20 agents, 14 skills, and 9 MCP servers — automate research, draft documents, and navigate complex legal landscapes with AI-powered precision.

Get the whole plugin

Other skills on bettercallclaude.