mcpField
R
recovery-social-features

recovery-social-features

github.com/curiositech开发257132 次安装2 天前更新
代码仓库

关于 recovery-social-features

recovery-social-features 是一项为成瘾康复应用设计社交功能的技能,面向重视匿名、隐私与社区安全的开发者。内容涵盖担保关系、互助群组、私密消息、问责分享和审核模式。

主要功能

  1. 01默认保护隐私并支持匿名身份
  2. 02管理担保人与受助者关系
  3. 03创建会议群组和互助连接
  4. 04提供带危机提示的安全消息
  5. 05分享康复打卡并配置审核

适用场景

  1. 01为康复应用建立私密担保关系
  2. 02围绕会议组织互助群组
  3. 03支持带危机资源提示的用户消息
  4. 04向选定联系人分享每日打卡

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/curiositech/some_claude_skills --skill recovery-social-features

安装后在 Claude Code 中输入/recovery-social-features确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
accountability.md
friendships.md
groups.md
messaging.md
moderation.md
sponsor-sponsee.md

详细介绍

以康复为核心的社交功能

为成瘾康复应用构建以隐私为先的社交功能。这些模式优先考虑匿名性、安全性,以及康复社群中特有的人际关系结构。

适用场景

✅ 适用于以下场景:

  • 赞助者/受助者关系系统
  • 以康复为核心的群组功能(会议群组、互助小组)
  • 需双方同意、以隐私为先的好友关系
  • 康复同伴之间的安全消息交流
  • 保护匿名性的个人资料系统

❌ 不适用于以下场景:

  • 通用社交媒体模式 → 使用标准社交功能文档
  • 约会或恋爱关系功能 → 不适用于康复场景
  • 面向公众的个人资料 → 康复应用应默认保护隐私
  • 内容推荐算法 → 使用 recovery-community-moderator 处理内容安全

核心原则

默认保护隐私

康复应用会处理敏感数据。默认采用最高级别的隐私保护,让用户主动选择是否公开信息。

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,
};
支持匿名

许多用户需要完全匿名。支持使用与真实身份分开的显示名称。

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
}

功能概览

赞助者/受助者关系

赞助者关系是层级式且私密的。只有双方应知晓这段关系。

关键概念:

  • 基于邀请的关系建立(赞助者生成代码,受助者接受)
  • 有时限的邀请代码(24 小时后过期)
  • 默认私密——不公开显示
  • 每个项目只能有一位赞助者,但可有不限数量的受助者

提供的 Hook:

  • useSponsorInvite() - 生成并接受邀请代码
  • useSponsorRelationships() - 列出赞助者和受助者

组件:

  • GenerateSponsorInvite - 赞助者创建可分享的代码
  • AcceptSponsorInvite - 受助者输入代码以建立联系
  • SponsorDashboard - 查看所有赞助者/受助者关系

参见: references/sponsor-sponsee.md 了解完整实现


基于会议的群组

围绕会议自然形成的群组。默认是临时群组,但可设为永久群组。

关键概念:

  • 与特定会议关联,或作为独立群组
  • 临时群组会在 24 小时后自动删除
  • 可见性选项:公开、私密、仅限邀请
  • 成员人数上限可防止过度拥挤

群组设置:

interface GroupSettings {
  name: string;
  meetingId?: string;           // Link to meeting
  visibility: 'public' | 'private' | 'invite';
  ephemeral: boolean;           // Auto-delete after 24h
  maxMembers: number;           // Member limit
}
可见性谁可以查看谁可以加入
public任何人任何人
private仅成员仅受邀者
invite仅成员持有邀请代码者

提供的 Hook:

  • useMeetingGroup() - 创建、加入和退出群组

组件:

  • QuickMeetingGroup - 在会议中一键创建群组

参见: references/groups.md 了解完整实现


好友关系

无需层级关系的点对点联系。必须经过双方同意。

关键概念:

  • 请求/接受流程(不会自动关注)
  • 通过 Supabase 订阅实时更新
  • 支持屏蔽(单向且不显眼)
  • 状态:待处理、已接受、已屏蔽

