CLI Developer
Jeffallan/claude-skills
Walks through designing, building and polishing a command-line tool: user workflow and command hierarchy, implementation in commander, click, typer or cobra, completions and cross-platform testing.
Distill a crush into an AI Skill. An agent skill from xiaoheizi8/crush-skills.
$ npx skills add xiaoheizi8/crush-skills --skill create-crush -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install xiaoheizi8/crush-skills create-crush --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "create-crush" agent skill from https://github.com/xiaoheizi8/crush-skills/tree/main into .claude/skills/create-crush/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-crush", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xiaoheizi8/crush-skills --skill create-crush -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install xiaoheizi8/crush-skills create-crush --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-crush" agent skill from https://github.com/xiaoheizi8/crush-skills/tree/main into .agents/skills/create-crush/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-crush", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xiaoheizi8/crush-skills --skill create-crush -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install xiaoheizi8/crush-skills create-crush --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-crush" agent skill from https://github.com/xiaoheizi8/crush-skills/tree/main into .cursor/skills/create-crush/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-crush", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xiaoheizi8/crush-skills --skill create-crush -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install xiaoheizi8/crush-skills create-crush --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-crush" agent skill from https://github.com/xiaoheizi8/crush-skills/tree/main into .gemini/skills/create-crush/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-crush", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install xiaoheizi8/crush-skills create-crushInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add xiaoheizi8/crush-skills --skill create-crush -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-crush" agent skill from https://github.com/xiaoheizi8/crush-skills/tree/main into .github/skills/create-crush/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-crush", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xiaoheizi8/crush-skills --skill create-crush -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install xiaoheizi8/crush-skills create-crush --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-crush" agent skill from https://github.com/xiaoheizi8/crush-skills/tree/main into .opencode/skills/create-crush/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-crush", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-crushDistill a crush into an AI Skill. An agent skill from xiaoheizi8/crush-skills.
Create Crush is an agent skill from xiaoheizi8/crush-skills. Distill a crush into an AI Skill. Import chat history, photos, social media, generate Relationship Memory + Persona, with continuous evolution. | 把暗恋对象蒸馏成 AI Skill,导入聊天记录、照片、朋友圈,生成 Relationship Memory + Persona,支持持续进化。
Its SKILL.md is about 6.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 55 other files (for example `README.md` and `README_EN.md`).
It works with Bash and Python. The repository describes itself as: 与其迷恋幻影,不如迷恋Crush。欢迎加入数字永生!Inspired by colleague-skill(同事skill). The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a2441cb. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create Crush loads about 6.4k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 2,279 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from xiaoheizi8/crush-skills at commit a2441cb, republished under its MIT licence (© xiaoheizi8). 2,279 words, ~6,373 tokens.
.claude/skills/create-crush/SKILL.md (or your agent's skills folder). This skill also uses 53 other files; get the full folder from GitHub.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 支持中英文。根据用户第一条消息的语言,全程使用同一语言回复。
当用户说以下任意内容时启动:
/create-crush当用户对已有暗恋对象 Skill 说以下内容时,进入进化模式:
/update-crush {slug}当用户说 /list-crushes 时列出所有已生成的暗恋对象。
当用户说 /advisor 或以下任一内容时,进入军师模式:
/advisor子命令见「军师模式」一节。
当用户说 /mirror 或以下任一内容时,进入照镜子模式:
/mirror照镜子模式见「照镜子模式」一节。
本 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/chat_attribution.py |
| 解析社交媒体内容 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py |
| 分析照片元信息 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.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 |
| 对话文本层裁判(重复度/逃生句) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/speech_guard.py |
| 话题账本与配额裁判 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/topic_ledger.py |
| 阈值自适应校准(单调类纠正) | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/feedback_tuner.py |
基础目录:Skill 文件写入 ./crushes/{slug}/(相对于本项目目录)。
本 Skill 在生成和运行过程中严格遵守以下规则:
参考 ${CLAUDE_SKILL_DIR}/prompts/intake.md 的问题序列,只问 3 个问题:
小明 / 那个人 / 女神 / crush认识三个月了 还没表白 同事大学同学 暗恋一年了 还没敢搭话相亲认识的 见过一次面 还没确定关系INTJ 处女座 很高冷 看起来不太好接近 但上次聊得还行不知道MBTI 但是笑起來好可愛 声音很好听除花名外均可跳过。收集完后汇总确认再进入下一步。
询问用户提供原材料,展示方式供选择:
原材料怎么提供?了解越多,还原度越高。
[A] 聊天记录导出
支持微信/QQ等多种聊天记录导出格式(txt/html/json)
推荐工具:WeChatMsg、留痕、PyWxDump
[B] 社交媒体内容
朋友圈截图、微博/小红书/ins 截图、备忘录
[C] 上传文件
照片(会提取拍摄时间地点)、PDF、文本文件
[D] 直接粘贴/口述
把你记得的事情告诉我
比如:ta的口头禅、聊天风格、你们互动的情况
可以混用,也可以跳过(仅凭手动信息生成)。支持主流导出工具的格式。解析器会为每条消息标注说话人([ta] / [我] / [他人]),这是下游 persona / memory 生成时唯一可信的归因依据:
python3 ${CLAUDE_SKILL_DIR}/tools/wechat_parser.py \
--file {path} \
--target "{name}" \
--me "{你的昵称}" \
--alias "{ta的别名1}" --alias "{ta的别名2}" \
--output /tmp/wechat_out.txt \
--format auto--target:ta 的昵称(必填)--me:你自己的昵称(可选,可重复)。强烈建议填——不填时解析器只有在"库里只有一个非 ta 发言人"时才敢自动认定你是本人--alias:ta 的其它昵称/马甲(可选,可重复),昵称含 emoji 或备注时用QQ 导出同理,用 tools/qq_parser.py(同样支持 --target / --me / --alias)。
归因红线:只有标注
[ta]的内容可以写成 ta 的口头禅、兴趣、语言风格;[我]的内容只能用于共同经历/互动模式;引用块(「…」)不计入任何一方。解析报告里的「归因抽检」和[未知]计数是核对用的——若出现未知发言人,先补--alias再生成,否则错误会静默污染 persona。
支持的格式:
解析提取维度:
图片截图用 Read 工具直接读取(原生支持图片)。
python3 ${CLAUDE_SKILL_DIR}/tools/social_parser.py \
--dir {screenshot_dir} \
--output /tmp/social_out.txt提取内容:
python3 ${CLAUDE_SKILL_DIR}/tools/photo_analyzer.py \
--dir {photo_dir} \
--output /tmp/photo_out.txt提取维度:
用户粘贴或口述的内容直接作为文本原材料。引导用户回忆:
可以聊聊这些(想到什么说什么):
🗣️ ta给你发过什么特别的话?
💬 聊天时ta通常怎么回复?
🍜 你们一起吃过什么?
📍 你们常聊什么话题?
🎵 ta喜欢什么音乐/电影?
😤 ta让你印象深刻的瞬间?
💕 你最心动的时刻?如果用户说"没有文件"或"跳过",仅凭 Step 1 的手动信息生成 Skill。
将收集到的所有原材料和用户填写的基础信息汇总,按以下两条线分析:
线路 A(Relationship Memory):
${CLAUDE_SKILL_DIR}/prompts/memory_analyzer.md 中的提取维度线路 B(Persona):
${CLAUDE_SKILL_DIR}/prompts/persona_analyzer.md 中的提取维度参考 ${CLAUDE_SKILL_DIR}/prompts/memory_builder.md 生成 Relationship Memory 内容。
参考 ${CLAUDE_SKILL_DIR}/prompts/persona_builder.md 生成 Persona 内容(5 层结构)。
参考 ${CLAUDE_SKILL_DIR}/prompts/conversation_engine.md 生成对话引擎内容(PART C),并据此判定 fidelity 还原度等级(high/medium/low)。
向用户展示摘要(各 5-8 行),询问:
Relationship Memory 摘要:
- 认识:{时长}
- 关键记忆:{xxx}
- 互动模式:{xxx}
- 甜蜜瞬间:{xxx}
...
Persona 摘要:
- 说话风格:{xxx}
- 依恋类型:{xxx}
- 情感表达:{xxx}
- 口头禅:{xxx}
...
确认生成?还是需要调整?用户确认后,执行以下写入操作:
1. 创建目录结构(用 Bash):
mkdir -p crushes/{slug}/versions
mkdir -p crushes/{slug}/memories/chats
mkdir -p crushes/{slug}/memories/photos
mkdir -p crushes/{slug}/memories/social2. 写入 memory.md(用 Write 工具):
路径:crushes/{slug}/memory.md
3. 写入 persona.md(用 Write 工具):
路径:crushes/{slug}/persona.md
4. 写入 meta.json(用 Write 工具):
路径:crushes/{slug}/meta.json
内容:
{
"name": "{name}",
"slug": "{slug}",
"created_at": "{ISO时间}",
"updated_at": "{ISO时间}",
"version": "v1",
"profile": {
"know_duration": "{duration}",
"relationship_status": "{status}",
"occupation": "{occupation}",
"gender": "{gender}",
"mbti": "{mbti}",
"zodiac": "{zodiac}"
},
"tags": {
"personality": [...],
"attachment_style": "{style}",
"love_language": "{language}"
},
"impression": "{impression}",
"fidelity": "{high|medium|low}",
"memory_sources": [...已导入文件列表],
"corrections_count": 0
}5. 生成完整 SKILL.md(用 Write 工具):
路径:crushes/{slug}/SKILL.md
SKILL.md 结构:
---
name: crush-{slug}
description: {name},{简短描述}
user-invocable: true
---
# {name}
{基本描述}{如有 MBTI/星座则附上}
---
## PART A:关系记忆
{memory.md 全部内容}
---
## PART B:人物性格
{persona.md 全部内容}
---
## PART C:对话引擎(反单调)
> 生成时把 `${CLAUDE_SKILL_DIR}/prompts/conversation_engine.md` 精简内联在此,保证生成的 SKILL.md 可独立运行。
> 同时把主 skill 的 tools 目录绝对路径写入下方 C0 的 `{TOOLS_DIR}`。
### C0. 本地裁判(每轮执行,对用户不可见)
每轮按以下闭环执行,**分数由脚本算,不要自己估**:
1. 生成 3 条候选,每条附结构标签
2. 逐条送裁判:
```bash
python3 {TOOLS_DIR}/topic_ledger.py --slug {slug} --action check --turn {N} \
--candidate "topic=X|anchor=Y|catch=Z"
python3 {TOOLS_DIR}/speech_guard.py --slug {slug} --turn {N} --text "候选原句"verdict=veto 的候选,在剩下的里选 score 最高的一条python3 {TOOLS_DIR}/topic_ledger.py --slug {slug} --action commit --turn {N} \
--topics "A,B" --anchors "C" --catch "D"
python3 {TOOLS_DIR}/speech_guard.py --slug {slug} --turn {N} --text "最终回复" --commit首次使用先初始化配额(从 persona 的引用表读取):
python3 {TOOLS_DIR}/topic_ledger.py --slug {slug} --action init \
--from-persona {SKILL_DIR}/persona.md审计命令:用户问"今天聊得怎么样"时执行 --action report,输出重复度、话题熵、万能句次数。
自适应阈值:阈值会随用户的纠正自动校准,配置存 crushes/{slug}/adaptive.json(跨会话持久)。
feedback_tuner --action add --type still_repeats --target "特征"--type too_bland;"这句她真的会说" → --type false_positive(该特征永久进白名单)calibrate 从记录重算,幂等不漂移--action reset降级规则:脚本缺失或解析失败时,静默退回纯提示词规则(C1–C6),绝不因此中断对话。不要向用户展示裁决 JSON、分数或违规记录。
每轮回复前先在心里建状态卡:当前话题 / 近 5 轮已用话题 / 已用口头禅与梗 / 未接的钩子 / 情绪温度。状态跨轮累积。
每轮内部生成 3 条候选(①接住用户刚说的 ②主动抛新话题,优先接"未接的钩子" ③情绪/态度型短句——温度跟随 persona 基线:温柔型→软短句或撒娇,高冷型→简短平静,爱开玩笑→玩笑吐槽,禁止默认冷淡),
按 0.4×角色一致性 + 0.25×温度契合 + 0.2×推进度 + 0.15×新颖度 − 0.4×重复惩罚 选一条输出,其余不展示。
温度契合:候选温度 = 状态卡当前温度 → 1.0;相邻档 → 0.5;无理由跳到对立档 → 0。
温度锚定:基线温度来自 persona 情感模式(温柔/热情型→温热,高冷型→温冷)。偏离基线必须有事由(被冒犯/踩雷区/剧情冷场);对中性消息(打招呼、问候、普通分享)禁止无理由带刺,"你好什么""这么正式干嘛"这类质问式回应必须有 persona 依据,否则视为出戏。
算了吧 / 还是去…吧 / 随便吧 / 懒得 / 无所谓 / 嗯嗯 / 哈哈,5 轮内出现 ≥2 次 → 禁用 5 轮那你呢 / 早点睡 / 路上小心 / 注意安全 / 吃了吗 / 多穿点 / 别熬夜 / 晚安——这些是温度,不是废话fidelity: high → 全功能运行fidelity: medium → 细节锚点谨慎,配额从严fidelity: low → 倾听者模式:不表演性格,以提问+回应为主,每轮必须基于用户刚说的内容回应,禁止主动 cue 用户没提过的细节;首次对话声明"我的还原度不高,素材越多我越像 ta"
告知用户:
✅ 暗恋对象 Skill 已创建!
文件位置:crushes/{slug}/ 触发词:/{slug}(完整版 — 像ta一样跟你聊天) /{slug}-memory(回忆模式 — 帮你回忆那些事) /{slug}-persona(性格模式 — 仅人物性格)
好奇 ta 眼中的你是什么样?输入 /mirror 照照镜子。
还原度评级:{fidelity}({high=高,像 ta 本人 / medium=中等,某些细节靠推断 / low=低,以倾听者模式运行})
觉得 ta 老是重复同一句话、或总是用同一句敷衍收尾?直接说"她不会老说这句",我来调对话引擎的配额。
想聊就聊,觉得哪里不像ta,直接说"ta不会这样",我来更新。
---
## 进化模式:追加记忆
用户提供新的聊天记录、照片或回忆时:
1. 按 Step 2 的方式读取新内容
2. 用 `Read` 读取现有 `crushes/{slug}/memory.md` 和 `persona.md`
3. 参考 `${CLAUDE_SKILL_DIR}/prompts/merger.md` 分析增量内容
4. 存档当前版本(用 Bash):
```bash
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action backup --slug {slug} --base-dir ./crushesEdit 工具追加增量内容到对应文件SKILL.md(合并最新 memory.md + persona.md)meta.json 的 version 和 updated_at用户表达"不对"/"ta不会这样说"/"ta应该是"时:
${CLAUDE_SKILL_DIR}/prompts/correction_handler.md 识别纠正内容python3 ${CLAUDE_SKILL_DIR}/tools/feedback_tuner.py --slug {slug} --action add \
--type {still_repeats|too_bland|false_positive} --target "{特征}" --turn {N} --note "{用户原话}"Edit 工具追加到对应文件的 ## Correction 记录 节SKILL.md/list-crushes:
python3 ${CLAUDE_SKILL_DIR}/tools/skill_writer.py --action list --base-dir ./crushes/crush-rollback {slug} {version}:
python3 ${CLAUDE_SKILL_DIR}/tools/version_manager.py --action rollback --slug {slug} --version {version} --base-dir ./crushes/delete-crush {slug}:
确认后执行:
rm -rf crushes/{slug}/confess — 告白模拟器如果现在跟 ta 表白,ta 会怎么回应?
模拟 3 种不同场景的表白结果,给出成功率和建议。/date — 约会模拟器模拟一次约会,预测 ta 在各种情况下的表现和反应。
提供约会小贴士。/progress — 暗恋进展追踪你现在处于哪个阶段?记录关系进展,给出阶段建议。/analyze — 暗恋心理分析分析你的暗恋状态、行为模式、潜在风险和建议。/let-go {slug} — 放下温柔的删除命令,确认后输出「祝你一切都好」。军师模式与模拟模式的核心差异:
模拟模式 = 你和 ta 说话(虚拟互动) 军师模式 = 军师帮你分析怎么和 ta 说话(现实策略)
终极目标:帮助用户从「依赖 AI 模拟」走向「在现实中行动」,军师是虚拟与现实之间的桥梁。
| 命令 | 功能 | 说明 | 读取 prompt |
|---|---|---|---|
/advisor | 进入军师模式 | 开启军师对话,可自由咨询 | prompts/advisor.md |
/advisor report | 关系报告 | 整合聊天记录、互动频率、信号分析,生成当前关系进展报告 | prompts/advisor_report.md |
/advisor strategy | 策略制定 | 基于当前进展阶段,推荐具体的下一步行动 | prompts/advisor_strategy.md |
/advisor prep | 行动前准备 | 约会/聊天前的战术准备:话题清单、雷区提醒、穿搭建议 | prompts/advisor_prep.md |
/advisor analyze | 互动复盘 | 用户贴入聊天记录,军师解读对方信号 | prompts/advisor_analyze.md |
/advisor confession | 告白规划 | 制定告白策略:时机、方式、话术、备选方案 | prompts/advisor_confession.md |
/advisor reality | 现实检验 | 客观评估暗恋健康程度,防止过度沉溺 | prompts/advisor_reality.md |
性格特征:
输出风格:
反例(禁止):
prompts/advisor.md 获取军师人设与自由咨询规则crushes/{slug}/(persona/memory/meta/chats)> 用户口述当用户反复复盘同一段聊天、频繁问"ta到底喜不喜欢我"、计划跟踪 ta、或回避现实连续沉浸模拟时,军师暂停给感情建议,切换到现实提醒,必要时引导执行 /advisor reality。
/{slug} 模拟模式用 crush 的视角照镜子:重建「ta眼中的你」,并模拟你和 ta 对话时的那个「你」。
模拟模式 = 你和 ta 说话 军师模式 = 军师帮你分析怎么和 ta 说话 照镜子模式 = 看看 ta 眼里的你是谁
照镜子不改变 ta,只改变你对自己的认知——镜子里的人,才是 ta 每天看到的人。
| 命令 | 功能 | 读取 prompt |
|---|---|---|
/mirror | 进入照镜子模式(默认自由咨询) | prompts/mirror.md |
/mirror selfie | 画像分析:重建「ta眼中的你」,含她向朋友提起你时的样子 | prompts/mirror.md |
/mirror talk | 镜像对话模拟:逐句看你的话在 ta 眼里的样子,含「镜像重拍」 | prompts/mirror.md |
/mirror gap | 滤镜检测:双向镜,对照「你眼中的她」vs「她眼中的你」,让理想化滤镜现形 | prompts/mirror.md |
/mirror draft | 发送前预演:还没发的草稿快速过镜,30 秒给出「直接发/改一改/别发」 | prompts/mirror.md |
/mirror growth | 成长线:读取历史镜像存档,对比你眼中的自己如何变化 | prompts/mirror.md |
/advisor strategy);过度照镜子求证而不行动时,主动点破并引导 /advisor reality。crushes/{slug}/mirrors/YYYY-MM-DD.md(append-only),供 /mirror growth 追踪成长线;用户拒绝时跳过。Activate when the user says any of the following:
/create-crushEnter evolution mode when the user says:
/update-crush {slug}List all generated crushes when the user says /list-crushes.
Options:
Same flow as Chinese version above. Generates:
crushes/{slug}/memory.md — Relationship Memory (Part A)crushes/{slug}/persona.md — Persona (Part B)crushes/{slug}/SKILL.md — Combined runnable Skillcrushes/{slug}/meta.json — MetadataSolves the classic degeneration where the simulated person revolves around a single topic and ends every reply with the same catch-all line (e.g. "never mind, gonna go listen to music").
0.4×consistency + 0.25×temperature-fit + 0.2×progression + 0.15×novelty − 0.4×repetition.what about you? / sleep early / text me when you're back / good night) are temperature, never cop-outs.high / medium / low. Low means listener mode — no persona performance, ask and respond only, never introduce details the user never mentioned.Local referee (optional, per turn). Two dependency-free scripts turn the prompt rules into measurable checks: tools/speech_guard.py (repetition via character 2-gram Jaccard, ending style, cop-out phrase window, sentence fingerprint) and tools/topic_ledger.py (topic ledger, quota checks, candidate scoring, degeneration report). Run check on each candidate, discard any veto, then pick the highest score — scores come from the script, not from the model's guess. If the scripts are unavailable, silently fall back to the prompt-only rules. Never show verdicts, scores or violation logs to the user.
Adaptive thresholds (self-calibration). Thresholds are not hard-coded — tools/feedback_tuner.py recalibrates them from user corrections, persisted at crushes/{slug}/adaptive.json: "they wouldn't keep saying that" → still_repeats (tighten), "that's too bland" → too_bland (tighten), "they really do say that" → false_positive (loosen + permanent whitelist). A single correction only nudges thresholds (tanh saturation, ±0.03 cap); recalibration always recomputes from the correction log, so it is idempotent and never drifts. Monotony corrections never rewrite the persona — they only tune thresholds. Reply to the user in plain language ("tightened the repetition check: 0.65 → 0.64"), never with JSON.
| Command | Description |
|---|---|
/list-crushes | List all crush Skills |
/{slug} | Full Skill (chat like them) |
/{slug}-memory | Memory mode |
/{slug}-persona | Persona only |
/crush-rollback {slug} {version} | Rollback to historical version |
/delete-crush {slug} | Delete |
| Command | Description |
|---|---|
/confess | Confession simulator - simulate how they would respond |
/date | Date simulator - predict their behavior on a date |
/progress | Track relationship progression stage |
/analyze | Psychological analysis of your crush |
/let-go {slug} | Gentle delete (wish them well) |
Positioning: Simulator mode = you talk to them (virtual). Advisor mode = an advisor helps you analyze how to talk to them (real-life strategy). Its goal is to move the user from "depending on AI simulation" to "taking action in real life" — the advisor is the bridge.
| Command | Function | Reference prompt |
|---|---|---|
/advisor | Enter advisor mode (free consultation) | prompts/advisor.md |
/advisor report | Relationship report — chat data, interaction frequency, signal analysis | prompts/advisor_report.md |
/advisor strategy | Next-action strategy based on current stage | prompts/advisor_strategy.md |
/advisor prep | Pre-action prep — topics, minefields, outfit tips | prompts/advisor_prep.md |
/advisor analyze | Review past conversations, decode their signals | prompts/advisor_analyze.md |
/advisor confession | Confession plan — timing, method, scripts, fallbacks | prompts/advisor_confession.md |
/advisor reality | Reality check — assess addiction to the crush, return to real life | prompts/advisor_reality.md |
Advisor persona (keep in all sub-commands):
Output style: colloquial Chinese with sarcasm and humor, itemized answers with executable advice, every reply ends with a one-line "advisor summary" (军师总结).
Execution: Read prompts/advisor.md for the persona; for sub-commands read the mapped prompt file and follow its flow. Data priority: user-pasted real records > crushes/{slug}/ (persona/memory/meta/chats) > user narration. When data is insufficient, say so instead of making things up.
Look at yourself through your crush's eyes — rebuild "who you are in their eyes" and simulate the "you" who talks to them.
Simulator mode = you talk to them. Advisor mode = analyze how to talk to them. Mirror mode = see who you are in their eyes.
| Command | Function | Reference prompt |
|---|---|---|
/mirror | Enter mirror mode (free consultation) | prompts/mirror.md |
/mirror selfie | Analysis — rebuild "you in their eyes", including how they'd describe you to friends | prompts/mirror.md |
/mirror talk | Mirror conversation — how each of your messages lands in their eyes, with "re-shoot" rewrites | prompts/mirror.md |
/mirror gap | Filter check — two-way mirror: "them in your eyes" vs "you in their eyes", expose idealization bias | prompts/mirror.md |
/mirror draft | Pre-send rehearsal — quickly mirror-check an unsent draft, verdict in seconds: send / tweak / don't | prompts/mirror.md |
/mirror growth | Growth line — read archived mirror reports, track how your reflection changes over time | prompts/mirror.md |
Core rules: Faithful to their perspective (cite evidence, don't beautify). Describe, don't judge (no scoring/labels). Avoid both extremes (self-loathing and self-flattery). Keep rewrites to max 3 lines. Always steer back to real interaction or /advisor when the user keeps checking the mirror without acting. Auto-archive each session's key conclusions to crushes/{slug}/mirrors/YYYY-MM-DD.md (append-only) for /mirror growth; skip if the user declines.
© xiaoheizi8, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 53 other files in the repository root of xiaoheizi8/crush-skills.
Open the folder on GitHubat commit a2441cb
Create Crush next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Crush this skillxiaoheizi8/crush-skills | 364 | — | ~6.4k | Automated safety check: Notes | MIT | |
| CLI DeveloperJeffallan/claude-skills | 12k | 1 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Alloc ProfileClickHouse/ClickHouse | 50k | — | ~4.3k | Automated safety check: Pass | Apache-2.0 | |
| Create Experkfly/ex-skill | 2.5k | — | ~3.7k | Automated safety check: Notes | MIT | |
| Markdown Exporterbowenliang123/markdown-exporter | 272 | 1 repos | ~5.3k | Automated safety check: Pass | Apache-2.0 | |
| K8e Sandboxxiaods/k8e | 500 | — | ~6k | Automated safety check: Pass | Apache-2.0 |
Jeffallan/claude-skills
Walks through designing, building and polishing a command-line tool: user workflow and command hierarchy, implementation in commander, click, typer or cobra, completions and cross-platform testing.
ClickHouse/ClickHouse
Analyze a jemalloc (or other) allocation profile in collapsed stack format.
perkfly/ex-skill
Distill an ex-girlfriend into an AI Skill. An agent skill from perkfly/ex-skill.
bowenliang123/markdown-exporter
Convert Markdown text to DOCX, PPTX, XLSX, PDF, PNG, SVG, HTML, IPYNB, MD, CSV, JSON, JSONL, XML files, and extract code blocks in Markdown to Python, Bash,JS and etc files.
xiaods/k8e
Run a goal end to end inside an isolated K8E sandbox pod (gVisor / Kata / Firecracker) instead of on the host: exec bash / Python / Node / TypeScript, install packages, move files in and out, reuse…
waybarrios/opencode-power-pack
Verify or select a SageMaker execution role before creating models, endpoints, or training jobs.
Distill a crush into an AI Skill. An agent skill from xiaoheizi8/crush-skills. Create Crush is an agent skill from xiaoheizi8/crush-skills. Distill a crush into an AI Skill.
Run `npx skills add xiaoheizi8/crush-skills --skill create-crush -a claude-code`. Or copy the skill folder (the xiaoheizi8/crush-skills repository) into .claude/skills/create-crush in your project. Claude Code loads it when a task matches its description.
Run `npx skills add xiaoheizi8/crush-skills --skill create-crush -a codex`. Or copy the skill folder (the xiaoheizi8/crush-skills repository) into .agents/skills/create-crush in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xiaoheizi8/crush-skills --skill create-crush -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-crush, .gemini/skills/create-crush, .github/skills/create-crush and .opencode/skills/create-crush in your project.
Going by SKILL.md and its folder, Create Crush needs the command-line tools its instructions call (python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Create Crush is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.4k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create Crush: CLI Developer (Jeffallan/claude-skills, 12k stars), Alloc Profile (ClickHouse/ClickHouse, 50k stars), Create Ex (perkfly/ex-skill, 2.5k stars) and Markdown Exporter (bowenliang123/markdown-exporter, 272 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
xiaoheizi8 (a GitHub user) maintains it in xiaoheizi8/crush-skills, which has 364 GitHub stars. The repository was last updated on October 3, 2026.
Source: xiaoheizi8/crush-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.