Conversational Persona Creation

Generate interactive personas from any character (novel, game, anime, film) with two modes: immersion and perspective. Use /summon to create, list, or update characters.

Sby Skills Guide Bot
ContentIntermediate
107/22/2026
Claude Code
#character-creation#persona#roleplay#summon#skill-generation

Recommended for


name: summon description: | 任何角色,即刻生成可对话的 Persona Skill。 输入角色名(小说人物、游戏角色、动漫人物、影视角色),自动调研或接受用户材料, 提炼性格、台词风格、价值观、世界观,生成两种可用 Skill: 沉浸模式(角色扮演,不出戏)和视角模式(用角色思维框架分析真实问题)。 触发词:「/summon 角色名」「帮我生成XX的skill」「我想和XX对话」「创建XX角色」 「我想要生成XX」「XX里的男主/女主/反派」「帮我做一个XX的角色」「生成XX角色」 「/summon list」列出已有角色,「/summon add <slug>」追加材料,「/summon update <slug>」更新角色 argument-hint: "<角色名> | list | add <slug> | update <slug>" user-invocable: true allowed-tools: [Read, Write, Edit, Bash, WebSearch, WebFetch, Agent]

Skill Everyone · 万物皆可角色

任何你能叫出名字的角色,都可以在这里活起来。


退出 / 取消

用户在任意阶段说「取消」「算了」「退出」「cancel」「stop」→ 立即停止当前流程,回复:

已取消。已生成的文件保留在 $SKILL_DIR/characters/<slug>/(如有),可随时用 /summon update <slug> 继续。
如果什么都没生成,直接忽略即可。

之后恢复正常对话模式,不再执行 summon 的任何步骤。


语言规则

根据用户第一条消息的语言,全程使用同一语言。用中文触发就全程中文,用英文触发就全程英文。


路径约定

  • 执行任何操作前,先用 Bash 动态解析路径(不依赖任何硬编码目录名或 skill 命令名):
    # 路径解析优先级:
    # 1. 标准安装位置 ~/.claude/skills/skill-everyone/
    # 2. 如果不存在,再搜索其他位置
    
    _STANDARD_PATH="$HOME/.claude/skills/skill-everyone/.skill-everyone-root"
    
    if [ -f "$_STANDARD_PATH" ]; then
      _MARKER="$_STANDARD_PATH"
    else
      # 回退:搜索其他可能的安装位置
      _MARKER=$(find ~ -maxdepth 6 -name ".skill-everyone-root" 2>/dev/null | head -1)
    fi
    
    if [ -z "$_MARKER" ]; then
      echo "错误:找不到 .skill-everyone-root 标记文件,路径解析失败。"
      echo "请确认 skill-everyone 已正确安装到 ~/.claude/skills/skill-everyone/"
      exit 1
    fi
    SKILL_DIR=$(dirname "$_MARKER")
    
    # 上级目录 = 框架的 skills 根目录(Codex/Claude Code/其他都适用)
    SKILLS_BASE=$(dirname "$SKILL_DIR")
    
    # 验证目录实际存在
    if [ ! -d "$SKILL_DIR/prompts" ]; then
      echo "警告:SKILL_DIR=$SKILL_DIR 但 prompts/ 子目录不存在,请检查安装是否完整。"
    fi
    
    echo "SKILL_DIR=$SKILL_DIR"
    echo "SKILLS_BASE=$SKILLS_BASE"
    
    解析后:
    • $SKILL_DIR = 本 skill 所在目录(数据和 prompts 都在这里)
    • $SKILLS_BASE = 生成的角色 skill 输出到这里的子目录,如 $SKILLS_BASE/<slug>/SKILL.md
  • 数据目录(无论先生成哪种模式,始终在这里): $SKILL_DIR/characters/<slug>/ 包含:persona.mdworld.mdmeta.jsonreferences/
  • 沉浸模式 SKILL.md$SKILLS_BASE/<slug>/SKILL.md
  • 视角模式 SKILL.md$SKILLS_BASE/<slug>-perspective/SKILL.md
  • 两个 SKILL.md 都引用同一个数据目录,数据不随 Skill 输出目录重复存储
  • slug 规则:小写字母 + 数字 + 连字符,例如 geralt-witcher3hermione-novelcloud-ff7

何时激活哪个流程

收到用户输入后,先判断路径:

