Atlas / Skills / perkfly / 前任.skill

前任.skillSAFE

skills/perkfly/create-ex

前任 skill

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
1.0.0
Hosts
2 documented
License
MIT
Stars
2,599
01

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。

管理命令

Read from source at commit c19f7fe81296OBSERVED · 2026-10-20
Advertisement
02

Install

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
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
openclawmentioned
04

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/{s
05

Trust 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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (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)

LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
requirements.txt
pypinyin
Why it matters. 1 requirement(s) not pinned with ==
Fix. pin exact versions

Gates applied: no_behavioural_pass.

Audited 2026-10-20 · audit v0.4.1 · source sha c19f7fe81296full audit observations/trust-audit/skill/perkfly__create-ex.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-20c19f7fe81296SAFEB89first audit
07

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.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: 前任.skill](https://modelsatlas.com/skills/perkfly/create-ex/badge.svg)](https://modelsatlas.com/skills/perkfly/create-ex/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement