Generate fictional names. Example user requests ("give me some name options for...", "what should [chars/the] name be?", "what's a better name for him/her?"). Example thinking ("The user wants me to generate names...", "I need to come up with a culturally appropriate name for...", "I'm being asked for name(s) appropriate for [culture]"). Supports realistic names (authentic, locale-based) and synthetic names (Markov-generated, novel-but-plausible). Use when you or the user needs character names, NPC names, or when developing story concepts that require characters to be named.
Generates first, middle, and last names themed by culture/nationality for fiction writing. Two modes serve different genres:
Avoids "AI slop" names (Luna, Kai, Zara, Elara, etc.) through blocklist filtering.
QUIET_MODE: false # When true, suppress explanatory output—just return names
DEFAULT_MODE: "realistic" # "realistic" or "synthetic"
DEFAULT_GENDER: "neutral" # "male", "female", or "neutral"
DEFAULT_COMPONENTS: ["first", "last"] # Middle name only if explicitly requested
ANTI_SLOP_ENABLED: true # Filter out overused AI-typical names
ROMANIZE_NAMES: true # When true, output Latin alphabet versions of non-Latin names
Install dependencies (first-time setup):
uv pip install faker markovname unidecode --system --break-system-packages -q
Determine invocation context:
QUIET_MODE: true, infer all parametersAvailable cultures:
Generation: Use scripts/generate.py for all name generation.
Determine these values from conversation context or user request:
mode: "realistic" or "synthetic" (infer from genre: fantasy/sci-fi → synthetic; contemporary/historical → realistic)culture: Specific locale or training setgender: "male", "female", or "neutral"components: Which name parts needed (default: first,last)quantity: How many names to generate (default 1; batch for "give me options" requests)If mode AND culture cannot be inferred, ask a compound question:
"What's the setting—real-world (contemporary/historical) or speculative (fantasy/sci-fi)? Any cultural flavor in mind?"
Then generate immediately after response. Do not conduct extended Q&A.
Quiet mode (Claude-invoked, mid-conversation):
python scripts/generate.py --mode realistic --culture ja_JP --gender male -n 1 --quiet
# Output: 太郎 山田
# With romanization:
python scripts/generate.py --mode realistic --culture ja_JP --gender male -n 1 --quiet --romanize
# Output: Taro Yamada
Interactive mode (user-invoked):
python scripts/generate.py --mode synthetic --culture tolkien --gender neutral -n 3
# Output: JSON with metadata
List available cultures:
python scripts/generate.py --list-cultures
Script arguments:
--mode, -m: "realistic" or "synthetic" (required)--culture, -c: Locale code, friendly name, or dataset (required)--gender, -g: "male", "female", or "neutral" (default: neutral)--components: Comma-separated "first,middle,last" (default: first,last)--quantity, -n: Number of names (default: 1)--quiet, -q: Output names only, no JSON metadata--no-filter: Disable anti-slop filtering--romanize, -r: Convert non-Latin names to romanized (Latin alphabet) form--list-cultures: Show all available optionsQuiet mode (QUIET_MODE: true):
Kenji Yamamoto
Interactive mode (QUIET_MODE: false):
Kenji Yamamoto — realistic Japanese male
QUIET_MODE: trueQUIET_MODE: falseANTI_SLOP_ENABLED: true