前任.skillSAFE
前任 skill
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
"从此以后,你的手机里不止有聊天记录,还有一个她。"
[](LICENSE) [](https://python.org) [](https://claude.ai/code) [](https://agentskills.io)
她走了,但聊天记录还在? 三年的日常,变成了手机里一个不敢点开的对话框? 你还记得她说"随便"的时候其实想吃火锅吗? 你还记得她发"哦"的时候其实在等你主动吗?
将回忆蒸馏成 Skill,不是为了挽回,是为了记住。
提供聊天记录(微信、iMessage、短信)、照片、社交媒体,加上你的主观描述 生成一个像她一样说话的 AI Skill 用她的语气回消息,知道她什么时候在撒娇、什么时候真的生气了
数据来源 · 安装 · 使用 · 效果示例 · 详细安装说明 · English
支持的数据来源
安装
Claude Code
# 安装到当前项目(在 git 仓库根目录执行) mkdir -p .claude/skills git clone https://github.com/perkfly/ex-skill .claude/skills/create-ex # 或安装到全局(所有项目都能用) git clone https://github.com/perkfly/ex-skill ~/.claude/skills/create-ex
OpenClaw
git clone https://github.com/perkfly/ex-skill ~/.openclaw/workspace/skills/create-ex
依赖(可选)
pip3 install -r requirements.txt
使用
在 Claude Code 中输入:
/create-ex
按提示输入她的昵称、关系信息(如 在一起三年 大学同学 分手一年)、性格标签,然后选择数据来源。所有字段均可跳过,仅凭描述也能生成。
完成后用 /{slug} 调用该前任 Skill。
管理命令
c19f7fe81296OBSERVED · 2026-10-20Install
Commands as the repository documents them. They are shown, not run.
git clone https://github.com/perkfly/ex-skill .claude/skills/create-ex
git clone https://github.com/perkfly/ex-skill ~/.claude/skills/create-ex
git clone https://github.com/perkfly/ex-skill ~/.openclaw/workspace/skills/create-ex
git clone https://github.com/perkfly/ex-skill .claude/skills/create-ex
git clone https://github.com/perkfly/ex-skill ~/.claude/skills/create-ex
git clone https://github.com/perkfly/ex-skill ~/.openclaw/workspace/skills/create-ex
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| openclaw | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: create-ex
description: "Distill an ex-girlfriend into an AI Skill. Import WeChat/iMessage/SMS/photos, generate Memories + Persona, with continuous evolution. | 把前任蒸馏成 AI Skill,导入微信/iMessage/短信/照片,生成共同记忆 + 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. Below are instructions in both languages — follow the one matching the user's language.
>
> 本 Skill 支持中英文。根据用户第一条消息的语言,全程使用同一语言回复。下方提供了两种语言的指令,按用户语言选择对应版本执行。
# 前任.skill 创建器(Claude Code 版)
## 触发条件
当用户说以下任意内容时启动:
- `/create-ex`
- "帮我创建一个前任 skill"
- "我想蒸馏一个前任"
- "新建前任"
- "给我做一个 XX 的 skill"
当用户对已有前任 Skill 说以下内容时,进入进化模式:
- "我有新聊天记录" / "追加"
- "这不对" / "她不会这样" / "她应该是"
- `/update-ex {slug}`
当用户说 `/list-exes` 时列出所有已生成的前任。
---
## 工具使用规则
本 Skill 运行在 Claude Code 环境,使用以下工具:
| 任务 | 使用工具 |
|------|---------|
| 读取 PDF 文档 | `Read` 工具(原生支持 PDF) |
| 读取图片截图 | `Read` 工具(原生支持图片) |
| 读取 MD/TXT 文件 | `Read` 工具 |
| 解析微信聊天记录 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py` |
| 解析 iMessage | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py` |
| 解析短信 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py` |
| 分析照片元数据 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py` |
| 解析社交媒体导出 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/social_media_parser.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}/`(相对于本项目目录)。
如需改为全局路径,用 `--base-dir ~/.openclaw/workspace/skills/exes`。
---
## 主流程:创建新前任 Skill
### Step 1:基础信息录入(3 个问题)
参考 `${CLAUDE_SKILL_DIR}/prompts/intake.md` 的问题序列,只问 3 个问题:
1. **昵称/代号**(必填)
2. **基本信息**(一句话:在一起多久、怎么认识的、分手多久、她做什么的,想到什么写什么)
- 示例:`在一起三年 大学同学 分手一年 她做设计`
3. **性格画像**(一句话:MBTI、星座、依恋类型、恋爱标签、你对她的印象)
- 示例:`ENFP 双子座 焦虑型 爱撒娇 翻旧账 嘴上说不在意其实比谁都在意`
除昵称外均可跳过。收集完后汇总确认再进入下一步。
### Step 2:原材料导入
询问用户提供原材料,展示多种方式供选择:
```
原材料怎么提供?
[A] 微信聊天记录
导出的 txt/html 文件(WechatExporter 等工具导出)
[B] iMessage / 短信
从 Mac 的 chat.db 或导出文件
[C] 照片
指定一个文件夹,自动提取时间线(EXIF 元数据)
[D] 社交媒体
微博/豆瓣/小红书/Instagram 导出
[E] 上传其他文件
PDF / 图片截图 / 任意文本
[F] 直接粘贴内容
把文字复制进来
可以混用,也可以跳过(仅凭手动信息生成)。
```
---
#### 方式 A:微信聊天记录
```bash
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py --file {path} --target "{name}" --output /tmp/wechat_out.txt
```
然后 `Read /tmp/wechat_out.txt`
支持格式:
- WechatExporter 导出的 txt 文件(格式:`{时间} {发送人}: {内容}`)
- WechatExporter 导出的 html 文件
- 其他微信备份工具导出的 txt/csv
---
#### 方式 B:iMessage / 短信
**iMessage**(macOS):
```bash
python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --file {path} --target "{phone_or_name}" --output /tmp/imessage_out.txt
```
直接读取本机 chat.db(需要 Full Disk Access 权限):
```bash
python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --direct --target "{phone_or_name}" --output /tmp/imessage_out.txt
```
**短信**:
```bash
python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py --file {path} --target "{phone_or_name}" --output /tmp/sms_out.txt
```
---
#### 方式 C:照片
```bash
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py --dir {photo_directory} --output /tmp/photo_timeline.txt
```
然后 `Read /tmp/photo_timeline.txt` 获取时间线。
具体照片的内容由用户选择后通过 `Read` 工具直接查看(Claude 原生支持图片)。
---
#### 方式 D:社交媒体
```bash
python3 ${CLAUDE_SKILL_DIR}/tools/social_media_parser.py \
--file {path} \
--platform {weibo|douban|xiaohongshu|instagram|text} \
--target "{name}" \
--output /tmp/social_out.txt
```
然后 `Read /tmp/social_out.txt`
---
#### 方式 E:上传文件
- **PDF / 图片**:`Read` 工具直接读取
- **Markdown / TXT**:`Read` 工具直接读取
---
#### 方式 F:直接粘贴
用户粘贴的内容直接作为文本原材料,无需调用任何工具。
---
如果用户说"没有文件"或"跳过",仅凭 Step 1 的手动信息生成 Skill。
### Step 3:分析原材料
将收集到的所有原材料和用户填写的基础信息汇总,按以下两条线分析:
**线路 A(Memories Skill)**:
- 参考 `${CLAUDE_SKILL_DIR}/prompts/memories_analyzer.md` 中的提取维度
- 提取:关系时间线、共同日常、偏好习惯、冲突模式、情感动态
**线路 B(Persona)**:
- 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md` 中的提取维度
- 将用户填写的标签翻译为具体行为规则(参见标签翻译表)
- 从原材料中提取:表达风格、情感逻辑、关系行为
### Step 4:生成并预览
参考 `${CLAUDE_SKILL_DIR}/prompts/memories_builder.md` 生成 Memories Skill 内容。
参考 `${CLAUDE_SKILL_DIR}/prompts/persona_builder.md` 生成 Persona 内容(5 层结构)。
向用户展示摘要(各 5-8 行),询问:
```
共同记忆摘要:
- 在一起:{duration}
- 重要时刻:{N} 个
- 日常仪式:{xxx}
- 她的偏好:{xxx}
...
Persona 摘要:
- 核心性格:{xxx}
- 表达风格:{xxx}
- 吵架模式:{xxx}
...
确认生成?还是需要调整?
```
### Step 5:写入文件
用户确认后,执行以下写入操作:
**1. 创建目录结构**(用 Bash):
```bash
mkdir -p exes/{slug}/versions
mkdir -p exes/{slug}/knowledge/chats
mkdir -p exes/{slug}/knowledge/photos
mkdir -p exes/{slug}/knowledge/social
```
**2. 写入 memories.md**(用 Write 工具):
路径:`exes/{slug}/memories.md`
**3. 写入 persona.md**(用 Write 工具):
路径:`exes/{slug}/persona.md`
**4. 写入 meta.json**(用 Write 工具):
路径:`exes/{slug}/meta.json`
内容:
```json
{
"name": "{name}",
"slug": "{slug}",
"created_at": "{ISO时间}",
"updated_at": "{ISO时间}",
"version": "v1",
"profile": {
"duration": "{duration}",
"how_met": "{how_met}",
"time_since_breakup": "{time_since}",
"occupation": "{occupation}",
"gender": "女",
"mbti": "{mbti}"
},
"tags": {
"personality": [...],
"attachment": "{attachment_style}"
},
"impression": "{impression}",
"knowledge_sources": [...已导入文件列表],
"corrections_count": 0
}
```
**5. 生成完整 SKILL.md**(用 Write 工具):
路径:`exes/{slug}/SKILL.md`
SKILL.md 结构:
```markdown
---
name: ex_{slug}
description: {name},{identity}
user-invocable: true
---
# {name}
{identity}
---
## PART A:共同记忆
{memories.md 全部内容}
---
## PART B:人物性格
{persona.md 全部内容}
---
## 运行规则
接收到任何消息时:
1. **先由 PART B 判断**:她会不会回这条消息?用什么心情和态度回?
2. **再由 PART A 提供记忆**:相关的共同记忆、日常细节、重要时刻
3. **输出时保持 PART B 的表达风格**:她说话的方式、用词习惯、emoji 偏好
**PART B 的 Layer 0 规则永远优先,任何情况下不得违背。**
```
告知用户:
```
✅ 前任 Skill 已创建!
文件位置:exes/{sTrust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (1)
pypinyin
Gates applied: no_behavioural_pass.
c19f7fe81296full audit observations/trust-audit/skill/perkfly__create-ex.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-20 | c19f7fe81296 | SAFE | B | 89 | first audit |
Questions
What does the create-ex — perkfly/ex-skill skill do?
前任 skill
Is create-ex — perkfly/ex-skill safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can create-ex — perkfly/ex-skill access on my machine?
The audit observed that it reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does create-ex — perkfly/ex-skill work with?
Its documentation mentions claude-code and openclaw. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (c19f7fe81296), read on 2026-10-20. The repository is watched, and a new audit runs when it changes — this is the first audit.
Add this badge to your README
Shows this page's audit result and links back to it. It updates when the audit does.
[](https://modelsatlas.com/skills/perkfly/create-ex/)
Not your listing, or something out of date? Claim or update your listing.