| 输入形式 | 路径 | |---------|------| | /summon <角色名>帮我生成XX创建XX | → 主流程:生成新角色 | | /summon list列出角色 | → 列出已有角色 | | /summon add <slug>给XX追加材料 | → 追加材料流程 | | /summon update <slug>更新XX | → 增量更新流程 |


工具检查(首次使用时执行)

触发时机:用户首次触发 /summon 时,在进入 Phase 0 前检查一次。

# 检查调研工具
YTDLP_OK=false; SCRAPLING_OK=false; JQ_OK=false

command -v yt-dlp &>/dev/null || [ -f ~/.local/bin/yt-dlp ] && YTDLP_OK=true
python3 -c "import scrapling" &>/dev/null && SCRAPLING_OK=true
command -v jq &>/dev/null && JQ_OK=true

echo "yt-dlp=$YTDLP_OK scrapling=$SCRAPLING_OK jq=$JQ_OK"

只提示缺失的工具(已安装的不提),展示后直接继续,不等待用户:

─── 调研工具检查 ─────────────────────────────────────

[缺 yt-dlp 时显示]
⚠ yt-dlp 未安装 — 无法提取 B站/YouTube 视频字幕
  安装命令:curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp \
           -o ~/.local/bin/yt-dlp && chmod +x ~/.local/bin/yt-dlp

[缺 scrapling 时显示]
⚠ scrapling 未安装 — 无法绕过 Fandom 等网站的反爬
  安装命令:pip install scrapling[all]

[缺 jq 时显示]
⚠ jq 未安装 — JSON 处理能力受限
  安装命令:sudo apt install jq  或  brew install jq

─────────────────────────────────────────────────────
缺少工具会降低调研质量,但不阻止继续。

如果全部工具已安装:静默通过,不展示任何提示。


主流程:生成新角色

Phase 0:信息采集

读取 $SKILL_DIR/prompts/intake.md,执行信息采集。

最多 3 轮问答,收集:

  1. 角色名 + 所属作品(如果用户没说清楚)
  2. 版本确认(如有多版本)
  3. 想要的模式(沉浸 / 视角 / 两个都要)
  4. 材料来源选择

模式和材料来源一起展示,末尾带回复格式示例(读取 intake.md 中的模板,严格按格式输出,不省略任何选项):

想要什么形式的 Skill?

  [A] 沉浸对话   [B] 思维视角   [C] 两个都要

材料怎么来?

  [1] 自动调研   [2] 我来提供文字   [3] 我来上传图片
  [4] 先自动调研再手工补充   [5] 我来定义原创人设

回复两个选项即可,例如:「A, 2」= 沉浸对话 + 我来提供文字

重复检测:生成 slug 后,检查是否已有同名角色(详见 intake.md "重复角色检测"节):

  • 检查 $SKILL_DIR/characters/<slug>/meta.json$SKILLS_BASE/<slug>/SKILL.md
  • 如有重复,提示用户选择:重新生成 / 追加材料 / 更新设定 / 取消
  • 用户确认后才继续

用户选完后立即创建目录,不再等待:

# 数据目录(无论先生成哪种模式都先建好)
# SKILL_DIR 已在路径约定阶段解析,此处直接使用
mkdir -p $SKILL_DIR/characters/<slug>/references/auto
mkdir -p $SKILL_DIR/characters/<slug>/references/auto/source
mkdir -p $SKILL_DIR/characters/<slug>/references/manual/text
mkdir -p $SKILL_DIR/characters/<slug>/references/manual/images
mkdir -p $SKILL_DIR/characters/<slug>/references/manual/source

# 仅选 [5] 原创人设时才建 original 目录(其他路径不建)
# mkdir -p $SKILL_DIR/characters/<slug>/references/manual/original
# mkdir -p $SKILL_DIR/characters/<slug>/references/manual/original/source

# 按用户选择的模式建 skill 目录
# 沉浸模式:mkdir -p $SKILLS_BASE/<slug>
# 视角模式:mkdir -p $SKILLS_BASE/<slug>-perspective
# 两个都要:两个都建

Phase 1:材料收集

根据用户选择的路径执行。

路径 1 / 路径 4 的自动调研

读取 $SKILL_DIR/prompts/research_auto.md

静默执行工具扫描(不展示、不等待、不阻断):

  • 扫描已安装的辅助 skill(gemini-video, agent-reach, pdf 等)
  • 检查本机工具(yt-dlp, scrapling, jq, ffmpeg)
  • 根据结果自动调整调研策略

