Improves a voice profile by learning from manual edits. Use after editing generated text to refine registers and close voice drift over time
Design & media
voice-review
Try itRuns parallel prose and craft review agents against a voice profile
What it does
Runs parallel prose and craft review agents against a voice profile
The skill document
Night Market Skill — ported from claude-night-market/scribe. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
Voice Review Skill
Dispatch dual review agents and present unified findings.
Method: Parallel Dual-Gate Review
Two agents run in parallel on the generated text:
- Prose reviewer: AI patterns, banned phrases, voice drift
- Craft reviewer: Naming, destinations, dwelling, devices, anchoring
Hard failures (banned phrases, em dashes) are auto-fixed. Everything else returns as advisory tables for user decision.
Required TodoWrite Items
voice-review:text-loaded- Generated text readvoice-review:register-loaded- Voice register loadedvoice-review:agents-dispatched- Both reviewers launchedvoice-review:hard-fails-fixed- Auto-corrections appliedvoice-review:advisories-presented- Tables shown to user
Step 1: Load Context
Read:
- The generated text (from file or clipboard)
- The active voice register
- The banned phrases list
Step 2: Dispatch Review Agents
Launch both agents in parallel:
Agent(prose-reviewer):
- text: {generated_text}
- register: {register_content}
- banned_phrases: {banned_list}
Agent(craft-reviewer):
- text: {generated_text}
- register: {register_content}
Step 3: Process Results
Hard Failures
Apply all auto-fixes from prose reviewer silently:
- Remove/replace banned phrases
- Replace em dashes with appropriate punctuation
- Rewrite negation-correction patterns
Report: "Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)"
Advisory Tables
Present both tables to the user:
Prose Review Advisories:
| # | Line | Pattern | Current | Proposed fix |
|---|
Craft Review:
| Dimension | Rating | Notes | Proposed improvement |
|---|
Step 4: User Decision
For each advisory row, user can:
- Accept (a): Apply the proposed fix
- Reject (r): Keep the current text
- Rewrite (w): Apply a custom fix
Present as:
[1] Prose: Frictionless transition at "Furthermore, the..."
Proposed: Cut transition, start mid-thought
[a]ccept / [r]eject / re[w]rite?
Step 5: Apply Decisions
- Apply accepted fixes to the text
- Skip rejected items
- For rewrites, incorporate user's version
- Save final text
Step 6: Snapshot (if learning active)
If the user has learning mode enabled:
- Save "post-review" snapshot (text after hard-fail fixes, before user decisions on advisories)
- Save "post-fixes" snapshot (text after user decisions)
- Both go to
~/.claude/voice-profiles/{name}/learning/snapshots/
Integration with voice-generate
When dispatched from voice-generate, the flow is:
- voice-generate produces text
- voice-generate calls voice-review
- voice-review dispatches agents, processes results
- User makes decisions on advisories
- If learning mode: snapshots saved for later comparison
Standalone Usage
Can also be run on any existing text:
/voice-review path/to/file.md --profile myvoice --register casual
Verification
After the review completes, validate these conditions:
- Both review agents returned results (no timeouts)
- Hard failures auto-fixed and diff shown to user
- Advisory tables presented with accept/reject/rewrite options
- User decisions applied to the final text
- Final text saved to disk
- Snapshots saved (if learning mode active)
Test Spec
The test suite (test_voice_review.py) validates:
- Skill file exists and references parallel dispatch
- Hard failure vs advisory separation is documented
- Prose reviewer agent exists with hard-failure patterns
- Craft reviewer agent exists with five-dimension ratings
- Both agents produce tabular output for downstream merging
Related skills
Extracts a user's writing voice from text samples via SICO comparative analysis
Turn a murder-mystery or indie-game script into a labeled multi-character voice pack. This AI game voice pack and character dialogue studio casts one consistent voice per role, records every line in script order, and delivers numbered clips with character IDs ready for an engine or tabletop production. Use it for game voice acting, indie game dialogue, murder mystery voiceover, multi character TTS, NPC voice acting, interactive story audio, tabletop voice pack work, and scripted game audio.
Build, measure, edit, or switch a personal writing voice profile for the rabbit-writes plugin. Three ways in, from writing samples, from an interview, or from both together, which is the one to recommend. Use when the user wants to teach the system how they write, create their own writing style, set up or replace a voice, capture their tone, analyze documents they wrote to extract a voice, be interviewed about their style, change whose voice is active, blend two voices, or convert their writing samples into a reusable style profile. Also use when a draft "doesn't sound like me" and the saved profile needs correcting.
Generates or remediates documentation with human-quality writing
Provides review-workflow scaffolding for context, evidence, and output. Use at the start of any detailed review to ensure consistent, comparable findings