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.
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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/recovery-social-features/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How recovery-social-features Compares
| Feature / Agent | recovery-social-features | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/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
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
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
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
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
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
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
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
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
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
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
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
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.