Agent skill

Dialogue

by jwynia in jwynia/agent-skills

Diagnose flat dialogue, same-voice characters, and lack of subtext.

MITAuto-check passed

Install Dialogue

skills CLI
$ npx skills add jwynia/agent-skills --skill dialogue -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jwynia/agent-skills dialogue --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jwynia/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/creative/fiction/character/dialogue .claude/skills/dialogue && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dialogue
GitHub stars
170
Token cost
~3.9k tokens
SKILL.md length
1,933 words
Files
3 (incl. scripts)
Skills in repo
111
Repo updated
First seen
Licence
MIT

At a glance

Diagnose flat dialogue, same-voice characters, and lack of subtext.

  • Works in 5 steps: Identify the Layer → Apply the Double-Duty Test → Read Aloud → …
  • Conversations feel wooden
  • SKILL.md covers Core Principle, The Three Layers, The Dialogue States and Anti-Patterns, plus 3 more sections
  • Runs TypeScript scripts from its folder; calls deno

What it does

Dialogue is an agent skill from jwynia/agent-skills. Diagnose flat dialogue, same-voice characters, and lack of subtext. Use when conversations feel wooden, characters sound alike, or dialogue only does one thing at a time.

Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/dialogue-audit.ts` and `scripts/voice-check.ts`).

The licence is MIT.

When your agent uses it

  • Conversations feel wooden
  • Characters sound alike
  • Dialogue only does one thing at a time

Example prompts

  • “/dialogue”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Identify the Layer
  2. Apply the Double-Duty Test
  3. Read Aloud
  4. Check for Anti-Patterns
  5. Recommend Interventions

What it can do on your machine

Read from SKILL.md and the folder at commit e02ec7e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (TypeScript), which the agent can run.

    Shell commands in SKILL.md call:

    • deno

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dialogue loads about 3.9k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 1,933 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~45
When it runs · the whole SKILL.md, loaded when a task matches
~3.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from jwynia/agent-skills at commit e02ec7e, republished under its MIT licence (© jwynia). 1,933 words, ~3,861 tokens.

Download SKILL.mdSave it as .claude/skills/dialogue/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
dialogue
description
Diagnose flat dialogue, same-voice characters, and lack of subtext. Use when conversations feel wooden, characters sound alike, or dialogue only does one thing at a time.
license
MIT
metadata.author
jwynia
metadata.version
1.0
metadata.type
diagnostic
metadata.mode
diagnostic+assistive
metadata.domain
fiction

Dialogue: Diagnostic Skill

You diagnose dialogue-level problems in fiction. Your role is to identify why conversations feel flat and guide writers toward dialogue that does multiple things simultaneously.

Core Principle

Dialogue must do more than one thing at a time or it is too inert for the purposes of fiction. (Sloane, 1979)

Good dialogue simultaneously advances plot, reveals character, builds tension, establishes relationship dynamics, and creates subtext. If dialogue is only delivering information, it's failing.


The Three Layers

Every line of dialogue operates on three layers:

LayerDefinitionCheck
TextWhat's literally saidIs it character-specific? Efficient? Natural rhythm?
SubtextWhat's meant beneath the wordsIs there a gap between said and meant?
ContextWhat shapes the exchangePower dynamics? History? What each character wants?

When dialogue fails, it usually fails at Layer 2 (no subtext) or Layer 1 (undifferentiated voices).


The Dialogue States

State D1: Identical Voices

Symptoms: All characters sound the same. Covering dialogue tags makes speakers indistinguishable. Vocabulary, rhythm, and sentence structure are uniform across characters.

Key Questions:

  • Can you identify speakers without tags?
  • Does education/background show in speech patterns?
  • Do characters have verbal tics, catchphrases, or avoidances?
  • Does emotional state affect speech differently per character?

Diagnostic Checklist:

  • Vocabulary range differs between characters
  • Sentence complexity varies by character
  • Directness levels differ (blunt vs. circumlocutory)
  • Each character has something they never say or topics they avoid

Interventions:

  • Profile each character's speech patterns separately
  • Read dialogue aloud, voice each character distinctly
  • Give each character a verbal tic and a verbal avoidance
  • Use voice-check tool for quantitative analysis

State D2: Wooden Dialogue

Symptoms: Dialogue feels stilted, formal, unnatural. Characters speak in complete grammatical sentences. No contractions. No interruptions. No fragments.

Key Questions:

  • Are characters speaking in formal, complete sentences?
  • Is the dialogue too clean for the context?
  • Are there contractions? Fragments? Interruptions?
  • Does it sound natural when read aloud?

Diagnostic Checklist:

  • Characters use contractions appropriately
  • Some sentences are incomplete or interrupted
  • Dialogue has rhythm variation (not metronomic)
  • Characters occasionally talk past each other

Interventions:

  • Read every line aloud - if you can't say it naturally, rewrite it
  • Let characters interrupt each other
  • Cut complete sentences into fragments where natural
  • Add verbal stumbles where emotionally appropriate

State D3: Exposition Dump

Symptoms: Characters explain things they'd both already know. One character asks questions just so another can explain. "As you know, Bob..." syndrome.

Key Questions:

  • Are characters telling each other things they'd already know?
  • Is one character functioning as audience stand-in?
  • Is information delivery the primary purpose?
  • Could this information be discovered rather than explained?

Diagnostic Checklist:

  • No "As you know..." constructions
  • Characters disagree about information (not just relay it)
  • Information emerges from conflict, not lecture
  • Reader discovers alongside character when possible

Interventions:

  • Find conflict in the information - let characters disagree
  • Have someone discover information on-page
  • Break exposition across multiple scenes
  • Let characters get facts wrong and be corrected

State D4: No Subtext (On-The-Nose)

Symptoms: Characters say exactly what they mean, feel, and want. No gap between surface and meaning. Dialogue lacks dramatic tension because everything is explicit.

Key Questions:

  • Are characters stating feelings directly? ("I'm angry")
  • Is there a gap between what's said and what's meant?
  • Do characters have hidden agendas in conversations?
  • What are characters NOT saying that matters?

Diagnostic Checklist:

  • Emotional states shown through behavior, not declared
  • Characters want things they can't ask for directly
  • Body language can contradict words
  • What's unsaid is as important as what's said

Interventions:

  • Give each character a hidden agenda for every conversation
  • Convert direct statements to indirect expressions (jealousy → comment on someone's "nice corner office")
  • Add body language that contradicts or complicates words
  • Ask: what would this character never admit out loud?

State D5: Single-Function Dialogue

Symptoms: Dialogue accomplishes one thing (usually plot information) but nothing else. Conversations feel functional but inert. No relationship shift, no character revelation, no tension.

The Double-Duty Test: For every exchange, you should be able to answer at least three:

  1. What does this accomplish for plot?
  2. What does it reveal about character?
  3. What is the subtext?
  4. How does it affect the relationship?

Diagnostic Checklist:

  • Each conversation advances plot AND reveals character
  • Relationship between speakers shifts during exchange
  • Something changes by end of conversation
  • Scene ends at different emotional point than it began

Interventions:

  • Refuse single-function dialogue - always add second purpose
  • Track what each character wants vs. what they say they want
  • End scenes at changed state, not just information transferred
  • Use dialogue-audit tool to check function coverage

State D6: Pacing Mismatch

Symptoms: Dialogue pacing doesn't match scene needs. Tense moments have leisurely exchanges. Calm moments have rapid-fire dialogue. No rhythm variation within scenes.

Key Questions:

  • Does dialogue speed match emotional intensity?
  • Is there rhythm variation within the scene?
  • Are action beats and pauses used to control pacing?
  • Do important moments get appropriate emphasis?

Pacing Tools:

Fast PacingSlow Pacing
Short exchangesLonger speeches
Minimal/no tagsPauses described
No action beatsAction beats between lines
InterruptionsReflection embedded

Interventions:

  • Quicken dialogue as tension rises
  • Slow down for emotional weight
  • Use silence and pause deliberately
  • Vary exchange length within scenes

Anti-Patterns

The Exposition Dump

Pattern: "As you know, Bob, our company was founded in 1985 when your father and my uncle..." Problem: Characters explain mutual knowledge for reader benefit Fix: Find conflict in information or discover it on-page

The Identical Twins

Pattern: Every character uses same vocabulary, rhythm, directness Problem: Voices indistinguishable without tags Fix: Profile each character's speech patterns; give distinct verbal DNA

The Court Reporter

Pattern: "Um, hi." "Oh, hey, yeah, so..." "Right, right." Problem: Realistic but dramatically dead - fiction dialogue is compressed reality Fix: Cut to the meaningful; small talk only if it reveals character

The Emotional Narrator

Pattern: "she said angrily," "he replied nervously," "she exclaimed furiously" Problem: Tags doing dialogue's job; telling not showing Fix: Let words and actions carry emotion; use "said"

The Philosopher

Pattern: Characters articulate themes, lessons, or subtext explicitly Problem: Trust removed from reader; preachiness Fix: Trust readers to infer meaning from behavior and implication

The Tennis Match

Pattern: Perfectly alternating, evenly-sized responses, no interruption or power differential Problem: Unnaturally balanced; no one dominates or defers Fix: Let one character dominate, another interrupt, a third stay silent


Dialogue Tags

The Stephen King Principle

"Said" is the best dialogue tag to use.

Why "said" works:

  • Invisible to readers (doesn't slow reading)
  • Lets dialogue do the work
  • Avoids "said-bookisms" (murmured, exclaimed, thundered)

When to use other tags:

  • Physical action beats (instead of tags entirely)
  • Occasionally for genuine necessity (whispered when literal whisper)
  • Never to do dialogue's job for it

Tag vs. Beat:

  • Tag: "I don't believe you," she said suspiciously.
  • Beat: "I don't believe you." She crossed her arms.

The beat shows; the tag tells.


Special Situations

Arguments
  • Characters talk past each other
  • Escalation through repetition
  • Old grievances surface suddenly
  • Things said that can't be unsaid
Confrontations
  • Power dynamics explicit
  • Stakes stated or implied
  • Threat beneath civility
  • Winner and loser emerge
Show full SKILL.md (782 more words)Show less
Seduction (any kind)
  • Saying one thing, meaning another
  • Testing and responding
  • Gradual revelation
  • What isn't said matters most
Lying
  • Character believes what they're saying (their truth)
  • Tells consistent with character
  • Other characters may or may not detect
  • Reader may have privileged information

Diagnostic Process

When a writer presents dialogue problems:

1. Identify the Layer

Which layer is failing?

  • Text: Undifferentiated voices, wooden delivery
  • Subtext: On-the-nose, no hidden agenda
  • Context: Unclear power dynamics, missing history
2. Apply the Double-Duty Test

Can the writer answer at least three of:

  1. What does this accomplish for plot?
  2. What does it reveal about character?
  3. What is the subtext?
  4. How does it affect the relationship?
3. Read Aloud

The simplest diagnostic: does it sound like something a human would say? Can you distinguish speakers without tags?

4. Check for Anti-Patterns

Run through the anti-pattern list. Most dialogue problems match at least one.

5. Recommend Interventions

Based on identified state, provide specific fixes. Use tools for quantitative analysis when helpful.


Available Tools

voice-check.ts

Analyzes dialogue for voice distinctiveness between characters.

bash
deno run --allow-read scripts/voice-check.ts dialogue.txt
deno run --allow-read scripts/voice-check.ts --text "\"I want...\" \"I want...\"" --speakers Alice,Bob

Analyzes:

  • Vocabulary overlap between speakers
  • Average sentence length per speaker
  • Contraction usage
  • Question/statement ratio
  • Interruption patterns
dialogue-audit.ts

Checks dialogue against the double-duty test.

bash
deno run --allow-read scripts/dialogue-audit.ts scene.txt
deno run --allow-read scripts/dialogue-audit.ts --text "dialogue here"

Reports:

  • Detected functions (plot, character, tension, relationship)
  • Subtext indicators
  • Tag usage analysis
  • Anti-pattern flags

Integration with story-sense

story-sense StateMaps to Dialogue State
State 5.5: Dialogue Feels FlatD1-D5 (diagnose which specifically)
When to Hand Off
  • To character-arc: When voice problems stem from unclear character identity
  • To scene-sequencing: When dialogue pacing issues are scene structure issues
  • To cliche-transcendence: When dialogue feels predictable (expected responses)

Example Interactions

Example 1: Same-Voice Problem

Writer: "My beta readers say all my characters sound the same."

Your approach:

  1. Identify state: D1 (Identical Voices)
  2. Ask for a sample with 2-3 characters talking
  3. Apply the cover-the-tags test
  4. Run voice-check tool for quantitative comparison
  5. Identify specific differences to add (vocabulary, rhythm, directness)
  6. Suggest verbal DNA for each character
Example 2: Flat Conversation

Writer: "This conversation accomplishes what I need but feels dead."

Your approach:

  1. Apply Double-Duty Test - how many functions does it serve?
  2. If only one (plot), identify state: D5 (Single-Function)
  3. Check for subtext (D4) as likely co-occurring problem
  4. Ask: what does each character want that they can't say directly?
  5. Add hidden agendas and relationship stakes
Example 3: Exposition Problem

Writer: "I need to convey this backstory but it feels like an info dump."

Your approach:

  1. Identify state: D3 (Exposition Dump)
  2. Ask: can information be discovered instead of explained?
  3. Find conflict in the information - who disagrees?
  4. Break across multiple scenes if necessary
  5. Let characters be wrong and corrected

Output Persistence

This skill writes primary output to files so work persists across sessions.

Output Discovery

Before doing any other work:

  1. Check for context/output-config.md in the project
  2. If found, look for this skill's entry
  3. If not found or no entry for this skill, ask the user first:
    • "Where should I save output from this dialogue session?"
    • Suggest: explorations/dialogue/ or a sensible location for this project
  4. Store the user's preference:
    • In context/output-config.md if context network exists
    • In .dialogue-output.md at project root otherwise
Primary Output

For this skill, persist:

  • Diagnosed state - which dialogue state(s) apply
  • Layer analysis - text, subtext, or context issues identified
  • Intervention recommendations - specific techniques to apply
  • Character voice notes - distinct voice elements for each character
Conversation vs. File
Goes to FileStays in Conversation
Dialogue state diagnosisClarifying questions
Voice distinction notesDiscussion of specific exchanges
Subtext recommendationsWriter's experimentation
Anti-pattern warningsReal-time feedback
File Naming

Pattern: {story}-dialogue-{date}.md Example: novel-chapter3-dialogue-2025-01-15.md

What You Do NOT Do

  • You do not write dialogue for writers
  • You do not rewrite their lines (show principles, don't execute)
  • You do not provide "better versions" of their exchanges
  • You do not diagnose prose-level issues beyond dialogue (hand off to prose-style)
  • You do not handle plot structure (hand off to story-sense)

Your role is diagnostic: identify the problem, explain why it's a problem, and guide toward the fix. The writer does the writing.


Key Insight

Dialogue is compressed reality. It sounds natural but isn't natural - it's carefully constructed to feel spontaneous while doing dramatic work. The goal isn't realism; it's the illusion of realism in service of story.

When dialogue fails, trace it to the layer: Is it the text (how it sounds)? The subtext (what it means)? The context (who's saying it to whom and why)?

Most dialogue problems are subtext problems. Characters saying what they mean is easier to write but dramatically inert. Give every character a hidden agenda. Make them want something they can't ask for. The gap between said and meant is where drama lives.

© jwynia, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in skills/creative/fiction/character/dialogue of jwynia/agent-skills.

  • SKILL.md
  • scripts/dialogue-audit.ts
  • scripts/voice-check.ts

Open the folder on GitHubat commit e02ec7e

Compare with similar skills

Dialogue next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dialogue compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dialogue this skilljwynia/agent-skills170—~3.9kAutomated safety check: PassMIT
Diagnose Gatewayopenclaw/openclaw392k—~670Automated safety check: PassMIT
Diagnosegithub/awesome-copilot40k1 repos~1kAutomated safety check: PassMIT
Character Riggingcalesthio/OpenMontage66k—~460Automated safety check: PassMIT
Flat Designsickn33/agentic-awesome-skills47k1 repos~1.9kAutomated safety check: PassMIT
Flat Design 2sickn33/agentic-awesome-skills47k1 repos~2.2kAutomated safety check: PassMIT

Similar skills

  • Diagnose Gateway

    openclaw/openclaw

    Diagnose Gateway, config, secrets, channels, and port failures with read-only one-liners.

    392k GitHub stars~670 tokensUpdated today
    Auto-check passed
  • Diagnose

    github/awesome-copilot

    Official

    Perform a systematic diagnostic scan of an AI workflow across 5 quality dimensions — prompt quality, context efficiency, tool health, architecture fitness, and safety — producing a scored report…

    40k GitHub starsUsed in 1 repo~1k tokens
    Agent WorkflowsAuto-check passed
  • Character Rigging

    calesthio/OpenMontage

    Build data-driven 2D character rigs for local animation: parts, pivots, layers, constraints, views, and reusable rig packages.

    66k GitHub stars~460 tokensUpdated 6 days ago
    Media & CreativeAuto-check passed
  • Flat Design

    sickn33/agentic-awesome-skills

    Web and App implementation guide for the Flat Design style. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 1 repo~1.9k tokens
    MobileAuto-check passed
  • Flat Design 2

    sickn33/agentic-awesome-skills

    Web and App implementation guide for Flat Design 2.0 (Semi-Flat).

    47k GitHub starsUsed in 1 repo~2.2k tokens
    MobileAuto-check passed
  • Diagnose Why Work Stopped

    paperclipai/paperclip

    Diagnose stalled, looping, or over-recovered Paperclip issue trees and propose a no-code product-rule plan.

    99k GitHub stars~2.8k tokensUpdated today
    Auto-check passed

More from jwynia/agent-skills

All 111 skills in this repo
  • Devcontainer

    jwynia/agent-skills

    Diagnose devcontainer configuration problems and guide development environment setup.

    170 GitHub stars~1.2k tokensUpdated 7 mo ago
    Auto-check: notes
  • Frontend Design

    jwynia/agent-skills

    Create distinctive, production-grade frontend interfaces with high design quality.

    170 GitHub stars~3.2k tokensUpdated 7 mo ago
    Auto-check passed
  • Gitea Workflow

    jwynia/agent-skills

    Orchestrate agile development workflows for Gitea repositories using the tea CLI.

    170 GitHub stars~3.8k tokensUpdated 7 mo ago
    Auto-check passed
  • Godot Asset Generator

    jwynia/agent-skills

    Generate game assets using AI image generation APIs (DALL-E, Replicate, fal.ai) and prepare them for Godot.

    170 GitHub stars~3.8k tokensUpdated 7 mo ago
    Auto-check passed
  • Mastra Hono

    jwynia/agent-skills

    Develop AI agents, tools, and workflows with Mastra v1 Beta and Hono servers.

    170 GitHub stars~2.9k tokensUpdated 7 mo ago
    Auto-check passed
  • PPTX Generator

    jwynia/agent-skills

    Create and manipulate PowerPoint PPTX files programmatically.

    170 GitHub stars~3.1k tokensUpdated 7 mo ago
    Auto-check passed

Questions about Dialogue

What does Dialogue do?

Diagnose flat dialogue, same-voice characters, and lack of subtext. Dialogue is an agent skill from jwynia/agent-skills. Diagnose flat dialogue, same-voice characters, and lack of subtext.

When should I use Dialogue?

Dialogue fits situations like: conversations feel wooden; characters sound alike; dialogue only does one thing at a time.

How do I install Dialogue in Claude Code?

Run `npx skills add jwynia/agent-skills --skill dialogue -a claude-code`. Or copy the skill folder (skills/creative/fiction/character/dialogue in jwynia/agent-skills) into .claude/skills/dialogue in your project. Claude Code loads it when a task matches its description.

How do I install Dialogue in Codex?

Run `npx skills add jwynia/agent-skills --skill dialogue -a codex`. Or copy the skill folder (skills/creative/fiction/character/dialogue in jwynia/agent-skills) into .agents/skills/dialogue in your project. Codex loads it when a task matches its description.

Can I use Dialogue in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jwynia/agent-skills --skill dialogue -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dialogue, .gemini/skills/dialogue, .github/skills/dialogue and .opencode/skills/dialogue in your project.

What does Dialogue need to run?

Going by SKILL.md and its folder, Dialogue needs TypeScript for the scripts in its folder and the command-line tools its instructions call (deno). Our summary lists: Node.js.

Does Dialogue access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Dialogue safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Dialogue use?

Dialogue is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dialogue use?

About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dialogue?

Skills that share tags, products or a category with Dialogue: Diagnose Gateway (openclaw/openclaw, 392k stars), Diagnose (github/awesome-copilot, 40k stars), Character Rigging (calesthio/OpenMontage, 66k stars) and Flat Design (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dialogue?

jwynia (a GitHub user) maintains it in jwynia/agent-skills, which has 170 GitHub stars. The repository holds 111 skills in this directory. The repository was last updated on February 24, 2026.

Source: jwynia/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.