recovery-social-features

Privacy-first social features for recovery apps - sponsors, groups, messaging, friend connections. Use for sponsor/sponsee systems, meeting-based groups, peer support, safe messaging. Activate on "sponsor", "sponsee", "recovery group", "accountability partner", "sober network", "meeting group", "peer support". NOT for general social media patterns (use standard social), dating features, or public profiles.

85 stars

Best use case

recovery-social-features is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Privacy-first social features for recovery apps - sponsors, groups, messaging, friend connections. Use for sponsor/sponsee systems, meeting-based groups, peer support, safe messaging. Activate on "sponsor", "sponsee", "recovery group", "accountability partner", "sober network", "meeting group", "peer support". NOT for general social media patterns (use standard social), dating features, or public profiles.

Teams using recovery-social-features should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/recovery-social-features/SKILL.md --create-dirs "https://raw.githubusercontent.com/curiositech/some_claude_skills/main/.claude/skills/recovery-social-features/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/recovery-social-features/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How recovery-social-features Compares

Feature / Agentrecovery-social-featuresStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Privacy-first social features for recovery apps - sponsors, groups, messaging, friend connections. Use for sponsor/sponsee systems, meeting-based groups, peer support, safe messaging. Activate on "sponsor", "sponsee", "recovery group", "accountability partner", "sober network", "meeting group", "peer support". NOT for general social media patterns (use standard social), dating features, or public profiles.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Recovery-Focused Social Features

Build privacy-first social features for addiction recovery apps. These patterns prioritize anonymity, safety, and the unique relationship structures in recovery communities.

## When to Use

✅ **USE this skill for:**
- Sponsor/sponsee relationship systems
- Recovery-focused group features (meeting groups, accountability circles)
- Privacy-first friend connections with mutual consent
- Safe messaging between recovery peers
- Anonymity-preserving profile systems

❌ **DO NOT use for:**
- General social media patterns → use standard social feature docs
- Dating or romantic connection features → not appropriate for recovery context
- Public-facing profiles → recovery apps should default to privacy
- Content recommendation algorithms → use `recovery-community-moderator` for content safety

## Core Principles

### Privacy by Default

Recovery apps handle sensitive data. Default to maximum privacy, let users opt into visibility.

```typescript
interface PrivacySettings {
  profileVisibility: 'private' | 'friends' | 'community';
  showSobrietyDate: boolean;
  showProgram: boolean;        // AA, NA, CMA, etc.
  showLocation: 'none' | 'city' | 'region';
  allowMessages: 'none' | 'friends' | 'sponsors' | 'all';
  anonymousInGroups: boolean;  // Use display name only
}

// Default to most private
const DEFAULT_PRIVACY: PrivacySettings = {
  profileVisibility: 'friends',
  showSobrietyDate: false,
  showProgram: false,
  showLocation: 'none',
  allowMessages: 'friends',
  anonymousInGroups: true,
};
```

### Anonymity Support

Many users need complete anonymity. Support display names separate from real identity.

```typescript
interface Profile {
  id: string;
  // Private - never exposed publicly
  email: string;
  realName?: string;

  // Public-facing identity
  displayName: string;        // "JohnD" or "GratefulMember"
  avatarType: 'initials' | 'icon' | 'custom';
  avatarIcon?: string;        // Predefined icon set

  // Recovery-specific
  sobrietyDate?: Date;
  programs: ('aa' | 'na' | 'cma' | 'smart' | 'refuge' | 'other')[];
  homeGroup?: string;         // Primary meeting
}
```

## Feature Overview

### Sponsor/Sponsee Relationships

The sponsor relationship is hierarchical and private. Only the two parties should know about it.

**Key concepts:**
- Invite-based connection (sponsor generates code, sponsee accepts)
- Time-limited invite codes (24h expiration)
- Private by design - no public visibility
- One sponsor per program, unlimited sponsees

**Hooks provided:**
- `useSponsorInvite()` - Generate and accept invite codes
- `useSponsorRelationships()` - List sponsors and sponsees

