Claude-night-market voice-review
Dispatch parallel prose and craft review agents on generated
install
source · Clone the upstream repo
git clone https://github.com/athola/claude-night-market
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/athola/claude-night-market "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/scribe/skills/voice-review" ~/.claude/skills/athola-claude-night-market-voice-review && rm -rf "$T"
manifest:
plugins/scribe/skills/voice-review/SKILL.mdsource content
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
- Generated text readvoice-review:text-loaded
- Voice register loadedvoice-review:register-loaded
- Both reviewers launchedvoice-review:agents-dispatched
- Auto-corrections appliedvoice-review:hard-fails-fixed
- Tables shown to uservoice-review:advisories-presented
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
Exit Criteria
- Both review agents returned results
- Hard failures auto-fixed
- Advisory tables presented to user
- User decisions applied
- Final text saved
- Snapshots saved (if learning mode)