{"id":"3de97fe8-a49a-4a57-92d4-b79ba839929d","entityType":"agent","slug":"clawhub-athola-nm-scribe-voice-review","name":"voice-review","canonicalUrl":"https://www.xpersona.co/agent/clawhub-athola-nm-scribe-voice-review","canonicalPath":"/agent/clawhub-athola-nm-scribe-voice-review","generatedAt":"2026-10-13T21:31:05.158Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-12T01:04:01.845Z","emptyReason":null},"description":"Runs parallel prose and craft review agents against a voice profile Skill: voice-review Owner: athola Summary: Runs parallel prose and craft review agents against a voice profile Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:22:40.294Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:32.406Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:59:22.961Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:06:51.476Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:33.376Z | use","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 963 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-scribe-voice-review","sourceUrl":"https://clawhub.ai/athola/nm-scribe-voice-review","homepage":"https://clawhub.ai/athola/skills/nm-scribe-voice-review","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/athola/nm-scribe-voice-review","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/athola/skills/nm-scribe-voice-review","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Runs parallel prose and craft review agents against a voice profile Skill: voice-review Owner: athola Summary: Runs parallel prose and craft review agents again"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:04:01.845Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:04:01.845Z","emptyReason":null},"stars":null,"forks":null,"downloads":963,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.9.19","tractionLabel":"963 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:04:00.786Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T01:04:01.845Z","lastCrawledAt":"2026-10-12T01:04:00.786Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T01:04:00.786Z","lastVerifiedAt":null,"highlights":[{"version":"1.9.19","createdAt":"2026-08-26T13:22:40.294Z","changelog":"Release v1.9.19","fileCount":3,"zipByteSize":3427},{"version":"1.9.17","createdAt":"2026-07-30T05:42:32.406Z","changelog":"Release v1.9.17","fileCount":3,"zipByteSize":3599},{"version":"1.9.16","createdAt":"2026-07-14T19:59:22.961Z","changelog":"Release v1.9.16","fileCount":3,"zipByteSize":3502},{"version":"1.9.14","createdAt":"2026-06-30T18:06:51.476Z","changelog":"Release v1.9.14","fileCount":3,"zipByteSize":3518},{"version":"1.9.13","createdAt":"2026-06-27T16:24:33.376Z","changelog":"Release v1.9.13","fileCount":3,"zipByteSize":3620},{"version":"1.9.12","createdAt":"2026-06-19T03:20:27.950Z","changelog":"Release v1.9.12","fileCount":3,"zipByteSize":3405}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-scribe-voice-review","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-13T21:31:05.158Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scribe-voice-review/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-12T01:04:01.845Z","emptyReason":null},"readme":"Skill: voice-review\n\nOwner: athola\n\nSummary: Runs parallel prose and craft review agents against a voice profile\n\nTags: latest:1.9.19\n\nVersion history:\n\nv1.9.19 | 2026-08-26T13:22:40.294Z | user\n\nRelease v1.9.19\n\nv1.9.17 | 2026-07-30T05:42:32.406Z | user\n\nRelease v1.9.17\n\nv1.9.16 | 2026-07-14T19:59:22.961Z | user\n\nRelease v1.9.16\n\nv1.9.14 | 2026-06-30T18:06:51.476Z | user\n\nRelease v1.9.14\n\nv1.9.13 | 2026-06-27T16:24:33.376Z | user\n\nRelease v1.9.13\n\nv1.9.12 | 2026-06-19T03:20:27.950Z | user\n\nRelease v1.9.12\n\nArchive index:\n\nArchive v1.9.19: 3 files, 3427 bytes\n\nFiles: skill-card.md (1890b), SKILL.md (4535b), _meta.json (142b)\n\nFile v1.9.19:SKILL.md\n\n---\nname: voice-review\ndescription: Runs parallel prose and craft review agents against a voice profile\nversion: 1.9.8\ntriggers:\n  - voice\n  - review\n  - prose\n  - craft\n  - quality\n  - checking generated content for AI patterns and voice drift before publishing\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scribe\", \"emoji\": \"\\u270d\\ufe0f\", \"requires\": {\"config\": [\"night-market.scribe:voice-extract\", \"night-market.scribe:voice-generate\", \"night-market.scribe:slop-detector\"]}}}\nsource: claude-night-market\nsource_plugin: scribe\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/scribe). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Voice Review Skill\n\nDispatch dual review agents and present unified findings.\n\n## Method: Parallel Dual-Gate Review\n\nTwo agents run in parallel on the generated text:\n1. **Prose reviewer**: AI patterns, banned phrases, voice drift\n2. **Craft reviewer**: Naming, destinations, dwelling, devices, anchoring\n\nHard failures (banned phrases, em dashes) are auto-fixed.\nEverything else returns as advisory tables for user decision.\n\n## Required TodoWrite Items\n\n1. `voice-review:text-loaded` - Generated text read\n2. `voice-review:register-loaded` - Voice register loaded\n3. `voice-review:agents-dispatched` - Both reviewers launched\n4. `voice-review:hard-fails-fixed` - Auto-corrections applied\n5. `voice-review:advisories-presented` - Tables shown to user\n\n## Step 1: Load Context\n\nRead:\n- The generated text (from file or clipboard)\n- The active voice register\n- The banned phrases list\n\n## Step 2: Dispatch Review Agents\n\nLaunch both agents in parallel:\n\n```\nAgent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n```\n\n## Step 3: Process Results\n\n### Hard Failures\n\nApply all auto-fixes from prose reviewer silently:\n- Remove/replace banned phrases\n- Replace em dashes with appropriate punctuation\n- Rewrite negation-correction patterns\n\nReport: \"Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)\"\n\n### Advisory Tables\n\nPresent both tables to the user:\n\n**Prose Review Advisories:**\n\n| # | Line | Pattern | Current | Proposed fix |\n|---|------|---------|---------|--------------|\n\n**Craft Review:**\n\n| Dimension | Rating | Notes | Proposed improvement |\n|-----------|--------|-------|---------------------|\n\n## Step 4: User Decision\n\nFor each advisory row, user can:\n- **Accept** (a): Apply the proposed fix\n- **Reject** (r): Keep the current text\n- **Rewrite** (w): Apply a custom fix\n\nPresent as:\n```\n[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?\n```\n\n## Step 5: Apply Decisions\n\n- Apply accepted fixes to the text\n- Skip rejected items\n- For rewrites, incorporate user's version\n- Save final text\n\n## Step 6: Snapshot (if learning active)\n\nIf the user has learning mode enabled:\n- Save \"post-review\" snapshot (text after hard-fail fixes,\n  before user decisions on advisories)\n- Save \"post-fixes\" snapshot (text after user decisions)\n- Both go to `~/.claude/voice-profiles/{name}/learning/snapshots/`\n\n## Integration with voice-generate\n\nWhen dispatched from voice-generate, the flow is:\n1. voice-generate produces text\n2. voice-generate calls voice-review\n3. voice-review dispatches agents, processes results\n4. User makes decisions on advisories\n5. If learning mode: snapshots saved for later comparison\n\n## Standalone Usage\n\nCan also be run on any existing text:\n```\n/voice-review path/to/file.md --profile myvoice --register casual\n```\n\n## Verification\n\nAfter the review completes, validate these conditions:\n\n- Both review agents returned results (no timeouts)\n- Hard failures auto-fixed and diff shown to user\n- Advisory tables presented with accept/reject/rewrite options\n- User decisions applied to the final text\n- Final text saved to disk\n- Snapshots saved (if learning mode active)\n\n## Test Spec\n\nThe test suite (`test_voice_review.py`) validates:\n\n- Skill file exists and references parallel dispatch\n- Hard failure vs advisory separation is documented\n- Prose reviewer agent exists with hard-failure patterns\n- Craft reviewer agent exists with five-dimension ratings\n- Both agents produce tabular output for downstream merging\n\nFile v1.9.19:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scribe-voice-review\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750560294\n}\n\nFile v1.9.19:skill-card.md\n\n## Description:\n\nRuns parallel prose and craft review agents against a voice profile.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[athola](https://clawhub.ai/user/athola)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nWriters, editors, and content-generation workflows use this skill to review generated text against a voice profile, apply hard-failure fixes, and decide on advisory prose and craft improvements before publishing.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can be invoked by broad voice-review triggers.\n\nMitigation: Prefer explicit invocation and review the selected text and voice profile before running the review.\n\nRisk: The skill may automatically edit hard-fail patterns and save reviewed text.\n\nMitigation: Review diffs before publishing and confirm that saved output matches the user's intent.\n\nRisk: Learning snapshots may retain private or sensitive reviewed content.\n\nMitigation: Check or disable learning snapshots before reviewing sensitive text.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scribe-voice-review)\n- [Declared homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scribe)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, guidance]\n\n**Output Format:** [Markdown advisory tables with text edits and final reviewed text]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May save reviewed text and optional learning snapshots when that mode is enabled.]\n\n## Skill Version(s):\n\n1.9.19 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.9.17: 3 files, 3599 bytes\n\nFiles: skill-card.md (2263b), SKILL.md (4535b), _meta.json (142b)\n\nFile v1.9.17:SKILL.md\n\n---\nname: voice-review\ndescription: Runs parallel prose and craft review agents against a voice profile\nversion: 1.9.8\ntriggers:\n  - voice\n  - review\n  - prose\n  - craft\n  - quality\n  - checking generated content for AI patterns and voice drift before publishing\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scribe\", \"emoji\": \"\\u270d\\ufe0f\", \"requires\": {\"config\": [\"night-market.scribe:voice-extract\", \"night-market.scribe:voice-generate\", \"night-market.scribe:slop-detector\"]}}}\nsource: claude-night-market\nsource_plugin: scribe\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/scribe). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Voice Review Skill\n\nDispatch dual review agents and present unified findings.\n\n## Method: Parallel Dual-Gate Review\n\nTwo agents run in parallel on the generated text:\n1. **Prose reviewer**: AI patterns, banned phrases, voice drift\n2. **Craft reviewer**: Naming, destinations, dwelling, devices, anchoring\n\nHard failures (banned phrases, em dashes) are auto-fixed.\nEverything else returns as advisory tables for user decision.\n\n## Required TodoWrite Items\n\n1. `voice-review:text-loaded` - Generated text read\n2. `voice-review:register-loaded` - Voice register loaded\n3. `voice-review:agents-dispatched` - Both reviewers launched\n4. `voice-review:hard-fails-fixed` - Auto-corrections applied\n5. `voice-review:advisories-presented` - Tables shown to user\n\n## Step 1: Load Context\n\nRead:\n- The generated text (from file or clipboard)\n- The active voice register\n- The banned phrases list\n\n## Step 2: Dispatch Review Agents\n\nLaunch both agents in parallel:\n\n```\nAgent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n```\n\n## Step 3: Process Results\n\n### Hard Failures\n\nApply all auto-fixes from prose reviewer silently:\n- Remove/replace banned phrases\n- Replace em dashes with appropriate punctuation\n- Rewrite negation-correction patterns\n\nReport: \"Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)\"\n\n### Advisory Tables\n\nPresent both tables to the user:\n\n**Prose Review Advisories:**\n\n| # | Line | Pattern | Current | Proposed fix |\n|---|------|---------|---------|--------------|\n\n**Craft Review:**\n\n| Dimension | Rating | Notes | Proposed improvement |\n|-----------|--------|-------|---------------------|\n\n## Step 4: User Decision\n\nFor each advisory row, user can:\n- **Accept** (a): Apply the proposed fix\n- **Reject** (r): Keep the current text\n- **Rewrite** (w): Apply a custom fix\n\nPresent as:\n```\n[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?\n```\n\n## Step 5: Apply Decisions\n\n- Apply accepted fixes to the text\n- Skip rejected items\n- For rewrites, incorporate user's version\n- Save final text\n\n## Step 6: Snapshot (if learning active)\n\nIf the user has learning mode enabled:\n- Save \"post-review\" snapshot (text after hard-fail fixes,\n  before user decisions on advisories)\n- Save \"post-fixes\" snapshot (text after user decisions)\n- Both go to `~/.claude/voice-profiles/{name}/learning/snapshots/`\n\n## Integration with voice-generate\n\nWhen dispatched from voice-generate, the flow is:\n1. voice-generate produces text\n2. voice-generate calls voice-review\n3. voice-review dispatches agents, processes results\n4. User makes decisions on advisories\n5. If learning mode: snapshots saved for later comparison\n\n## Standalone Usage\n\nCan also be run on any existing text:\n```\n/voice-review path/to/file.md --profile myvoice --register casual\n```\n\n## Verification\n\nAfter the review completes, validate these conditions:\n\n- Both review agents returned results (no timeouts)\n- Hard failures auto-fixed and diff shown to user\n- Advisory tables presented with accept/reject/rewrite options\n- User decisions applied to the final text\n- Final text saved to disk\n- Snapshots saved (if learning mode active)\n\n## Test Spec\n\nThe test suite (`test_voice_review.py`) validates:\n\n- Skill file exists and references parallel dispatch\n- Hard failure vs advisory separation is documented\n- Prose reviewer agent exists with hard-failure patterns\n- Craft reviewer agent exists with five-dimension ratings\n- Both agents produce tabular output for downstream merging\n\nFile v1.9.17:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scribe-voice-review\",\n  \"version\": \"1.9.17\",\n  \"publishedAt\": 1785390152406\n}\n\nFile v1.9.17:skill-card.md\n\n## Description: <br>\nRuns parallel prose and craft review agents against a voice profile. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, writers, and content teams use this skill to review generated or existing prose against a voice profile, separate hard failures from advisory feedback, and apply selected improvements before saving the final text. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Broad review-related triggers may activate the skill on drafts the user did not intend to process. <br>\nMitigation: Install only when the user is comfortable with this review workflow and confirm the target draft before running it. <br>\nRisk: Automatic hard-failure fixes can change prose before advisory review. <br>\nMitigation: Review the reported fixes and final diff before relying on or publishing the saved text. <br>\nRisk: Learning mode can save additional draft snapshots that may contain sensitive or proprietary text. <br>\nMitigation: Avoid sensitive drafts unless storage locations and retention expectations are understood. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scribe-voice-review) <br>\n- [Claude Night Market scribe plugin](https://github.com/athola/claude-night-market/tree/master/plugins/scribe) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, guidance, files] <br>\n**Output Format:** [Markdown advisory tables, user decision prompts, prose edits, and saved text files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May auto-fix hard failures, present advisory changes for user choice, save final text, and optionally save learning snapshots.] <br>\n\n## Skill Version(s): <br>\n1.9.17 (source: server release metadata; artifact frontmatter reports 1.9.8) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.16: 3 files, 3502 bytes\n\nFiles: skill-card.md (2196b), SKILL.md (4535b), _meta.json (142b)\n\nFile v1.9.16:SKILL.md\n\n---\nname: voice-review\ndescription: Runs parallel prose and craft review agents against a voice profile\nversion: 1.9.8\ntriggers:\n  - voice\n  - review\n  - prose\n  - craft\n  - quality\n  - checking generated content for AI patterns and voice drift before publishing\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scribe\", \"emoji\": \"\\u270d\\ufe0f\", \"requires\": {\"config\": [\"night-market.scribe:voice-extract\", \"night-market.scribe:voice-generate\", \"night-market.scribe:slop-detector\"]}}}\nsource: claude-night-market\nsource_plugin: scribe\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/scribe). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Voice Review Skill\n\nDispatch dual review agents and present unified findings.\n\n## Method: Parallel Dual-Gate Review\n\nTwo agents run in parallel on the generated text:\n1. **Prose reviewer**: AI patterns, banned phrases, voice drift\n2. **Craft reviewer**: Naming, destinations, dwelling, devices, anchoring\n\nHard failures (banned phrases, em dashes) are auto-fixed.\nEverything else returns as advisory tables for user decision.\n\n## Required TodoWrite Items\n\n1. `voice-review:text-loaded` - Generated text read\n2. `voice-review:register-loaded` - Voice register loaded\n3. `voice-review:agents-dispatched` - Both reviewers launched\n4. `voice-review:hard-fails-fixed` - Auto-corrections applied\n5. `voice-review:advisories-presented` - Tables shown to user\n\n## Step 1: Load Context\n\nRead:\n- The generated text (from file or clipboard)\n- The active voice register\n- The banned phrases list\n\n## Step 2: Dispatch Review Agents\n\nLaunch both agents in parallel:\n\n```\nAgent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n```\n\n## Step 3: Process Results\n\n### Hard Failures\n\nApply all auto-fixes from prose reviewer silently:\n- Remove/replace banned phrases\n- Replace em dashes with appropriate punctuation\n- Rewrite negation-correction patterns\n\nReport: \"Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)\"\n\n### Advisory Tables\n\nPresent both tables to the user:\n\n**Prose Review Advisories:**\n\n| # | Line | Pattern | Current | Proposed fix |\n|---|------|---------|---------|--------------|\n\n**Craft Review:**\n\n| Dimension | Rating | Notes | Proposed improvement |\n|-----------|--------|-------|---------------------|\n\n## Step 4: User Decision\n\nFor each advisory row, user can:\n- **Accept** (a): Apply the proposed fix\n- **Reject** (r): Keep the current text\n- **Rewrite** (w): Apply a custom fix\n\nPresent as:\n```\n[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?\n```\n\n## Step 5: Apply Decisions\n\n- Apply accepted fixes to the text\n- Skip rejected items\n- For rewrites, incorporate user's version\n- Save final text\n\n## Step 6: Snapshot (if learning active)\n\nIf the user has learning mode enabled:\n- Save \"post-review\" snapshot (text after hard-fail fixes,\n  before user decisions on advisories)\n- Save \"post-fixes\" snapshot (text after user decisions)\n- Both go to `~/.claude/voice-profiles/{name}/learning/snapshots/`\n\n## Integration with voice-generate\n\nWhen dispatched from voice-generate, the flow is:\n1. voice-generate produces text\n2. voice-generate calls voice-review\n3. voice-review dispatches agents, processes results\n4. User makes decisions on advisories\n5. If learning mode: snapshots saved for later comparison\n\n## Standalone Usage\n\nCan also be run on any existing text:\n```\n/voice-review path/to/file.md --profile myvoice --register casual\n```\n\n## Verification\n\nAfter the review completes, validate these conditions:\n\n- Both review agents returned results (no timeouts)\n- Hard failures auto-fixed and diff shown to user\n- Advisory tables presented with accept/reject/rewrite options\n- User decisions applied to the final text\n- Final text saved to disk\n- Snapshots saved (if learning mode active)\n\n## Test Spec\n\nThe test suite (`test_voice_review.py`) validates:\n\n- Skill file exists and references parallel dispatch\n- Hard failure vs advisory separation is documented\n- Prose reviewer agent exists with hard-failure patterns\n- Craft reviewer agent exists with five-dimension ratings\n- Both agents produce tabular output for downstream merging\n\nFile v1.9.16:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scribe-voice-review\",\n  \"version\": \"1.9.16\",\n  \"publishedAt\": 1784059162961\n}\n\nFile v1.9.16:skill-card.md\n\n## Description: <br>\nRuns parallel prose and craft review agents against a voice profile. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nWriters, editors, and agents use this skill to review generated prose against a voice profile, automatically fix hard failures, and present advisory prose and craft recommendations for user decisions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can automatically modify generated text when it detects hard failures. <br>\nMitigation: Review the diff and final text before publishing, and confirm automatic hard-failure edits are acceptable for the document. <br>\nRisk: Learning mode can save local review snapshots under the user's voice profile directory. <br>\nMitigation: Confirm whether learning mode is enabled and where snapshots are stored before using the skill on important or confidential text. <br>\nRisk: Advisory prose and craft recommendations may not match the author's intent. <br>\nMitigation: Treat advisory tables as suggestions and rely on the user's accept, reject, or rewrite decisions before finalizing text. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scribe-voice-review) <br>\n- [Scribe plugin homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scribe) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Guidance] <br>\n**Output Format:** [Markdown advisory tables and edited text] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May apply hard-failure edits before presenting advisory review decisions; may save snapshots when learning mode is enabled.] <br>\n\n## Skill Version(s): <br>\n1.9.16 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.14: 3 files, 3518 bytes\n\nFiles: skill-card.md (2096b), SKILL.md (4535b), _meta.json (142b)\n\nFile v1.9.14:SKILL.md\n\n---\nname: voice-review\ndescription: Runs parallel prose and craft review agents against a voice profile\nversion: 1.9.8\ntriggers:\n  - voice\n  - review\n  - prose\n  - craft\n  - quality\n  - checking generated content for AI patterns and voice drift before publishing\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scribe\", \"emoji\": \"\\u270d\\ufe0f\", \"requires\": {\"config\": [\"night-market.scribe:voice-extract\", \"night-market.scribe:voice-generate\", \"night-market.scribe:slop-detector\"]}}}\nsource: claude-night-market\nsource_plugin: scribe\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/scribe). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Voice Review Skill\n\nDispatch dual review agents and present unified findings.\n\n## Method: Parallel Dual-Gate Review\n\nTwo agents run in parallel on the generated text:\n1. **Prose reviewer**: AI patterns, banned phrases, voice drift\n2. **Craft reviewer**: Naming, destinations, dwelling, devices, anchoring\n\nHard failures (banned phrases, em dashes) are auto-fixed.\nEverything else returns as advisory tables for user decision.\n\n## Required TodoWrite Items\n\n1. `voice-review:text-loaded` - Generated text read\n2. `voice-review:register-loaded` - Voice register loaded\n3. `voice-review:agents-dispatched` - Both reviewers launched\n4. `voice-review:hard-fails-fixed` - Auto-corrections applied\n5. `voice-review:advisories-presented` - Tables shown to user\n\n## Step 1: Load Context\n\nRead:\n- The generated text (from file or clipboard)\n- The active voice register\n- The banned phrases list\n\n## Step 2: Dispatch Review Agents\n\nLaunch both agents in parallel:\n\n```\nAgent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n```\n\n## Step 3: Process Results\n\n### Hard Failures\n\nApply all auto-fixes from prose reviewer silently:\n- Remove/replace banned phrases\n- Replace em dashes with appropriate punctuation\n- Rewrite negation-correction patterns\n\nReport: \"Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)\"\n\n### Advisory Tables\n\nPresent both tables to the user:\n\n**Prose Review Advisories:**\n\n| # | Line | Pattern | Current | Proposed fix |\n|---|------|---------|---------|--------------|\n\n**Craft Review:**\n\n| Dimension | Rating | Notes | Proposed improvement |\n|-----------|--------|-------|---------------------|\n\n## Step 4: User Decision\n\nFor each advisory row, user can:\n- **Accept** (a): Apply the proposed fix\n- **Reject** (r): Keep the current text\n- **Rewrite** (w): Apply a custom fix\n\nPresent as:\n```\n[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?\n```\n\n## Step 5: Apply Decisions\n\n- Apply accepted fixes to the text\n- Skip rejected items\n- For rewrites, incorporate user's version\n- Save final text\n\n## Step 6: Snapshot (if learning active)\n\nIf the user has learning mode enabled:\n- Save \"post-review\" snapshot (text after hard-fail fixes,\n  before user decisions on advisories)\n- Save \"post-fixes\" snapshot (text after user decisions)\n- Both go to `~/.claude/voice-profiles/{name}/learning/snapshots/`\n\n## Integration with voice-generate\n\nWhen dispatched from voice-generate, the flow is:\n1. voice-generate produces text\n2. voice-generate calls voice-review\n3. voice-review dispatches agents, processes results\n4. User makes decisions on advisories\n5. If learning mode: snapshots saved for later comparison\n\n## Standalone Usage\n\nCan also be run on any existing text:\n```\n/voice-review path/to/file.md --profile myvoice --register casual\n```\n\n## Verification\n\nAfter the review completes, validate these conditions:\n\n- Both review agents returned results (no timeouts)\n- Hard failures auto-fixed and diff shown to user\n- Advisory tables presented with accept/reject/rewrite options\n- User decisions applied to the final text\n- Final text saved to disk\n- Snapshots saved (if learning mode active)\n\n## Test Spec\n\nThe test suite (`test_voice_review.py`) validates:\n\n- Skill file exists and references parallel dispatch\n- Hard failure vs advisory separation is documented\n- Prose reviewer agent exists with hard-failure patterns\n- Craft reviewer agent exists with five-dimension ratings\n- Both agents produce tabular output for downstream merging\n\nFile v1.9.14:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scribe-voice-review\",\n  \"version\": \"1.9.14\",\n  \"publishedAt\": 1782842811476\n}\n\nFile v1.9.14:skill-card.md\n\n## Description: <br>\nRuns parallel prose and craft review agents against a voice profile. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nWriters, editors, and content teams use this skill to review generated or drafted prose against an active voice register, separate hard failures from advisories, and apply selected revisions before publishing. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill reviews draft text and may save edited output or learning snapshots, which can expose sensitive writing if used on confidential material. <br>\nMitigation: Use explicit invocation, check whether learning mode is enabled, and avoid reviewing sensitive drafts unless local storage of outputs is acceptable. <br>\nRisk: Automatic hard-failure fixes can change wording before the user reviews advisory edits. <br>\nMitigation: Review the reported hard-failure count and inspect the final text before publishing. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scribe-voice-review) <br>\n- [Publisher profile](https://clawhub.ai/user/athola) <br>\n- [Scribe plugin homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scribe) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, guidance] <br>\n**Output Format:** [Markdown review tables with proposed edits and concise status messages] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May save reviewed text and optional learning snapshots when the user's workflow enables that behavior.] <br>\n\n## Skill Version(s): <br>\n1.9.14 (source: ClawHub release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.13: 3 files, 3620 bytes\n\nFiles: skill-card.md (2344b), SKILL.md (4535b), _meta.json (142b)\n\nFile v1.9.13:SKILL.md\n\n---\nname: voice-review\ndescription: Runs parallel prose and craft review agents against a voice profile\nversion: 1.9.8\ntriggers:\n  - voice\n  - review\n  - prose\n  - craft\n  - quality\n  - checking generated content for AI patterns and voice drift before publishing\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scribe\", \"emoji\": \"\\u270d\\ufe0f\", \"requires\": {\"config\": [\"night-market.scribe:voice-extract\", \"night-market.scribe:voice-generate\", \"night-market.scribe:slop-detector\"]}}}\nsource: claude-night-market\nsource_plugin: scribe\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/scribe). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Voice Review Skill\n\nDispatch dual review agents and present unified findings.\n\n## Method: Parallel Dual-Gate Review\n\nTwo agents run in parallel on the generated text:\n1. **Prose reviewer**: AI patterns, banned phrases, voice drift\n2. **Craft reviewer**: Naming, destinations, dwelling, devices, anchoring\n\nHard failures (banned phrases, em dashes) are auto-fixed.\nEverything else returns as advisory tables for user decision.\n\n## Required TodoWrite Items\n\n1. `voice-review:text-loaded` - Generated text read\n2. `voice-review:register-loaded` - Voice register loaded\n3. `voice-review:agents-dispatched` - Both reviewers launched\n4. `voice-review:hard-fails-fixed` - Auto-corrections applied\n5. `voice-review:advisories-presented` - Tables shown to user\n\n## Step 1: Load Context\n\nRead:\n- The generated text (from file or clipboard)\n- The active voice register\n- The banned phrases list\n\n## Step 2: Dispatch Review Agents\n\nLaunch both agents in parallel:\n\n```\nAgent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n```\n\n## Step 3: Process Results\n\n### Hard Failures\n\nApply all auto-fixes from prose reviewer silently:\n- Remove/replace banned phrases\n- Replace em dashes with appropriate punctuation\n- Rewrite negation-correction patterns\n\nReport: \"Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)\"\n\n### Advisory Tables\n\nPresent both tables to the user:\n\n**Prose Review Advisories:**\n\n| # | Line | Pattern | Current | Proposed fix |\n|---|------|---------|---------|--------------|\n\n**Craft Review:**\n\n| Dimension | Rating | Notes | Proposed improvement |\n|-----------|--------|-------|---------------------|\n\n## Step 4: User Decision\n\nFor each advisory row, user can:\n- **Accept** (a): Apply the proposed fix\n- **Reject** (r): Keep the current text\n- **Rewrite** (w): Apply a custom fix\n\nPresent as:\n```\n[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?\n```\n\n## Step 5: Apply Decisions\n\n- Apply accepted fixes to the text\n- Skip rejected items\n- For rewrites, incorporate user's version\n- Save final text\n\n## Step 6: Snapshot (if learning active)\n\nIf the user has learning mode enabled:\n- Save \"post-review\" snapshot (text after hard-fail fixes,\n  before user decisions on advisories)\n- Save \"post-fixes\" snapshot (text after user decisions)\n- Both go to `~/.claude/voice-profiles/{name}/learning/snapshots/`\n\n## Integration with voice-generate\n\nWhen dispatched from voice-generate, the flow is:\n1. voice-generate produces text\n2. voice-generate calls voice-review\n3. voice-review dispatches agents, processes results\n4. User makes decisions on advisories\n5. If learning mode: snapshots saved for later comparison\n\n## Standalone Usage\n\nCan also be run on any existing text:\n```\n/voice-review path/to/file.md --profile myvoice --register casual\n```\n\n## Verification\n\nAfter the review completes, validate these conditions:\n\n- Both review agents returned results (no timeouts)\n- Hard failures auto-fixed and diff shown to user\n- Advisory tables presented with accept/reject/rewrite options\n- User decisions applied to the final text\n- Final text saved to disk\n- Snapshots saved (if learning mode active)\n\n## Test Spec\n\nThe test suite (`test_voice_review.py`) validates:\n\n- Skill file exists and references parallel dispatch\n- Hard failure vs advisory separation is documented\n- Prose reviewer agent exists with hard-failure patterns\n- Craft reviewer agent exists with five-dimension ratings\n- Both agents produce tabular output for downstream merging\n\nFile v1.9.13:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scribe-voice-review\",\n  \"version\": \"1.9.13\",\n  \"publishedAt\": 1782577473376\n}\n\nFile v1.9.13:skill-card.md\n\n## Description: <br>\nRuns parallel prose and craft review agents against a voice profile. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nWriters, editors, and developers use this skill to review generated prose against a voice profile, automatically fix hard failures such as banned phrases and punctuation patterns, and present advisory prose and craft changes for user decision. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Broad triggers can invoke the skill during general writing or review tasks where automatic edits are not intended. <br>\nMitigation: Install it only for workflows where active prose editing is desired, and narrow or remove broad triggers before routine use. <br>\nRisk: Hard-failure handling can automatically modify reviewed text and save final output. <br>\nMitigation: Review diffs and advisory decisions before accepting saved output, especially on publishable or source-controlled files. <br>\nRisk: Learning snapshots may preserve intermediate and final reviewed text when learning mode is enabled. <br>\nMitigation: Enable learning snapshots only for appropriate text, and review snapshot storage before using the skill on sensitive content. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scribe-voice-review) <br>\n- [Scribe plugin homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scribe) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, guidance] <br>\n**Output Format:** [Markdown tables and edited prose text] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Provides hard-failure auto-fix counts, advisory review tables, accept/reject/rewrite prompts, saved final text, and optional learning snapshots.] <br>\n\n## Skill Version(s): <br>\n1.9.13 (source: server release metadata; artifact frontmatter reports 1.9.8) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.12: 3 files, 3405 bytes\n\nFiles: skill-card.md (1873b), SKILL.md (4535b), _meta.json (142b)\n\nFile v1.9.12:SKILL.md\n\n---\nname: voice-review\ndescription: Runs parallel prose and craft review agents against a voice profile\nversion: 1.9.8\ntriggers:\n  - voice\n  - review\n  - prose\n  - craft\n  - quality\n  - checking generated content for AI patterns and voice drift before publishing\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scribe\", \"emoji\": \"\\u270d\\ufe0f\", \"requires\": {\"config\": [\"night-market.scribe:voice-extract\", \"night-market.scribe:voice-generate\", \"night-market.scribe:slop-detector\"]}}}\nsource: claude-night-market\nsource_plugin: scribe\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/scribe). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Voice Review Skill\n\nDispatch dual review agents and present unified findings.\n\n## Method: Parallel Dual-Gate Review\n\nTwo agents run in parallel on the generated text:\n1. **Prose reviewer**: AI patterns, banned phrases, voice drift\n2. **Craft reviewer**: Naming, destinations, dwelling, devices, anchoring\n\nHard failures (banned phrases, em dashes) are auto-fixed.\nEverything else returns as advisory tables for user decision.\n\n## Required TodoWrite Items\n\n1. `voice-review:text-loaded` - Generated text read\n2. `voice-review:register-loaded` - Voice register loaded\n3. `voice-review:agents-dispatched` - Both reviewers launched\n4. `voice-review:hard-fails-fixed` - Auto-corrections applied\n5. `voice-review:advisories-presented` - Tables shown to user\n\n## Step 1: Load Context\n\nRead:\n- The generated text (from file or clipboard)\n- The active voice register\n- The banned phrases list\n\n## Step 2: Dispatch Review Agents\n\nLaunch both agents in parallel:\n\n```\nAgent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n```\n\n## Step 3: Process Results\n\n### Hard Failures\n\nApply all auto-fixes from prose reviewer silently:\n- Remove/replace banned phrases\n- Replace em dashes with appropriate punctuation\n- Rewrite negation-correction patterns\n\nReport: \"Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)\"\n\n### Advisory Tables\n\nPresent both tables to the user:\n\n**Prose Review Advisories:**\n\n| # | Line | Pattern | Current | Proposed fix |\n|---|------|---------|---------|--------------|\n\n**Craft Review:**\n\n| Dimension | Rating | Notes | Proposed improvement |\n|-----------|--------|-------|---------------------|\n\n## Step 4: User Decision\n\nFor each advisory row, user can:\n- **Accept** (a): Apply the proposed fix\n- **Reject** (r): Keep the current text\n- **Rewrite** (w): Apply a custom fix\n\nPresent as:\n```\n[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?\n```\n\n## Step 5: Apply Decisions\n\n- Apply accepted fixes to the text\n- Skip rejected items\n- For rewrites, incorporate user's version\n- Save final text\n\n## Step 6: Snapshot (if learning active)\n\nIf the user has learning mode enabled:\n- Save \"post-review\" snapshot (text after hard-fail fixes,\n  before user decisions on advisories)\n- Save \"post-fixes\" snapshot (text after user decisions)\n- Both go to `~/.claude/voice-profiles/{name}/learning/snapshots/`\n\n## Integration with voice-generate\n\nWhen dispatched from voice-generate, the flow is:\n1. voice-generate produces text\n2. voice-generate calls voice-review\n3. voice-review dispatches agents, processes results\n4. User makes decisions on advisories\n5. If learning mode: snapshots saved for later comparison\n\n## Standalone Usage\n\nCan also be run on any existing text:\n```\n/voice-review path/to/file.md --profile myvoice --register casual\n```\n\n## Verification\n\nAfter the review completes, validate these conditions:\n\n- Both review agents returned results (no timeouts)\n- Hard failures auto-fixed and diff shown to user\n- Advisory tables presented with accept/reject/rewrite options\n- User decisions applied to the final text\n- Final text saved to disk\n- Snapshots saved (if learning mode active)\n\n## Test Spec\n\nThe test suite (`test_voice_review.py`) validates:\n\n- Skill file exists and references parallel dispatch\n- Hard failure vs advisory separation is documented\n- Prose reviewer agent exists with hard-failure patterns\n- Craft reviewer agent exists with five-dimension ratings\n- Both agents produce tabular output for downstream merging\n\nFile v1.9.12:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scribe-voice-review\",\n  \"version\": \"1.9.12\",\n  \"publishedAt\": 1781839227950\n}\n\nFile v1.9.12:skill-card.md\n\n## Description: <br>\nRuns parallel prose and craft review agents against a voice profile. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nWriters, editors, and content teams use this skill to review generated or existing prose against a voice profile, surface prose and craft advisories, and apply selected fixes before publishing. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can automatically change user text during hard-failure fixes. <br>\nMitigation: Review diffs and advisory decisions before relying on or publishing the final text. <br>\nRisk: When learning mode is active, reviewed text snapshots may be retained locally. <br>\nMitigation: Use the skill only on text suitable for local retention, and review or delete snapshot storage according to the user's retention needs. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/nm-scribe-voice-review) <br>\n- [Night Market scribe plugin](https://github.com/athola/claude-night-market/tree/master/plugins/scribe) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, guidance] <br>\n**Output Format:** [Markdown review tables, decision prompts, and edited text] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May save final text and local snapshots when learning mode is active.] <br>\n\n## Skill Version(s): <br>\n1.9.12 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: voice-review Owner: athola Summary: Runs parallel prose and craft review agents against a voice profile Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:22:40.294Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:32.406Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:59:22.961Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:06:51.476Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:33.376Z | use","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"Agent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}"},{"language":"text","snippet":"[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?"},{"language":"text","snippet":"/voice-review path/to/file.md --profile myvoice --register casual"},{"language":"text","snippet":"Agent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}"},{"language":"text","snippet":"[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?"},{"language":"text","snippet":"/voice-review path/to/file.md --profile myvoice --register casual"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: voice-review\ndescription: Runs parallel prose and craft review agents against a voice profile\nversion: 1.9.8\ntriggers:\n  - voice\n  - review\n  - prose\n  - craft\n  - quality\n  - checking generated content for AI patterns and voice drift before publishing\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scribe\", \"emoji\": \"\\u270d\\ufe0f\", \"requires\": {\"config\": [\"night-market.scribe:voice-extract\", \"night-market.scribe:voice-generate\", \"night-market.scribe:slop-detector\"]}}}\nsource: claude-night-market\nsource_plugin: scribe\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scribe](https://github.com/athola/claude-night-market/tree/master/plugins/scribe). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Voice Review Skill\n\nDispatch dual review agents and present unified findings.\n\n## Method: Parallel Dual-Gate Review\n\nTwo agents run in parallel on the generated text:\n1. **Prose reviewer**: AI patterns, banned phrases, voice drift\n2. **Craft reviewer**: Naming, destinations, dwelling, devices, anchoring\n\nHard failures (banned phrases, em dashes) are auto-fixed.\nEverything else returns as advisory tables for user decision.\n\n## Required TodoWrite Items\n\n1. `voice-review:text-loaded` - Generated text read\n2. `voice-review:register-loaded` - Voice register loaded\n3. `voice-review:agents-dispatched` - Both reviewers launched\n4. `voice-review:hard-fails-fixed` - Auto-corrections applied\n5. `voice-review:advisories-presented` - Tables shown to user\n\n## Step 1: Load Context\n\nRead:\n- The generated text (from file or clipboard)\n- The active voice register\n- The banned phrases list\n\n## Step 2: Dispatch Review Agents\n\nLaunch both agents in parallel:\n\n```\nAgent(prose-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n  - banned_phrases: {banned_list}\n\nAgent(craft-reviewer):\n  - text: {generated_text}\n  - register: {register_content}\n```\n\n## Step 3: Process Results\n\n### Hard Failures\n\nApply all auto-fixes from prose reviewer silently:\n- Remove/replace banned phrases\n- Replace em dashes with appropriate punctuation\n- Rewrite negation-correction patterns\n\nReport: \"Fixed N hard failures (X banned phrases, Y em dashes, Z patterns)\"\n\n### Advisory Tables\n\nPresent both tables to the user:\n\n**Prose Review Advisories:**\n\n| # | Line | Pattern | Current | Proposed fix |\n|---|------|---------|---------|--------------|\n\n**Craft Review:**\n\n| Dimension | Rating | Notes | Proposed improvement |\n|-----------|--------|-------|---------------------|\n\n## Step 4: User Decision\n\nFor each advisory row, user can:\n- **Accept** (a): Apply the proposed fix\n- **Reject** (r): Keep the current text\n- **Rewrite** (w): Apply a custom fix\n\nPresent as:\n```\n[1] Prose: Frictionless transition at \"Furthermore, the...\"\n    Proposed: Cut transition, start mid-thought\n    [a]ccept / [r]eject / re[w]rite?\n```\n\n## Step 5: Apply Decisions\n\n- Apply accepted fixes to th"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scribe-voice-review\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750560294\n}"},{"path":"skill-card.md","content":"## Description:\n\nRuns parallel prose and craft review agents against a voice profile.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[athola](https://clawhub.ai/user/athola)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nWriters, editors, and content-generation workflows use this skill to review generated text against a voice profile, apply hard-failure fixes, and decide on advisory prose and craft improvements before publishing.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can be invoked by broad voice-review triggers.\n\nMitigation: Prefer explicit invocation and review the selected text and voice profile before running the review.\n\nRisk: The skill may automatically edit hard-fail patterns and save reviewed text.\n\nMitigation: Review diffs before publishing and confirm that saved output matches the user's intent.\n\nRisk: Learning snapshots may retain private or sensitive reviewed content.\n\nMitigation: Check or disable learning snapshots before reviewing sensitive text.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scribe-voice-review)\n- [Declared homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scribe)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, guidance]\n\n**Output Format:** [Markdown advisory tables with text edits and final reviewed text]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May save reviewed text and optional learning snapshots when that mode is enabled.]\n\n## Skill Version(s):\n\n1.9.19 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Runs parallel prose and craft review agents against a voice profile Skill: voice-review Owner: athola Summary: Runs parallel prose and craft review agents against a voice profile Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:22:40.294Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:32.406Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:59:22.961Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:06:51.476Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:33.376Z | use","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":978,"uniquenessScore":53,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T01:04:01.845Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T01:04:01.845Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-13T21:31:05.158Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}