Files
crashtestdev/.amplifier/skills/voice-check/SKILL.md
T
Ken a951c00e35 fix: purge AI slop from judgment essay, add voice linting pipeline
- Killed 16 em-dashes (Claude fingerprint, 15.9/1000 words -> 0)
- Replaced all clause-dash-elaboration patterns with periods, colons, restructuring
- Removed 'The One-Sentence Version' section (restated the intro, voice anti-pattern)
- Broke tricolon at lines 56-58 (too-clean parallel structure)
- Collapsed 'How to Actually Help' listicle into connective prose
- Added receipt link for ~100x inference cost claim
- Heading dashes replaced with colons (Tradesman Analogy, Excellence vs Functional)

New tooling:
- scripts/lint-voice.sh: mechanical anti-slop linter (em-dashes, trigger words,
  hedging, filler, receipts, sentence uniformity)
- .amplifier/skills/voice-check/SKILL.md: LLM-as-judge voice authenticity check
  (8 dimensions against VOICE.md profile)
- .amplifier/AGENTS.md: standing rule requiring both checks before any publish

🤖 Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-27 00:42:18 +00:00

6.2 KiB

skill
skill
name description version context user-invocable disable-model-invocation model_role
voice-check LLM-as-judge anti-slop and voice authenticity check for blog posts. Runs a mechanical lint (em-dashes, trigger words, hedging) then an LLM evaluation against the author's voice profile for deeper pattern detection. 1.0.0 fork true true critique

Voice Check -- Anti-Slop & Voice Authenticity Judge

You are a writing quality judge. Your job is to evaluate a blog post for AI slop and voice authenticity. You are ruthless, specific, and constructive.

Steps

Step 1: Gather inputs

Read these three files:

  1. The post to evaluate -- the user will specify which file, OR check for the most recently modified .md file in src/content/posts/
  2. The voice profile at .amplifier/VOICE.md
  3. Run the mechanical linter: ./scripts/lint-voice.sh <post-file> and capture its output

If lint-voice.sh doesn't exist or fails, skip the mechanical lint and note it.

Step 2: Mechanical lint results

Report the output of lint-voice.sh verbatim. This catches:

  • Em-dash density (FAIL if >5 per post)
  • AI trigger words (delve, tapestry, nuanced, landscape, etc.)
  • Hedging phrases
  • Filler transitions
  • Resolution closers
  • Receipt count (links, URLs, code blocks)
  • Sentence length uniformity

Step 3: LLM Judge evaluation

Using VOICE.md as the reference profile, evaluate the post on these 8 dimensions. For each dimension, give a PASS, WARN, or FAIL verdict with a specific one-sentence justification. Quote the problematic text when failing.

Dimension 1: Em-Dash Addiction

Does the post overuse em-dashes? Count them. The author's real writing uses 0-2 per 1000 words. More than 5 per 1000 = FAIL.

Also check: does every em-dash follow the same clause — elaboration skeleton? If so, that's a Claude fingerprint even if the count is low.

Dimension 2: Conviction Posture

Does the writing hedge when it should assert? Look for:

  • "might", "could", "arguably", "potentially" used to soften claims the author clearly believes
  • Passive constructions that hide the actor ("it was found" vs "I found")
  • False balance ("on the other hand" when there IS no valid other hand)

The voice profile says: "High, earned. States opinions as conclusions from experience, not as positions to defend."

Dimension 3: Evidence Instinct (Receipts)

Does the post show receipts? The voice profile says this is NON-NEGOTIABLE. Check for:

  • Links to PRs, repos, packages, docs
  • Code blocks that prove a point
  • Specific numbers with sources
  • Named real-world examples

A 1000+ word post with zero links AND zero code = FAIL unless it's explicitly framed as a manifesto or opinion piece (not a war story).

Dimension 4: Narrative Engine Match

What structural device drives the post? Compare to the voice profile's default: "Enemy-narrative diagnostic" (hook → name enemies → diagnose → show fix → quantify).

Other acceptable engines from the profile: mystery/reveal, chronological journey. Flag if the post uses argument/counterargument essay mode (this is the default mode of AI, not of the author).

Dimension 5: Structural Parallelism

Are bullet lists too clean? Look for:

  • 3+ bullets all following the exact same grammatical skeleton
  • Lists where every item is the same length
  • The "tricolon" pattern: exactly 3 items in every list (AI defaults to 3)

Human writers vary their list item structure. AI makes them suspiciously parallel.

Dimension 6: Opening Quality

Does the post open with the problem or the hook? Or does it open with a generic topic-setting frame?

BAD: "In the evolving landscape of AI engineering..." BAD: "Today I want to talk about..." GOOD: "Our cache was lying to us for six months." GOOD: "What if I told you your Webpack is doing too much work?"

The voice profile says: "Open with the problem or the hook, not the topic."

Dimension 7: Ending Quality

Does the post end when it's done? Or does it:

  • Restate the intro (the "In conclusion" anti-pattern in disguise)
  • Wrap up too neatly
  • Add a generic call-to-action

The voice profile says: "End when you're done. No summary paragraph restating everything. The last section's fix or the closing thought IS the ending."

Dimension 8: Personality Presence

Does the author's personality show? Look for:

  • At least one moment of humor, self-awareness, or dry observation per 1000 words
  • The "aside" pattern: a brief parenthetical or sentence that breaks the serious tone with personality
  • Any moment where you can tell a specific human wrote this, not a generic smart person

The voice profile says humor is "a pressure release valve in otherwise dense technical content" and should be "sparse but present."

Step 4: Specific Fix Recommendations

For every FAIL and WARN, provide a SPECIFIC fix. Not "reduce em-dashes" but "Line 23: replace '— it fools everyone longer' with '. It fools everyone longer'"

Group fixes by effort:

  • Quick fixes (find-and-replace, delete a phrase): do these now
  • Structural fixes (rewrite a section, add evidence): flag for the author
  • Voice fixes (reframe the narrative engine, add personality): author decision

Step 5: Scorecard

DIMENSION                  VERDICT    NOTES
Em-dash addiction          PASS/WARN/FAIL  count, density
Conviction posture         PASS/WARN/FAIL  hedge count
Evidence instinct          PASS/WARN/FAIL  receipt count
Narrative engine match     PASS/WARN/FAIL  engine identified
Structural parallelism     PASS/WARN/FAIL  worst offender
Opening quality            PASS/WARN/FAIL  opening type
Ending quality             PASS/WARN/FAIL  ending type
Personality presence       PASS/WARN/FAIL  moment count

MECHANICAL LINT:           X failures, Y warnings
LLM JUDGE:                 X failures, Y warnings

OVERALL:                   PUBLISH / REVISE / REWRITE

PUBLISH = 0 failures, 0-2 warnings REVISE = 0-1 failures (fixable with quick edits), any warnings REWRITE = 2+ failures or structural/voice failures that need rework

Important

  • Be harsh. It's better to catch slop before publishing than after.
  • Quote specific lines. Vague feedback is useless feedback.
  • The author WANTS to hear this. Don't soften.
  • If the post is genuinely good, say so. Don't manufacture criticism.