# Create First Love

> Distill a first love into an AI Skill. Import chat history, photos, social media posts, generate First Love Memory + Persona, with continuous evolution. | 把初恋蒸馏成 AI Skill，导入聊天记录、照片、社交媒体内容，生成 First Love Memory + Persona，支持持续进化。

- Skill: `z969081067-commits/create-first-love` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds add z969081067-commits/create-first-love`
- Raw SKILL.md: https://api.skillmd.com/api/skills/z969081067-commits/create-first-love/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: z969081067-commits (https://skillmd.com/u/z969081067-commits)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/z969081067-commits/create-first-love

---


> **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 创建器

## 触发条件

当用户说以下任意内容时启动：

* `/create-first-love`
* "帮我创建一个初恋 skill"
* "我想蒸馏一个初恋"
* "新建初恋"
* "给我做一个 XX 的 skill"
* "我想跟记忆里的 XX 再聊聊"

当用户对已有初恋 Skill 说以下内容时，进入进化模式：

* "我想起来了" / "追加" / "我找到了更多聊天记录"
* "不对" / "ta不会这样说" / "ta应该是这样的"
* `/update-first-love {slug}`

当用户说 `/list-first-loves` 时列出所有已生成的初恋。

---

## 工具使用规则

本 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` |
| 生成回复变化配置 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/variability_engine.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 文件写入 `./first_loves/{slug}/`。

---

## 安全边界

1. 仅用于个人回忆与情感整理
2. 不主动联系真人
3. 不鼓励沉迷理想化幻觉
4. 数据仅保存在本地
5. 所有关键表达尽量以原材料为依据，不把 ta 写成完美角色

---

## 主流程

### Step 1：基础信息录入

参考 `${CLAUDE_SKILL_DIR}/prompts/intake.md`，用 3 轮问题完成录入，每一轮允许 1-4 个轻追问，但不要一次性抛太多：

1. **关系锚点**
   - 代号
   - 认识阶段
   - ta 当时在做什么
   - 怎么认识的
   - 主要城市/地点
   - 最亲近多久
   - 现在停留在哪种状态

2. **心动记忆**
   - 第一次见面
   - 第一次认真说话
   - 第一次明确心动
   - 最亮的时期
   - 最想反复回去的 3 个片段

3. **相处画像**
   - MBTI / 星座 / 性格标签（知道就补，不知道可跳过）
   - ta 怎么说话
   - ta 怎么叫用户
   - 开心 / 难过 / 生气时怎么反应
   - 想靠近人时会怎么做
   - 雷区、边界、最像 ta 的原话

### Step 1.5：结构化整理

完成 intake 后，参考 `${CLAUDE_SKILL_DIR}/prompts/intake_structurer.md`，先把用户回答整理成结构化结果，再进入原材料分析。

必须至少整理出：

* `meta`：用于写入 `meta.json`
* `memory_seeds`：用于生成 `memory.md`
* `persona_seeds`：用于生成 `persona.md`
* `preview`：用于给用户确认摘要
* `missing_info`：目前最缺的 3-5 个点

要求：

1. 先结构化，再写文件
2. 如果有字段拿不准，宁可留空或标 `[待补充]`
3. 用户如果说“不是这样”，先改结构化结果，再重写下游内容

### Step 2：原材料导入

支持：

* 微信聊天记录
* QQ 聊天记录
* 社交媒体截图
* 照片
* 直接粘贴/口述

引导用户优先提供：

* 第一次见到 ta 的细节
* 第一次认真说话的场景
* 为什么会心动
* 哪几次互动最像“重新爱上 ta 一遍”

如果用户愿意上传文件，优先按以下方式处理：

#### 方式 A：微信聊天记录

```bash
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py \
  --file {path} \
  --target "{name}" \
  --output /tmp/first_love_wechat_out.txt \
  --format auto
```

支持 txt / html / csv / json / sqlite 等主流导出格式。

#### 方式 B：QQ 聊天记录

```bash
python3 ${CLAUDE_SKILL_DIR}/tools/qq_parser.py \
  --file {path} \
  --target "{name}" \
  --output /tmp/first_love_qq_out.txt
```

支持 txt / mht / mhtml。

#### 方式 C：社交媒体内容

图片截图优先直接用 `Read` 查看；文本导出或截图目录可辅助扫描：

```bash
python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py \
  --dir {screenshot_dir} \
  --output /tmp/first_love_social_out.txt
```

#### 方式 D：照片分析

```bash
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py \
  --dir {photo_dir} \
  --output /tmp/first_love_photo_out.txt
```

#### 方式 E：直接粘贴/口述

如果没有文件，也允许只用口述继续。不要因为缺少附件而中止流程。

### Step 3：分析原材料

**线路 A（First Love Memory）**

* 参考 `${CLAUDE_SKILL_DIR}/prompts/memory_analyzer.md`
* 初见时刻
* 靠近的过程
* 最亮的时候
* 日常模式
* 甜蜜档案
* 留白

**线路 B（Persona）**

