Skip to content
cccskills
FreePublished on GitHub

voice-gate

Line-editor pass on any content draft against a client voice guide. Flags cadence issues, signature-move overuse, voice-guide violations, receipt gaps — things a rule-based gate can't catch. Use after /content-gate and before human review.

The English summary is being prepared. Showing the original description.

See how to install

Files included (6)

  • SKILL.md8.8 KB
  • examples/example-blog-voice-gate-report.md27.5 KB
  • judge-prompt.md13.5 KB
  • README.md3.8 KB
  • run-log.md242 B
  • TUNING-LOG.md3.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

/voice-gate — The Line Editor

Run a subjective-voice review of a drafted piece against a client's voice guide. Produces a structured editorial report with severity-ranked issues, verbatim quotes, rule citations, and direction for human-editor fixes.

This is the complementary pass to /content-gate. Rule-based gates (Four U's, banned words, SEO lint) catch mechanical quality issues. Voice Gate catches what they can't: sing-songy cadence, signature-move overuse, voice-guide violations that require interpretation, receipt gaps, and flow. Claude Code's session executes the judge prompt inline — no external API, no script wrapper, no env vars.

Preamble

source "$(dirname "$0")/../lib/preamble.sh"

Arguments

Required:

  • file path: Path to the draft markdown file to review.

Optional:

  • --voice-guide <path>: Path to the client's writing guide. If omitted, auto-discovered (see Step 1).
  • --persona <path>: Path to the writer persona file for extra biographical context. Optional but improves flag specificity.
  • --max-issues <n>: Cap the number of issues in the report. Default 30.

Example: /voice-gate clients/GrowthModeOn/outputs/blog-posts/how-to-write-a-podcast-pitch.md Example: /voice-gate path/to/draft.md --voice-guide path/to/writing-guide.md --persona path/to/persona.md

The Skill

Step 1: Resolve Arguments

Parse ARGUMENTS. The first positional argument is the draft file path. Use the Read tool to validate it exists. If the draft is not a readable markdown file, stop and tell the user: "Draft not found: {path}. Pass a valid markdown file path."

Resolve the voice guide:

  • If --voice-guide <path> is provided, use that path.
  • Otherwise, auto-discover. Walk up from the draft's directory until you find an outputs/personas/ directory (or a plain personas/ directory). Inside, look for a file matching *-writing-guide.md. The canonical convention is clients/<client>/outputs/personas/<writer>-writing-guide.md. Pick the first match in the closest candidate directory.
  • If no match is found, stop and tell the user: "No voice guide found. Pass --voice-guide <path> explicitly, or place a *-writing-guide.md file in the nearest outputs/personas/ directory."

Resolve the persona (optional):

  • If --persona <path> is provided, use it.
  • Otherwise, look in the same directory as the resolved voice guide for a sibling *-persona.md whose basename prefix matches the writing guide (e.g. lexie-smith-writing-guide.md → lexie-smith-persona.md). If found, use it. If not, proceed without a persona.

Resolve max-issues: default 30. Parse --max-issues <n> if present and coerce to an integer.

Step 2: Read Inputs

Use the Read tool to load:

  • The draft file (full text).
  • The voice guide (full text).
  • The persona file (full text, if resolved).

If any required file fails to read, surface the error and stop.

Step 3: Load the Judge Prompt

Use the Read tool to load voice-gate/judge-prompt.md from this skill's own directory. This is the rubric Claude applies to produce the editorial report. If the file is missing, stop and tell the user: "Voice Gate judge prompt missing at voice-gate/judge-prompt.md. Re-install the skill."

Step 4: Execute the Judge Prompt (inline)

You (Claude) are the judge. There is no external API call. Apply the judge prompt against the three inputs: the draft text, the voice guide text, and (if present) the persona text. Produce a structured editorial report that conforms to the output contract defined in judge-prompt.md.

Hard requirements on the report — these are non-negotiable:

  • Every issue cites a verbatim quote from the draft (never a paraphrase).
  • Every issue references a specific rule — a numbered section of the voice guide (e.g., "Voice guide §11 DO #4"), a named signature-move cap ("I repeat — cap 1, count 3"), or a named editorial principle when the voice guide is silent ("Editorial: triple-list cadence monotony").
  • Severity is one of: High (publish-blocking), Medium (meaningful craft issue), Low (polish).
  • Recommended fixes are direction only, never rewrites. The human editor owns the rewrite.
  • If the total issue count exceeds max_issues, include only the top max_issues by severity and note in the Summary Table that the cap was hit.

Step 5: Write the Report

Derive the report path: <draft-path-without-extension>.VOICE-GATE.md. Example: .../how-to-write-a-podcast-pitch.md → .../how-to-write-a-podcast-pitch.VOICE-GATE.md.

Use the Write tool to save the report at that path.

Step 6: Compute the Verdict

Count issues by severity. Apply the verdict logic:

  • PASS: 0 High issues AND ≤3 Medium issues. Message: "Ready for human review."

  • HOLD: 1–2 High issues OR >3 Medium issues (and no FAIL triggers). Message: "Moderate edits needed. See report."

  • FAIL: 3+ High issues OR any voice-guide hard-rule violation. Hard-rule violation triggers:

    • A Tier 1 banned word from the voice guide's DON'T list appears in the draft.
    • A year-count canonicalization rule is violated (e.g., the guide canonicalizes "15+ years" but draft says "13 years" or "11 years").
    • An AI-slop phrase the guide explicitly flags appears ("In conclusion," "delve," "innovative," "disruptive," "holistic," etc., per the guide's forbidden list).
    • The cold-open rule for SEO posts is violated (e.g., "Hey guys" opening a blog post).

    Message: "Blocking issues. Fix before human review."

Step 7: Display the Summary

Print a concise scorecard:

VOICE GATE REPORT
═══════════════════════════════════════════
File:        {draft_filename}
Voice guide: {voice_guide_filename}
Persona:     {persona_filename or "—"}
Report:      {report_path}

Issues:      {total} total
  High:      {high}
  Medium:    {medium}
  Low:       {low}

VERDICT: {PASS | HOLD | FAIL}
{verdict_message}

Top 3 issues:
  1. [{severity}] {category} — {one_line_summary}
  2. [{severity}] {category} — {one_line_summary}
  3. [{severity}] {category} — {one_line_summary}

Full report: {report_path}

Step 8: Save the Gate Log

Append a log entry to ~/.kai-marketing/gates/{date}-{slug}-voice.json — where {date} is today's date in YYYY-MM-DD and {slug} is the draft filename stem. One log file per draft per day (overwrite if the file already exists).

{
  "file": "{draft_path}",
  "voice_guide": "{voice_guide_path}",
  "persona": "{persona_path or null}",
  "report_path": "{report_path}",
  "verdict": "{PASS|HOLD|FAIL}",
  "high_count": {n},
  "medium_count": {n},
  "low_count": {n},
  "total_count": {n},
  "timestamp": "{ISO datetime}"
}

Error Handling

  • Draft file not found: Stop. Tell user the exact path checked.
  • Voice guide not resolvable: Stop. Tell user to pass --voice-guide <path> explicitly.
  • Judge prompt file missing: Install error. Tell user: "Voice Gate judge prompt missing at voice-gate/judge-prompt.md. Re-install the skill."
  • Draft exceeds ~40K words: Proceed, but add a note at the top of the report: "Draft exceeds the comfortable review window; the report may be partial."
  • Voice guide lacks numbered rules: The judge falls back to editorial-principle citations. Add a note at the top of the report: "Voice guide lacks numbered rules — citations use editorial principles only."

Chain State

Reads from: the draft, the voice guide, the persona (if present), voice-gate/judge-prompt.md Writes to:

  • <draft-path-stem>.VOICE-GATE.md — the editorial report (alongside the draft)
  • ~/.kai-marketing/gates/{date}-{slug}-voice.json — log entry

Read by: Human editor who opens the report for triage. Optionally re-read by /content-retro downstream.

When to Use This Skill

Use it:

  • For any client with a written voice guide (outputs/personas/*-writing-guide.md).
  • After /content-gate passes — it is the subjective complement to the rule-based gate.
  • On blog posts, LinkedIn articles, newsletters, long-form content.
  • Any time a reviewer has flagged "this doesn't sound like them" on prior drafts.

Skip it:

  • Ad copy (voice matters less than claim-compliance; /content-gate is enough).
  • Technical documentation, product release notes.
  • Content without a written voice standard — the gate has nothing to score against.
  • When the voice owner is about to read the draft themselves within an hour.

Pipeline Position

draft agent  →  /content-gate (rule-based)  →  /voice-gate (subjective)  →  human review  →  publish

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Write platform-compliant ad copy for Meta, Google, TikTok, LinkedIn, Pinterest, Snapchat, Amazon, or X. Loads TOS rules automatically. Shows char counts and format preview.

The English summary is being prepared. Showing the original description.

cgallic/kai-cmo-harness58Updated Oct 19, 2026

Render video ads using Remotion. Scaffolds a project from brand tokens + creative brief, generates scene compositions for 4 archetypes, renders to MP4 in multiple formats.

The English summary is being prepared. Showing the original description.

cgallic/kai-cmo-harness58Updated Oct 19, 2026

Research competitor ads using Meta Ad Library, Google Ads Transparency Center, and TikTok Creative Center. Analyze creative patterns, hooks, offers, and landing pages.

The English summary is being prepared. Showing the original description.

cgallic/kai-cmo-harness58Updated Oct 19, 2026

Surface the right marketing checklist for any task. Covers content, SEO, ads, email, press, landing pages, launches, and technical audits. 17+ checklists indexed by task type.

The English summary is being prepared. Showing the original description.

cgallic/kai-cmo-harness58Updated Oct 19, 2026

Generate a strategic content brief from format + site + keyword. Auto-resolves persona, pulls GSC data, generates hooks, angles, and competitor weakness via LLM.

The English summary is being prepared. Showing the original description.

cgallic/kai-cmo-harness58Updated Oct 19, 2026

Run the full quality gate on any content file. Score against 28 rules, apply policy, show detailed scorecard with fix suggestions. Works on any markdown file.

The English summary is being prepared. Showing the original description.

cgallic/kai-cmo-harness58Updated Oct 19, 2026

See all skills by cgallic

Report a problem with this skill