From idiolect
Creates custom voice profiles for writing — from measured analysis of text samples or filling a gap in the existing roster. Invoke when a built-in voice doesn't fit.
How this skill is triggered — by the user, by Claude, or both
Slash command
/idiolect:synthesize <new-slug> from <files|pasted samples> | <new-slug> to fill <gap description><new-slug> from <files|pasted samples> | <new-slug> to fill <gap description>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
New voices are measured into existence, not adjective-ed. A synthesized voice ships with the same contract as the built-ins: full VOICE-SPEC frontmatter, stance engine, systematic error profile, three exemplars that scan clean, and distance ≥ 0.2 from every existing voice.
New voices are measured into existence, not adjective-ed. A synthesized voice ships with the same contract as the built-ins: full VOICE-SPEC frontmatter, stance engine, systematic error profile, three exemplars that scan clean, and distance ≥ 0.2 from every existing voice.
ROOT="${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-$IDIOLECT_ROOT}}"
# unset everywhere (opencode)? ROOT = two directories up from this SKILL.md
IDIO="python3 $ROOT/scripts/idiolect.py"
$IDIO path # note custom_voices dir — new voices are written THERE, never into the plugin
$IDIO fingerprint --file <f> --json > fp.json — this measures what adjectives can't: sentence-length distribution, burstiness, contraction rate, punctuation profile, casing habits, informal markers, favorite content words.$IDIO synth-scaffold --slug <slug> --from-fingerprint fp.json — a prefilled skeleton with the measured stylo numbers.idiolect-synthesizer with: the scaffold, fp.json, the corpus file path, and $ROOT/docs/VOICE-SPEC.md. It drafts the full profile into the custom voices dir and runs the validate loop itself. (No subagent support on this platform? Do its job yourself following $ROOT/agents/idiolect-synthesizer.md.)$IDIO validate <slug> must pass; $IDIO distance --json must show no pair under 0.2. If the new voice sits too close to an existing one, push the DIFFERENTIATING axes (error class, platform habitat, humor mechanics, openers) — not random noise./idiolect:write <slug> ....$ROOT/data/seeds.json (the axes and the taken territory) and run $IDIO voices + $IDIO distance --json to see where the roster is thin (locales, ages, error classes, platforms, trades).selfHand off to /idiolect:self — the user's own voice has its own pipeline (continuous capture, provenance weighting).
$IDIOLECT_HOME/voices/ (shown by $IDIO path) so plugin updates never touch them. Back them up like the personal assets they are.npx claudepluginhub nagisanzenin/idiolectGenerates custom YAML voice profiles from natural language descriptions of audience, tone, domain, and preferences. Maps to dimensions like formality, confidence, warmth; includes vocabulary and structure guidance.
Routes natural language requests to idiolect sub-skills for writing, humanizing, and auditing content. Automatically resolves voice and platform for human-sounding AI output.
Generates personalized AI writer skill by extracting linguistic fingerprint from interactive writing samples, style preferences, and pattern rejection questionnaire (~15 min).