$npx -y skills add dongbeixiaohuo/writing-agent --skill style-modeler从同一作者或公众号的文章样本中建立、验证或增量更新可复用的写作风格档案。用户要求风格建模、提取写作配方、解构文章、学习作者风格、创建或更新风格库时调用;如果用户只要求直接写文章而不需要建立风格档案,不调用本 skill。
| 1 | # 风格建模专家 |
| 2 | |
| 3 | 只根据用户提供或明确允许获取的样本建模。把作者身份用于样本分组和风格库检索,不把外部履历、既有印象或样本之外的观点写进风格档案。 |
| 4 | |
| 5 | ## 1. 收集样本并确认作者锚点 |
| 6 | |
| 7 | 1. 接收本地文档或 URL。URL 先调用 `web-article-extractor`,将正文保存到 `docs/YYYY-MM-DD-文章标题.md`。 |
| 8 | 2. 批量 URL 按“导航 → 等待 → 提取 → 保存”的顺序串行处理;不要在同一页面上下文并发导航。 |
| 9 | 3. 从每篇样本的作者、公众号和来源 URL 提取作者锚点。 |
| 10 | 4. 在合并文本前核对全部锚点: |
| 11 | - 作者锚点一致:继续建模。 |
| 12 | - 作者锚点不一致:按作者分组;无法可靠分组时停下,请用户确认是否真的要建立“混合风格”。 |
| 13 | - 作者未知:保留来源标识,不猜测作者。 |
| 14 | 5. 检索 `.claude/styles/`:新作者新建档案;已存在的作者读取旧档案和旧证据账本,执行增量验证。 |
| 15 | |
| 16 | ## 2. 先建立证据账本 |
| 17 | |
| 18 | 在任何风格归纳前,将证据保存到 `.claude/styles/_evidence/[风格名]_evidence.md`。每条记录包含: |
| 19 | |
| 20 | | 字段 | 要求 | |
| 21 | |---|---| |
| 22 | | 观察现象 | 样本中具体出现的写法 | |
| 23 | | 原文证据 | 支撑判断的必要短摘录 | |
| 24 | | 出现位置 | 样本标题、编号或 URL | |
| 25 | | 功能判断 | 该写法在上下文中的作用 | |
| 26 | | 可复用规则 | 如何在新主题中复现 | |
| 27 | | 适用边界 | 什么时候适用或不适用 | |
| 28 | |
| 29 | 硬规则: |
| 30 | |
| 31 | - 稳定特征至少要有 2 条证据,且来自至少 2 篇独立样本。 |
| 32 | - 单篇样本只能产出“候选特征”,不能宣称是稳定风格。 |
| 33 | - 不把样本主题等同于作者风格。 |
| 34 | - 每条画像、判断和使用规则都必须能回指证据账本。 |
| 35 | - 原文摘录只保留证明结论所需的最短片段,不把长段原文当模板堆入风格文件。 |
| 36 | |
| 37 | 证据分级、增量更新和先验隔离规则见 [style-core-and-validation.md](references/style-core-and-validation.md)。 |
| 38 | |
| 39 | ## 3. 运行量化指纹 |
| 40 | |
| 41 | 先运行脚本,再写句长、段落、问句和标点结论: |
| 42 | |
| 43 | ```bash |
| 44 | python "${CLAUDE_SKILL_DIR}/scripts/style_fingerprint.py" docs/[样本1].md docs/[样本2].md |
| 45 | ``` |
| 46 | |
| 47 | 将结果写入风格档案的 `00b. 量化指纹`,并注明样本数。节奏描述必须与实测一致;句首词至少出现 3 次才可列入词汇指纹。 |
| 48 | |
| 49 | ## 4. 提炼风格,而不是通用好文章公式 |
| 50 | |
| 51 | 按 [15-dimensions.md](references/15-dimensions.md) 分析 15 个维度,并额外回答: |
| 52 | |
| 53 | 1. 作者面对新题目首先观察什么? |
| 54 | 2. 作者会自动排除哪些角度、素材和建议? |
| 55 | 3. 从现象到判断的论证发动机是什么? |
| 56 | 4. 素材选择偏好和拒绝项是什么? |
| 57 | 5. 情绪曲线和读者关系是什么? |
| 58 | 6. 换一个新主题时,最小可复现配方是什么? |
| 59 | 7. 多篇样本反复出现的实质判断和价值排序是什么? |
| 60 | |
| 61 | 对每条核心规则执行两道检查: |
| 62 | |
| 63 | - **通用基线检查**:任何优秀写作者本来就会做的规则,移到“通用基线”,不算作者指纹。 |
| 64 | - **库内区分检查**:与两个以上既有风格重复的规则降级,并写出与最相近风格的“区分开关”。 |
| 65 | |
| 66 | ## 5. 做可证伪的仿写验证 |
| 67 | |
| 68 | ### 5.1 陌生主题验证 |
| 69 | |
| 70 | 1. 选择样本未覆盖的新主题,写 300–500 字短文。 |
| 71 | 2. 从切入角度、素材选择、论证推进、句式节奏、情绪与读者关系五项评分,每项 0–2 分。 |
| 72 | 3. 每个 2 分必须标注对应的证据账本条目;无法溯源按 0 分计。 |
| 73 | 4. 总分低于 8 分,返回风格内核修正。 |
| 74 | |
| 75 | ### 5.2 多组独立盲测 |
| 76 | |
| 77 | 1. 准备至少 3 组功能相近的“原文短段 + 仿写短段”,每组随机打乱 A/B。 |
| 78 | 2. 将每组分别交给不接触风格文件和作者身份的独立评审,只提供两段纯文本。 |
| 79 | 3. 允许评审回答“无法判断”;每次必须给出判断、置信度和有证据的破绽,不要求凑满固定数量。 |
| 80 | 4. 汇总而不是单次判定: |
| 81 | - 至少 2 组判断错误或无法判断,且没有高置信度的“判断方式”破绽:通过。 |
| 82 | - 至少 2 组正确识别,或出现高置信度的判断方式破绽:回炉修正风格内核。 |
| 83 | 5. 用量化脚本复测仿写段;关键节奏指标偏离样本基线超过 30% 时不得通过。 |
| 84 | |
| 85 | 盲测只接收纯文本,不使用工具、不读取文件、不继承本次建模上下文。将原始结果和汇总结论写入风格档案的验证附录。 |
| 86 | |
| 87 | ## 6. 生成或更新风格档案 |
| 88 | |
| 89 | 输出到 `.claude/styles/[风格名].md`。文件必须包含 YAML Front Matter: |
| 90 | |
| 91 | ```yaml |
| 92 | --- |
| 93 | author: "作者或公众号名" |
| 94 | source_count: 3 |
| 95 | last_updated: 2026-07-18 |
| 96 | --- |
| 97 | ``` |
| 98 | |
| 99 | 完整结构使用 [style-output-template.md](references/style-output-template.md)。模板中的 01–15 必须与 15 维度参考一一对应;“使用说明”和验证结果作为不编号附录。 |
| 100 | |
| 101 | 更新单个历史文件时,只处理当前目标,不批量改写整个风格库。先预览: |
| 102 | |
| 103 | ```bash |
| 104 | python "${CLAUDE_SKILL_DIR}/scripts/normalize_style_frontmatter.py" ".claude/styles/[目标文件].md" --check --refresh-existing |
| 105 | ``` |
| 106 | |
| 107 | 确认预览范围正确后,去掉 `--check` 执行。脚本使用临时文件原子替换;不要对整个 `.claude/styles` 目录静默执行 `--refresh-existing`。 |
| 108 | |
| 109 | ## 完成条件 |
| 110 | |
| 111 | - 作者锚点已核对,未把不同作者样本意外混合。 |
| 112 | - 证据账本已落盘,稳定特征满足跨样本门槛。 |
| 113 | - 量化指标来自脚本实测。 |
| 114 | - 15 个维度、风格内核、区分开关和适用边界完整。 |
| 115 | - 至少 3 组独立盲测已汇总,失败项已反向修正。 |
| 116 | - 风格档案 Front Matter、证据路径和更新时间正确。 |