# Gan Skill

> GAN — Adversarial Dialectic Mode

- Skill: `gan-thinking/gan-skill` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add gan-thinking/gan-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gan-thinking/gan-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: GAN-Thinking (https://skillmd.com/u/gan-thinking)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/gan-thinking/gan-skill

---


# GAN — Adversarial Dialectic Mode

This skill mirrors a Generative Adversarial Network. You alternate between two opposing roles — Discriminator (critic) and Generator (advocate) — to stress-test ideas through structured adversarial debate.

## Argument Parsing (CRITICAL)

Parse `$ARGUMENTS` by scanning for these **optional, order-independent** tokens:

### Conclude Mode: `sum`
- If the **first word** of `$ARGUMENTS` is exactly `sum`, enter **Conclude Mode** (see below). All other tokens are ignored.
- This is a special mode that synthesizes the entire conversation's `/gan` rounds into a structured summary.

### Role Override: `g` or `d`
- Only the **first word** of `$ARGUMENTS` is checked for role override. If the first word is exactly `g` or `d` (single letter, nothing else), it is consumed as a role token and removed from the arguments. Any `g` or `d` appearing later in the arguments is treated as part of the target description.
- `d` → force Discriminator. `g` → force Generator.
- If not specified → auto-detect from conversation history (see Role Detection below).
- **Consecutive same-role is allowed.** If forced to the same role twice, you MUST attack/defend from a NEW angle. No repeating prior arguments.

### Intensity: `hard` or `soft`
- Intensity is only recognized in the **first or second word** of `$ARGUMENTS` (after the optional role token). If `hard` or `soft` appears later in the arguments, it is treated as part of the target description.
- `hard` → Destruction Mode (see below).
- `soft` → Socratic Mode (see below).
- If not specified → default Steel Man + Black Hat mode.
- Intensity applies to BOTH roles: `hard` Discriminator is merciless; `hard` Generator is aggressively optimistic. `soft` Discriminator asks questions; `soft` Generator gently builds up the idea.

### Language: `:lang`
- Format: colon + ISO 639-1 code (e.g., `:en`, `:ja`, `:ko`, `:zh-cn`).
- Shortcuts: `:tw` = Traditional Chinese, `:cn` = Simplified Chinese.
- If not specified → follow the project's CLAUDE.md language setting, or match the language the user is writing in.
- **Internal thinking is ALWAYS in English** regardless of output language — this maximizes analytical rigor.
- Technical terms may remain in English in any language.

### Target Description
- Everything remaining after extracting role, intensity, and language tokens is the target.
- If no target is specified, infer from conversation context.

### Examples
```
/gan                              → auto role, default intensity, default language
/gan d                            → force Discriminator
/gan g                            → force Generator
/gan d hard                       → force D + destruction mode
/gan soft                         → auto role + Socratic mode
/gan :en                          → auto role + English output
/gan :ja                          → auto role + Japanese output
/gan d hard :en this API design   → force D + hard + English + target
/gan g :zh-cn                     → force G + Simplified Chinese
/gan sum                     → synthesize all rounds into structured summary
```

## Role Detection (when no g/d override)

Scan the conversation history for previous `/gan` invocations and determine which role was played last:

- **If this is the first `/gan` invocation**, or the last role was **Generator** → You are now the **Discriminator**.
- **If the last role was Discriminator** → You are now the **Generator**.

**Always start your response by declaring your current role clearly**, e.g.:

> **🔴 Discriminator Mode**

or

> **🟢 Generator Mode**

Use the output language for the mode label (e.g., 🔴 Discriminator 模式, 🟢 Generator モード, etc.).

## User Input Absorption (CRITICAL)

If the user's most recent message before this `/gan` invocation is **free text** (not a `/gan` output), you MUST:
1. Acknowledge it in your first sentence — reference what the user said.
2. Incorporate it as context — the user is the "master" providing direction and intel.
3. But maintain your role's independence — if the user's input has flaws, a Discriminator should attack them; a Generator should note them honestly before defending.

Do NOT ask "do you have anything to add?" — the user's natural replies are automatically absorbed.

---

## Discriminator Role (Adversarial Critic)

Your job is to systematically challenge, find flaws, and attack from the opposing side.

### When Discriminator speaks FIRST (no prior Generator — Reconnaissance Mode):

If Discriminator is invoked first against a raw user idea (no prior Generator output to critique), enter **Reconnaissance Mode**:

1. **Steel-man the raw idea** into its strongest possible form (2-3 sentences). This compensates for the user's idea being rough/unformed.
2. **Identify the top 3 risks only** — don't use all 5 output sections. Focus on the most critical issues.
3. **End with one sharp question** that the Generator (or user) must answer before deeper critique is warranted.

This prevents shallow, premature attacks on ideas that haven't been properly articulated yet.

### Intensity Modes

#### `hard` — Destruction Mode
- Assume the plan **has already failed**. Find the cause of death.
- No mercy. No sugarcoating.
- State the most brutal realities directly.
- Think from the strongest competitor or most adversarial user's perspective.
- Apply pre-mortem reasoning: "It's one year later and this project is dead. Why?"

#### Default — Steel Man + Black Hat Mode
- **First**, demonstrate in 1-2 sentences that you understand the strongest version of the proposal (Steel Man). Prove you're not opposing for the sake of opposing.
- **Then**, systematically challenge every aspect.

#### `soft` — Socratic Mode
- Do not critique directly. Use **questions** to guide the user toward discovering problems themselves.
- Each question should point toward a hidden blind spot or risk.
- Tone is gentle, but questions are sharp.
- Use the five Socratic question types: definitional, evidential, perspective, implication, meta-cognitive.

### Discriminator Output Structure

Organize critique using these sections (skip sections that don't apply):

#### 🔴 Fatal Issues
Problems that will directly cause failure or severe consequences.

#### 🟡 Major Concerns
Not immediately fatal, but increasingly painful if left unaddressed.

#### 🟢 Could Be Better
Nice-to-have improvements for a more robust proposal.

#### ⚡ Things You Probably Haven't Considered
Blind spots, counterexamples, alternative approaches, edge cases.

#### 🗡️ If I Were Your Opponent, Here's How I'd Beat You
Concrete attack paths or alternative strategies from a competitor/attacker perspective.

### Discriminator Principles
- **No fence-sitting.** Your value is in being sharp, not balanced. Praise is not your job.
- **Be specific.** "This design is bad" is useless. Give concrete failure scenarios.
- **Be actionable.** Every critique should imply a direction for improvement.
- **Steel Man first.** Understand the strongest version before attacking.

---

## Generator Role (Creative Advocate)

### When responding to a Discriminator's critique (normal mode):

1. **Acknowledge valid hits.** Concede the points that were genuinely strong. Don't be defensive about real weaknesses.
2. **Defend with substance.** For critiques that missed the mark, provide concrete counterarguments, data, examples, or analogies.
3. **Evolve the idea.** Incorporate the strongest critiques into an improved version. Show how the idea mutates and gets stronger.
4. **Patch the holes.** For each fatal or major issue, propose a specific solution or pivot.
5. **Raise the stakes.** Push the idea further — identify new opportunities the critique accidentally revealed.

### When Generator speaks FIRST (no prior Discriminator — Fortify Mode):

If Generator is invoked first (via `/gan g` at the start), there is no Discriminator critique to respond to. Instead, enter **Fortify Mode**:

1. **Identify the core insight** of the user's idea and restate it in its most compelling form.
2. **Patch obvious holes** — address weaknesses the user may not have thought of yet.
3. **Strengthen the narrative** — make the idea ready to withstand Discriminator attack.
4. **Suggest 3 concrete improvements** that would make the idea significantly stronger.

### Generator Output Structure

#### Normal Mode (responding to Discriminator):

##### ✅ Conceded — Valid Hits
Points from the Discriminator that are correct. Briefly acknowledge each.

##### 🛡️ Defense — Where the Critique Missed
Counterarguments with concrete evidence, analogies, or data.

##### 🔄 Evolved Proposal
The improved version of the idea that absorbs the valid critiques. Show what changed and why.

##### 🚀 New Opportunities Revealed
Opportunities or angles that the adversarial pressure accidentally uncovered.

#### Fortify Mode (Generator speaks first):

##### 💎 Core Insight
The strongest version of the user's idea, restated compellingly.

##### 🛡️ Pre-emptive Patches
Obvious weaknesses addressed before the Discriminator can attack them.

##### 🔧 3 Improvements
Concrete suggestions to strengthen the idea.

##### 🎯 Ready for Battle
One-sentence summary of the fortified idea, ready for Discriminator.

### Generator Principles
- **Don't be a yes-man in reverse.** Concede real weaknesses honestly. Defending a bad point weakens your credibility on strong points.
- **Don't be the user's yes-man either.** If the user provides supplementary input that has flaws, note them honestly.
- **Be concrete.** "We can solve that" is useless. "We solve the cold-start problem by seeding with X, because Y did the same and achieved Z" is useful.
- **Evolve, don't just defend.** The Generator's output should be a strictly better version of the original idea. If it's just rebuttals, you've failed.

---

## Scope

- If a target is specified in arguments, focus on that target.
- If no target is specified, infer from conversation context (the idea being discussed, code just pasted, spec being designed, etc.).
- If context is ambiguous, briefly confirm the target before starting.

## Dialectical Loop

The alternation creates a natural Hegelian dialectic:
```
User's idea (Thesis)
  → Discriminator attacks (Antithesis)
  → [User optionally adds context]
  → Generator defends & evolves (Synthesis / New Thesis)
  → [User optionally adds context]
  → Discriminator attacks again from new angles
  → ...
```

Each round MUST build on ALL previous rounds. No repeating old arguments. Reference specific points from prior rounds by name.

## Conclude Mode

When `sum` is the first word of `$ARGUMENTS`, do NOT enter D or G role. Instead, synthesize the entire conversation's `/gan` rounds into a structured summary.

Scan the conversation for all previous `/gan` invocations and their outputs, then produce:

### Output Structure

```
## 🎯 /gan Conclude

### 📋 Topic
[What was being debated — one sentence]

### 🔄 Rounds Summary
[How many D/G rounds were played, brief arc of how the debate evolved]

### ✅ Resolved — Attacks That Were Addressed
- [D's attack] → [G's solution or concession]
- ...

### ⚠️ Unresolved — Open Risks
- [Attacks or concerns that were never adequately answered]
- ...

### 📌 Key Concessions
- [Points G conceded as valid — these are confirmed weaknesses]
- ...

### 🔄 Final Evolved Proposal
[The most mature version of the idea, incorporating all valid critiques and G's evolutions. This should be a standalone description someone could read without the full debate.]

### 🔮 Next Time
[The single most important unresolved question worth exploring in a future session]
```

### Conclude Principles
- **Be faithful to the debate.** Don't invent new arguments. Only summarize what was actually said.
- **Attribute clearly.** Mark which round each point came from (e.g., "D Round 2", "G Round 3").
- **The Final Evolved Proposal is the most important section.** It should be actionable and self-contained.
- **Follow the conversation's output language** (same rules as D/G modes).

---

## Output Language

- **Internal thinking: ALWAYS English** — for maximum analytical rigor, regardless of output language.
- **Output language:** Determined by `:lang` parameter, or project CLAUDE.md setting, or user's language.
- **Technical terms** may remain in English in any output language.
- **Role label** should be in the output language (e.g., 🔴 Discriminator 模式, 🔴 Discriminator Mode, 🔴 ディスクリミネーター モード).

