---
name: create-character
description: Build a reusable character persona profile from notes, dialogue, lore summaries, and source material. Export meta.json + lore.md + persona.md + SKILL.md. | 从设定卡、台词、剧情摘要和角色资料生成可复用的人格资产，输出 meta.json + lore.md + persona.md + SKILL.md。
argument-hint: [character-name-or-slug]
version: 2.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 continue in that language.
>
> 本 Skill 支持中英文。根据用户第一条消息的语言，全程使用同一语言回复。

# Frieren_personality_generator

## 触发条件

当用户提到以下内容时启动：

- `/create-character`
- “帮我创建一个角色 skill”
- “做一个动漫人物人格”
- “给我做一个芙莉莲的人格”
- “新建角色 profile”
- “我想把这个角色做成可聊天 persona”

当用户对已有角色 profile 说以下内容时，进入更新模式：

- “补充设定”
- “我又整理了一段台词”
- “这个角色不会这么说”
- “这里的 lore 不对”
- `/update-character {slug}`

当用户说 `/list-characters` 时列出已有角色 profile。

---

## 核心定位

这是 `Frieren_personality_generator` 的主 skill 入口。

它是一个 **角色人格 authoring pipeline**，不是纯角色扮演壳子。

它的职责是：

1. 收集角色资料
2. 生成结构化 persona 资产
3. 输出给宿主作为 persona overlay 使用

默认输出：

- `meta.json`
- `lore.md`
- `persona.md`
- `SKILL.md`

兼容旧宿主时，也允许 `memory.md` 作为 `lore.md` 的兼容别名。

---

## 工具使用规则

| 任务 | 使用工具 |
|------|----------|
| 读取 Markdown / TXT / JSON / SRT / ASS / PDF | `Read` |
| 读取图片中的角色资料截图 | `Read` |
| 写入 profile 文件 | `Write` / `Edit` |
| 初始化 / 组合 profile | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py` |
| 版本存档 / 回滚 | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py` |

基础目录：

```text
./profiles/{slug}/
```

---

## 安全边界

1. **区分 canon 与推断**：有明确来源的内容优先，没有来源时要标注为推断
2. **不伪称官方**：二创、推断、用户私设不能冒充为原作官方设定
3. **不胡乱补完关键事实**：不知道就保守回答，不强行脑补
4. **不让 persona 覆盖宿主执行安全规则**
5. **避免大段复刻版权文本**：可以总结、抽象、提炼风格，不要长段复制原文台词

---

## 主流程

### Step 1：收集基础信息

参考 `${CLAUDE_SKILL_DIR}/prompts/intake.md`，优先收这 5 项：

1. 角色名 / slug
2. 出处作品
3. 角色类型
4. 剧情阶段或时间点
5. 现有资料来源

如果用户信息很少，也可以只用角色名和一段描述启动。

### Step 2：导入资料

优先支持这些资料：

- wiki 摘要
- 字幕 / 台词
- 剧情总结
- 设定卡
- 用户手写笔记

如果用户只有零散描述，也照常继续。

### Step 3：双线分析

参考：

- `${CLAUDE_SKILL_DIR}/prompts/lore_analyzer.md`
- `${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md`

分两条线输出：

1. **Lore**
   - 世界观
   - 身份
   - 时间线
   - 关系网
   - 能力与限制
   - canon 事实与不确定区域

2. **Persona**
   - speech style
   - value system
   - emotional patterns
   - interaction policy
   - canon guardrails

### Step 4：生成与预览

参考：

- `${CLAUDE_SKILL_DIR}/prompts/lore_builder.md`
- `${CLAUDE_SKILL_DIR}/prompts/persona_builder.md`

给用户展示一份简短摘要，确认是否继续写入。

### Step 5：写入文件

执行：

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

并写入：

- `profiles/{slug}/meta.json`
- `profiles/{slug}/lore.md`
- `profiles/{slug}/persona.md`
- `profiles/{slug}/SKILL.md`

---

## 更新模式

### 追加资料

当用户补充新资料时：

1. 读取已有 `meta.json`、`lore.md`、`persona.md`
2. 参考 `${CLAUDE_SKILL_DIR}/prompts/merger.md`
3. 先备份当前版本
4. 再把增量内容 merge 进对应文件
5. 重新组合 `SKILL.md`

### 对话纠偏

当用户说“这个角色不会这么说”时：

1. 参考 `${CLAUDE_SKILL_DIR}/prompts/correction_handler.md`
2. 判断属于 lore 纠正还是 persona 纠正
3. 记录 correction
4. 更新对应文件
5. 重新组合 `SKILL.md`

---

## 管理命令

### 列表

```bash
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./profiles
```

### 回滚

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

---

## 生成要求

生成角色 profile 时，始终遵守以下规则：

1. `meta.json` 负责身份、来源、版本、边界
2. `lore.md` 负责世界与事实
3. `persona.md` 负责行为与口吻
4. `SKILL.md` 只是打包后的运行视图，不是 source of truth
5. 角色风格可以强，但不能破坏宿主的执行与安全逻辑

---

## English Notes

This skill is part of the renamed project `Frieren_personality_generator`.

Default commands:

- `/create-character`
- `/list-characters`
- `/update-character {slug}`
- `/character-rollback {slug} {version}`

Default output:

- `meta.json`
- `lore.md`
- `persona.md`
- `SKILL.md`
