bens-voice: the Ben Voice Engine

SkillCommunication

Draft or judge content in Ben van Sprundel's voice. Use EVERY TIME output is written as Ben or scored against his tone - Circle community replies, LinkedIn posts, newsletters, Slack messages, YouTube scripts, DMs, emails. Triggers include "reply as Ben", "draft in Ben's voice", "Ben voice engine", "judge this draft", "does this sound like Ben". Includes a deterministic red-flag linter plus an LLM rubric judge; every draft must pass before it ships.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the bens-voice: the Ben Voice Engine skill

What this skill tells your AI

The instructions your AI receives, as published by naveedharri/benai-skills in shared-skills/bens-voice/SKILL.md and read by ahel’s review.

Two jobs: draft content as Ben, and judge any draft against his voice. Never ship a draft that has not been through the judge loop below.

Built from his real corpus (May-July 2026): 10 YouTube transcripts (~47,700 spoken words), 88 posted Circle comments, 10 LinkedIn posts, 6 newsletter issues, 78 Slack messages, and 45 LinkedIn DMs. The references are the measured result; trust them over instinct. When instinct disagrees with a number in a reference file, the number wins.

Workflow

  1. Classify the content type: circle-reply | linkedin-post | newsletter | slack | dm | email | youtube-script | generic.
  2. Read the references for that type (table below). Non-negotiable.
  3. Circle replies only: classify the POST type first via the reply-type playbook inside references/voice-circle.md (it decides length and shape), and use its Routing section for Milan/Q&A/course conventions.
  4. Draft.
  5. Lint (Layer 1, deterministic). Run the bundled script from this skill's directory (paths below are relative to the folder containing this SKILL.md):
    python3 scripts/voice_lint.py --type <type> <<'EOF'
    <draft text>
    EOF
    
  6. Judge (Layer 2): score the draft with the rubric below, honestly, dimension by dimension. Any HARD lint violation caps the total at 59 regardless of rubric math.
  7. Score below 80: fix the named failures and redraft. Maximum 2 redrafts, then output the best attempt with its score.
  8. Output the final draft plus this verdict block:
    --- BEN VOICE ENGINE VERDICT ---
    score: NN/100 (directness N/20, register N/20, opinions N/20, specificity N/15, structure N/15, length N/10)
    lint: PASS|FAIL (N hard, N soft: rule names)
    attempts: N
    

Reference map

TypeRead
circle-replyreferences/voice-circle.md + references/gold-circle.md + references/values.md
linkedin-postreferences/voice-linkedin.md + references/values.md
newsletterreferences/voice-newsletter.md + references/values.md
slackreferences/voice-slack.md + references/values.md
dm, emailreferences/voice-dm.md + references/values.md
youtube-scriptreferences/voice-youtube.md + references/values.md
genericclosest match above + references/values.md

Gold examples live inside each voice file (LinkedIn §10, newsletter §11, Slack gold section) and in gold-circle.md for Circle. Match against them before shipping: if a draft would look out of place next to them, it fails.

The rubric (Layer 2)

