name: voice-validator description: "Critique-and-rewrite loop for voice fidelity validation." user-invocable: false allowed-tools:
- Read
- Write
- Bash
- Grep
- Glob
- Edit
- Task
- Skill
routing:
triggers:
- "validate voice"
- "check voice fidelity"
- "voice critique"
- "voice fidelity"
- "writing style check" category: voice pairs_with:
- voice-writer
- anti-ai-editor
- joy-check
Voice Validator Skill
Overview
This skill operates a rigorous critique-and-rewrite enforcement loop for voice fidelity. It scans content against voice-specific negative prompt checklists, documents violations with evidence, fixes them while preserving intent, and rescans to confirm the revision passes — up to 3 iterations maximum.
The workflow implements the Iterative Refinement pattern: scan → document violations → revise → rescan. This ensures voice violations are caught systematically and fixed methodically without over-engineering or changing meaning.
CRITICAL CONSTRAINT: Never revise content without first scanning against the full checklist. Every violation must cite a specific quote. After 3 failed iterations, output with flagged concerns rather than continuing indefinitely.
Instructions
Phase 1: IDENTIFY TARGET
Goal: Determine the voice, mode, and content to validate.
Step 1: Identify voice target
- Determine target voice from context or user instruction
- Identify mode if applicable — casual modes may have additional specific checks
- Reference the target voice's checklist (contact user if unclear)
Step 2: Load content
- Read the content to validate
- Note content length — longer content is more prone to drift
Gate: Voice target and mode identified. Content loaded. Proceed only when gate passes.
Phase 2: SCAN
Goal: Run full checklist against content and identify all violations with evidence.
Step 0: Run deterministic stylometry checks
When the target voice has a profile.json, run the stylometry script first. It emits structured findings (rule_id, span, severity) that anchor the scan in measured data:
python3 scripts/voice-stylometry.py check \
--profile skills/voice-{name}/profile.json \
--draft <content-file>
Deterministic checks it runs:
- Burstiness band (
burstiness.band, warning): draft sentence-length variance must fall inside the author's measured band; uniform sentence length is an AI tell. - Punctuation profile (
punctuation.em_dash|semicolon|parenthetical, warning): em-dash, semicolon, and parenthetical rates classified never/rare/habitual; flags drafts whose class deviates from the author's. - Corrective antithesis (
ai_tell.corrective_antithesis, error): "not X, it's Y" constructions, inline and across sentence pairs. - Temporal openers (
ai_tell.temporal_opener, error): throat-clearing paragraph openers ("In today's...", "In an era...", "Now more than ever..."). - Uniform paragraph shapes (
ai_tell.uniform_paragraphs, error): four or more consecutive paragraphs with identical sentence counts. - Profile decay (
profile.stale, advisory): profile older than itsrefresh_after_dayswindow. Advisory only — it asks for a profile refresh and never blocks the draft. Exit code stays 0 when only advisory findings exist.
Exit code 1 means error/warning findings exist; carry each finding into the violation list below. Profiles without stylometry or decay fields skip those checks and remain valid.
Step 1: Run negative prompt checklist
Check all categories against the target voice's checklist. Standard categories include:
- Tone: Does the tone match the voice profile? (e.g., too polished, too corporate, missing warmth)
- Structure: Does the structure match? (e.g., front-loaded constraints, clean outlines, wrap-ups)
- Sentences: Do sentence patterns match? (e.g., dramatic short sentences, rhetorical flourishes, symmetrical structure)
- Language: Any banned words? (amazing, terrible, revolutionary, perfect, game-changing, transformative, incredible, outstanding, exceptional, groundbreaking), marketing/hype, inspirational, unnecessary superlatives
- Emotion: Does emotion handling match? (e.g., explicitly named emotions, venting/ranting, moralizing)
- Questions: Do question patterns match? (e.g., open-ended brainstorming, vague curiosity)
- Metaphors: Do metaphor patterns match? (e.g., journey/path, biological/growth, narrative/story)
- Narrative (500+ words only; full 13-check rubric in
references/narrative-patterns.md):- Evidence speaks for itself, or narrator over-explains the point?
- Emotional registers mixed (named feelings + behavioral cues + sensation)?
- Secondary threads present that enrich the main argument?
- Reader's experience acknowledged?
- Temporal structure varied (callbacks, non-linear points)?
- References specific (named people, works, sources)?
- Room for uncertainty and loose ends, or subject has every answer?
- Intensity varies (peaks and valleys), or flat throughout?
- Event types diverse, or every paragraph does the same thing?
- Ending carries forward motion, or defaults to tidy realization epilogue?
Step 2: Check pass conditions
Verify the content matches the target voice's positive identity markers. Common pass conditions include:
- Feels like the person actually wrote it
- Voice-specific patterns are present (thinking out loud, warmth, precision, etc.)
- Could NOT be posted on LinkedIn without edits (for casual voices) — this heuristic catches ~80% of voice violations
- Does NOT sound like AI wrote it
- Narrative structure shows variety — secondary threads, temporal variation, forward-motion ending
- Mode-specific patterns are present (casual modes: no preamble, no wrap-up; formal modes: structured flow)
Step 3: Document violations
For each violation, record:
- Category (tone, structure, sentence, language, emotion, question, metaphor, narrative)
- Quoted text from the content
- Specific fix recommendation
Key constraint: Only scan at this stage; save revisions for the next phase. Subjective assessment without a checklist misses specific violations.
Gate: Full checklist scanned. All violations documented with evidence. Proceed only when gate passes.
Phase 3: REVISE
Goal: Fix all violations while preserving content intent and substance.
Step 1: Apply fixes
- Address each violation with the smallest change that resolves it
- Preserve the original meaning and information
- Maintain natural flow — fixes should not create new violations
Step 2: Verify no overcorrection
- Ensure revisions did not strip necessary content
- Confirm the substance and technical accuracy remain intact
- Keep the revision to voice-level changes only; leave paragraphs and arguments intact
Key constraint: Make the smallest change that resolves each violation. Preserve all meaning. Changing substance is scope creep.
Gate: All documented violations addressed. Intent preserved. Proceed only when gate passes.
Phase 4: VERIFY
Goal: Confirm revised content passes all checks.
Step 1: Rescan revised content
Run the full checklist from Phase 2 against the revised version.
Step 2: Evaluate result
- If PASS: Output final content with validation report
- If FAIL and iteration < 3: Return to Phase 3 with new violations
- If FAIL and iteration = 3: Output content with flagged remaining concerns
Key constraint: Always rescan. "Should be fine" is a rationalization. Fixes can introduce new violations.
Step 3: Output validation report
VOICE VALIDATION: [Voice Name] Mode [mode]
SCAN RESULT: [PASS/FAIL]
VIOLATIONS DETECTED: [N]
ITERATION: [1-3]
[If violations:]
1. [Category]: "[quoted violation]"
Fix: [specific correction]
2. [Category]: "[quoted violation]"
Fix: [specific correction]
REVISED OUTPUT:
[Corrected content]
RESCAN RESULT: [PASS/FAIL]
Gate: Content passes all checks, or maximum iterations reached with flagged concerns. Validation complete.
Examples
Example 1: Technical Voice Validation
User says: "Validate this draft is in the right voice"
Actions:
- Identify target voice from context, determine mode from content style (IDENTIFY TARGET)
- Run full 8-category checklist (Tone, Structure, Sentences, Language, Emotion, Questions, Metaphors, Narrative), find 2 violations (SCAN)
- Fix "I'm excited to share" (named emotion) and "This changes everything" (dramatic short sentence) (REVISE)
- Rescan revised content, confirm PASS (VERIFY)
Result: Clean content with validation report
Example 2: Community Voice Validation
User says: "Does this sound like the right voice?"
Actions:
- Identify target voice from context (IDENTIFY TARGET)
- Scan against voice checklist, find missing warmth and no sensory details (SCAN)
- Add experiential language and warmth while preserving substance (REVISE)
- Rescan, confirm warmth and sensory details present, PASS (VERIFY)
Result: Content matches voice profile
Error Handling
Error: "Voice Target Unclear"
Cause: Content doesn't specify which voice to validate against, or context is ambiguous
Solution:
- Check conversation context for voice mentions
- Look for voice-specific patterns to infer target
- If still unclear, ask user to specify voice name and mode
Error: "Violations Persist After 3 Iterations"
Cause: Fundamental mismatch between content substance and voice requirements, or conflicting checklist items
Solution:
- Output content with clearly flagged remaining violations
- List specific checklist items that resist correction
- Suggest the content may need to be regenerated from scratch with the correct voice skill
Error: "Revision Introduced New Violations"
Cause: Fixing one category created violations in another (e.g., removing dramatic sentences introduced polished phrasing)
Solution:
- Address new violations in next iteration
- If oscillating between two violation types, fix both simultaneously
- Prioritize tone and language violations over structural ones
References
Related Skills
voice-{name}- Generates content in a specific voice (validate output with this skill)anti-ai-editor- Complementary anti-AI pattern detectionvoice-writer- Unified voice content generation pipeline that invokes this skill