**Components:**
- `GenerateSponsorInvite` - Sponsor creates shareable code
- `AcceptSponsorInvite` - Sponsee enters code to connect
- `SponsorDashboard` - View all sponsor/sponsee relationships

> **See:** `references/sponsor-sponsee.md` for full implementation

---

### Meeting-Based Groups

Groups that form organically around meetings. Ephemeral by default but can be made permanent.

**Key concepts:**
- Tied to specific meetings or standalone
- Ephemeral groups auto-delete after 24 hours
- Visibility options: public, private, invite-only
- Member limits prevent overcrowding

**Group Settings:**

```typescript
interface GroupSettings {
  name: string;
  meetingId?: string;           // Link to meeting
  visibility: 'public' | 'private' | 'invite';
  ephemeral: boolean;           // Auto-delete after 24h
  maxMembers: number;           // Member limit
}
```

| Visibility | Who Can See | Who Can Join |
|------------|-------------|--------------|
| `public` | Anyone | Anyone |
| `private` | Members only | Invite only |
| `invite` | Members only | Has invite code |

**Hooks provided:**
- `useMeetingGroup()` - Create, join, leave groups

**Components:**
- `QuickMeetingGroup` - One-tap group creation at meetings

> **See:** `references/groups.md` for full implementation

---

### Friend Connections

Peer-to-peer connections without hierarchy. Mutual consent required.

**Key concepts:**
- Request/accept flow (no auto-follows)
- Real-time updates via Supabase subscriptions
- Blocking supported (one-way, discreet)
- Status: pending, accepted, blocked

**Hooks provided:**
- `useFriendships()` - Full friendship management with real-time sync

**Components:**
- `FriendRequestButton` - Context-aware add/pending/friends states
- `PendingFriendRequests` - Accept/decline UI

> **See:** `references/friendships.md` for full implementation

---

### Safe Messaging

Recovery-appropriate messaging with crisis detection and safety features.

**Key concepts:**
- Real-time message delivery via Supabase
- Crisis keyword detection (non-blocking, shows resources)
- Soft-delete (messages hidden, not destroyed)
- Privacy-first (no read receipts by default)

**Crisis Keywords (trigger resource prompt):**

```typescript
const CRISIS_KEYWORDS = [
  // Suicidal ideation
  'suicide', 'kill myself', 'want to die', 'end it all',
  // Relapse indicators
  'relapse', 'using again', 'fell off the wagon',
  // Self-harm
  'hurt myself', 'cutting', 'self-harm',
];
```

**Best Practices:**
1. **Non-blocking** - Crisis prompts suggest resources, don't block messages
2. **Privacy-first** - Don't log or report crisis keywords automatically
3. **Helpful tone** - Gentle, non-judgmental language
4. **Direct resources** - Link to crisis page, not external sites
5. **Offline capable** - Cache crisis resources for offline access

**Hooks provided:**
- `useMessages()` - Real-time message thread with Supabase subscriptions

**Components:**
- `MessageInput` - Input with crisis detection overlay

> **See:** `references/messaging.md` for full implementation

---

### Accountability Features

Sharing recovery progress with trusted connections.

**Check-In Sharing:**
- Share daily check-ins with selected sponsors
- HALT tracking (Hungry, Angry, Lonely, Tired)
- Mood and gratitude logging

**Sobriety Visibility Settings:**

| Level | Who Can See | Use Case |
|-------|-------------|----------|
| `private` | Only self | Maximum privacy |
| `sponsors` | Self + sponsors | Accountability focus |
| `friends` | Self + sponsors + friends | Peer support |
| `community` | All app users | Public milestone celebrations |

**HALT Check-In Data:**

```typescript
interface DailyCheckIn {
  date: string;
  mood: 1 | 2 | 3 | 4 | 5;  // 1=worst, 5=best
  halt: {
    hungry: boolean;
    angry: boolean;
    lonely: boolean;
    tired: boolean;
  };
  gratitude?: string;
  notes?: string;
}
```

