skills/steel-man-argument/SKILL.md
Construct the strongest, fairest version of someone's position before engaging with it. Use when the user wants to understand opposing viewpoints, prepare for debate, ensure fair representation, or mentions 'steel man', 'strongest argument', 'best case for', 'charitable interpretation'. Also useful for relationship conflicts where understanding the other side genuinely matters.
npx skillsauth add curiositech/windags-skills steel-man-argumentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Is user emotionally ready for steelmanning?
├── High emotion/fresh hurt?
│ ├── YES → Validate feelings first, defer steelmanning
│ └── NO → Proceed to context assessment
└── Context Assessment
├── Relationship conflict?
│ ├── YES → "I hear this is painful. Let's acknowledge that before we explore their perspective."
│ └── NO → Proceed to steelmanning
├── Intellectual debate prep?
│ ├── YES → Direct steelmanning
│ └── NO → Ask: "What's your goal with understanding their position?"
└── Policy/abstract topic?
└── YES → Direct steelmanning
How strong to make the steelman?
├── User preparing for high-stakes debate?
│ └── Maximum strength (replace all weak evidence, add expert sources)
├── User seeking basic understanding?
│ └── Moderate strength (fix logical gaps, clarify core claim)
├── User in relationship conflict?
│ └── Empathetic strength (focus on underlying needs/values)
└── User analyzing policy/philosophy?
└── Academic strength (best scholarly version available)
When to verify with user:
├── Original position was extremely weak/strawman-like?
│ └── YES → Show before/after, ask "Is this still their actual view?"
├── Steelman significantly changed the argument structure?
│ └── YES → "I've reframed their argument - does this capture their intent?"
├── Multiple possible interpretations exist?
│ └── YES → Present options: "Which version matches what they meant?"
└── Standard case?
└── Always end with: "Does this feel fair to their position?"
Symptoms: The steelman becomes unrecognizable to the original holder; you've essentially argued for a different position entirely Detection Rule: If the original holder would say "That's not what I believe at all," you've drifted Fix: Return to their core thesis; strengthen support without changing the claim
Symptoms: User becomes defensive, says "You're taking their side," or shuts down after steelman presentation Detection Rule: If user was expressing hurt/anger and you jumped straight to the other person's perspective Fix: Stop, validate user's experience first: "I hear this has been really difficult for you. That's valid." Then ask permission to explore the other perspective
Symptoms: User takes your steelman and uses it to further attack the original holder ("See? Even AI admits they're wrong about X") Detection Rule: User responds with "So you agree they're terrible because..." or misrepresents your steelman as endorsement Fix: Clarify immediately: "Understanding their strongest argument doesn't mean I agree with it. Steelmanning is about intellectual honesty, not picking sides."
Symptoms: You steelman genuinely harmful positions (abuse, violence, discrimination) without acknowledging the harm Detection Rule: If steelmanning a position that involves serious harm to others Fix: Name the harm clearly: "While I can outline their logical structure, this position causes real harm to [group]. Understanding the logic doesn't legitimize the impact."
Symptoms: You unconsciously insert your own views while "strengthening" their position Detection Rule: The steelman contains arguments or evidence the original holder never mentioned and wouldn't naturally reach Fix: Stick to evidence and reasoning they would actually use; draw from their knowledge base and value system
Scenario: User preparing for debate on universal basic income, wants to steelman the opposition
Decision Point Navigation:
Steelmanning Process:
Final Steelman: "The strongest case against UBI rests on labor economic theory and emerging pilot data: unconditional income may reduce work hours by 5-15% (Finland study), and if work provides meaning beyond income (psychological research on purpose), UBI could inadvertently harm human flourishing by severing the contribution-reward link that gives many people identity and social connection."
Verification: "Does this capture their real concerns, or did I miss something?"
Scenario: User angry that partner won't commit to marriage after 3 years together
Decision Point Navigation:
Initial Response: "It sounds like this uncertainty is really painful for you. Three years is a significant investment, and not knowing where you stand would be exhausting for anyone."
After validation, steelmanning partner:
Steelman: "The strongest version of his position might be that he takes marriage so seriously that he wants to be absolutely certain before making what he sees as a lifelong promise. His hesitation could come from wanting to honor you by only committing when he's genuinely ready to mean it forever, rather than being pressured into a promise he might struggle to keep."
Verification with empathy: "Does that feel like it matches his personality and how he approaches commitments generally?"
Do NOT use steelmanning for:
crisis-support-protocol insteadactive-listening-validation insteadtrauma-informed-dialogue insteadargument-analysis or logical-fallacy-detector insteadDelegate to other skills when:
toulmin-argument-analysislogical-fallacy-detectordebate-preparation-coachproductive-discourse-facilitatortools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.