tune-voice
Installation
SKILL.md
Tune Voice — Per-Project Voice Extraction & Enforcement
Give a project a durable, reusable writing voice. The voice is a project artifact — it lives at <project>/ref/tone-guide.md, not in global memory — so each project keeps its own voice and drafts can be checked against it.
Fork-and-adapt lineage (design borrowed, storage owned): 9-dimension profile + anti-performative guardrails from entpnomad/tone-of-voice; voice-constant / tone-flex + validate-and-explain from brand-voice-enforcement; extract-from-samples from affaan-m/brand-voice.
Model: voice is constant, tone flexes
- Voice constant — identity, beliefs, audience, traits, terminology, banned phrases. Never changes across a project's copy.
- Tone flexes on three axes — formality · energy · technical depth — per channel (slide vs. Slack recap vs. cold email vs. golden-source doc).
A profile captures both. Enforcement holds the constant and picks the tone-flex for the channel at hand.
Step 0: Resolve the profile path
- Read
$PRAXIS_DIR/config/projects.yaml. Match--project <alias>against project keys (case-insensitive); if a name is given instead, fuzzy-matchnamefields. If no--project, infer from the working directory (which project'spraxis:path is an ancestor ofcwd), else ask. - Profile path =
<project praxis root>/ref/tone-guide.md, where the praxis root is thepraxis:value for that alias (resolve/praxis/...,/repos/...aliases via.claude/paths.md). - Leaf projects (a
praxis:path with sub-projects, e.g. Slasheo's guide lives underai-school-tech/ref/): accept an explicit--path <dir>override, or Glob for an existing**/ref/tone-guide.mdunder the project root and reuse it. - Guards: if
$PRAXIS_DIRunset →⚠️ $PRAXIS_DIR not set. export PRAXIS_DIR="$HOME/dev/praxis". If config missing →⚠️ No project config at $PRAXIS_DIR/config/projects.yaml.