Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/TulanCN/vibe-novelingnpx agentmods add skills/tulancn/vibe-noveling/novel-polishWrote 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/tulancn/vibe-noveling/novel-polish)<a href="https://agentmods.dev/skills/tulancn/vibe-noveling/novel-polish"><img src="https://agentmods.dev/badge/skills/tulancn/vibe-noveling/novel-polish/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/tulancn/vibe-noveling/novel-polish"><img src="https://agentmods.dev/badge/skills/tulancn/vibe-noveling/novel-polish.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.00063 | $0.00993 |
| Opus 5 | $0.00032 | $0.00496 |
| Sonnet 5 | $0.00013 | $0.00199 |
| Haiku 4.5 | $0.00006 | $0.00099 |
Grade A, and why
novel-polish 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 11d 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.
What it actually says
章节润色
对已完成的 正文.md 做四轮质量把关:工具检测 → AI味修复 → 一致性校验 → 独立润色。
第一步:定位章节
读取用户指定的章节正文。无参数时默认取最新完成的章节。
第二步:自动化工具链
依次运行以下工具,每个工具报告违规项:
python3 tools/ai_pattern_checker.py <正文文件>
python3 tools/translationese_checker.py <正文文件>
python3 tools/emotion_checker.py <正文文件>
python3 tools/fragment_checker.py <正文文件>
工具全部通过 → 跳过第三步,直接进入第四步。
工具有违规 → 记录违规项,进入第三步针对性修复。
第三步:AI 味修复
仅针对第二步工具报告的违规项 + 以下两项 LLM 专项检测:
3.1 对话失真检测
检查对话是否过于客气、理性或功能性。特征:
- 角色像在开会而非在冲突
- 互相讲解设定(信息灌输式对话)
- 缺少攻击性和火气
修复策略:
- 插入打断、反问或攻击性短句
- 把设定解释改成行动后果
- 给角色加非理性反应(偏执、赌气、装傻)
3.2 无功能细节检测
检查不承担叙事功能的微动作和声音描写。特征:
- 声音描写反复出现但不是关键信息
- 嘴角上扬、手指敲击等微动作偷渡情绪
- 删掉对剧情推进无影响
修复策略:
- 删除无功能细节
- 改成角色态度判断
- 改成对话或行动
3.3 工具违规项修复
根据工具报告的具体违规位置和类型,联系前后句整句重写,不做局部换词。修复原则参考 references/fix-guide.md。
第四步:一致性校验
调用 consistency-guard agent,检查称谓、时间线、承接、设定冲突。局部修补,不重做结构。
第五步:独立润色
读 references/polish-rules.md,按 5 条原则对整章做文风转换。不大幅改字数,不改变核心表意。
第六步:闸门自检
对最终正文做定量自查:
| # | 检查项 | 通过标准 | 方式 |
|---|---|---|---|
| ① | 破折号 | 引号外 —— ≤ 1 |
人工 |
| ② | 形容词+冒号 | 无 的是: 或 之处: |
人工 |
| ③ | 句号碎片 | 非对话连续短句 ≤ 3 | 脚本 |
| ④ | 纠正句式 | 无连续使用 | 人工 |
| ⑤ | 过渡词 | 无 最终/总之/综上所述 开头段落 |
人工 |
③ 必须脚本验证:
python3 tools/fragment_checker.py <正文文件路径> --threshold 3
退出码为 0 才通过。不过则修复后重跑,直到通过。
闸门全部通过后写回 正文.md。
输出
润色完成后的 正文.md(原地覆盖)。
提示用户:确认后运行 novel-sync。
禁止
- 大幅改字数或改变核心表意
- 发现结构问题时在正文阶段硬修——回 novel-discuss 改事件卡
- 借一致性修补名义重做结构
- 跳过 fragment_checker 脚本验证
What ships with it
2 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.
- 11d ago First seen · 106 lines · 63 tokens per session scan A 235777af22f7
novel-polish is a skill published in the GitHub repository TulanCN/vibe-noveling (23 stars, last pushed 3mo ago), licensed MIT. It adds 63 tokens to every session and 993 once invoked, about $0.0003 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-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
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…
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…
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…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…