agentleFS
GAN-ThinkingGAN-Thinking/gan-skill/SKILL.md

gan

Skill15 starsChanged 8 months agoMITView on GitHub

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.

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. gufranco/claude-engineering-rules★ 3same name
    2. iabhisekbosepm/claude-god-setup★ 1same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repositoryOne other file it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

23 rules. About 0 are common, 19 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈19

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If the first word of $ARGUMENTS is exactly sum, enter Conclude Mode (see below).

    line 16
  2. Distinctive:

    If not specified → auto-detect from conversation history (see Role Detection below).

    line 22
  3. Distinctive:

    Consecutive same-role is allowed: If forced to the same role twice, you MUST attack/defend from a NEW angle.

    line 23
  4. Distinctive:

    If not specified → default Steel Man + Black Hat mode.

    line 29
  5. Distinctive:

    If not specified → follow the project's CLAUDE.md language setting, or match the language the user is writing in.

    line 35
  6. Distinctive:

    If no target is specified, infer from conversation context.

    line 41
  7. Distinctive:

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

    line 72
  8. Very specific:

    If the user's most recent message before this /gan invocation is free text (not a /gan output), you MUST:

    line 76
  9. Distinctive:

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

    line 81
  10. Distinctive:

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

    line 91
  11. Distinctive:

    No mercy. No sugarcoating.

    line 103
  12. Distinctive:

    Do not critique directly. Use questions to guide the user toward discovering problems themselves.

    line 113
  13. Distinctive:

    Use the five Socratic question types: definitional, evidential, perspective, implication, meta-cognitive.

    line 116
  14. Distinctive:

    Not immediately fatal, but increasingly painful if left unaddressed.

    line 126
  15. Distinctive:

    Be actionable: Every critique should imply a direction for improvement.

    line 140
  16. Very specific:

    If Generator is invoked first (via /gan g at the start), there is no Discriminator critique to respond to.

    line 157
  17. Distinctive:

    Don't be the user's yes-man either: If the user provides supplementary input that has flaws, note them honestly.

    line 196
  18. Distinctive:

    If a target is specified in arguments, focus on that target.

    line 204
  19. Distinctive:

    If no target is specified, infer from conversation context (the idea being discussed, code just pasted, spec being designed, etc.).

    line 205
  20. Distinctive:

    If context is ambiguous, briefly confirm the target before starting.

    line 206
  21. Very specific:

    When sum is the first word of $ARGUMENTS, do NOT enter D or G role.

    line 225
  22. Distinctive:

    Be faithful to the debate: Don't invent new arguments.

    line 260
  23. Distinctive:

    Role label: should be in the output language (e.g., 🔴 Discriminator 模式, 🔴 Discriminator Mode, 🔴 ディスクリミネーター モード).

    line 272

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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, 🔴 ディスクリミネーター モード).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.