humanize — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited humanize (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Profiles/voice.md is authoritative for voice. Where this file and that profile disagree, the profile wins — read it before editing when it is available.
Edit draft text to match Shane's writing voice. The goal is prose with the structural and rhythmic properties of careful human writing: direct, specific, and recognizably his. The pattern lists below locate habits; they do not grade prose, and a hit is a prompt to read the passage rather than a defect. The one grade is the humanizer score in step 9 of the process, and it is a gate on the finished draft, not the goal of the edit.
You're not rewriting for style points. You're removing the patterns that make text read as machine-generated, while preserving the technical precision and self-aware confessional register that characterizes Shane's work. The two goals reinforce each other, because the same structural tics that make prose read as machine-made are the ones that make it stiff.
Read the full draft before making any changes. Understand the argument. Then apply the edits below.
Profiles/voice.md states this as a hard refusal: "Never use em-dashes anywhere, ever, in any form." That is broader than the list, interjection, and definition cases below. Remove every em-dash and every en-dash used as punctuation, then replace it with a comma, a parenthetical, or a period and a new sentence.
AI writing loves em-dash enumerations. Convert them to sentences.
Before: This affects three things: clarity, speed, and cost. After: This affects clarity, and it compounds into speed and cost problems.
Before: What you lose: auditability, traceability, and control. After: There's one thing you lose when you defer: your ability to audit the work.
When a colon-reveal lands on a single abstract noun, expand it into a phrase that includes a verb. auditability → your ability to audit the work. This is the single highest-signal AI pattern to eliminate.
Before: The spec defines the work; the agent executes against it. After: The spec defines the work. The agent executes against it.
A staccato sequence that only restates the same point is a common AI rhythm. Merge those into prose. A sequence that lands a build-up is a different thing, and it is one of Shane's signature moves: he builds long and lands short, often landing more than once.
Filler — merge: Before: More specific. More actionable. Closer to the real problem. After: More specific, more actionable, and closer to the real problem.
Landing — keep exactly as written: ...a 327-name scored lead tracker. Three emails sent. One reply. Zero closes.
The test: does each fragment carry new, specific weight, or does it restate the same abstraction in fewer words? If it restates, merge. If it lands, leave it alone. Merging a landing fragment is the most damaging edit this skill can make.
Before: The model — to its credit — usually finds a path. After: The model, to its credit, usually finds a path.
Before: AX — Agent Experience — is the term I use for this. After: AX (Agent Experience) is the term I use for this.
Long sentences chained with "which" or "that" clauses feel generated. Split them.
Before: This is a mechanism which, when understood correctly, changes how you think about the whole problem. After: This is a mechanism. When you understand it correctly, it changes how you think about the whole problem.
On social surfaces the audience is broader than the topic, so implementation vocabulary gives way to the reader's vocabulary even when the subject is technical. Confirmed by Shane's hand edits to the pi-deferred-skill-catalog posts on 2026-09-21:
This is not a brevity substitution. "configuration" is the same character count as "system prompt", and "context" is longer than "prompt". It is about which words the reader already owns.
LinkedIn kept the implementation terms in the same batch, so the rule is scoped to short-form social. Whether LinkedIn is deliberately exempt is an open question recorded in Knowledge/Projects/Personal Brand/Voice Profile Amendment — Social Register.
Shane hedges sparingly and accurately, and when he is sure he does not soften. Keep the hedges already doing honest work ("so far", "with any certainty") and cut ones that pad a claim.
Do not add a hedge to a claim the draft states plainly. That manufactures uncertainty the author never expressed, and his own transcript names it as his failure mode: "i'm using weaker replacements. then, circling around the topic without making a solid directional choice." Do not add "not only...but also" — it is on Profiles/voice.md's avoid list and on the same tell lists this skill exists to remove.
Concessive "just" is usually weaker than its replacement: "just with slightly better manners" → "albeit with slightly better manners." Negative parallels can take "nor": "they can't ask a colleague, nor do they phone a friend."
Caution: "albeit" and "nor" are not in Profiles/voice.md's phrase bank, and they read as formal register while Shane's is consultative. Substitute only when the formal word is plainly the more precise one; otherwise leave the author's connective alone.
Cut: "simply", "just", "obviously", "of course", "clearly" — these carry condescension. Also cut sentence-starting "And" unless it's load-bearing rhythmically.
A well-placed colloquialism breaks the register productively, but only when it is grounded and specific. "Break out the metaphorical popcorn" works because it is his. One per section is a ceiling, not a quota. If a section has no grounded aside, leave it with none. Existing texture is voice; invented texture is performance.
These shapes usually indicate machine-made prose. Each is a prompt to read the passage, not a verdict. Profiles/voice.md bans the first two outright; treat the rest as calibration.
What you lose: auditability. Expand the noun into a phrase. Hard refusal in Profiles/voice.md.Do not over-edit. These things should survive the pass:
run_started_at, AX) is the right word, keep it. Don't replace technical accuracy with accessibility theater.If the draft contained none of these, leave it that way. Do not add them.
[TK: your question] in the text and list it in your return rather than writing plausible filler.[TK] you added or found.Shane's standing instruction (2026-10-19): every piece written for him, whether a post, an email, or a message, is scored with references/humanizer-rubric.md before he sees it. A score under 90 means rewrite the parts that lost points and score again. This applies to drafts written from scratch as well as to drafts handed in for a pass.
When a deduction lands on something this skill protects (a landing fragment, an accurate hedge, a first-person confession, a required technical term, or the message's real request), keep the text. The real request is the thing the message exists to get: "let me know if Tuesday works" in a scheduling email, "would you be open to a call?" in an outreach note. Pattern 19 penalises those phrasings, but rewriting the ask out of a message breaks the message. Reword it only if the new wording keeps the same ask. Record it as kept (−N): reason and take the points. Do not rewrite protected text to buy points back. "Three emails sent. One reply. Zero closes." can trip Rule of Three, and it stays.
Rescore at most three times. If the final score is still under 90 because of kept items, report the real number. Never adjust a score to clear the gate.
Return, in this order:
pattern (−N): "quoted text", including every kept item and its reason.before → after. A new draft written from scratch lists the lines changed between the first scored draft and the final one. If nothing changed, say so.scripts/prose_stats.py measures the habits this skill edits for: hedge and booster density, anchor density, sentence-length variation, and model-lexis hits. It deliberately produces no composite score. The composite is the rubric score in the Scoring gate; these stats are the cross-check that the pass hit 90 without trading away hedges or anchors.
Measure the same piece before and after, then compare the two readings. The established range for this voice is recorded in the vault note Voice Cadence Baseline (Knowledge/Publishing/): hedge_per_100 median 0.86 (range 0.30 to 1.06), anchors_per_100 median 2.91, body_sentence_cv median 0.435, with model_lexis and signpost_opener_share at zero across every piece measured.
If a pass pushes hedge_per_100 above that range, the edit is drifting toward the circling register this skill exists to prevent. If it pushes anchors_per_100 down, specificity was traded away to shorten.
python3 scripts/strip_markdown.py draft.md > /tmp/draft.txt
python3 scripts/prose_stats.py /tmp/draft.txtThese are drawn from actual edits on the AX Shift post:
| Original | Edited | Why |
|---|---|---|
What you lose when you defer: auditability | there's one thing you lose when you defer: your ability to audit the work | Expands single-noun reveal into a phrase |
The problem was somewhere I hadn't looked yet. | (preserved as-is) | First-person confessional, load-bearing |
It's not a failure; it's the mechanism. | It's not a failure to find gaps here. That's the mechanism you need. | Semicolon → period; expands the claim |
More specific. More examples. Closer to real use. | More specific, with more examples, and closer to real use. | Filler fragment sequence → prose. A fragment that lands a build-up stays. |
AX — Agent Experience — | AX (Agent Experience) | Em-dash definition → parenthetical |
people who built them instead of computer scientists | (context-dependent) | Concrete description when audience isn't technical |
system prompt, prompt (on social) | configuration, context | Implementation vocabulary → the reader's vocabulary. Not brevity: "configuration" is the same length. |
Sharp edge if you try it: | Beware if you try it. | Coined label plus colon → plain imperative. Direct, second-person, no label. |
Checked against Profiles/voice.md and the voice interview transcript, and rejected. Do not re-import these — each one sounds reasonable in isolation and each one flattens this voice:
voice.md states both as hard refusals: "Never write em-dash lists, single-noun colon-reveals, or use semicolons between independent clauses." Advice to treat them as "a search aid, not a ban" is wrong for this profile, however good it is as general guidance.voice.md: humour is "rare in writing-with-purpose… not a craft move on the page." Do not add it.scripts/prose_stats.py documents that its own stylometric composite came out inverted. The rubric score in the Scoring gate is a different thing: Shane adopted it on 2026-10-19 as a pattern checklist with a threshold, and it stays subordinate to Profiles/voice.md through the precedence rule.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.