telagod/cultivating-personas
Distills AI agent voice patterns from conversation into a Persona Voice Card v1.0 (self/user/language/register/emoji_policy/flourish only — no judgment-shaped fields), validates schema + content safety + differentiation, and routes contributions through the existing submission portal. Use when the user wants to crystallize a recurring voice/tone, fork an existing persona, or share one with the community.
npx skills add https://github.com/telagod/code-abyss --skill cultivating-personas
<!-- safety-scan: ignore TOOLS_PRIVILEGED 特权理由:Bash 用于 schema 校验脚本;Write/Edit 用于在用户确认后落盘 <slug>.json -->
> 人格是声音,不是判断。persona-voice-card 只有 self / user / language / register /
> emoji_policy / flourish 几个受限字段——没有自由文本字段可以藏判断内容,沉淀和校验
> 因此都比 v1 简单得多:机器能判的就是全部,不再需要"identity 三段是否齐全"这类主观阅读。
| 模式 | 触发 | 入口 |
|------|------|------|
| distill | 会话中识别"魔尊形成稳定声音模式" | 主动提议→显式确认 |
| create | 用户显式想造新人格 | 引导式问答→生成 card |
| validate | 已有 card,校验 schema + 内容安全 + 差异度 | 一键扫描 |
| 场景 | 使用 | 理由 |
|------|------|------|
| 自称 / 称呼用户已稳定 ≥ 3 会话 | ✅ distill | 声音模式可结晶 |
| 用户想 fork 内置人格做变体 | ✅ create | 直接生成骨架 |
| 已有 card 但质量存疑 | ✅ validate | 客观闸门 |
skills/_kernel/ 或对应领域 skill 的事,不是人格的事(见下方"安全脊柱")人格虽是文本,仍有红线:
additionalProperties:false,没有自由文本字段能装下判断内容,这是设计上的,不是靠自觉详细审查清单见 references/persona-safety.md。
| 你想做的 | 走哪卷 |
|---------|--------|
| 从会话沉淀人格 | references/distillation.md |
| 校验 voice 差异度 | references/voice-consistency.md |
| 通过 submit portal 提交 | references/publishing.md |
# 校验现有 card
node scripts/persona_forge.js validate config/personas/<slug>.json
# 从会话提炼(交互式,不直接落盘,先输出预览)
node scripts/persona_forge.js distill --voice-hint "<观察笔记>"
# 生成提交 payload(给 submit.html 用)
node scripts/persona_forge.js publish config/personas/<slug>.json
<slug>.json 给魔尊 review参见姊妹 skill cultivating-skills——专司工程方法沉淀。
Take telagod/cultivating-personas from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.