mcpField
C
create-ex

create-ex

github.com/perkflyAgent 工作流2.6k369 次安装30 周前更新
代码仓库

关于 create-ex

create-ex 是面向 Claude Code 的 Skill,可根据用户提供的信息和材料创建或更新前任人物设定与共同记忆。它支持聊天、照片和社交媒体材料导入,并提供纠正与版本管理流程。

主要功能

  1. 01创建人物设定与记忆 Skill
  2. 02导入聊天、照片和社交媒体记录
  3. 03解析微信、iMessage 和短信
  4. 04根据新材料或纠正更新 Skill
  5. 05列出并回滚版本

适用场景

  1. 01根据关系信息和聊天记录构建人物设定
  2. 02将照片或社交媒体记录加入共同记忆
  3. 03通过反馈纠正生成的行为设定
  4. 04列出或回滚现有 Skill

安装

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

$npx skills add https://github.com/perkfly/ex-skill --skill create-ex

安装后在 Claude Code 中输入/create-ex确认已加载。

包含的文件

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

INSTALL.md
LICENSE
README.md
README_EN.md
.gitignore
requirements.txt
exes/example_xiaomei/
meta.json
memories.md
persona.md
prompts/
intake.md
memories_builder.md
merger.md
memories_analyzer.md
correction_handler.md
persona_builder.md
persona_analyzer.md
tools/
photo_analyzer.py
skill_writer.py
sms_parser.py
social_media_parser.py
imessage_parser.py
version_manager.py
wechat_parser.py

详细介绍

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
解析 iMessageBash → 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
列出已有 SkillBash → 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:微信聊天记录
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):

python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --file {path} --target "{phone_or_name}" --output /tmp/imessage_out.txt

直接读取本机 chat.db(需要 Full Disk Access 权限):

python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --direct --target "{phone_or_name}" --output /tmp/imessage_out.txt

短信:

python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py --file {path} --target "{phone_or_name}" --output /tmp/sms_out.txt

方式 C:照片
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py --dir {photo_directory} --output /tmp/photo_timeline.txt

然后 Read /tmp/photo_timeline.txt 获取时间线。

具体照片的内容由用户选择后通过 Read 工具直接查看(Claude 原生支持图片)。


方式 D:社交媒体
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):

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 内容:

