plugins/scribe/skills/voice-review/SKILL.md
Runs parallel prose and craft review agents against a voice profile. Use when checking generated content for AI patterns and voice drift before publishing.
npx skillsauth add athola/claude-night-market voice-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Dispatch dual review agents and present unified findings.
scribe:voice-generate)scribe:slop-detector)Two agents run in parallel on the generated text:
Hard failures (banned phrases, em dashes) are auto-fixed. Everything else returns as advisory tables for user decision.
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 uservoice-review:findings-verified - Citations confirmed by verifierRead:
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}
Apply all auto-fixes from prose reviewer silently:
Report: "Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)"
Present both tables to the user:
Prose Review Advisories:
| # | Line | Anchor | Pattern | Current | Proposed fix | |---|------|--------|---------|---------|--------------|
Craft Review:
| Dimension | Rating | Notes | Proposed improvement | |-----------|--------|-------|---------------------|
For each advisory row, user can:
Present as:
[1] Prose: Frictionless transition at "Furthermore, the..."
Proposed: Cut transition, start mid-thought
[a]ccept / [r]eject / re[w]rite?
If the user has learning mode enabled:
~/.claude/voice-profiles/{name}/learning/snapshots/When dispatched from voice-generate, the flow is:
Can also be run on any existing text:
/voice-review path/to/file.md --profile myvoice --register casual
voice-review:findings-verified)Every advisory row must cite a real line and a verbatim anchor. Write
findings to .review/findings.json and confirm each citation resolves:
python plugins/imbue/scripts/citation_verifier.py \
--findings .review/findings.json --repo-root .
Drop or label UNVERIFIED any finding the verifier fails (exit 1); only
verified findings enter the advisory tables. See Skill(imbue:review-core)
Step 5 and Skill(imbue:structured-output) for the schema.
After the review completes, validate these conditions:
Line (file:line) and verbatim Anchor;
citation_verifier.py confirmed all citations (exit 0) or unverified
rows are dropped/labeled UNVERIFIEDThe test suite (test_voice_review.py) validates:
data-ai
Models a business in its own language. Use when the domain has real business rules to capture.
research
Generate diverse solution candidates with category-spanning ideation methods and rotation. Use when stuck on a design or fighting repetitive LLM output.
development
Generates and self-executes a diff-derived test plan for a PR. Use when validating PR changes before merge. Do not use for code review; use sanctum:pr-review.
development
Ramps implementation ambition a notch only after the prior increment is understood. Use when building a feature you must understand, not just ship.