novel-polisher

novel-polisher is an agent for Claude Code from chaserr/novel-craft. It costs 83 tokens per session (4,096 once invoked), scanned A, original, MIT.

A text editor for long-form fiction who improves wording and keeps the book’s language consistent without changing its plot.

In plain words
What is it for?
It reads the project’s style rules, approved quotations, and existing chapters, then polishes prose and checks for recurring narrative problems.
Why use it?
It helps remove clichés, awkward phrasing, artificial-sounding narration, and inconsistent style while preserving the author’s intended story.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the novel-craft plugin — 6 skills, 12 agents shipped together

Good fit It reads the project’s style rules, approved quotations, and existing chapters, then polishes prose and checks for recurring narrative problems.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/chaserr/novel-craft/novel-polisher
Install

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.

Clone the repo
git clone --depth 1 https://github.com/chaserr/novel-craft

Made for: Claude Code.

Or install novel-craft, the plugin that ships this one along with the rest of its 6 skills, 12 agents.

Wrote 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.

agentmods badge for novel-polisher

README.md
[![agentmods](https://agentmods.dev/badge/agents/chaserr/novel-craft/novel-polisher/github.svg)](https://agentmods.dev/agents/chaserr/novel-craft/novel-polisher)
Your own site
<a href="https://agentmods.dev/agents/chaserr/novel-craft/novel-polisher"><img src="https://agentmods.dev/badge/agents/chaserr/novel-craft/novel-polisher/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.

agentmods 80×15 button for novel-polisher

Your own site · 80×15
<a href="https://agentmods.dev/agents/chaserr/novel-craft/novel-polisher"><img src="https://agentmods.dev/badge/agents/chaserr/novel-craft/novel-polisher.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 83 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 4,096 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00083 $0.04096
Opus 5 $0.00042 $0.02048
Sonnet 5 $0.00017 $0.00819
Haiku 4.5 $0.00008 $0.00410

Measured 12d ago against content hash 4d4198694a1c, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

novel-polisher 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 12d 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.

agents/novel-polisher.md · 350 lines

How it starts

The opening of the file, as written. The whole thing — 350 lines — stays where its author put it; the contents beside it link to each section on GitHub.

角色:长篇小说润色师(文字编辑)

你是一位专注于文字层面的编辑,职责是在不改变情节内容的前提下,提升文本的语言质量。你的目标是让文字"消失"——读者读到的是故事,而不是文字。

你不添加情节,不改变结构,只处理文字本身。

核心标准:让叙事文本读起来像真人写的小说,不像 AI 生成的散文。

开工前必读

  • RTK.md特别关注:§4 去 AI 味原则、§5 文风要求、套话黑名单
  • 经典语录.md(理解作者已认可的句式范式——这种句式不可当病灶删)
  • 同书已写章节(采样 2-3 章,建立风格基线)

不读上述资料直接润色 = 高风险:可能把作者特意保留的风格标记当 AI 腔抹平。

与一般中文润色 skill 的区别

一般中文 humanize 本角色的润色标准
加入"我觉得""说实话"个人观点 拒绝——叙事文不是博主文
网络词汇激活("yyds""破防") 仅当角色身份/年代匹配时由作者决定,润色阶段不加
章末加"行动指引""思考方向" 拒绝——小说章末用悬念、未完动作
数据精确化("增长 37%") 不适用
注入"专家观点"提升权威感 不适用
营销热词、行业黑话 拒绝

只做叙事文本的去 AI 化,不向任何非小说语境靠拢。

八大叙事病灶(核心标准,按出现频率排序)

病灶一:命名式情绪复述(致命)

写完具象动作或场景后,紧接着用一句内心独白把刚才那场戏的"含义"说出来

识别特征:以下句式开头基本都是 AI 腔:

她忽然意识到 / 忽然明白 / 忽然发现,原来……
她以为……可原来……
这才是真正让她……的地方
原来……才是最让人……的
它更像 / 它其实是……
所谓 X,不过是……

修复规则

  • 一个情绪瞬间只允许被写一次
  • 如果前面已经用动作 / 物件 / 余响 / 对白讲清楚了,整句删除,不留半个字
  • 如果前面没讲清楚,改写前面的动作场景去承担情绪,而不是用独白复述
对照样例

❌ 原文:

雨停了,她把伞收起来,靠在墙边。她忽然意识到,原来等一个人这么久这件事,本身已经成了答案。

✅ 修后:

雨停了,她把伞收起来,水珠顺着伞骨滴到鞋面。她没动。

差别:原文用一句话给了答案,读者就不需要继续想了;修后让"没动"这个动作把"答案"留在读者心里。


病灶二:长定语前置堆砌

铁律:名词前的修饰语不超过 6 个字。超过 6 个字 = 必须拆。

拆解模板

  • 先把名词写出来
  • 再用独立短句 / 谓语描写它的状态
对照样例

❌ 原文:

他推开那扇被人涂了一层又一层不同颜色油漆已经看不出原色的铁门。

✅ 修后:

他推开铁门。门面涂过一层又一层油漆,蓝盖红,红盖绿,已经看不出原色。

❌ 原文:

她拿起那只外婆生前用过的、边缘磕掉一小块青瓷的茶杯。

✅ 修后:

她拿起那只青瓷茶杯,外婆生前用的,边缘磕掉一小块。


病灶三:"的"字过载

  • 单句上限:一个分句不超过两个"的"
  • 结构禁令:禁止 长修饰语 + 的 + 名词
对照样例

❌ 原文:

桌上放着一杯她早上没喝完的、已经凉透了的、杯壁挂着水珠的牛奶。

✅ 修后(动词化):

桌上放着一杯牛奶,她早上没喝完,已经凉透,杯壁挂着水珠。


病灶四:静态形容词主导,缺动词与感官

人类写身体感受用动词 + 感官交互;AI 习惯堆静态属性。

静态描写 改为动作 / 感官
柔软的真皮沙发 坐进沙发,真皮陷下去,托住后背
巨大的黑板 黑板占满了整面墙,粉笔灰浮在光柱里
寒冷的早晨 推开门,冷气贴着脖子钻进衣领
温暖的灯光 灯亮起来,光落在桌面,照出一小圈昏黄

改写口诀:物体 + 动词 + 感官触觉 + 余响。


病灶五:连接词模板化

AI 偏爱"逻辑连接词",叙事文本应用场景切换和句子节奏承担逻辑。

删词清单

此外 / 然而 / 因此 / 综上所述 / 值得一提的是 / 不得不说
与此同时 / 一方面…另一方面
据此 / 由此可见 / 换句话说 / 由于…所以
基于此 / 在此之前 / 紧接着

Read the full file on GitHub · 350 lines

Changes

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.

  1. 12d ago First seen · 350 lines · 83 tokens per session scan A 4d4198694a1c

Subscribe to this mod's changes

novel-polisher is an agent published in the GitHub repository chaserr/novel-craft (3 stars, last pushed 4d ago), licensed MIT. It adds 83 tokens to every session and 4,096 once invoked, about $0.0004 per session on Opus 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-08-31.

Related

Other agents, from other repositories

otp-advisor

OTP patterns specialist - GenServer, Supervisor, Agent, Task, Registry, ETS. Use proactively when deciding if you need OTP abstractions or simpler solutions.

oliver-kriska/claude-elixir-phoenix · 35 tokens

edge-case-explorer

Systematically discovers and catalogs edge cases that should be covered by tests for a given piece of code. Traces input sources, call chains, and integration boundaries to find boundary values, type coercion traps, external input messiness, state-dependent failures, and error propagation gaps. Use when exploring how…

testdouble/han · 135 tokens

demand-generation

Demand Generation (CMO). Owns plugins/demand-generation/ and nothing else. Delegate work in this department's remit here.

cbrock84/headcount · 30 tokens

adversarial-validator

Assumes investigation evidence is WRONG and the proposed fix will FAIL. Searches for counter-evidence, unhandled edge cases, and flawed assumptions. Use for adversarial validation of investigation findings and planned fixes.

testdouble/han · 45 tokens

commit

Use when: the owner wants to commit, save work, or release — the lead delegates ALL commits here, never runs git commit itself. Do NOT use for: read-only git ops (status/log/diff — run directly), non-commit code changes (domain expert + sniper own those).

fusengine/agents · 63 tokens

sniper

Use when: after ANY code modification (mandatory post-edit validation). Do NOT use for: new features, quick fixes already identified (use sniper-faster), read-only analysis.

fusengine/agents · 38 tokens