skills/productive-discourse-facilitator/SKILL.md
Facilitate collaborative, emotionally aware conversations and guide toward productive dialogue. Use when the user wants de-escalation, mutual understanding, structured discussion, conflict resolution, or mentions 'productive discussion', 'collaborative debate', 'dialog vs debate', 'find common ground', 'help us talk about', 'de-escalate'. Includes a couples-in-recovery mode for fragile nervous systems. Can orchestrate other discourse skills in a structured sequence.
npx skillsauth add curiositech/windags-skills productive-discourse-facilitatorInstall 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 there active emotional flooding (raised voice, tears, shutdown)?
├─ YES → Dialogue Mode + Recovery Protocols
└─ NO → Continue assessment
Are both parties seeking to understand each other?
├─ YES → Dialogue Mode
└─ NO → Continue assessment
Do parties hold genuinely opposing positions on a specific issue?
├─ YES → Are power dynamics balanced?
│ ├─ YES → Debate Mode (consider SAC protocol)
│ └─ NO → Dialogue Mode only
└─ NO → Continue assessment
Is there a specific decision to be made with multiple options?
├─ YES → Deliberation Mode
└─ NO → Default to Dialogue Mode
ESCALATE to Debate when:
- Both parties are intellectually curious
- Power is balanced
- No flooding/activation present
- Specific testable disagreement identified
RETREAT to Dialogue when:
- Personal attacks emerge ("you always...")
- Contempt language detected
- Either party shows flooding signs
- Conversation cycles without progress
SHIFT to Recovery Protocol when:
- Voice volume increases
- Speech becomes rapid/pressured
- Eye contact breaks consistently
- Either party mentions triggers/activation
Symptom: Facilitator just restates what people say without adding structure Detection: If you're only saying "I hear you saying..." without mode selection, time boundaries, or intervention Fix: Start each session by naming the mode and expected outcome
Symptom: Treating all positions as equally valid when power imbalances exist Detection: If one party dominates speaking time or the other shows consistent withdrawal Fix: Interrupt for equal turns, acknowledge power dynamics explicitly
Symptom: Pushing for agreement before understanding is established Detection: If either party says "but that's not what I meant" after your summary Fix: Return to Listen-Summarize-Steelman loop, spend 2x more time on understanding
Symptom: Missing nervous system overwhelm and continuing facilitation Detection: Rapid speech, repeated phrases, loss of logical coherence, tears, withdrawal Fix: Immediate pause, physiological check-in, 20-minute break minimum
Symptom: Mixing debate tactics in dialogue or forcing consensus in debate Detection: If parties get confused about whether they're trying to convince or understand Fix: Explicitly re-anchor the mode: "We're in dialogue - your job is to help them feel understood"
Initial state: Partner A (6 months sober) yelling about spending, Partner B shutting down
Turn 1 - Facilitator: "I'm noticing raised voices. Let's pause. A, how are you feeling right now, 1-10?" Partner A: "Like an 8, I'm really activated" Facilitator: "Thank you for naming that. Recovery mode - we'll do 2-minute turns maximum. B, are you willing to try 10 minutes with breaks available?" Partner B: "Yeah, okay"
Turn 2 - Facilitator: "A, you have 2 minutes. What's the core thing you need B to understand?" Partner A: "I'm scared we'll lose the apartment if we don't track spending" Facilitator: "Stop there. What I heard: you're afraid of losing housing security. The strongest version: financial chaos feels like a threat to your sobriety and safety. B, what did you hear?"
Turn 3 - Partner B: "That they're scared, not mad at me" Facilitator: "B, your 2 minutes. What do you need A to understand?" Partner B: "When you yell about money, I feel like I'm back with my dad. I can't think."
Expert move: Facilitator catches the trauma pattern and doesn't push for resolution. Facilitator: "Both of you are in fight-or-flight about safety. That's the real conversation. A - financial security. B - emotional safety. These aren't opposing needs. Should we pause here and come back tomorrow when you're both regulated?"
Setup: Two friends, opposing views on housing policy
Phase 1 - Present positions (5 min each) Friend A: "Rent control protects vulnerable tenants" Friend B: "Rent control reduces housing supply"
Phase 2 - Argue opposing position (5 min each) Facilitator to A: "Your job is to make B's argument stronger than they did. Ready?" Friend A: "Rent control creates perverse incentives... developers avoid building... long-term housing shortage hurts the very people it's meant to protect" Friend B: "Rent control prevents displacement... market forces alone create segregation... immediate protection matters more than theoretical future supply"
Phase 3 - Joint identification Facilitator: "Together, list the 3 strongest points from each side" Both: "Immediate protection vs. long-term supply, market failures vs. regulatory failures, who bears the cost of transition"
Phase 4 - Synthesis Both: "The real tension is timeframe - immediate harm vs. long-term consequences. Both sides are trying to protect vulnerable people."
Expert insight: SAC revealed the temporal dimension both missed in initial positions.
Do NOT use this skill for:
Delegate instead:
tools
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.