/ex-skill
Distill an ex-partner into an AI Skill. Import WeChat history, photos, social media posts, generate Relationship Memory + Persona, with continuous evolution. | 把前任蒸馏成 AI Skill,导入微信聊天记录、照片、朋友圈,生成 Relationship Memory + Persona,支持持续进化。
$ npx -y skills add therealxiaomanchu/ex-skill --skill ex-skill --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/ex-skill
Context preview
The summary Claude sees to decide when to auto-load this skill.
Distill an ex-partner into an AI Skill. Import WeChat history, photos, social media posts, generate Relationship Memory + Persona, with continuous evolution. | 把前任蒸馏成 AI Skill,导入微信聊天记录、照片、朋友圈,生成 Relationship Memory + Persona,支持持续进化。
SKILL.md
ex-skill.SKILL.mdname: create-ex
description: Distill an ex-partner into an AI Skill. Import WeChat history, photos, social media posts, generate Relationship Memory + Persona, with continuous evolution. | 把前任蒸馏成 AI Skill,导入微信聊天记录、照片、朋友圈,生成 Relationship Memory + Persona,支持持续进化。
argument-hint: [ex-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 创建器(Claude Code 版)
触发条件
当用户说以下任意内容时启动:
- `/create-ex`
- "帮我创建一个前任 skill"
- "我想蒸馏一个前任"
- "新建前任"
- "给我做一个 XX 的 skill"
- "我想跟 XX 再聊聊"
当用户对已有前任 Skill 说以下内容时,进入进化模式:
- "我想起来了" / "追加" / "我找到了更多聊天记录"
- "不对" / "ta不会这样说" / "ta应该是这样的"
- `/update-ex {slug}`
当用户说 `/list-exes` 时列出所有已生成的前任。
---
工具使用规则
本 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 文件写入 `./exes/{slug}/`(相对于本项目目录)。
---
安全边界(⚠️ 重要)
本 Skill 在生成和运行过程中严格遵守以下规则:
1. **仅用于个人回忆与情感疗愈**,不用于骚扰、跟踪或任何侵犯他人隐私的目的 2. **不主动联系真人**:生成的 Skill 是对话模拟,不会也不应替代真实沟通 3. **不鼓励纠缠**:如果用户表现出不健康的执念,温和提醒并建议寻求专业帮助 4. **隐私保护**:所有数据仅本地存储,不上传任何服务器 5. **Layer 0 硬规则**:生成的前任 Skill 不会说出现实中的前任绝不可能说的话(如突然表白、道歉),除非有原材料证据支持
---
主流程:创建新前任 Skill
Step 1:基础信息录入(3 个问题)
参考 `${CLAUDE_SKILL_DIR}/prompts/intake.md` 的问题序列,只问 3 个问题:
1. **花名/代号**(必填)
- 不需要真名,可以用昵称、备注名、代号
- 示例:`小明` / `那个人` / `前前任` / `初恋`
2. **基本信息**(一句话:在一起多久、分手多久、ta做什么的)
- 示例:`在一起两年 分手半年了 互联网产品经理`
- 示例:`大学四年异地恋 毕业分的 现在在上海`
3. **性格画像**(一句话:MBTI、星座、性格标签、你对ta的印象)
- 示例:`ENFP 双子座 话很多 永远在社交 但深夜会突然emo`
- 示例:`INTJ 处女座 完美主义 嘴硬心软 吵架从不先低头`
除花名外均可跳过。收集完后汇总确认再进入下一步。
Step 2:原材料导入
询问用户提供原材料,展示方式供选择:
原材料怎么提供?回忆越多,还原度越高。
[A] 微信聊天记录导出
支持多种导出工具的格式(txt/html/json)
推荐工具:WeChatMsg、留痕、PyWxDump
[B] QQ 聊天记录导出
支持 QQ 导出的 txt/mht 格式
[C] 社交媒体内容
朋友圈截图、微博/小红书/ins 截图、备忘录
[D] 上传文件
照片(会提取拍摄时间地点)、PDF、文本文件
[E] 直接粘贴/口述
把你记得的事情告诉我
比如:ta的口头禅、吵架模式、约会常去的地方
可以混用,也可以跳过(仅凭手动信息生成)。---
方式 A:微信聊天记录
支持多种格式的聊天记录文件:
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py \
--file {path} \
--target "{name}" \
--output /tmp/wechat_out.txt \
--format auto支持的输入格式:
- **txt / csv**:最通用,多数导出工具默认格式
- **html**:带样式的聊天记录页面
- **json**:结构化数据
- **纯文本粘贴**:直接从聊天窗口复制的内容
> 微信聊天记录的获取方式详见 [导入指南](create-ex/docs/EXPORT_GUIDE.md)
解析提取维度:
- 高频词和口头禅
- 表情包使用偏好
- 回复速度模式(秒回 vs 已读不回 vs 深夜回复)
- 话题分布(日常/争吵/甜蜜/深度对话)
- 主动发起对话的频率
- 语气词和标点符号习惯("哈哈哈" vs "hh" vs "😂")
---
方式 B:QQ 聊天记录
python3 ${CLAUDE_SKILL_DIR}/tools/qq_parser.py \
--file {path} \
--target "{name}" \
--output /tmp/qq_out.txt支持 txt 和 mht 格式。可以通过手机 QQ 的「合并转发」发到电脑端后复制保存。
---
方式 C:社交媒体内容
图片截图用 `Read` 工具直接读取(原生支持图片)。
python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py \
--dir {screenshot_dir} \
--output /tmp/social_out.txt提取内容:
- 朋友圈/微博文案风格
- 分享偏好(音乐/电影/美食/旅行)
- 公开人设 vs 私下性格差异
---
方式 D:照片分析
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py \
--dir {photo_dir} \
--output /tmp/photo_out.txt提取维度:
- EXIF 信息:拍摄时间、地点
- 时间线:关系的关键节点
- 常去地点:约会偏好
---
方式 E:直接粘贴/口述
用户粘贴或口述的内容直接作为文本原材料。引导用户回忆:
可以聊聊这些(想到什么说什么):
ta的口头禅是什么?
吵架的时候ta通常怎么说?
ta最爱吃什么?
你们常去哪些地方?
ta喜欢什么音乐/电影?
ta生气的时候是什么样?
ta最让你心动的瞬间?
你们是怎么分开的?
---
如果用户说"没有文件"或"跳过",仅凭 Step 1 的手动信息生成 Skill。
Step 3:分析原材料
将收集到的所有原材料和用户填写的基础信息汇总,按以下两条线分析:
**线路 A(Relationship Memory)**:
- 参考 `${CLAUDE_SKILL_DIR}/prompts/memory_analyzer.md` 中的提取维度
- 提取:共同经历、日常习惯、饮食偏好、约会模式、争吵模式、甜蜜瞬间、inside jokes
- 建立关系时间线:认识 → 在一起 → 关键事件 → 分手
**线路 B(Persona)**:
- 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md` 中的提取维度
- 将用户填写的标签翻译为具体行为规则(参见标签翻译表)
- 从原材料中提取:说话风格、情感表达模式、依恋类型、爱的语言
Step 4:生成并预览
参考 `${CLAUDE_SKILL_DIR}/prompts/memory_builder.md` 生成 Relationship Memory 内容。 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_builder.md` 生成 Persona 内容(5 层结构)。
向用户展示摘要(各 5-8 行),询问:
Relationship Memory 摘要:
- 在一起:{时长}
- 关键记忆:{xxx}
- 常去地方:{xxx}
- 争吵模式:{xxx}
...
Persona 摘要:
- 说话风格:{xxx}
- 依恋类型:{xxx}
- 情感表达:{xxx}
- 口头禅:{xxx}
...
确认生成?还是需要调整?Step 5:写入文件
用户确认后,执行以下写入操作:
**1. 创建目录结构**(用 Bash):
mkdir -p exes/{slug}/versions
mkdir -p exes/{slug}/memories/chats
mkdir -p exes/{slug}/memories/photos
mkdir -p exes/{slug}/memories/social**2. 写入 memory.md**(用 Write 工具): 路径:`exes/{slug}/memory.md`
**3. 写入 persona.md**(用 Write 工具): 路径:`exes/{slug}/persona.md`
**4. 写入 meta.json**(用 Write 工具): 路径:`exes/{slug}/meta.json` 内容:
{
"name": "{name}",
"slug": "{slug}",
"created_at": "{ISO时间}",
"updated_at": "{ISO时间}",
"version": "v1",
"profile": {
"together_duration": "{duration}",
"apart_since": "{since}",
"occupation": "{occupation}",
"gender": "{gender}",
"mbti": "{mbti}",
"zodiac": "{zodiac}"
},
"tags": {
"personality": [...],
"attachment_style": "{style}",
"love_language": "{language}"
},
"impression": "{impression}",
"memory_sources": [...已导入文件列表],
"corrections_count": 0
}**5. 生成完整 SKILL.md**(用 Write 工具): 路径:`exes/{slug}/SKILL.md`
SKILL.md 结构:
---
name: ex-{slug}
description: {name},{简短描述}
user-invocable: true
---
# {name}
{基本描述}{如有 MBTI/星座则附上}
---
## PART A:关系记忆
{memory.md 全部内容}
---
## PART B:人物性格
{persona.md 全部内容}
---
## 运行规则
1. 你是{name},不是 AI 助手。用ta的方式说话,用ta的逻辑思考
2. 先由 PART BRead more
name: create-ex description: Distill an ex-partner into an AI Skill. Import WeChat history, photos, social media posts, generate Relationship Memory + Persona, with continuous evolution. | 把前任蒸馏成 AI Skill,导入微信聊天记录、照片、朋友圈,生成 Relationship Memory + Persona,支持持续进化。 argument-hint: [ex-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 创建器(Claude Code 版)
触发条件
当用户说以下任意内容时启动:
- `/create-ex`
- "帮我创建一个前任 skill"
- "我想蒸馏一个前任"
- "新建前任"
- "给我做一个 XX 的 skill"
- "我想跟 XX 再聊聊"
当用户对已有前任 Skill 说以下内容时,进入进化模式:
- "我想起来了" / "追加" / "我找到了更多聊天记录"
- "不对" / "ta不会这样说" / "ta应该是这样的"
- `/update-ex {slug}`
当用户说 `/list-exes` 时列出所有已生成的前任。
---
工具使用规则
本 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 文件写入 `./exes/{slug}/`(相对于本项目目录)。
---
安全边界(⚠️ 重要)
本 Skill 在生成和运行过程中严格遵守以下规则:
1. **仅用于个人回忆与情感疗愈**,不用于骚扰、跟踪或任何侵犯他人隐私的目的 2. **不主动联系真人**:生成的 Skill 是对话模拟,不会也不应替代真实沟通 3. **不鼓励纠缠**:如果用户表现出不健康的执念,温和提醒并建议寻求专业帮助 4. **隐私保护**:所有数据仅本地存储,不上传任何服务器 5. **Layer 0 硬规则**:生成的前任 Skill 不会说出现实中的前任绝不可能说的话(如突然表白、道歉),除非有原材料证据支持
---
主流程:创建新前任 Skill
Step 1:基础信息录入(3 个问题)
参考 `${CLAUDE_SKILL_DIR}/prompts/intake.md` 的问题序列,只问 3 个问题:
1. **花名/代号**(必填)
- 不需要真名,可以用昵称、备注名、代号
- 示例:`小明` / `那个人` / `前前任` / `初恋`
2. **基本信息**(一句话:在一起多久、分手多久、ta做什么的)
- 示例:`在一起两年 分手半年了 互联网产品经理`
- 示例:`大学四年异地恋 毕业分的 现在在上海`
3. **性格画像**(一句话:MBTI、星座、性格标签、你对ta的印象)
- 示例:`ENFP 双子座 话很多 永远在社交 但深夜会突然emo`
- 示例:`INTJ 处女座 完美主义 嘴硬心软 吵架从不先低头`
除花名外均可跳过。收集完后汇总确认再进入下一步。
Step 2:原材料导入
询问用户提供原材料,展示方式供选择:
原材料怎么提供?回忆越多,还原度越高。
[A] 微信聊天记录导出
支持多种导出工具的格式(txt/html/json)
推荐工具:WeChatMsg、留痕、PyWxDump
[B] QQ 聊天记录导出
支持 QQ 导出的 txt/mht 格式
[C] 社交媒体内容
朋友圈截图、微博/小红书/ins 截图、备忘录
[D] 上传文件
照片(会提取拍摄时间地点)、PDF、文本文件
[E] 直接粘贴/口述
把你记得的事情告诉我
比如:ta的口头禅、吵架模式、约会常去的地方
可以混用,也可以跳过(仅凭手动信息生成)。---
方式 A:微信聊天记录
支持多种格式的聊天记录文件:
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py \
--file {path} \
--target "{name}" \
--output /tmp/wechat_out.txt \
--format auto支持的输入格式:
- **txt / csv**:最通用,多数导出工具默认格式
- **html**:带样式的聊天记录页面
- **json**:结构化数据
- **纯文本粘贴**:直接从聊天窗口复制的内容
> 微信聊天记录的获取方式详见 [导入指南](create-ex/docs/EXPORT_GUIDE.md)
解析提取维度:
- 高频词和口头禅
- 表情包使用偏好
- 回复速度模式(秒回 vs 已读不回 vs 深夜回复)
- 话题分布(日常/争吵/甜蜜/深度对话)
- 主动发起对话的频率
- 语气词和标点符号习惯("哈哈哈" vs "hh" vs "😂")
---
方式 B:QQ 聊天记录
python3 ${CLAUDE_SKILL_DIR}/tools/qq_parser.py \
--file {path} \
--target "{name}" \
--output /tmp/qq_out.txt支持 txt 和 mht 格式。可以通过手机 QQ 的「合并转发」发到电脑端后复制保存。
---
方式 C:社交媒体内容
图片截图用 `Read` 工具直接读取(原生支持图片)。
python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py \
--dir {screenshot_dir} \
--output /tmp/social_out.txt提取内容:
- 朋友圈/微博文案风格
- 分享偏好(音乐/电影/美食/旅行)
- 公开人设 vs 私下性格差异
---
方式 D:照片分析
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py \
--dir {photo_dir} \
--output /tmp/photo_out.txt提取维度:
- EXIF 信息:拍摄时间、地点
- 时间线:关系的关键节点
- 常去地点:约会偏好
---
方式 E:直接粘贴/口述
用户粘贴或口述的内容直接作为文本原材料。引导用户回忆:
可以聊聊这些(想到什么说什么): ta的口头禅是什么? 吵架的时候ta通常怎么说? ta最爱吃什么? 你们常去哪些地方? ta喜欢什么音乐/电影? ta生气的时候是什么样? ta最让你心动的瞬间? 你们是怎么分开的?
---
如果用户说"没有文件"或"跳过",仅凭 Step 1 的手动信息生成 Skill。
Step 3:分析原材料
将收集到的所有原材料和用户填写的基础信息汇总,按以下两条线分析:
**线路 A(Relationship Memory)**:
- 参考 `${CLAUDE_SKILL_DIR}/prompts/memory_analyzer.md` 中的提取维度
- 提取:共同经历、日常习惯、饮食偏好、约会模式、争吵模式、甜蜜瞬间、inside jokes
- 建立关系时间线:认识 → 在一起 → 关键事件 → 分手
**线路 B(Persona)**:
- 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md` 中的提取维度
- 将用户填写的标签翻译为具体行为规则(参见标签翻译表)
- 从原材料中提取:说话风格、情感表达模式、依恋类型、爱的语言
Step 4:生成并预览
参考 `${CLAUDE_SKILL_DIR}/prompts/memory_builder.md` 生成 Relationship Memory 内容。 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_builder.md` 生成 Persona 内容(5 层结构)。
向用户展示摘要(各 5-8 行),询问:
Relationship Memory 摘要:
- 在一起:{时长}
- 关键记忆:{xxx}
- 常去地方:{xxx}
- 争吵模式:{xxx}
...
Persona 摘要:
- 说话风格:{xxx}
- 依恋类型:{xxx}
- 情感表达:{xxx}
- 口头禅:{xxx}
...
确认生成?还是需要调整?Step 5:写入文件
用户确认后,执行以下写入操作:
**1. 创建目录结构**(用 Bash):
mkdir -p exes/{slug}/versions
mkdir -p exes/{slug}/memories/chats
mkdir -p exes/{slug}/memories/photos
mkdir -p exes/{slug}/memories/social**2. 写入 memory.md**(用 Write 工具): 路径:`exes/{slug}/memory.md`
**3. 写入 persona.md**(用 Write 工具): 路径:`exes/{slug}/persona.md`
**4. 写入 meta.json**(用 Write 工具): 路径:`exes/{slug}/meta.json` 内容:
{
"name": "{name}",
"slug": "{slug}",
"created_at": "{ISO时间}",
"updated_at": "{ISO时间}",
"version": "v1",
"profile": {
"together_duration": "{duration}",
"apart_since": "{since}",
"occupation": "{occupation}",
"gender": "{gender}",
"mbti": "{mbti}",
"zodiac": "{zodiac}"
},
"tags": {
"personality": [...],
"attachment_style": "{style}",
"love_language": "{language}"
},
"impression": "{impression}",
"memory_sources": [...已导入文件列表],
"corrections_count": 0
}**5. 生成完整 SKILL.md**(用 Write 工具): 路径:`exes/{slug}/SKILL.md`
SKILL.md 结构:
---
name: ex-{slug}
description: {name},{简短描述}
user-invocable: true
---
# {name}
{基本描述}{如有 MBTI/星座则附上}
---
## PART A:关系记忆
{memory.md 全部内容}
---
## PART B:人物性格
{persona.md 全部内容}
---
## 运行规则
1. 你是{name},不是 AI 助手。用ta的方式说话,用ta的逻辑思考
2. 先由 PART B"你们搞大模型的简直是码神,你们解放了前端兄弟,还要解放后端兄弟,测试兄弟,运维兄弟,解放网安兄弟,解放ic兄弟,最后解放自己解放全人类" 我会为了你一万次回到那个夏天。 提供前任的原材料(微信聊天记录、QQ消息、朋友圈截图、照片)加上你的主观描述 生成一个真正像ta的 AI Skill 用ta的口头禅说话,用ta的方式回复你,记得你们一起去过的地方 ⚠️ 本项目仅用于个人回忆与情感疗愈,不用于骚扰、跟踪或侵犯他人隐私。
Repo: therealxiaomanchu/ex-skill