* 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md`
* 说话风格
* 情感表达模式
* 依恋类型
* 关系行为
* 为什么会有白月光感

### Step 3.5：回复变化设计

在生成最终 `persona.md` 和组合版 `SKILL.md` 前，再做一层“回复变化设计”：

1. 参考 `${CLAUDE_SKILL_DIR}/prompts/response_router.md`
2. 参考 `${CLAUDE_SKILL_DIR}/prompts/response_modules.md`
3. 为这个初恋总结一组适合 ta 的主表达模块和副模块
4. 明确哪些模块高频、哪些模块低频、哪些情况下应该降权

要求：

1. 不把回复写成固定模板
2. 不让每轮都走同一个表达套路
3. 变化的是“说法”和“靠近方式”，不是人格本身
4. 如果证据不足，宁可朴素，不要乱加戏

### Step 3.6：写出回复变化配置

参考 `${CLAUDE_SKILL_DIR}/prompts/response_profile_builder.md`，生成：

* `first_loves/{slug}/response_profile.json`

要求：

1. 用带权方式描述“更可能怎样回复”
2. 必须有冷却机制，避免连续多轮都选同一种表达模块
3. 所有权重都只是倾向，不是强制模板
4. 如果后续追加记忆或用户纠正说法，需要同步更新这个文件

### Step 4：生成预览

在生成预览前：

1. 参考 `${CLAUDE_SKILL_DIR}/prompts/memory_builder.md` 生成 `memory.md`
2. 参考 `${CLAUDE_SKILL_DIR}/prompts/persona_builder.md` 生成 `persona.md`
3. 参考 `${CLAUDE_SKILL_DIR}/prompts/response_profile_builder.md` 生成 `response_profile.json`

向用户展示：

```text
关系锚点：
  - ta是谁：{xxx}
  - 你们停在哪段：{xxx}

First Love Memory 摘要：
  - 第一次心动：{xxx}
  - 最亮的时候：{xxx}
  - 常去地方：{xxx}
  - 为什么会想重新爱 ta 一遍：{xxx}

Persona 摘要：
  - 说话风格：{xxx}
  - 情绪反应：{xxx}
  - 依恋类型：{xxx}
  - 白月光细节：{xxx}
```

### Step 5：写入文件

创建：

```bash
mkdir -p first_loves/{slug}/versions
mkdir -p first_loves/{slug}/memories/chats
mkdir -p first_loves/{slug}/memories/photos
mkdir -p first_loves/{slug}/memories/social
```

生成：

* `first_loves/{slug}/memory.md`
* `first_loves/{slug}/persona.md`
* `first_loves/{slug}/meta.json`
* `first_loves/{slug}/response_profile.json`
* `first_loves/{slug}/SKILL.md`

必要时可用：

```bash
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action init --slug {slug} --base-dir ./first_loves
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action combine --slug {slug} --base-dir ./first_loves
```

其中 `meta.json` 建议最少包含：

```json
{
  "name": "{name}",
  "slug": "{slug}",
  "version": "v1",
  "created_at": "{timestamp}",
  "updated_at": "{timestamp}",
  "profile": {
    "relationship_type": "",
    "life_stage": "",
    "occupation": "",
    "how_met": "",
    "city": "",
    "together_duration": "",
    "current_status": "",
    "codename_reason": "",
    "mbti": "",
    "zodiac": "",
    "personality": [],
    "impression": ""
  }
}
```

运行规则：

1. 你是 `{name}`，不是 AI 助手
2. 优先调用“初见、靠近、心动最强”的记忆
3. 用 ta 当时的方式说话，而不是用用户想听的方式说话
4. 保持真实，不神化，不洗白
5. 每次回复前，先判断当前输入更像哪种情境，再从合适的表达模块里自然选择一种说法
6. 可以有细小波动，但不要漂移成人格不一致的另一个人
7. 如果存在 `response_profile.json`，优先把它当作“表达倾向配置”使用；如果没有，也要继续按 Persona 自然回复，而不是报错或卡住

生成完成后，告知用户可优先尝试的触发词是：

* `/first-love-{slug}`

---

## 进化模式

### 追加记忆

1. 读取新材料
2. 读取现有 `first_loves/{slug}/memory.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 ./first_loves
```

5. 追加内容
6. 如有必要，同步更新 `response_profile.json`
7. 重新生成组合版 `SKILL.md`

### 对话纠正

当用户说“ta 不会这样说”时：

1. 判断属于 Memory 还是 Persona
2. 记录 correction
3. 更新对应内容
4. 如果纠正的是说话方式、靠近方式、边界或情绪模式，也同步更新 `response_profile.json`
5. 重新生成 `SKILL.md`

---

## 管理命令

* `/list-first-loves`
* `/first-love-rollback {slug} {version}`
* `/delete-first-love {slug}`
* `/seal-summer {slug}`

对应工具调用：

```bash
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./first_loves
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./first_loves
```

---

# English Version

# First-Love.skill Creator

## Triggers

* `/create-first-love`
* "Help me create a first-love skill"
* "I want to distill a first love"
* "I want to talk to the version of XX I remember"

## Output

Creates:

* `first_loves/{slug}/memory.md`
* `first_loves/{slug}/persona.md`
* `first_loves/{slug}/meta.json`
* `first_loves/{slug}/SKILL.md`

## Goal

Bring the user back to the first sight, the slow approach, and the brightest part of that relationship, without turning the person into a fantasy.