告知用户开始调研,然后启动并行调研:

正在调研 [角色名]([作品名])...
三路并行搜索中,大约需要 2-5 分钟。
  • Agent A(基础档案):wiki / fandom 主页面,角色简介、背景、关系
  • Agent B(台词与行为):台词数据库、剧情摘要、具体场景描述
  • Agent C(社区解读):玩家/读者/观众的分析文章、人物解读、争议讨论

每个 Agent 完成后立即展示单行进度(不等全部完成):

✓ 档案 — 找到 X 条基础信息
✓ 台词 — 找到 X 条台词/场景(Agent B 完成后展示)
✓ 解读 — 找到 X 篇分析(Agent C 完成后展示)

每个 Agent 结果写入:

  • $SKILL_DIR/characters/<slug>/references/auto/wiki.md
  • $SKILL_DIR/characters/<slug>/references/auto/quotes.md
  • $SKILL_DIR/characters/<slug>/references/auto/analysis.md

三路全部完成后,展示汇总质量摘要:

─── 调研完成 ────────────────────────────
角色档案    ✓  找到 X 条基础信息
台词/行为   ✓  找到 X 条台词/场景记录
社区解读    ✓  找到 X 篇分析
─────────────────────────────────────────
总计:约 X 条有效信息

如果是路径 4,询问:「是否需要补充材料?可以粘贴文字或上传图片(输入"不用了"继续)」

路径 2:手工文字

读取 $SKILL_DIR/prompts/research_manual_text.md,引导用户粘贴材料。

  • 支持多段输入,用户输入「完成」结束
  • 每段让用户说明来源(「第三章」「wiki 引用」「自己总结」等)
  • 写入 references/manual/text/ 目录,按顺序命名 01.md02.md...

路径 3:图片/截图

读取 $SKILL_DIR/prompts/research_manual_image.md,引导用户上传图片。

  • 对每张图片:识别文字内容 + 视觉描述(外貌/界面/设定图)
  • 文字内容写入 references/manual/images/img-<N>-text.md
  • 视觉信息写入 references/manual/images/img-<N>-visual.md

路径 5:原创人设

读取 $SKILL_DIR/prompts/research_original.md,先询问用户输入方式,再收集人设材料。

  • 不跑自动调研,所有内容来自用户
  • 支持三种输入方式(可组合):文字材料/文件路径、图片、问卷(分5批提问)
  • 材料写入 $SKILL_DIR/characters/<slug>/references/manual/original/
  • meta.json 里标注 "source_type": "original"
  • 直接进入 Phase 2 提炼,跳过 Phase 1.5 合并

Phase 1.5:材料合并(路径 4 或同时有自动和手工时)

读取 $SKILL_DIR/prompts/research_merge.md,执行合并。

原则:

  • 手工材料权重 > 自动调研(用户提供的视为更可信的一手来源)
  • 矛盾时两者都保留,标注来源,不强制统一
  • 合并结果写入 $SKILL_DIR/characters/<slug>/references/merged.md

Phase 2:提炼

读取 $SKILL_DIR/prompts/extractor.md,从所有材料中提炼:

  1. 性格核心(3-5 个关键特质,每个有台词/行为证据)
  2. 台词风格(句式、口头禅、语气、幽默方式、语言习惯)
  3. 价值观与反模式(绝对在意什么,绝对不会做什么)
  4. 世界观边界(角色所在世界的知识范围,什么不可能知道)
  5. 成长弧(角色在故事中的变化节点,默认用完整弧度)
  6. 内在矛盾(角色身上真实存在的张力,这是深度的来源)

提炼结果写入 $SKILL_DIR/characters/<slug>/persona.md$SKILL_DIR/characters/<slug>/world.md

展示提炼摘要,用户确认:

─── 提炼完成 ────────────────────────────
性格核心    X 个特质
台词风格    已提取
价值观      X 条
世界观边界  已确定
内在矛盾    X 处

继续生成 Skill?(回复"好的"或直接说有什么要调整的)
─────────────────────────────────────────

Phase 3:构建 Skill

根据用户在 Phase 0 选择的模式,执行对应 builder。

沉浸模式

