本文へ移動
cccskills
無料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.

インストール方法を見る

含まれるファイル(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(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

ad-copy

無料

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.

日本語の概要は準備中です。原文の説明を表示しています。

cgallic/kai-cmo-harness562026年10月3日 更新

ad-render

無料

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.

日本語の概要は準備中です。原文の説明を表示しています。

cgallic/kai-cmo-harness562026年10月3日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

cgallic/kai-cmo-harness562026年10月3日 更新

checklist

無料

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.

日本語の概要は準備中です。原文の説明を表示しています。

cgallic/kai-cmo-harness562026年10月3日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

cgallic/kai-cmo-harness562026年10月3日 更新

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.

日本語の概要は準備中です。原文の説明を表示しています。

cgallic/kai-cmo-harness562026年10月3日 更新

cgallic のスキルをすべて見る

このスキルの問題を報告する