Critique-and-rewrite loop for voice fidelity validation.
npx skills add https://github.com/notque/vexjoy-agent --skill voice-validator
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.
| Signal | Load These Files | Why |
|---|---|---|
| validating narrative content of 500+ words | narrative-patterns.md | Supplies the full narrative-fidelity rubric. |
Goal: Determine the voice, mode, and content to validate.
Step 1: Identify voice target
Step 2: Load content
Gate: Voice target and mode identified. Content loaded. Proceed only when gate passes.
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, warning): draft sentence-length variance must fall inside the author's measured band; uniform sentence length is an AI tell.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.ai_tell.corrective_antithesis, error): "not X, it's Y" constructions, inline and across sentence pairs.ai_tell.temporal_opener, error): throat-clearing paragraph openers ("In today's...", "In an era...", "Now more than ever...").ai_tell.uniform_paragraphs, error): four or more consecutive paragraphs with identical sentence counts.profile.stale, advisory): profile older than its refresh_after_days window. 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:
references/narrative-patterns.md):Step 2: Check pass conditions
Verify the content matches the target voice's positive identity markers. Common pass conditions include:
Step 3: Document violations
For each violation, record:
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.
Goal: Fix all violations while preserving content intent and substance.
Step 1: Apply fixes
Step 2: Verify no overcorrection
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.
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
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.
User says: "Validate this draft is in the right voice"
Actions:
Result: Clean content with validation report
User says: "Does this sound like the right voice?"
Actions:
Result: Content matches voice profile
Cause: Content doesn't specify which voice to validate against, or context is ambiguous
Solution:
Cause: Fundamental mismatch between content substance and voice requirements, or conflicting checklist items
Solution:
Cause: Fixing one category created violations in another (e.g., removing dramatic sentences introduced polished phrasing)
Solution:
voice-{name} - Generates content in a specific voice (validate output with this skill)voice-writer - Unified voice content generation pipeline that invokes this skillCreate beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.
Publish Markdown articles to X (Twitter) Articles editor with proper formatting. Use when user wants to publish a Markdown file/URL to X Articles, or mentions "publish to X", "post article to Twitter", "X article", or wants help with X Premium article publishing. Handles cover image upload and converts Markdown to rich text automatically.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Teaches the AI to design like a high-end agency. Defines the exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks all the common defaults that make AI designs look cheap or generic.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Take notque/voice-validator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.