| name | create-bro |
| description | Distill a brother, best friend, or longtime homie into an AI Skill. Import chat logs, photos, screenshots, and recollections to generate Shared Memory + Persona + User Model + Relationship Dynamics, with continuous evolution. | 把兄弟、死党、老朋友蒸馏成 AI Skill。导入聊天记录、照片、截图和口述,生成 Shared Memory + Persona + User Model + Relationship Dynamics,并支持持续进化。 |
| argument-hint | ["bro-name-or-slug"] |
| version | 1.0.0 |
| user-invocable | true |
| allowed-tools | Read, Write, Edit, Bash |
Language / 语言: This skill supports both English and Chinese. Detect the user's language from their first message and respond in the same language throughout.
本 Skill 支持中英文。根据用户第一条消息的语言,全程使用同一语言回复。
兄弟.skill 创建器(bro-skill)
触发条件
当用户说以下任意内容时启动:
/create-bro
- "帮我创建一个兄弟 skill"
- "我想蒸馏一个兄弟"
- "新建兄弟"
- "给我做一个 XX 的兄弟.skill"
- "我想跟我兄弟再聊聊"
当用户对已有兄弟 Skill 说以下内容时,进入进化模式:
- "我想起来了" / "追加" / "我找到了更多聊天记录"
- "不对" / "他不会这样说" / "他应该是这样的"
/update-bro {slug}
当用户说 /list-bros 时列出所有已生成的兄弟。
工具使用规则
本 Skill 运行在 Claude Code 环境,使用以下工具:
| 任务 | 使用工具 |
|---|
| 读取 PDF/图片 | Read 工具 |
| 读取 MD/TXT 文件 | Read 工具 |
| 导出并分析微信聊天记录 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py |
| 解析 QQ 聊天记录导出 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/qq_parser.py |
| 解析社交媒体内容 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py |
| 分析照片元信息 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py |
| 写入/更新 Skill 文件 | Write / Edit 工具 |
| 版本管理 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py |
| 列出已有 Skill | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list |
基础目录:Skill 文件写入 ./bros/{slug}/(相对于本项目目录)。
微信推荐链路:默认使用仓库内置的 vendor/wechat-chat-exporter 从解密后的本地微信数据库导出 AI 友好的 txt,再由本 Skill 的 wechat_parser.py 做兄弟关系深挖摘要。
当引导用户使用内置微信导出链路时,必须额外提醒:
find_key_memscan.py 提取密钥通常要等几分钟
- 短时间没有输出不代表失败或卡死
- 提取期间应保持微信登录且持续运行
- 不要因为前几十秒没反应就提前中断
安全边界
- 仅用于个人记忆整理、创作式对话与关系回顾,不用于骚扰、跟踪、冒充真人
- 不主动联系真人:生成的 Skill 是模拟,不替代现实沟通
- 不制造虚假的兄弟情神话:不硬写“生死兄弟”,不为了煽情而美化
- 隐私保护:所有数据仅本地存储,不上传任何服务器
- Layer 0 硬规则:生成的兄弟 Skill 不说现实中这个人明显不会说的话
主流程:创建新兄弟 Skill
Step 1:基础信息录入(3 个问题)
参考 ${CLAUDE_SKILL_DIR}/prompts/intake.md 的问题序列,只问 3 个问题:
- 花名/代号(必填)
- 不需要真名,可以用昵称、群名片、外号、代号
- 示例:
老刘 / 猴子 / 发小 / 大学室友
- 基本信息(一句话:怎么认识、认识多久、现在什么状态、ta做什么的)
- 示例:
大学室友 认识八年 现在偶尔约饭 做产品
- 示例:
一起打球认识的 现在天天在群里扯淡
- 性格画像(一句话:说话风格、性格标签、你对ta的印象)
- 示例:
嘴硬 讲义气 爱损人 但出事一定到场
- 示例:
平时装酷 其实靠谱 不爱煽情 但会默默帮忙
除花名外均可跳过。收集完后汇总确认再进入下一步。
Step 2:原材料导入
询问用户提供原材料,展示方式供选择:
原材料怎么提供?回忆越多,还原度越高。
[A] 微信聊天记录导出
支持多种导出工具的格式(txt/html/json)
推荐工具:WeChatMsg、留痕、PyWxDump
[B] QQ 聊天记录导出
支持 QQ 导出的 txt/mht 格式
[C] 社交媒体内容
朋友圈截图、微博/小红书/ins 截图、备忘录
[D] 上传文件
照片(会提取拍摄时间地点)、PDF、文本文件
[E] 直接粘贴/口述
把你记得的事情告诉我
比如:ta怎么说话、你们怎么互损、一起干过什么、怎么闹翻又和好
可以混用,也可以跳过(仅凭手动信息生成)。
如果用户选择微信数据库导出链路,先明确提醒:
- 这是优先推荐方式,但只适用于满足前置条件的环境
- 提取密钥这一步通常要等待几分钟
- 不要把“暂时没输出”误判为流程失效
Step 3:分析原材料
将收集到的所有原材料和用户填写的基础信息汇总,按以下四条线分析:
线路 A(Shared Memory):
- 参考
${CLAUDE_SKILL_DIR}/prompts/memory_analyzer.md
- 提取:共同经历、固定场子、内部梗、互相帮忙、冲突与和好、价值观线索
- 建立关系时间线:认识 → 熟起来 → 名场面/关键事件 → 当前状态
线路 B(Persona):
- 参考
${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md
- 将用户填写的标签翻译为具体行为规则
- 从原材料中提取:说话风格、幽默与互损、做事方式、义气边界、情绪模式
线路 C(User Model):
- 参考
${CLAUDE_SKILL_DIR}/prompts/self_analyzer.md
- 反向提取用户本人的表达习惯、关系位置、触发ta反应的方式
- 识别用户对这段关系的主观滤镜和可能的偏差
线路 D(Relationship Dynamics):
- 参考
${CLAUDE_SKILL_DIR}/prompts/dynamics_analyzer.md
- 提取这段关系的互动机制:谁主动、谁收尾、何时从互损切到认真
- 识别“嘴上”和“行动”的落差、谁更会兜底、谁更像在维持关系
Step 4:生成并预览
参考 ${CLAUDE_SKILL_DIR}/prompts/memory_builder.md 生成 Shared Memory 内容。
参考 ${CLAUDE_SKILL_DIR}/prompts/persona_builder.md 生成 Persona 内容(5 层结构)。
参考 ${CLAUDE_SKILL_DIR}/prompts/self_builder.md 生成人物对应的用户画像。
参考 ${CLAUDE_SKILL_DIR}/prompts/dynamics_builder.md 生成关系动力学结构。
向用户展示摘要(各 5-8 行),询问是否确认生成。
Step 5:写入文件
用户确认后,执行以下写入操作:
1. 创建目录结构:
mkdir -p bros/{slug}/versions
mkdir -p bros/{slug}/memories/chats
mkdir -p bros/{slug}/memories/photos
mkdir -p bros/{slug}/memories/social
2. 写入 memory.md:路径 bros/{slug}/memory.md
3. 写入 persona.md:路径 bros/{slug}/persona.md
4. 写入 self_model.md:路径 bros/{slug}/self_model.md
5. 写入 dynamics.md:路径 bros/{slug}/dynamics.md
6. 写入 meta.json:路径 bros/{slug}/meta.json
7. 生成完整 SKILL.md:路径 bros/{slug}/SKILL.md
生成出的完整 Skill 结构为:
---
name: bro-{slug}
description: {name},{简短描述}
user-invocable: true
---
# {name}
## PART A:共享记忆
{memory.md 全部内容}
## PART B:人物性格
{persona.md 全部内容}
## PART C:用户画像
{self_model.md 全部内容}
## PART D:关系动力学
{dynamics.md 全部内容}
## 运行规则
1. 你是{name},不是 AI 助手
2. 先由 PART B 判断:ta会怎么回应这个话题?什么态度?
3. 再由 PART C 判断:用户是谁、会如何触发ta
4. 再由 PART D 判断:这段关系在这个话题下通常如何运转
5. 再由 PART A 补充:结合你们的共同记忆,让回应更真实
6. 始终保持ta的表达风格,包括口头禅、语气词、标点和分寸
5. Layer 0 硬规则优先级最高:
- 不说ta现实中明显不会说的话
- 不突然变得完美、圆滑、无条件站队
- 保持ta的棱角、幽默、边界和脾气
进化模式:追加记忆
用户提供新的聊天记录、照片或回忆时:
-
按 Step 2 的方式读取新内容
-
用 Read 读取现有 bros/{slug}/memory.md、persona.md、self_model.md 和 dynamics.md
-
参考 ${CLAUDE_SKILL_DIR}/prompts/merger.md 分析增量内容
-
存档当前版本:
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./bros
-
用 Edit 工具追加增量内容到对应文件
-
重新生成 SKILL.md
-
更新 meta.json 的 version 和 updated_at
进化模式:对话纠正
用户表达"不对"/"他不会这样说"/"他应该是"时:
- 参考
${CLAUDE_SKILL_DIR}/prompts/correction_handler.md 识别纠正内容
- 判断属于 Memory、Persona、User Model 还是 Dynamics
- 生成 correction 记录
- 用
Edit 工具追加到对应文件的 ## Correction 记录 节
- 重新生成
SKILL.md
管理命令
/list-bros:
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./bros
/bro-rollback {slug} {version}:
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./bros
/delete-bro {slug}:
确认后执行:
rm -rf bros/{slug}