提供的 Hook:

  • useFriendships() - 全面的好友关系管理,并支持实时同步

组件:

  • FriendRequestButton - 根据情境显示添加/待处理/已成为好友状态
  • PendingFriendRequests - 接受/拒绝界面

参见: references/friendships.md 了解完整实现


安全消息传递

适合康复场景的消息传递,包含危机检测和安全功能。

核心概念:

  • 通过 Supabase 实时传递消息
  • 检测危机关键词(非阻塞,显示资源)
  • 软删除(隐藏消息,而非销毁)
  • 隐私优先(默认不发送已读回执)

危机关键词(触发资源提示词):

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',
];

最佳实践:

  1. 非阻塞 - 危机提示应推荐资源,不要阻止发送消息
  2. 隐私优先 - 不要自动记录或报告危机关键词
  3. 语气友善 - 使用温和、不带评判的措辞
  4. 提供直接资源 - 链接到危机页面,而非外部网站
  5. 支持离线使用 - 缓存危机资源,以便离线访问

提供的 Hook:

  • useMessages() - 通过 Supabase 订阅实时获取消息线程

组件:

  • MessageInput - 带有危机检测浮层的输入框

参见: references/messaging.md,了解完整实现


问责功能

与信任的联系人分享康复进展。

签到分享:

  • 与选定的戒瘾导师分享每日签到
  • HALT 跟踪(饥饿、愤怒、孤独、疲惫)
  • 记录情绪和感恩事项

戒断状态可见性设置:

级别可查看者使用场景
private仅自己最大程度保护隐私
sponsors自己 + 戒瘾导师侧重问责
friends自己 + 戒瘾导师 + 朋友同伴支持
community所有应用用户公开庆祝里程碑

HALT 签到数据:

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;
}

组件:

  • ShareCheckIn - 选择要分享给哪些戒瘾导师
  • SobrietyVisibility - 隐私级别选择器

参见: references/accountability.md,了解完整实现


安全与审核

通过内容审核和用户屏蔽,打造安全的社区。

审核类别:

类别描述操作
crisis自杀意念、自残显示资源,不要屏蔽
sourcing寻找或贩卖毒品屏蔽 + 标记以供审核
harassment人身攻击、威胁屏蔽 + 标记以供审核
spam推广内容屏蔽
explicit色情/露骨内容屏蔽

屏蔽行为:

  • 被屏蔽的用户无法发送消息
  • 被屏蔽的用户无法查看屏蔽者的个人资料
  • 被屏蔽的用户无法在群组中看到屏蔽者
  • 现有消息会被隐藏(不会删除)
  • 屏蔽是单向的(被屏蔽的用户不会知情)

RLS 策略模式:

-- 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)
      )
    )
  );

提供的 Hook:

  • useContentModeration() - 通过审核 API 检查内容
  • useBlocking() - 屏蔽/取消屏蔽用户,并检查屏蔽状态

参见: references/moderation.md,了解完整实现


快速参考

功能默认隐私设置可查看者
个人资料仅朋友可配置
戒断日期隐藏可配置
戒瘾导师关系私密仅双方
群组成员身份群组成员可针对每个群组配置
消息仅参与者永不公开
签到私密选择性分享

数据库架构

参见 supabase-admin/references/social-schema.md,查看完整的 Supabase 架构,包括:

  • 带有 RLS 的好友关系表
  • 带邀请代码的戒瘾指导关系
  • 群组和群组成员
  • 对话和消息
  • 实时订阅模式

参考资料

/references/ 中的详细实现:

文件内容
sponsor-sponsee.mduseSponsorInvite Hook、邀请 UI 组件、SponsorDashboard
groups.mduseMeetingGroup Hook、QuickMeetingGroup 组件
friendships.md带实时更新的 useFriendships Hook、好友请求 UI
messaging.mduseMessages Hook、带危机检测的 MessageInput
accountability.mdShareCheckIn、SobrietyVisibility 组件
moderation.mduseContentModeration、useBlocking Hook、RLS 策略

评论

支持 Markdown