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:
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.