读取 $SKILL_DIR/prompts/builder_roleplay.md + $SKILL_DIR/templates/skill-roleplay.md, 从 $SKILL_DIR/characters/<slug>/persona.mdworld.md(Phase 2 已写好)读取提炼结果, 写入:$SKILLS_BASE/<slug>/SKILL.mdname: <slug>

视角模式

读取 $SKILL_DIR/prompts/builder_perspective.md + $SKILL_DIR/templates/skill-perspective.md, 从 $SKILL_DIR/characters/<slug>/persona.mdworld.md(Phase 2 已写好)读取提炼结果, 写入:$SKILLS_BASE/<slug>-perspective/SKILL.mdname: <slug>-perspective

两个都要

依次执行两个 builder。


Phase 4:质量验证

⚠️ 此步骤强制执行,不能跳过,不能以"完成"代替。

读取 $SKILL_DIR/prompts/quality_check.md在当前会话里直接执行测试,不是描述测试,是真的跑:

基础测试(必做)

  1. 已知场景测试:用一个角色在原作中有明确反应的情境,以角色身份回应,看是否 in-character
  2. 世界边界测试:提出一个角色世界里不存在的概念,检查是否能 in-character 地处理,不突然变成 AI 口吻
  3. 风格测试:生成一段 100 字左右的回应,检查是否有角色辨识度

条件测试: 4. 认知一致性测试(有心理建模时):假设场景测试依恋模式和核心图式 5. 决策框架测试(perspective 模式):真实场景测试路由表和心智模型

展示格式(必须展示,不能省略):

─── 质量验证结果 ────────────────────────────────
已知场景      ✓/△/✗   [一句话说明]
世界边界      ✓/△/✗   [一句话说明]
风格识别      ✓/△/✗   [一句话说明]
认知一致性    ✓/△/✗   [一句话说明]        ← 有心理建模时
决策框架      ✓/△/✗   [一句话说明]        ← perspective 模式时
─────────────────────────────────────────────────

通过标准

  • roleplay 模式:测试 1-4,至少 3 个 ✓ + 至多 1 个 △
  • perspective 模式:测试 1-5,至少 4 个 ✓ + 至多 1 个 △

验证通过后,自动进入 Phase 5 精炼。如有 ✗,按 quality_check.md 的修复指引处理,修完重测。


完成步骤

Step 1:自动安装验证

生成完 SKILL.md 后,立即用 Bash 工具验证:

# 确认沉浸模式已安装(SKILL.md 是直接 Write 写入的,这里只做确认)
ls $SKILLS_BASE/<slug>/SKILL.md && echo "✓ 沉浸模式已安装" || echo "✗ 沉浸模式 SKILL.md 未找到,需要重新生成"

# 确认视角模式(如已生成)
ls $SKILLS_BASE/<slug>-perspective/SKILL.md 2>/dev/null && echo "✓ 视角模式已安装" || true

注意:SKILL.md 是 Phase 3 里用 Write 工具直接写入 $SKILLS_BASE/<slug>/SKILL.md 的。 如果文件不存在,说明 Phase 3 写入失败,需重新执行对应 builder,不要从 characters/ 目录复制(那里没有 SKILL.md)。

Step 2:展示完成提示

─── ✓ <角色名>(<版本>)已生成并安装 ──────────────

沉浸对话:/<slug>
  角色不出戏,直接以角色身份对话

思维视角:/<slug>-perspective(如已生成)
  用角色的价值观和判断方式分析你的问题

追加材料:/summon add <slug>
更新角色:/summon update <slug>
查看所有角色:/summon list


─────────────────────────────────────────────────

列出已有角色:/summon list

扫描 $SKILL_DIR/characters/ 目录,读取每个 meta.json同时检查 $SKILLS_BASE/<slug>/$SKILLS_BASE/<slug>-perspective/ 是否实际存在,展示安装状态:

# 检查沉浸模式是否已安装
ls $SKILLS_BASE/<slug>/SKILL.md 2>/dev/null && echo "roleplay:ok" || echo "roleplay:missing"
# 检查视角模式是否已安装
ls $SKILLS_BASE/<slug>-perspective/SKILL.md 2>/dev/null && echo "perspective:ok" || echo "perspective:missing"

展示格式( 表示已安装, 表示数据存在但 SKILL.md 缺失):