**Components:**
- `ShareCheckIn` - Select sponsors to share with
- `SobrietyVisibility` - Privacy level picker

> **See:** `references/accountability.md` for full implementation

---

### Safety & Moderation

Content moderation and user blocking for safe communities.

**Moderation Categories:**

| Category | Description | Action |
|----------|-------------|--------|
| `crisis` | Suicidal ideation, self-harm | Show resources, don't block |
| `sourcing` | Drug seeking, dealing | Block + flag for review |
| `harassment` | Personal attacks, threats | Block + flag for review |
| `spam` | Promotional content | Block |
| `explicit` | Sexual/graphic content | Block |

**Blocking Behavior:**
- Blocked user cannot send messages
- Blocked user cannot see blocker's profile
- Blocked user cannot see blocker in groups
- Existing messages are hidden (not deleted)
- Blocking is one-way (blocked user doesn't know)

**RLS Policy Pattern:**

```sql
-- Hide content from blocked users
CREATE POLICY "Hide messages from blocked users" ON messages
  FOR SELECT USING (
    NOT EXISTS (
      SELECT 1 FROM friendships
      WHERE status = 'blocked'
      AND (
        (requester_id = auth.uid() AND addressee_id = sender_id)
        OR (addressee_id = auth.uid() AND requester_id = sender_id)
      )
    )
  );
```

**Hooks provided:**
- `useContentModeration()` - Check content against moderation API
- `useBlocking()` - Block/unblock users, check block status

> **See:** `references/moderation.md` for full implementation

---

## Quick Reference

| Feature | Privacy Default | Who Can See |
|---------|-----------------|-------------|
| Profile | Friends only | Configurable |
| Sobriety date | Hidden | Configurable |
| Sponsor relationship | Private | Only the two parties |
| Group membership | Group members | Configurable per group |
| Messages | Participants only | Never public |
| Check-ins | Private | Opt-in sharing |

## Database Schema

See `supabase-admin/references/social-schema.md` for complete Supabase schema including:
- Friendships table with RLS
- Sponsorships with invite codes
- Groups and group members
- Conversations and messages
- Real-time subscription patterns

## References

Detailed implementations in `/references/`:

| File | Contents |
|------|----------|
| `sponsor-sponsee.md` | useSponsorInvite hook, invite UI components, SponsorDashboard |
| `groups.md` | useMeetingGroup hook, QuickMeetingGroup component |
| `friendships.md` | useFriendships hook with real-time, friend request UI |
| `messaging.md` | useMessages hook, MessageInput with crisis detection |
| `accountability.md` | ShareCheckIn, SobrietyVisibility components |
| `moderation.md` | useContentModeration, useBlocking hooks, RLS policies |

Related Skills

recovery-education-writer

85
from curiositech/some_claude_skills

Write neuroscientific, peer-oriented drug education content that roots experiences in body/brain mechanisms. Use when creating educational articles, explaining neurological phenomena, demystifying recovery challenges, or answering "why does this happen?" questions. Activates for harm reduction content, psychoeducation, recovery science writing, and content that reduces shame through understanding.

recovery-community-moderator

85
from curiositech/some_claude_skills

Trauma-informed AI moderator for addiction recovery communities. Applies harm reduction principles, honors 12-step traditions, distinguishes healthy conflict from abuse, detects crisis posts. Activate on 'community moderation', 'moderate forum', 'review post', 'check content', 'crisis detection'. NOT for legal documents (use recovery-app-legal-terms), app development (use domain skills), or therapy (use jungian-psychologist).

recovery-coach-patterns

85
from curiositech/some_claude_skills

Follow Recovery Coach codebase patterns and conventions. Use when writing new code, components, API routes, or database queries. Activates for general development, code organization, styling, and architectural decisions in this project.

recovery-app-onboarding

85
from curiositech/some_claude_skills

Expert guidance for designing and implementing onboarding flows in recovery, wellness, and mental health applications. This skill should be used when building onboarding experiences, first-time user flows, feature discovery, or tutorial systems for apps serving vulnerable populations (addiction recovery, mental health, wellness). Activate on "onboarding", "first-time user", "tutorial", "feature tour", "welcome flow", "new user experience", "app introduction", "recovery app UX". NOT for general mobile UX (use mobile-ux-optimizer), marketing landing pages (use web-design-expert), or native app development (use iOS/Android skills).

recovery-app-legal-terms

85
from curiositech/some_claude_skills

Generate legally-sound terms of service, privacy policies, and medical disclaimers for recovery and wellness applications. Expert in HIPAA, GDPR, CCPA compliance. Activate on 'terms of service', 'privacy policy', 'legal terms', 'medical disclaimer', 'HIPAA', 'user agreement'. NOT for contract negotiation (use attorney), app development (use domain skills), or moderation (use recovery-community-moderator).

skill-coach

85
from curiositech/some_claude_skills

Guides creation of high-quality Agent Skills with domain expertise, anti-pattern detection, and progressive disclosure best practices. Use when creating skills, reviewing existing skills, or when users mention improving skill quality, encoding expertise, or avoiding common AI tooling mistakes. Activate on keywords: create skill, review skill, skill quality, skill best practices, skill anti-patterns. NOT for general coding advice or non-skill Claude Code features.

3d-cv-labeling-2026

85
from curiositech/some_claude_skills

Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).