{
  "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 结构:

---
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/{slug}/
触发词:/{slug}(完整版)
        /{slug}-memories(仅共同记忆)
        /{slug}-persona(仅人物性格)

如果用起来感觉哪里不对,直接说"她不会这样",我来更新。

进化模式:追加文件

用户提供新文件或文本时:

  1. 按 Step 2 的方式读取新内容
  2. 用 Read 读取现有 exes/{slug}/memories.md 和 persona.md
  3. 参考 ${CLAUDE_SKILL_DIR}/prompts/merger.md 分析增量内容
  4. 存档当前版本(用 Bash):
    python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./exes
    
  5. 用 Edit 工具追加增量内容到对应文件
  6. 重新生成 SKILL.md(合并最新 memories.md + persona.md)
  7. 更新 meta.json 的 version 和 updated_at

进化模式:对话纠正

用户表达"不对"/"她不会这样"时:

  1. 参考 ${CLAUDE_SKILL_DIR}/prompts/correction_handler.md 识别纠正内容
  2. 判断属于 Memories(时间/地点/偏好)还是 Persona(性格/沟通)
  3. 生成 correction 记录
  4. 用 Edit 工具追加到对应文件的 ## Correction 记录 节
  5. 重新生成 SKILL.md

管理命令

/list-exes:

python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./exes

/ex-rollback {slug} {version}:

python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./exes

/delete-ex {slug}: 确认后执行:

rm -rf exes/{slug}


英文版

Ex.skill 创建器(Claude Code 版)

触发条件

当用户说出以下任意内容时激活:

  • /create-ex
  • “帮我创建一个 ex 技能”
  • “我想提炼一个 ex”
  • “新的 ex”
  • “为 XX 创建一个技能”

当用户说出以下内容时进入演进模式:

  • “我有新的聊天记录” / “追加”
  • “这不对” / “她不会这么做” / “她应该是……”
  • /update-ex {slug}

当用户说出 /list-exes 时,列出所有已生成的 ex。


工具使用规则

此 Skill 在 Claude Code 环境中运行,可使用以下工具:

任务工具
读取 PDF 文档Read 工具(原生支持 PDF)
读取图片截图Read 工具(原生支持图片)
读取 MD/TXT 文件Read 工具
解析微信聊天记录导出文件Bash → python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py
解析 iMessageBash → python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py
解析 SMSBash → 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
列出现有 SkillBash → python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list

基础目录:Skill 文件写入 ./exes/{slug}/(相对于项目目录)。 若使用全局路径,请使用 --base-dir ~/.openclaw/workspace/skills/exes。


主流程:创建新的 Ex Skill

步骤 1:收集基本信息(3 个问题)

问题顺序请参考 ${CLAUDE_SKILL_DIR}/prompts/intake.md。只问 3 个问题:

  1. 昵称 / 代号(必填)
  2. 基本信息(一句话:交往多久、如何相识、分手多久、她的职业)
    • 示例:交往 3 年,大学同学,1 年前分手,她是设计师
  3. 性格简介(一句话:MBTI、星座、依恋类型、恋爱特征、你对她的印象)
    • 示例:ENFP 双子座,焦虑型依恋,黏人,翻旧账,嘴上说不在乎但其实最在乎

除昵称外,其他信息均可跳过。请先总结并确认,再进入下一步。

步骤 2:导入素材

询问用户希望如何提供素材:

How would you like to provide source materials?

  [A] WeChat Chat Logs
      Exported txt/html files (from WechatExporter or similar tools)

  [B] iMessage / SMS
      From Mac's chat.db or exported files

  [C] Photos
      Specify a folder, auto-extract timeline (EXIF metadata)

  [D] Social Media
      Weibo/Douban/Xiaohongshu/Instagram exports

  [E] Upload Files
      PDF / screenshots / any text

  [F] Paste Text
      Copy-paste text directly

Can mix and match, or skip entirely (generate from manual info only).

选项 A:微信聊天记录
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py --file {path} --target "{name}" --output /tmp/wechat_out.txt

然后读取 /tmp/wechat_out.txt


选项 B:iMessage / SMS

iMessage(macOS):

python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --file {path} --target "{phone_or_name}" --output /tmp/imessage_out.txt

直接访问本地 chat.db(需要“完全磁盘访问权限”):

python3 ${CLAUDE_SKILL_DIR}/tools/imessage_parser.py --direct --target "{phone_or_name}" --output /tmp/imessage_out.txt

SMS:

python3 ${CLAUDE_SKILL_DIR}/tools/sms_parser.py --file {path} --target "{phone_or_name}" --output /tmp/sms_out.txt

选项 C:照片
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py --dir {photo_directory} --output /tmp/photo_timeline.txt

然后读取时间线文件 /tmp/photo_timeline.txt。

可通过 Read 工具查看具体照片内容(Claude 原生支持图片)。


选项 D:社交媒体
python3 ${CLAUDE_SKILL_DIR}/tools/social_media_parser.py \
  --file {path} \
  --platform {weibo|douban|xiaohongshu|instagram|text} \
  --target "{name}" \
  --output /tmp/social_out.txt

选项 E:上传文件
  • PDF / 图片:直接使用 Read 工具
  • Markdown / TXT:直接使用 Read 工具

选项 F:粘贴文本

直接将用户粘贴的内容作为文本素材使用。无需工具。


如果用户说“没有文件”或“跳过”,则仅根据步骤 1 中的手动信息生成 Skill。

第 3 步:分析源材料

整合所有收集到的材料和用户提供的信息,从两个方向进行分析:

方向 A(记忆技能):

  • 参阅 ${CLAUDE_SKILL_DIR}/prompts/memories_analyzer.md,了解提取维度
  • 提取:关系时间线、共同日常、偏好、冲突模式、情感动态

方向 B(角色设定):

  • 参阅 ${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md,了解提取维度
  • 将用户提供的标签转化为具体行为规则(参见标签转换表)
  • 从材料中提取:沟通风格、情感逻辑、关系行为
第 4 步:生成并预览

使用 ${CLAUDE_SKILL_DIR}/prompts/memories_builder.md 生成记忆技能内容。 使用 ${CLAUDE_SKILL_DIR}/prompts/persona_builder.md 生成角色设定内容(5 层结构)。

向用户展示摘要(每项 5-8 行),并询问:

Memories Summary:
  - Together: {duration}
  - Key moments: {N}
  - Daily rituals: {xxx}
  - Her preferences: {xxx}
  ...

Persona Summary:
  - Core personality: {xxx}
  - Communication style: {xxx}
  - Conflict pattern: {xxx}
  ...

Confirm generation? Or need adjustments?
第 5 步:写入文件

获得用户确认后,执行以下操作:

1. 创建目录结构(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-5. 使用 Write 工具写入 memories.md、persona.md、meta.json 和 SKILL.md。

告知用户:

✅ Ex Skill created!

Location: exes/{slug}/
Commands: /{slug} (full version)
          /{slug}-memories (memories only)
          /{slug}-persona (persona only)

If something feels off, just say "she wouldn't do that" and I'll update it.

演进模式:追加文件

用户提供新文件或文本时:

  1. 使用第 2 步的方法读取新内容
  2. Read 现有的 exes/{slug}/memories.md 和 persona.md
  3. 参阅 ${CLAUDE_SKILL_DIR}/prompts/merger.md 进行增量分析
  4. 归档当前版本(Bash):
    python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./exes
    
  5. 使用 Edit 工具将增量内容追加到相关文件
  6. 重新生成 SKILL.md(合并最新的 memories.md 和 persona.md)
  7. 更新 meta.json 的 version 和 updated_at

演进模式:对话纠正

用户表示“这不对”/“她不会这么做”时:

  1. 参阅 ${CLAUDE_SKILL_DIR}/prompts/correction_handler.md,识别纠正内容
  2. 判断其属于记忆(日期/地点/偏好)还是角色设定(性格/沟通)
  3. 生成纠正记录
  4. 使用 Edit 工具将其追加到相关文件的 ## Correction Log 部分
  5. 重新生成 SKILL.md

管理命令

/list-exes:

python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./exes

/ex-rollback {slug} {version}:

python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./exes

/delete-ex {slug}: 确认后:

rm -rf exes/{slug}

评论

支持 Markdown