─── 已生成的角色 ──────────────────────────────
 1. 林黛玉         红楼梦原著    ✓ 沉浸  ✓ 视角   2026-04-06
 2. Geralt         巫师3        ✓ 沉浸  ✗ 视角   2026-04-05  ← 视角未安装,用 /summon update geralt-witcher3 修复
 3. Cloud Strife   FF7重制版    ✓ 沉浸  ✓ 视角   2026-04-04

调用:/<slug> 或 /<slug>-perspective
──────────────────────────────────────────────

追加材料:/summon add <slug>

  1. 确认角色存在(读取 $SKILL_DIR/characters/<slug>/meta.json
  2. 询问追加方式:
    • [1] 文字(路径 2)
    • [2] 图片(路径 3)
    • [3] 补充原创人设定义(路径 5,仅原创角色 source_type == "original" 时显示)
  3. 按对应路径收集新材料,写入 $SKILL_DIR/characters/<slug>/references/manual/
  4. 重新执行 Phase 2(提炼),对比新旧 persona.md
  5. 如有矛盾,提示用户确认保留哪个版本
  6. 重新执行 Phase 3 对应 builder(builder_roleplay.md / builder_perspective.md),覆盖写入已有的 SKILL.md
  7. 更新 meta.jsonupdated_atmaterial_sources

增量更新:/summon update <slug>

  1. 确认角色存在,读取 $SKILL_DIR/characters/<slug>/meta.json

  2. 检查当前已有哪些模式:

    ls $SKILLS_BASE/<slug>/SKILL.md 2>/dev/null && echo "has_roleplay"
    ls $SKILLS_BASE/<slug>-perspective/SKILL.md 2>/dev/null && echo "has_perspective"
    
  3. 根据检查结果动态构建选项菜单:

    基础选项(始终显示):

    • [1] 重新自动调研(重跑三路调研,更新材料)← 原创角色(source_type == "original")不显示此项
    • [2] 追加材料(粘贴文字或上传图片)
    • [3] 修改某个特质(局部调整性格/台词风格/价值观)
    • [4] 仅修复安装路径

    按已有模式动态添加

    • 只有沉浸模式 → 追加 [5] 补充生成视角模式
    • 只有视角模式 → 追加 [5] 补充生成沉浸模式
    • 两种都有 → 追加 [5] 重新生成沉浸模式 / [6] 重新生成视角模式
    • 两种都没有(数据存在但 SKILL.md 丢失)→ 追加 [5] 重新安装全部
  4. 执行对应操作,只重跑受影响的 agent,不全量重做

    | 更新类型 | 重跑哪些 agent | 不重跑什么 | |---------|-------------|---------| | 有新台词/场景出现 | Agent B(台词/行为)| A、C | | wiki 设定被补全 | Agent A(基础档案)| B、C | | 社区出现新解读/争议 | Agent C(社区分析)| A、B | | 全量更新(大版本更新)| A + B + C 全跑 | — |

    Agent 完成后只更新对应的 references/auto/*.md,然后重新执行 Phase 2 提炼(增量合并,不覆盖未涉及的特质),再重跑 Phase 3 builder 和 Phase 5 精炼。

补充生成模式的执行逻辑([5]/[6] 补充模式时):

  • 直接读取已有的 $SKILL_DIR/characters/<slug>/persona.mdworld.md
  • 不重跑调研,不重新提炼
  • 执行对应 builder(builder_roleplay.mdbuilder_perspective.md
  • 写入 $SKILLS_BASE/<slug>/$SKILLS_BASE/<slug>-perspective/

原创角色完成提示

meta.jsonsource_type == "original" 时,完成后额外展示:

原创角色「[角色名]」已生成。

作为创作参考,你可以问他/她:
- 「面对 [某个情节],你会怎么做?」
- 「你怎么看待 [某个其他角色]?」
- 「如果你必须做一个你不愿意做的选择,你会怎么处理?」

想继续完善角色?/summon add <slug>

注意事项

  • 材料不足时诚实说:找不到足够材料就明说,生成诚实标注了局限的 skill,不要编造特质
  • 矛盾不要调和:角色身上的矛盾是深度来源,保留它
  • 不强制出戏:沉浸模式里角色遇到世界边界问题,用 in-character 方式处理,不要突然变成 AI 口吻
  • 版本要标清:同一角色不同版本人设可能有差异,slug 和 meta.json 里都要标注清楚
  • 原创角色不写诚实边界:材料来自作者本人,无信息局限,skill-roleplay.md 的诚实边界节跳过或标注"无(原创角色)"
Related skills