skills/bad-faith-rhetoric-detector/SKILL.md
Describe patterns that may indicate bad-faith or manipulative communication including gish gallop, whataboutism, tone policing, motte-and-bailey, sealioning, lying by omission, deflection, and strategic evasion. Use when the user suspects manipulation, notices repeated non-engagement, wants to analyze debate tactics, or mentions 'bad faith', 'deflection', 'manipulation', 'dodging the question', 'avoiding the issue', 'gaslighting', 'moving goalposts'. Describes behavioral patterns without making psychological diagnoses.
npx skillsauth add curiositech/windags-skills bad-faith-rhetoric-detectorInstall 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.
Load this skill when the user suspects manipulation, asks about "bad faith" responses, wants to analyze debate tactics, or uses phrases like "dodging the question," "moving goalposts," or "gaslighting."
1. WHAT was the original question/claim?
↓
2. HOW did the response handle it?
├─ Completely ignored → Stonewalling or Deflection
├─ Replaced with different topic → Whataboutism or Gish Gallop
├─ Attacked the asking style → Tone Policing
├─ Retreated to safer claim → Motte-and-Bailey
└─ Demanded excessive proof → Sealioning or Burden-Shifting
↓
3. WHAT was the emotional effect?
├─ Exhaustion from volume → Gish Gallop (primary)
├─ Self-doubt about reasonableness → DARVO or Gaslighting
├─ Confusion about what was agreed → Moving Goalposts
└─ Frustration at non-engagement → Stonewalling (primary)
High Confidence (>80%):
├─ Pattern appears 3+ times in exchange
├─ Clear quotes demonstrate the behavior
└─ Effect on conversation is obvious
Medium Confidence (50-80%):
├─ Pattern appears 1-2 times
├─ Some ambiguity in interpretation
└─ Could be defensive behavior instead
Low Confidence (<50%):
├─ Single instance only
├─ Multiple reasonable interpretations
└─ Context suggests good faith possible
IF relationship is unsafe OR pattern is clearly intentional
→ Name + Exit (use boundary scripts)
ELSE IF pattern seems defensive/overwhelmed
→ Name + Pause ("Let's take a step back...")
ELSE IF user needs ongoing relationship
→ Name + Limit ("I'll engage with X, but not Y")
ELSE IF one-off interaction
→ Exit without explanation
Symptom: Finding bad faith everywhere, even in ambiguous exchanges Detection Rule: If >70% of analyzed exchanges show "bad faith," you're overcalling Fix: Force charitable interpretation first, then pattern match second
Symptom: Diagnosing psychological conditions from rhetoric patterns Detection Rule: Using words like "narcissist," "sociopath," or "personality disorder" Fix: Stick to behavioral descriptions only: "This response pattern avoids..."
Symptom: Labeling legitimate disagreement as "bad faith" Detection Rule: No actual question dodging, just unwelcome answer Fix: Distinguish between "didn't answer how I wanted" vs "didn't answer at all"
Symptom: User wants help deploying these tactics themselves Detection Rule: Questions focus on "how to" rather than "is this happening" Fix: Decline to assist with tactical deployment; redirect to productive discourse
Symptom: Endless cataloging without decision or action Detection Rule: 3+ rounds of pattern identification with no boundary setting Fix: "What do you want to do with this information?" Force decision point
User: "My boss said in the meeting that our department 'needs major restructuring and some people aren't pulling their weight.' When I asked privately who specifically and what changes, he said 'I'm just saying we all need to step up our game.' Is this bad faith?"
Analysis Process:
Output: "This follows a motte-and-bailey pattern - making a specific concerning claim (major restructuring, people not pulling weight) then retreating to an uncontroversial position (everyone should work hard) when pressed for details. This could indicate he's testing reactions before committing to specifics, or he may lack a concrete plan but wants to create urgency."
User: "I told my partner I felt hurt when they canceled our plans last minute again. They said 'I can't believe you're attacking me when I'm dealing with work stress. You never support me when I'm struggling.' Did I do something wrong?"
Analysis Process:
Output: "This response follows DARVO - your concern about canceled plans was denied ('can't believe you're attacking'), you were attacked for raising it, and they repositioned themselves as the victim who needs support. This could be manipulative, or it could be a defensive reaction from someone who feels overwhelmed and criticized. The effect either way is that your original concern (cancellation pattern) remains unaddressed."
Analysis is complete when you can answer YES to all:
Do NOT use this skill for:
productive-discourse-facilitator for ethical persuasioncommunication-clarity-optimizer for self-improvementfactual-accuracy-verifier for truth claimsDelegate when:
boundary-setting-navigatorrelationship-repair-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.