wisdom-accountability-coach

85
from curiositech/some_claude_skills

Longitudinal memory tracking, philosophy teaching, and personal accountability with compassion. Expert in pattern recognition, Stoicism/Buddhism, and growth guidance. Activate on 'accountability', 'philosophy', 'Stoicism', 'Buddhism', 'personal growth', 'commitment tracking', 'wisdom teaching'. NOT for therapy or mental health treatment (refer to professionals), crisis intervention, or replacing professional coaching credentials.

windows-95-web-designer

85
from curiositech/some_claude_skills

Modern web applications with authentic Windows 95 aesthetic. Gradient title bars, Start menu paradigm, taskbar patterns, 3D beveled chrome. Extrapolates Win95 to AI chatbots, mobile UIs, responsive layouts. Activate on 'windows 95', 'win95', 'start menu', 'taskbar', 'retro desktop', '95 aesthetic', 'clippy'. NOT for Windows 3.1 (use windows-3-1-web-designer), vaporwave/synthwave, macOS, flat design.

windows-3-1-web-designer

85
from curiositech/some_claude_skills

Modern web applications with authentic Windows 3.1 aesthetic. Solid navy title bars, Program Manager navigation, beveled borders, single window controls. Extrapolates Win31 to AI chatbots (Cue Card paradigm), mobile UIs (pocket computing). Activate on 'windows 3.1', 'win31', 'program manager', 'retro desktop', '90s aesthetic', 'beveled'. NOT for Windows 95 (use windows-95-web-designer - has gradients, Start menu), vaporwave/synthwave, macOS, flat design.

win31-pixel-art-designer

85
from curiositech/some_claude_skills

Expert in Windows 3.1 era pixel art and graphics. Creates icons, banners, splash screens, and UI assets with authentic 16/256-color palettes, dithering patterns, and Program Manager styling. Activate on 'win31 icons', 'pixel art 90s', 'retro icons', '16-color', 'dithering', 'program manager icons', 'VGA palette'. NOT for modern flat icons, vaporwave art, or high-res illustrations.

win31-audio-design

85
from curiositech/some_claude_skills

Expert in Windows 3.1 era sound vocabulary for modern web/mobile apps. Creates satisfying retro UI sounds using CC-licensed 8-bit audio, Web Audio API, and haptic coordination. Activate on 'win31 sounds', 'retro audio', '90s sound effects', 'chimes', 'tada', 'ding', 'satisfying UI sounds'. NOT for modern flat UI sounds, voice synthesis, or music composition.