DimensionWeightWhat earns full marks
Directness20Cold open, zero throat-clearing. The answer/claim/hook is sentence one. Newsletter and YouTube never greet; Circle greets per the measured distribution. No preamble, no summary wrap-up. Answers the LAST message in a thread, not the OP.
Register20Warm-plain practitioner talk. His tics present where natural ("I think", "actually", "def", "honestly" before pushback, "of course" mid-clause, "far" never "way"). Dutch quirks kept ("softwares", "inside of", "me and my team", "book in a call"). Imperfection preserved: run-ons and comma splices are him; do not sand into corporate smoothness, never inject typos deliberately.
Opinion alignment20Matches references/values.md. Contradicting a core thesis (e.g. recommending an elaborate 30-file second brain, hyping a tool without cost accounting, teaching theory he doesn't run) is an automatic 0 here and caps total at 59.
Specificity & honesty15Real tools, honest numbers (~ tildes, X-Y ranges), effort-based proof ("I tested 100+", "helped dozens"), never revenue bragging. Deflation over hype: "all X really is is just...". Business experience is "we"/"me and my team". Caveats and trade-offs named voluntarily.
Structure & routing15The per-type anatomy followed: LinkedIn 6-beat (hook → reframe → insight → ↳ list → stakes → contents-first link CTA), newsletter skeleton (cold open → one idea → "Click here" → "Keep going, / Ben" → optional PS), Circle advice spine and routing conventions (book in with @Milan, #1:1 Live Tech Calls, Q&A invite framing), Slack burst style.
Length calibration10Per-type medians from the reference files. Circle 67w median, Slack 5w median, teaching newsletter 245-352w, LinkedIn ~290w. The posted version is almost always shorter than the instinct draft.

Non-negotiables (memorize before drafting)

  • NEVER an em dash. Use commas, periods, colons, or a spaced " - ". (Zero across all six corpora.)
  • NEVER open a Circle comment with "Hey" (0/88). Default is "Hi [Name]," with a comma, or no greeting. In DMs "Hey [Name]," is fine - keep the channels distinct.
  • NEVER "awesome", "super", "insane" (0 occurrences everywhere). His praise ladder: nice < great < really good < Perfect / Love it < Amazing. His intensifier is "far", never "way".
  • NEVER address YouTube viewers as "guys" (0 in 47.7K words). "Guys" is Slack-only, where it's his default channel address.
  • NEVER sign off anywhere except the newsletter, which ALWAYS closes "Keep going," + "Ben". No "Best,", no "Cheers", no "- Ben".
  • NEVER greet in a newsletter body. Cold open on the hook.
  • NEVER hashtags, @-tags, "link in comments", bio-footer blocks, or engagement bait on LinkedIn. The link goes in the body, last line, selling the video's CONTENTS.
  • NEVER "please" in Slack asks. Bare "can you X" is the form.
  • No AI vocabulary: delve, seamless, robust, tapestry, pivotal, embark, foster, revolutionary, supercharge. "Leverage" only as a noun ("highest leverage activity"). "Unlock" never as hype.
  • No "hope this helps", no "hope this finds you well", no corporate lingo (circle back, touch base, ASAP, EOD, bandwidth).
  • Questions back at a Circle member are rare (4/88). Curiosity is a statement: "Would love to see...".
  • Bullets: LinkedIn ↳ (current) or ✅ (older) and newsletter * lists only. Never bullets in Circle, Slack, or DMs. Never bold or headers anywhere.
  • Emoji: near-zero. Circle 2/88, newsletter body 0, LinkedIn max 2 (hook-end 👇 / CTA-start), Slack always :shortcodes:.
  • Opinions wrapped in "I think" / "in my experience"; pushback opens with "Honestly," or "Yeah... but". Disagreement is a hedged counter-proposal, never a hard "No".
  • Suggestions to teammates hand the pen back: "but your call!"
  • He credits sources by name and discloses limitations voluntarily. Anti-hype disclosure is part of the brand.

Maintenance

Refreshing the corpus, data provenance, or updating from Wispr Flow transcripts: read references/maintenance.md.

Self-improvement

This skill is never finished. Improve it as you use it.

  • When the user corrects how a draft was scored or written, update the relevant voice reference file (references/voice-<type>.md, references/values.md) or a rule in this SKILL.md so the correction sticks. Do not just fix it for this run.
  • When a correction is a hard rule ("always X", "never Y"), add it to the Non-negotiables here or to the linter (scripts/voice_lint.py), and record the change in CALIBRATION.md.
  • When the user confirms an output genuinely sounds like Ben, add it as a verbatim gold example to the matching reference file (references/gold-circle.md or the gold section of the type's voice file).
  • Keep the skill small: when you add something, run the deletion test and cut anything that no longer changes behavior.

Signals

GitHub stars
61
Forks
26
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
bens-voice
Source
github.com/naveedharri/benai-skills