--- name: gan description: Adversarial dialectic tool inspired by GAN. Alternates between Generator (creative advocate) and Discriminator (adversarial critic). Supports forced role selection (g/d), intensity modes (hard/soft), and multi-language output. Use for stress-testing ideas, business plans, code, and spec designs. argument-hint: [g|d] [hard|soft] [:lang] [target description] --- # 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: ### 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 ``` ## 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. ## 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, 🔴 ディスクリミネーター モード).