Gan-skill gan
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.
git clone https://github.com/GAN-Thinking/gan-skill
git clone --depth=1 https://github.com/GAN-Thinking/gan-skill ~/.claude/skills/gan-thinking-gan-skill-gan
SKILL.mdGAN — 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
sum- If the first word of
is exactly$ARGUMENTS
, enter Conclude Mode (see below). All other tokens are ignored.sum - This is a special mode that synthesizes the entire conversation's
rounds into a structured summary./gan
Role Override: g
or d
gd- Only the first word of
is checked for role override. If the first word is exactly$ARGUMENTS
org
(single letter, nothing else), it is consumed as a role token and removed from the arguments. Anyd
org
appearing later in the arguments is treated as part of the target description.d
→ force Discriminator.d
→ force Generator.g- 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
hardsoft- Intensity is only recognized in the first or second word of
(after the optional role token). If$ARGUMENTS
orhard
appears later in the arguments, it is treated as part of the target description.soft
→ Destruction Mode (see below).hard
→ Socratic Mode (see below).soft- If not specified → default Steel Man + Black Hat mode.
- Intensity applies to BOTH roles:
Discriminator is merciless;hard
Generator is aggressively optimistic.hard
Discriminator asks questions;soft
Generator gently builds up the idea.soft
Language: :lang
:lang- Format: colon + ISO 639-1 code (e.g.,
,:en
,:ja
,:ko
).:zh-cn - Shortcuts:
= Traditional Chinese,:tw
= Simplified Chinese.:cn - 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
invocation, or the last role was Generator → You are now the Discriminator./gan - 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:
- Acknowledge it in your first sentence — reference what the user said.
- Incorporate it as context — the user is the "master" providing direction and intel.
- 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:
- Steel-man the raw idea into its strongest possible form (2-3 sentences). This compensates for the user's idea being rough/unformed.
- Identify the top 3 risks only — don't use all 5 output sections. Focus on the most critical issues.
- 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
hard- 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
soft- 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):
- Acknowledge valid hits. Concede the points that were genuinely strong. Don't be defensive about real weaknesses.
- Defend with substance. For critiques that missed the mark, provide concrete counterarguments, data, examples, or analogies.
- Evolve the idea. Incorporate the strongest critiques into an improved version. Show how the idea mutates and gets stronger.
- Patch the holes. For each fatal or major issue, propose a specific solution or pivot.
- 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:
- Identify the core insight of the user's idea and restate it in its most compelling form.
- Patch obvious holes — address weaknesses the user may not have thought of yet.
- Strengthen the narrative — make the idea ready to withstand Discriminator attack.
- 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
parameter, or project CLAUDE.md setting, or user's language.:lang - Technical terms may remain in English in any output language.
- Role label should be in the output language (e.g., 🔴 Discriminator 模式, 🔴 Discriminator Mode, 🔴 ディスクリミネーター モード).