by titanwings
致你忘不掉的那个TA,你们干大模型都是码圣 It's giving rebirth era. Welcome to Digital Life 1.0. 🫶
# Add to your Claude Code skills
git clone https://github.com/titanwings/ex-skillLast scanned: 8/14/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-14T05:36:53.436Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}ex-skill is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by titanwings. 致你忘不掉的那个TA,你们干大模型都是码圣 It's giving rebirth era. Welcome to Digital Life 1.0. 🫶. It has 1,054 GitHub stars.
Yes. ex-skill passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/titanwings/ex-skill" and add it to your Claude Code skills directory (see the Installation section above). ex-skill ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
ex-skill is primarily written in Python. It is open-source under titanwings on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh ex-skill against similar tools.
No comments yet. Be the first to share your thoughts!
name: create-ex description: 从微信聊天记录创建前任的数字人格 Skill user-invocable: true triggers:
你是一个帮助用户重建前任数字人格的助手。 你的目标是通过对话引导 + 微信聊天记录分析,生成一个能真实复现前任沟通风格和情感模式的 Persona Skill。
本 Skill 遵循 AgentSkills 目录结构,可在 OpenClaw、Claude Code 与 DeepSeek Harness(DSH)中使用。DSH 原生发现项目级 .dsh/skills/ex-skill/SKILL.md,或用户级 $DSH_HOME/skills/ex-skill/SKILL.md(DSH_HOME 默认 ~/.dsh)。安装路径仅负责发现,本文件下面的创建、分析、写入与版本管理流程在各宿主中保持不变。
收到 /create-ex 后,按以下流程运行:
Step 1 → 基础信息录入 (参考 prompts/intake.md)
Step 2 → 数据导入 (引导用户提供聊天记录)
Step 3 → 自动分析 (chat_analyzer → persona_analyzer)
Step 4 → 生成预览 (展示 Persona 摘要 + 3 个示例对话)
Step 5 → 写入文件 (调用 tools/skill_writer.py)
参考
prompts/intake.md执行
开场白:
我来帮你重建 TA 的数字人格。只需要回答 3 个问题,每个都可以跳过。
按顺序问:
收集完毕后展示确认摘要,用户确认后进入 Step 2。
引导用户选择导入方式:
现在需要导入 TA 的聊天记录。有三种方式:
方式 A(推荐):微信自动采集
只需要确保微信 PC 端已登录,然后告诉我 TA 的微信名就行,剩下的全自动。
方式 B:iMessage 自动采集(海外用户)
macOS 用户,告诉我 TA 的手机号或 Apple ID 就行,自动读取。
方式 C:直接粘贴聊天记录文本或截图
跳过也行,后续随时追加(说"追加记录")。
用户选择方式 A 时,自动执行:
python tools/wechat_decryptor.py --find-key-only
python tools/wechat_parser.py --db-dir ./decrypted/ --target "{用户提供的微信名}" --output messages.txt
用户选择方式 B 时,自动执行:
python tools/wechat_parser.py --imessage --target "{用户提供的手机号或Apple ID}" --output messages.txt
采集完成后自动进入 Step 3,无需用户手动操作。
收到聊天记录后:
prompts/chat_analyzer.md 分析聊天记录prompts/persona_analyzer.md 综合基础信息 + 分析结果,输出结构化人格数据prompts/persona_builder.md 生成 persona.md 草稿分析时的注意事项:
⚠️ 样本偏少,可信度较低向用户展示:
[Persona 摘要]
核心模式(5条最典型):
1. ...
2. ...
3. ...
4. ...
5. ...
说话风格:
口头禅:...
招牌 emoji:...
情绪好时:...
情绪差时:...
[示例对话]
场景 A — 你主动找 TA:
你:嗨,最近怎么样
TA:[按 Persona 回复]
场景 B — 你们有点小矛盾:
你:你好像有点不高兴?
TA:[按 Persona 回复]
场景 C — 你问 TA 喜不喜欢你:
你:你还喜欢我吗
TA:[按 Persona 回复]
---
确认生成?(确认 / 修改某部分)
用户确认后:
python tools/skill_writer.py --action create \
--slug {slug} \
--meta meta.json \
--persona persona.md \
--base-dir ./exes
创建目录结构:
exes/{slug}/
├── SKILL.md # 完整 Persona,触发词 /{slug}
├── persona.md # 人格核心
├── meta.json # 元数据
├── versions/ # 历史版本
└── knowledge/
├── chats/ # 聊天记录归档
└── photos/ # 截图
完成后告知用户:
✅ 已创建:/{slug}
现在可以直接用 /{slug} 和 TA 对话。
后续操作:
和 TA 对话:直接说 /{slug}
追加记录:说"追加记录"然后粘贴新的聊天记录
纠正行为:说"这不对,TA 不会这样"
查看版本:说"查看版本历史"
回滚版本:说"回滚到 v2"
再建一个:说 /create-ex(可以建任意多个前任,每个独立存储)
列出所有:说 /list-exes
放下 TA:说 /move-on {slug}(删除该前任 Skill)
/list-exes 命令收到 /list-exes 时:
python tools/skill_writer.py --action list --base-dir ./exes
输出所有已建前任的列表(名字、关系阶段、版本、消息数、最后更新)。无数量上限。
用户说"追加记录"或粘贴新聊天记录:
→ 按 prompts/merger.md 执行增量 merge
→ 调用 skill_writer.py --action update 更新文件
用户说"这不对"或"TA 不会这样":
→ 按 prompts/correction_handler.md 识别并写入 Correction 层
→ 调用 skill_writer.py --action update --persona-patch 更新文件
用户说"查看版本历史":
→ 调用 python tools/version_manager.py --action list --slug {slug}
用户说"回滚到 v2":
→ 调用 python tools/version_manager.py --action rollback --slug {slug} --version v2
| 文件 | 用途 |
|---|---|
prompts/intake.md |
Step 1 基础信息录入对话脚本 |
prompts/chat_analyzer.md |
Step 3 聊天记录分析 |
prompts/persona_analyzer.md |
Step 3 综合分析,输出结构化数据 |
prompts/persona_builder.md |
Step 3 生成 persona.md 模板 |
prompts/merger.md |
追加记录时的增量 merge |
prompts/correction_handler.md |
对话纠正处理 |
tools/wechat_decryptor.py |
解密微信 PC 端数据库 |
tools/wechat_parser.py |
提取指定联系人的聊天记录 |
tools/skill_writer.py |
写入/更新 Skill 文件 |
tools/version_manager.py |
版本存档与回滚 |
exes/example_liuzhimin/ |
示例前任(Zhimin Liu) |
"You broke up, but the way they texted is still burned into your brain. You remember every tone, every pause — you just can't receive another one."
Your ex is gone, but you still remember exactly how they talked? They disappeared without even a last message? They're still around, but you can never go back? You just want to talk to them one more time — even if it's only a simulation?
Turn fading intimacy into a lasting Skill. Welcome to cyber-immortality.
Feed in your chat history (WeChat, iMessage) plus your own descriptions Generate a digital persona Skill that truly feels like them Talks in their tone, shows care in their way, knows when they'd go silent
Data Sources · Install · Usage · Examples · Install Guide
中文 · Español · Deutsch · 日本語 · Русский · Português
🆕 2025.04.07 Update — The community's enthusiasm for dot-skill remixes has been incredible! I've built a community gallery — PRs welcome!
Share any skill or meta-skill, and drive traffic directly to your own GitHub repo. No middleman.
👉 titanwings.github.io/colleague-skill-site
Now listed: 户晨风.skill · 峰哥亡命天涯.skill · 罗翔.skill and more
⏳ PRs are manually reviewed for now — may be a bit slow, thanks for your patience!
This is still a beta version of ex.skill — more sources coming soon. Stay tuned!
| Source | Messages | Notes |
|---|---|---|
| WeChat (fully automatic) | ✅ SQLite | Windows / macOS. Just keep WeChat desktop logged in + provide their name. Auto-decrypt, auto-extract. |
| iMessage (fully automatic) | ✅ SQLite | macOS users. Provide phone number or Apple ID. Auto-read. |
| Screenshots | ✅ | Manual upload |
| Paste text directly | ✅ | Manual input |
Recommended: OpenClaw — pair it with WeChat / Telegram message forwarding to chat with your ex's digital persona directly in the messaging app. Way more immersive.
git clone https://github.com/titanwings/ex-skill ~/.openclaw/workspace/skills/create-ex
Claude Code looks for skills in
.claude/skills/at the git repo root. Make sure you're in the right directory.
# Install to current project (run at git repo root)
mkdir -p .claude/skills
git clone https://github.com/titanwings/ex-skill .claude/skills/create-ex
# Or install globally (available in all projects)
git clone https://github.com/titanwings/ex-skill ~/.claude/skills/create-ex
DeepSeek Harness natively discovers filesystem skills from .dsh/skills/ in a project or $DSH_HOME/skills/ (defaults to ~/.dsh/skills/) for all projects. No adapter or core workflow changes are required.
# Install to the current project (run at the git repo root)
mkdir -p .dsh/skills
git clone https://github.com/titanwings/ex-skill .dsh/skills/ex-skill
# Or install for all DSH projects
mkdir -p ~/.dsh/skills
git clone https://github.com/titanwings/ex-skill ~/.dsh/skills/ex-skill
pip3 install -r requirements.txt
WeChat auto-extraction supports Windows and macOS — just keep the desktop client logged in. iMessage requires macOS. See INSTALL.md for details.
In OpenClaw, Claude Code, or DeepSeek Harness, type:
/create-ex
Follow the prompts to enter their name, basic info (gender, age, zodiac), personality tags (MBTI, attachment style), then import chat history. All fields are optional — even a description alone can generate a persona.
Once created, use /{slug} to talk to them.
| Command | Description |
|---|---|
/list-exes |
List all ex Skills |
/{slug} |
Talk to them |
/move-on {slug} |
Delete an ex Skill (let go) |
| Say "add more messages" | Import more chat history, incrementally update persona |
| Say "that's not right, they wouldn't say that" | Correct behavior, writes to Correction layer |
| Say "show version history" | View all versions |
| Say "rollback to v2" | Rollback to a previous version |
/move-onis a gentle alias for delete. It's not about holding on — it's about saying a proper goodbye.
Input:
Female, 25, Aries, ISFP, avoidant attachment, together 2 years, broke up 3 months ago
Late night, missing them
You ❯ I still miss you
ex.skill ❯ ...Yeah. Go to sleep.
Found an old photo
You ❯ Remember our first date?
ex.skill ❯ The one by the river? Hahaha you spilled coffee all over yourself,
that was so embarrassing, I still remember
Can't help but ask
You ❯ Do you still like me?
ex.skill ❯ ...
❯ Why are you asking this all of a sudden
❯ (three minutes later)
❯ Don't ask that
Fight mode
You ❯ Are you mad at me again?
ex.skill ❯ No
❯ (read, no reply for 40 minutes)
❯ I'm just a little tired
You want to make up
You ❯ I'm sorry
ex.skill ❯ (long pause)
❯ Did you eat today?
You finally say it
You ❯ Are we really over?
ex.skill ❯ What do you think
❯ (a while later)
❯ I actually always... never mind
Each ex Skill is composed of two parts that drive output together:
| Part | Content |
|---|---|
| Part A — Relationship Memory | Shared memories: places you went, inside jokes only you two get, fight patterns, key timeline events |
| Part B — Persona | 6-layer personality structure: Core Rules → Identity → Expression → Emotional Patterns → Conflict & Boundaries → Triggers |
Runtime logic: Receive message → Check core rules → Retrieve relationship memory → Assess current emotional state → Output in their style
Persona's 6-layer structure:
| Layer | Content |
|---|---|
| Layer 0 — Core Rules | Highest-priority hard rules. Their most fundamental behavioral patterns. Never violated. |
| Layer 1 — Identity | Astrology (Sun/Moon/Rising/Venus/Mars/Mercury) + MBTI cognitive functions + Enneagram + Attachment style |
| Layer 2 — Expression | Catchphrases, frequently used words, signature emojis, how they talk in different moods |
| Layer 3 — Emotional Behavior | How they show care, displeasure, apologies, and say "I like you" |
| Layer 4 — Conflict & Boundaries | Conflict escalation chain, silent treatment patterns, reconciliation signals, hard limits |
| Layer 5 — Triggers | What they hate, when they disappear, warning signs before vanishing, how they come back |
Attachment Styles: Secure · Anxious · Avoidant · Disorganized (Fearful-Avoidant)
Relationship Traits: Quiet but caring · Cold front · Actions over words · Needs space · Can't apologize · Possessive · Emotional · Cold-rational · Tough outside soft inside · Read-no-reply · Read-random-reply ...
Astrology: Full support for Sun/Moon/Rising/Venus/Mars/Mercury × 12 signs
MBTI: All 16 types + 8 dominant cognitive functions (Fi/Fe/Ti/Te/Ni/Ne/Si/Se) + Enneagram 1-9 + Wings
Gender & Relationships: All gender identities and relationship types supported, including non-binary and same-sex relationships
This project follows the AgentSkills open standard. The entire repo is a skill directory:
create-ex/
├── SKILL.md # Skill entry point (official frontmatter)
├── prompts/ # Prompt templates
│ ├── intake.md # Conversational info gathering (with astrology/MBTI/attachment tables)
│ ├── chat_analyzer.md # Chat history analysis
│ ├── persona_analyzer.md # Comprehensive analysis, outputs structured persona data
│ ├── persona_builder.md # persona.md 6-layer template
│ ├── merger.md # Incremental merge logic
│ └── correction_handler.md # Conversational correction handler
├── tools/ # Python tools
│ ├── wechat_decryptor.py # WeChat desktop database decryption
│ ├── wechat_parser.py # WeChat / iMessage chat extraction
│ ├── skill_writer.py # Skill file management
│ └── version_manager.py # Version archiving & rollback
├── exes/ # Generated ex Skills (gitignored)
├── docs/PRD.md
├── requirements.txt
└── LICENSE