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 wordflowlab/novel-writer-skills --skill dialogue-techniquesgit clone --depth 1 https://github.com/wordflowlab/novel-writer-skillsWrote 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/wordflowlab/novel-writer-skills/dialogue-techniques)<a href="https://agentmods.dev/skills/wordflowlab/novel-writer-skills/dialogue-techniques"><img src="https://agentmods.dev/badge/skills/wordflowlab/novel-writer-skills/dialogue-techniques/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/wordflowlab/novel-writer-skills/dialogue-techniques"><img src="https://agentmods.dev/badge/skills/wordflowlab/novel-writer-skills/dialogue-techniques.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.00034 | $0.02480 |
| Opus 5 | $0.00017 | $0.01240 |
| Sonnet 5 | $0.00007 | $0.00496 |
| Haiku 4.5 | $0.00003 | $0.00248 |
Grade A, and why
natural-dialogue-techniques 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.
How it starts
The opening of the file, as written. The whole thing — 367 lines — stays where its author put it; the contents beside it link to each section on GitHub.
自然对话写作技巧
核心原则
通过语言展现角色
每个角色都应该有独特的声音:
-
用词选择
- 受过教育的 vs 随意的
- 正式的 vs 俚语
- 技术术语 vs 日常语言
- 角色背景决定词汇
-
句子结构
- 短/断断续续 vs 长/流畅
- 完整句子 vs 片段
- 简单结构 vs 复杂从句
- 反映思维方式
-
言语模式
- 打断、停顿、重复
- 口头禅和填充词
- 独特的措辞习惯
- 文化和地域特色
-
不说什么
- 回避的话题
- 说谎的模式
- 沉默的时刻
- 未说出口的含义
潜台词胜过直白
角色的意思 vs 说的话:
❌ 直白对话(说教式)
"我对你生气,因为你昨晚对我撒谎了关于你去哪里。"
✅ 富含潜台词的对话
"你的商务会议开得怎么样?"
"很好。"
"我确定是这样。"
为什么更好:
- 让读者参与推理
- 创造张力和不适
- 更真实(人们避免直接冲突)
- 展示角色动态
潜台词的层次
表面层:字面意义 情感层:真实感受 关系层:权力和亲密度 主题层:更大的故事意义
打断和重叠
真实对话不是有序的:
使用打断
"听着,我知道你认为——"
"你不知道我在想什么。"
"——但如果你让我说完——"
砰的一声,远处的门关上了。
"算了。" 她转身离开。
何时使用打断:
- 情绪高涨时
- 急迫或恐慌
- 权力斗争
- 展示关系动态
思维打断言语
"我只是想说——" 他的脸闪过什么。"没事。不重要。"
效果:
- 展示内在冲突
- 创造神秘感
- 暗示隐藏信息
- 角色自我审查
常见错误
❌ 信息倾倒
问题:角色说话只是为了传达信息给读者
坏例子:
"如你所知,鲍勃,我们从 2015 年高中时就是朋友,
当时我们都加入了篮球队,然后我们一起去了斯坦福,
在那里学习工程学..."
好例子:
"还记得你三年级那个压哨球吗?"
鲍勃笑了。"教练还在谈论它。"
解决方法:
- 在行动中揭示信息
- 角色只说他们会说的话
- 使用简短的暗示而非完整历史
- 让读者拼凑背景
❌ 每个人听起来都一样
问题:所有角色使用相同的词汇和言语模式
解决方法:为每个主要角色创建"声音表"
声音表示例:
| 角色 | 句子长度 | 词汇 | 怪癖 | 避免什么 |
|---|---|---|---|---|
| 张医生 | 中长,复杂 | 正式,医学术语 | 解释过度 | 俚语 |
| 李学生 | 短,片段 | 随意,网络语言 | "就是说"、"懂吧" | 承认不知道 |
| 王老板 | 简短,命令式 | 商业,直接 | 很少浪费词 | 解释自己 |
❌ 随意言语中的完美语法
太正式:
"我要去商店。你想让我为你买些什么吗?"
自然:
"去商店。要我带点啥吗?"
口语化技巧:
- 缩略(想要 → 想,去 → 咱)
- 省略词语(我去商店 → 去商店)
- 片段句子
- 口头填充词(嗯、呃、那个)
❌ 用对话进行叙述
问题:角色说出应该是叙述的内容
坏例子:
"我站起来,走向门,打开它。是送货员。"
这不是对话:
- 人们不会叙述自己的行动
- 这是作者偷懒
- 使用实际叙述或展示
高级技巧
对话作为行动
使用言语标签展示角色状态:
"随便吧。" 她嘀咕道。(被击败)
"随便吧!" 她厉声说道。(生气)
"随便吧..." 她的声音渐渐消失。(不确定)
超越"说":
- 低语、嘀咕、咆哮(音量)
- 厉声、尖叫、吼叫(强度)
- 讥讽、嘲笑、低语(语调)
- 但不要过度使用 - "说"通常就够了
沉默作为对话
有时不说什么很重要:
"你爱我吗?"
他看着自己的鞋子。
沉默的力量:
- 说出言语无法说出的
- 创造紧张
- 展示不适或痛苦
- 让读者填补
动作打破对话
不要让角色成为说话的头:
"这不是我想要的。" 她把杯子推开。"不是这样的。"
他在房间里踱步。"那你想要什么?"
"我——" 她的手握紧了桌边。"我不知道。"
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.
- 12d ago First seen · 367 lines · 34 tokens per session scan A bf4e48d259a7
natural-dialogue-techniques is a skill published in the GitHub repository wordflowlab/novel-writer-skills (258 stars, last pushed 10mo ago), licensed MIT. It adds 34 tokens to every session and 2,480 once invoked, about $0.0002 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…
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…