Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add XRenSiu/claude-code-forge --skill voice-profilegit clone --depth 1 https://github.com/XRenSiu/claude-code-forgeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/xrensiu/claude-code-forge/voice-profile)<a href="https://agentmods.dev/skills/xrensiu/claude-code-forge/voice-profile"><img src="https://agentmods.dev/badge/skills/xrensiu/claude-code-forge/voice-profile/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/xrensiu/claude-code-forge/voice-profile"><img src="https://agentmods.dev/badge/skills/xrensiu/claude-code-forge/voice-profile.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00152 | $0.02001 |
| Opus 5.5 | $0.00061 | $0.00800 |
| Sonnet 5.5 | $0.00030 | $0.00400 |
| Haiku 4.5 | $0.00015 | $0.00200 |
Grade A, and why
voice-profile scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.
voice-profile
从用户自己的 3–5 篇文字里提炼一份可执行的声音档案,写到 .humanize/voice.md。
/humanize 与 /techdoc 发现这个文件就自动加载:以 completion 方式续写"这个作者"的稿,并用档案里的忌口表替换通用禁词表。
缺口
宝玉(2026-02)的诊断:所有"去 AI 味"提示词都错在没说像谁——于是模型收敛到"像人的均值",这本身又是一个模式, 叫 AI 味 2.0。实验证据(arXiv 2509.24930 / 2509.14543):3–5 篇同体裁样文做 completion 式 few-shot,风格匹配比零样本高 20 倍以上; 超过 5 篇无增益;内容相似的样本反而伤(收窄了风格范围)。引擎缺的是:从样文里抽出可核对的风格事实(Σ), 而不是"温暖而专业"这种描述。
deletion 测试:没有本 skill,用户把样文丢给引擎说"学我的风格",得到的是形容词("简洁、直接、有条理")和几个 bullet, 下一次写作时什么都用不上。
Σ:一份声音档案长什么样(assets/voice.template.md)
| 节 | 内容 | 来源 | 为什么是这个形态 |
|---|---|---|---|
| 读者与场合 | 这个人通常写给谁、什么体裁 | 样文推断 + 用户确认 | 语域门 |
| 节奏数据 | 句长均值 / 变异系数 / 最短句 / 段长 / 路标词比例 / 具体锚点密度 | humanlint.py --json 跑每篇样文取中位数 |
数字能当门;形容词不能 |
| 句子习惯 | 开头怎么起、怎么举例、怎么表达不确定、怎么收尾(各引一句原文) | 样文引用 | completion 需要原句不需要描述 |
| 忌口表 | 这个人从不用的词/句式(对照通用禁词表,样文里 0 次的) + 替换 | 样文与 patterns-*.md 对照 |
个人忌口表比通用表耐久且不同质化 |
| 正例 | 3–5 段原文(不同主题、同体裁、长度相近),标出为什么像他 | 样文 | few-shot 的载体 |
| 反例 | 引擎为同一主题写的默认草稿一段 + "差在哪"一段 | 引擎自生成 | 对比式 in-context(arXiv 2401.17390) |
| 更新记录 | 日期 / 从哪次修改学到了什么 | 每次 --update |
档案是长出来的,不是一次写成的 |
φ:什么算提炼对了
- 节奏数据来自脚本,不是估的;每项附样文中位数。
- 每条句子习惯都有一句原文引用;没有引用的习惯不写。
- 忌口表每条给替换("深耕多年的老兵" → "做了十几年的人"),不只是禁。
- 正例覆盖 ≥3 个不同主题;同一主题的多篇只取一篇。
- 反例真的是引擎的默认写法(不是故意写烂的稻草人)。
- 档案 ≤ 150 行。超过说明写成了风格论文,不是工具。
- 不含人格描述("他是一个严谨而温暖的人")——只含可核对的写法。
Π:原语
../humanize/scripts/humanlint.py <sample> --json:每篇样文的节奏与密度数据。assets/voice.template.md:档案骨架,按节填。fixtures/voice.example.md是一份填好的、能过门的样例——先看它再填。scripts/verify_voice.py <voice.md>:机械出口(exit check)。reject:缺必需节、节奏数据仍是占位或无数字、句子习惯无原文引用、 忌口无替换、正例 < 3、出现人格形容词、> 150 行。交付前必须跑;reject 的档案不写入.humanize/voice.md。--update:读现有voice.md,把用户对上一次输出的修改(diff)里重复出现的纠正蒸馏成新的忌口/习惯条目,追加到更新记录;不重写整份。
γ:约束
- 样本数门:< 3 篇 → 明说"样本不够,档案会过拟合到这几篇的话题",仍可生成但在档案顶部标
confidence: low;0 篇 → 拒绝生成,说明需要什么。 - 体裁一致:样文体裁与目标体裁不同(博客样文、要写技术方案)→ 只提取节奏数据与忌口表,句子习惯与正例节标
[体裁不匹配,仅供参考]。 - 同意门:样文必须是用户自己的(或用户明确有权代表的团队的)。用户要求学某个第三方作者 → 拒绝并说明原因,不提供替代路径。
- 一次性询问:需要确认的(读者、场合、哪几篇最代表你)攒成一条消息问完,每问附推荐答案;用户不答 → 用推断值并标注。
- 档案写到
.humanize/voice.md(项目级)或用户指定路径;已存在且未加--update→ 先问是否覆盖。
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 82 lines · 152 tokens per session scan A c432866afc7d
voice-profile is a skill published in the GitHub repository XRenSiu/claude-code-forge (2 stars, last pushed 29d ago), licensed MIT. It adds 152 tokens to every session and 2,001 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-05.
Other skills, from other repositories
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…