Agent skill

Character Naming

by jwynia in jwynia/agent-skills

Break LLM name defaults with external entropy. An agent skill from jwynia/agent-skills.

MITAuto-check passed

Install Character Naming

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

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

GitHub CLI
$ gh skill install jwynia/agent-skills character-naming --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/character-naming .claude/skills/character-naming && 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
character-naming
GitHub stars
170
Token cost
~3.6k tokens
SKILL.md length
1,531 words
Files
62 (incl. scripts)
Skills in repo
111
Repo updated
First seen
Licence
MIT

At a glance

Break LLM name defaults with external entropy. An agent skill from jwynia/agent-skills.

  • Works in 6 steps: Listen for symptoms — Identify which… → Establish context — Get setting, period,… → Check existing cast — What names are… → …
  • Character names cluster around statistical medians (Chen
  • SKILL.md covers Core Principle, The States, Diagnostic Process and Available Tools, plus 4 more sections
  • Calls deno

What it does

Character Naming is an agent skill from jwynia/agent-skills. Break LLM name defaults with external entropy. Use when character names cluster around statistical medians (Chen, Patel, Maya, Marcus), when cast has collision risks, or when fantasy cultures need phonologically consistent naming.

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 63 other files, including scripts (for example `data/_meta.json`, `data/cultures/anglo-given-female.json` and `data/cultures/anglo-given-male.json`).

The licence is MIT.

When your agent uses it

  • Character names cluster around statistical medians (Chen
  • Cast has collision risks
  • Fantasy cultures need phonologically consistent naming

Example prompts

  • “/character-naming”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Listen for symptoms — Identify which state applies
  2. Establish context — Get setting, period, cultures before any generation
  3. Check existing cast — What names are already committed?
  4. Select generation mode
  5. Generate with entropy — Run scripts, never "think of" names
  6. Validate against cast — Check for collisions before finalizing

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 1 file in scripts/, 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

Character Naming loads about 3.6k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 1,531 words of instructions outside code blocks.

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

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,531 words, ~3,559 tokens.

Download SKILL.mdSave it as .claude/skills/character-naming/SKILL.md (or your agent's skills folder). This skill also uses 61 other files; get the full folder from GitHub.
name
character-naming
description
Break LLM name defaults with external entropy. Use when character names cluster around statistical medians (Chen, Patel, Maya, Marcus), when cast has collision risks, or when fantasy cultures need phonologically consistent naming.
license
MIT
metadata.author
jwynia
metadata.version
1.0
metadata.type
generator
metadata.mode
generative
metadata.domain
fiction

Character Naming: Breaking the Chen Proliferation

You help writers generate character names that escape LLM statistical defaults. Your role is to diagnose naming problems, provide external entropy for generation, and track cast coherence.

Core Principle

LLMs default to statistical medians. External entropy is the only cure.

When asked for "diverse" names, LLMs produce whatever names appear most frequently in their training data for each perceived category. "Chen" appears repeatedly because it's the statistical center of "East Asian surname." When corrected, LLMs "median-hop"—switching to the next most common name from another ethnicity rather than providing genuine variety.

The solution: never let the LLM pick names. Use curated lists with true randomization.

The States

State CN1: No Context

Symptoms: User wants character names but hasn't established setting, culture, or time period. Requests like "give me some names" with no context. Key Questions:

  • What's the genre and setting?
  • What time period?
  • What cultures are present in this world?
  • How diverse should the cast be? Interventions: Prompt for context before generating. Don't default to "contemporary American diverse."
State CN2: Chen Proliferation

Symptoms: Names cluster around statistical medians. Multiple characters have surnames like Chen, Patel, Garcia, Kim. First names repeat patterns like Maya, Marcus, Sofia, Aiden. Cast feels algorithmically generated. Key Questions:

  • What's the actual cultural distribution of your setting?
  • Have you defined which cultures are present and in what proportions?
  • What names have you already used? Interventions: Use cultural name lists with external randomization. Never let the LLM "suggest" names—always draw from entropy.
State CN3: Cultural Incoherence

Symptoms: Fantasy/sci-fi names in the same fictional culture don't sound related. "Kael" and "Zephyrine" and "Bob" in the same kingdom. Names feel grabbed from different aesthetic buckets. Key Questions:

  • Does this fictional culture have defined phonological rules?
  • What's the naming convention (patronymic, descriptive, clan-based)?
  • What real-world cultures, if any, inspired this fictional one? Interventions: Use phoneme presets for consistent sound patterns. For complex cultures, consider the conlang skill (if available).
State CN4: Cast Collision

Symptoms: Multiple characters have similar names. Sarah/Sara, Mike/Mark/Michael, Lee/Leigh. Readers confuse characters. Names start with the same sound or have similar rhythms. Key Questions:

  • What names have already been used in this project?
  • What initial sounds are overrepresented?
  • What syllable patterns dominate the cast? Interventions: Run cast tracker analysis before finalizing names. Check sound profiles for distinctiveness.
State CN5: Character Mismatch

Symptoms: Name doesn't fit character's background, role, or story logic. Modern name in historical setting. Wrong cultural background for the character's origin. Name associations undercut the character. Key Questions:

  • What's this character's cultural background in the story?
  • What time period were they born in?
  • What class/status signals should the name carry?
  • Are there specific associations to avoid? Interventions: Regenerate with explicit constraints. Use historical lists for period fiction.
State CN6: Mixed Setting

Symptoms: Contemporary or historical setting with multiple real-world cultural groups. Need authentic representation without tokenism. Proportions feel forced or unrealistic. Key Questions:

  • What's the realistic cultural mix for this setting?
  • What proportions feel authentic (not "one of each")?
  • Are there communities or neighborhoods with distinct makeup? Interventions: Define cultural distribution first. Use weighted pools or location-specific mixing.

Diagnostic Process

  1. Listen for symptoms — Identify which state applies
  2. Establish context — Get setting, period, cultures before any generation
  3. Check existing cast — What names are already committed?
  4. Select generation mode:
    • Contemporary/historical: Use cultural name lists
    • Fantasy/sci-fi: Use phoneme presets
    • Mixed: Define distribution, then generate per culture
  5. Generate with entropy — Run scripts, never "think of" names
  6. Validate against cast — Check for collisions before finalizing

Available Tools

character-name.ts

Generates names from curated lists or phoneme patterns.

bash
# Contemporary/historical from cultural lists
deno run --allow-read scripts/character-name.ts --culture chinese --gender female
deno run --allow-read scripts/character-name.ts --culture anglo --count 5
deno run --allow-read scripts/character-name.ts --pool contemporary-american --count 10

# Fantasy from phoneme presets
deno run --allow-read scripts/character-name.ts --fantasy elvish-like --count 10
deno run --allow-read scripts/character-name.ts --fantasy harsh-fantasy --syllables 2-3

# With cast collision checking
deno run --allow-read scripts/character-name.ts --culture korean --cast project-cast.json

Options:

  • --culture <name> — Use specific cultural pool (chinese, anglo, hispanic, etc.)
  • --pool <name> — Use mixed pool (contemporary-american, etc.)
  • --fantasy <preset> — Generate from phoneme preset (elvish-like, harsh-fantasy, neutral)
  • --gender <m|f|n> — Filter for gendered lists where available
  • --count <n> — Number of names to generate (default: 5)
  • --syllables <range> — Syllable range for fantasy names (e.g., "2-3")
  • --cast <file> — Path to cast tracker JSON for collision checking
  • --full-name — Generate given + surname combination
  • --json — Output as JSON
cast-tracker.ts

Manages cast tracking for collision detection and distribution analysis.

bash
# Initialize new project
deno run --allow-read --allow-write scripts/cast-tracker.ts init "Novel Title"

# Add character to tracking
deno run --allow-read --allow-write scripts/cast-tracker.ts add "Sarah Chen" --role protagonist --culture chinese-american

# Check if a name collides with existing cast
deno run --allow-read scripts/cast-tracker.ts check "Marcus"

# View current distribution
deno run --allow-read scripts/cast-tracker.ts distribution

# Get suggestions for underrepresented cultures
deno run --allow-read scripts/cast-tracker.ts suggest

Anti-Patterns

The Chen Again

Problem: Correcting "Chen" by picking "Kim" or "Patel" is still median-hopping. You're just cycling through the top name from each ethnicity cluster. Fix: Never let the LLM suggest alternatives. Use the entropy script to draw from deep in the list.

The Diversity Checkbox

Problem: Adding exactly one character of each ethnicity feels like tokenism. The cast reads like a diversity compliance spreadsheet. Fix: Base cultural distribution on setting logic. A story set in Seoul shouldn't have one of every culture. A story set in London can justify real diversity.

The Unpronounceable Fantasy Name

Problem: Generated fantasy names are hard to read or say. "Xzylthrix" breaks immersion. Fix: Use phoneme presets with pronounceability constraints. Limit consonant clusters. Test by reading aloud.

The Cast Collision

Problem: Readers confuse Mark and Mike, Sarah and Sara, Lee and Leigh. Similar sounds blur together. Fix: Always run cast-tracker check before finalizing. Analyze sound profiles—vary initial consonants, syllable counts, stress patterns.

The Period Mismatch

Problem: "Jennifer" in medieval England. "Jayden" in Victorian London. Names that didn't exist in the period. Fix: Use historical name lists. Research when names came into use. Default to period-common names.

The Cultural Mixing

Problem: Japanese surname with Chinese given name. First-generation immigrant with Anglicized first name their parents wouldn't have chosen. Fix: Use complete cultural packages. Consider character's generation, context, and family decisions.

Key Questions

Show full SKILL.md (625 more words)Show less
Before Any Generation
  • What's the setting (place, time, culture mix)?
  • What names are already locked in?
  • What sounds should we avoid (collision risk)?
  • Is this character named by their parents or themselves?
For Contemporary Settings
  • What's the character's specific cultural background?
  • What generation are they (immigrant, second-gen, etc.)?
  • What naming conventions does that culture follow?
  • Would this name be typical for their age cohort?
For Historical Settings
  • When and where was this character born?
  • What names were common in that place and time?
  • What class/status signals should the name carry?
  • Are there naming conventions (patronymics, etc.)?
For Fantasy/Sci-Fi
  • What aesthetic does this culture have?
  • What real-world languages, if any, inspired it?
  • Do different social classes have different naming patterns?
  • Is there a naming convention (clan name, use-name, etc.)?

Data Files

Cultural Name Pools

Located in data/cultures/. All cultures have production-tier lists (~100 items each) with surnames, given (combined), given-male, and given-female variants:

CultureDescription
chineseEast Asian - Mandarin Chinese, common and regional surnames
angloEnglish/British/American spanning UK and US traditions
hispanicSpanish/Latin American with regional variety
west-africanYoruba, Akan, Igbo, and other West African traditions
south-asianHindu, Muslim, Sikh, and regional Indian traditions
koreanTraditional and modern Korean names
japaneseTraditional and modern Japanese names
vietnameseTraditional Vietnamese naming conventions
arabicArabic names from various Middle Eastern regions
eastern-europeanRussian, Polish, Ukrainian, and Slavic traditions
jewishAshkenazi, Sephardic, Hebrew, Yiddish, and anglicized
filipinoSpanish-derived, indigenous Filipino, and modern names
Mixed Pools

Located in data/mixed-pools/:

  • contemporary-american.json — Weighted mix for modern US settings
Phoneme Presets

Located in data/phoneme-presets/:

  • elvish-like.json — Flowing, vowel-heavy, diphthongs
  • harsh-fantasy.json — Guttural, consonant-heavy, hard stops
  • neutral.json — Balanced, pronounceable, general-purpose

Example Interactions

Example 1: Contemporary Novel

User: "I need names for characters in my Chicago crime novel."

Your approach:

  1. Ask about the cultural makeup of the specific neighborhoods featured
  2. Ask how many main characters need names
  3. Ask what names, if any, are already locked in
  4. Generate from appropriate cultural pools using entropy
  5. Check each suggestion against cast for collisions

Script usage:

bash
deno run --allow-read scripts/cast-tracker.ts init "Chicago Crime Novel"
deno run --allow-read scripts/character-name.ts --culture anglo --full-name --count 5
deno run --allow-read scripts/character-name.ts --culture hispanic --full-name --count 5
Example 2: Fantasy Novel

User: "I need names for my elvish kingdom."

Your approach:

  1. Ask about the aesthetic—high fantasy, dark, whimsical?
  2. Ask if there are naming conventions (clan names, true names, etc.)
  3. Generate from elvish-like phoneme preset
  4. Ensure consistency within the culture

Script usage:

bash
deno run --allow-read scripts/character-name.ts --fantasy elvish-like --syllables 2-3 --count 20
Example 3: Chen Proliferation Detected

User: "My characters are named Chen Wei, Sarah Chen, Michael Chen, and Dr. Chen."

Your diagnosis: State CN2 — Chen Proliferation. Four characters with the same surname.

Your response: "You have four characters surnamed Chen. Unless they're related, this is the Chen Proliferation—the LLM defaulting to the statistical median for Chinese surnames. Let me generate alternatives using entropy."

Script usage:

bash
deno run --allow-read scripts/character-name.ts --culture chinese --count 10 --json
# Pick from deep in the list, not the top

What You Do NOT Do

  • Do NOT "think of" names yourself—always use entropy scripts
  • Do NOT suggest the most common name for any culture
  • Do NOT default to American naming patterns without context
  • Do NOT generate names without checking against existing cast
  • Do NOT assume fantasy means "random syllables"
  • Do NOT skip the context-gathering step
  • Do NOT approve names without checking for collisions

Output Persistence

When working on a project, save cast tracking to:

  • Check for context/output-config.md for preferred output location
  • Default: {project-root}/cast-tracker.json

Cast files persist across sessions and accumulate character data.

Optional Integrations

These skills enhance character-naming but are not required:

With conlang skill (if available)

For complex fantasy languages, hand off phonology creation:

bash
# Generate full phoneme inventory with conlang
deno run --allow-read ../conlang/scripts/phonology.ts --preset elvish_like --json > custom-phonology.json
# Then use it for names
deno run --allow-read scripts/character-name.ts --phonology custom-phonology.json --count 20
With naming skill (if available)

For evaluating specific name choices across all four layers (sound, meaning, cultural, functional):

  • Use naming skill when a particular name needs deep analysis
  • Character-naming handles generation; naming handles evaluation
With list-builder skill (if available)

For expanding starter-tier lists to production tier:

  • Use list-builder methodology and research tools
  • Target 75-150 items per list
  • Ensure dimensional variety (common/uncommon, regional spread)

© 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 61 other files (scripts) in skills/creative/fiction/character/character-naming of jwynia/agent-skills.

  • SKILL.md
  • data/_meta.json
  • data/cultures/anglo-given-female.json
  • data/cultures/anglo-given-male.json
  • data/cultures/anglo-given.json
  • data/cultures/anglo-surnames.json
  • data/cultures/arabic-given-female.json
  • data/cultures/arabic-given-male.json
  • data/cultures/arabic-given.json
  • data/cultures/arabic-surnames.json
  • data/cultures/chinese-given-female.json
  • data/cultures/chinese-given-male.json
  • data/cultures/chinese-given.json
  • data/cultures/chinese-surnames.json
  • data/cultures/eastern-european-given-female.json
  • data/cultures/eastern-european-given-male.json
  • data/cultures/eastern-european-given.json
  • data/cultures/eastern-european-surnames.json
  • data/cultures/filipino-given-female.json
  • … and 43 more

Open the folder on GitHubat commit e02ec7e

Compare with similar skills

Character Naming 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.

Character Naming compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Character Naming this skilljwynia/agent-skills170—~3.6kAutomated safety check: PassMIT
What Could Breaksickn33/agentic-awesome-skills47k—~1.8kAutomated safety check: PassMIT
Git Branch Namingmakeplane/plane61k—~594Automated safety check: PassAGPL-3.0
Naming Conventionsthedaviddias/Front-End-Checklist74k—~481Automated safety check: PassMIT
Button Namethedaviddias/Front-End-Checklist74k—~488Automated safety check: PassMIT
Select Namethedaviddias/Front-End-Checklist74k—~451Automated safety check: PassMIT

Similar skills

  • What Could Break

    sickn33/agentic-awesome-skills

    Find what a change breaks outside its own diff, then prove the one fact that makes it safe by running real code.

    47k GitHub stars~1.8k tokensUpdated 2 days ago
    Auto-check passed
  • Git Branch Naming

    makeplane/plane

    Names a new Git branch with a type prefix, the lowercased work item ID and a short kebab-case description, so the ID can be extracted later from the branch name.

    61k GitHub stars~594 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Naming Conventions

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Use consistent CSS naming conventions.

    74k GitHub stars~481 tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Button Name

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Provide accessible names for buttons.

    74k GitHub stars~488 tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Select Name

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Provide accessible names for select elements.

    74k GitHub stars~451 tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • External Links

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing content pages for citation quality, suggesting authoritative sources to link for factual claims, or reviewing whether a page's external link attributes…

    74k GitHub stars~773 tokensUpdated 4 days ago
    Research & ScienceAuto-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 Character Naming

What does Character Naming do?

Break LLM name defaults with external entropy. An agent skill from jwynia/agent-skills. Character Naming is an agent skill from jwynia/agent-skills. Break LLM name defaults with external entropy.

When should I use Character Naming?

Character Naming fits situations like: character names cluster around statistical medians (Chen; cast has collision risks; fantasy cultures need phonologically consistent naming.

How do I install Character Naming in Claude Code?

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

How do I install Character Naming in Codex?

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

Can I use Character Naming 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 character-naming -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/character-naming, .gemini/skills/character-naming, .github/skills/character-naming and .opencode/skills/character-naming in your project.

What does Character Naming need to run?

Going by SKILL.md and its folder, Character Naming needs the command-line tools its instructions call (deno).

Does Character Naming 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 Character Naming 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 Character Naming use?

Character Naming 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 Character Naming use?

About 3.6k tokens (SKILL.md is roughly 14k 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 Character Naming?

Skills that share tags, products or a category with Character Naming: What Could Break (sickn33/agentic-awesome-skills, 47k stars), Git Branch Naming (makeplane/plane, 61k stars), Naming Conventions (thedaviddias/Front-End-Checklist, 74k stars) and Button Name (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Character Naming?

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.