humanize-pro
Use when the user asks to humanize, unslop, de-slop, de-AI, clean up, tighten, or make text sound human or natural; when they say something reads like AI or like ChatGPT; when they ask whether something matches their voice or style guide; or when drafting or rewriting outbound hu
Install
npx skills add https://github.com/msdanyg/humanize-pro/tree/main/skills/humanize-pro
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install msdanyg-humanize-pro@llmmart
git clone https://github.com/msdanyg/humanize-pro.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole msdanyg/humanize-pro collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Humanize Pro
Two jobs, in this order: remove the statistical residue of a language model, then make the text fit the channel it ships in. Most humanizer skills only do the first, which produces clean prose that still lands wrong because a LinkedIn post is not a memo and a Slack reply is not an essay.
A third job sits underneath both: sound like this writer, not like a generically de-slopped one. That is what the voice profile is for.
When to trigger
Use this skill when:
- The user asks to humanize, unslop, de-slop, de-AI, clean up, or tighten text, or to make it sound human or natural.
- The user says something reads like AI or like ChatGPT.
- The user asks whether text matches their voice, style guide, or voice profile, or wants a profile built or updated.
- You are drafting or rewriting outbound human communication, even if nobody said "humanize": LinkedIn posts and comments, X posts and replies, cold or warm email, internal email, exec memo, Slack, blog, landing page, help content, press or public statements.
- Prose is going inside a deliverable: a document, deck, artifact, or generated file. The rules apply to the payload, not only the chat reply.
Do not trigger for:
- Code, commit messages, PR descriptions, or changelogs.
- Legal or regulated text.
- SEO structural elements (title tags, meta descriptions, keywords), unless the user explicitly asks to humanize those.
Modes
Pick one. If unclear, ask in a single line.
- Rewrite (default): user pastes text, you return the fixed version.
- Draft: user gives raw notes or a brief, you write it clean the first time.
- Audit: user wants the tells named, not fixed. Return a numbered list of what would flag, with the line quoted and a one-line fix each. No rewrite.
- Profile: user wants their voice profile built or updated from samples and past corrections. See "Voice profile" below.
Precedence
Requirements outrank style. In order:
- The no-fabrication rule.
- Named external requirements: legal and regulated language, brand guidelines, SEO structure (title tags, meta descriptions, keyword placement, internal links).
- The user's standing constraints (see below).
- The user's voice profile or writing sample.
- Every style rule in this skill.
When a rule collides with something above it, keep the higher item and flag the conflict in one line after the text. Never resolve it silently.
Standing constraints
A standing constraint is a rule the user has stated once and expects to hold forever, in every output, without being restated. Typical examples: a banned punctuation mark, a banned word, a forbidden greeting, a required sign-off, a length ceiling.
Three things make constraints different from style preferences:
- They are absolute, not weighted. A single violation is a failure even if the rest is excellent.
- They apply to every surface. Chat prose, generated documents, artifacts, file contents, headings, image captions, table cells, code comments in user-facing snippets. A constraint violated inside a deliverable is the most common failure mode, because the model applies the rule to its reply and forgets the payload.
- They survive tool boundaries. Text written to a file, passed to another skill, or produced inside an artifact is still the user's text.
Record standing constraints at the top of the voice profile. Before delivering anything, run the constraint list as a literal scan of the output, including every file you wrote this turn. Do not rely on having intended to comply.
Voice profile
The voice profile is a versioned file describing how one specific person writes. It is not part of this skill; it belongs to the user. Look for it in this order:
- A path the user names.
- A personal brand or voice skill already loaded in the session.
references/voice-profile.mdinside a private fork of this skill.- Persistent memory, if the surface has it.
If none exists and the user wants one, offer to build it. Do not build it silently.
Format
# Voice profile: <name>
Version <n>, updated <date>
## Standing constraints (absolute, never violated)
## Register (who they sound like, to whom)
## Sentence and paragraph shape
## Vocabulary: use / avoid
## Structural habits (openers, closers, lists vs prose)
## Channel deltas (how the voice shifts by surface)
## Open questions (unresolved, needs more evidence)
## Changelog (what changed, what triggered it)
Every line carries a confidence marker:
- stated: the user said it directly. Treat as binding.
- observed: inferred from three or more independent samples of their own writing. Strong default, overridable.
- provisional: inferred from one or two samples, or from a single edit. Apply, but flag when it drives a visible choice.
Never promote a provisional line to stated. Only the user promotes.
Building one
Sources, in descending value: text the user wrote themselves; text the user edited and shipped; text the user approved unchanged; text the user rejected, with the reason. Chat messages count, and are often the most honest sample, because nobody performs in a chat message.
Aim for one page. A voice profile that runs long stops being read.
Capture corrections
The profile is worth having only if it stays current, and the raw material arrives constantly: every edit the user makes to your draft is a labeled training example.
When the user returns an edited version, rejects a draft, or says a line is wrong:
- Diff intent, not tokens. Ask what class of change it is: a constraint violation, a register mismatch, a structural habit, a vocabulary preference, or a one-off factual fix. One-off fixes do not belong in the profile.
- Write the rule in their words where possible. "Cut the setup sentence, start on the claim" beats "reduce preamble."
- Check for contradiction. If the new correction contradicts an existing line, do not overwrite. Surface both and ask which holds. Contradictions are usually context-dependent rules that need a channel delta, not a replacement.
- Log it. Add a changelog entry with the date and the triggering example. The changelog is what lets the user audit whether the profile is drifting.
- Update in the same turn. A correction noted but not written is lost.
Two failure modes to watch. Over-fitting: one heavy edit becomes a permanent rule and the voice narrows. Require three instances before a provisional line becomes observed. Sycophantic drift: the profile fills with rules that make outputs more agreeable rather than more accurate. If a proposed line would suppress disagreement, a caveat, or an unwelcome finding, it is not a voice rule. Leave it out.
Workflow
1. Establish channel and audience
Before writing anything, fix these three:
- Channel: LinkedIn post, LinkedIn comment or reply, X post, X reply, cold email, internal email, exec memo, Slack, blog, landing page, product docs, press or analyst, board. A comment is its own channel, not a short post: it answers a person.
- Direction: internal or external. This governs candor, hedging, jargon tolerance, and how much context you restate.
- Relationship: cold, warm, peer, report, manager, exec, customer, public.
Infer from the text when it is obvious. Ask one short question when it is not. Do not ask three. If no answer is possible (non-interactive run, pipeline, subagent), assume rewrite mode and external direction, and flag the assumption in one line after the text.
Then load the matching section of references/channels.md. Load only what applies.
2. Calibrate voice
Load the voice profile if one exists. Otherwise, if the user has supplied a writing sample, a brand or voice skill, or prior approved work, read it and match sentence rhythm, vocabulary, and quirks. A voice profile or sample outranks every style rule in this skill except the no-fabrication rule, the em dash ban, and the user's standing constraints. If it uses one-line paragraphs, keep them. If it uses em dashes, the ban still holds: only an explicit user instruction restores them, never an inference from samples.
With no sample, aim for competent-professional-with-a-pulse: plain words, varied sentence length, an opinion where an opinion belongs.
3. Universal pass
The checklist below covers most short texts. For long-form work (blog, memo, landing page), or when the audit pass flags something you cannot name, read references/ai-tells.md in full.
Every tell below is a rhetorical move, listed by its most common wording so it can be scanned for. Rewording the move is not a fix. "It's not X, it's Y" spread across two sentences is still the contrast move; a five-word closing sentence is still the kicker. When you catch a string, ask what the sentence is doing, and remove the move.
In priority order:
- Cut the opener. Delete throat-clearing, context-setting first sentences, and any signposting ("Let's dive in", "Here's the thing", "In today's landscape"). Start with the claim.
- Cut the closer. Delete summary paragraphs that restate what was just said, "The future looks bright" style endings, "I hope this helps", and offers to continue.
- Break the shape. AI text has uniform paragraph length, uniform bullet length, and triads everywhere. Vary paragraph length deliberately. If you wrote three items, check whether there are actually two or four.
- Kill the vocabulary. No delve, leverage, landscape, tapestry, testament, pivotal, seamless, robust, journey, unlock, elevate, navigate, realm, crucial, vital, comprehensive, holistic. See the full list in references. The list is a frequency heuristic, not a blocklist: a listed word stays when it is the plain, precise choice and no simpler word does the same job.
- Kill the constructions. No "It's not just X, it's Y." No "This isn't about A. It's about B." No copula avoidance (serves as, stands as, boasts, features). No superficial -ing analysis (highlighting, underscoring, reflecting, showcasing).
- Kill redundant negation. A clause asserted, then restated as its own negative: "to fit in and not feel excluded", "fast setup, no configuration needed". Delete the negative half. One exception: when the alternative being ruled out is genuinely what the reader would otherwise assume ("due to layoffs, not performance" on a resume gap), the clause carries information and stays. Apply the deletion test in
references/ai-tells.md. Do not strip these mechanically. - Kill the punctuation tells. No em dashes. Hard rule, every use: not as a clause separator, not as a parenthetical pair, not before an attribution. Use periods, commas, colons, parentheses. A voice sample does not override this; only an explicit user instruction does. En dashes in numeric ranges (pages 3–5, 2019–2024) are a different character, correct typography, and stay unless a standing constraint says otherwise. No curly quotes outside typeset surfaces. No ellipsis for drama.
- Kill formatting slop. No bold on random nouns. No "Label: sentence" bullets when prose works. No title case headings. No emoji unless the channel norm says otherwise. No markdown in a channel that does not render it.
- Fix bullets that are sentences. A bullet past roughly fifteen words, or carrying a subordinate clause, is prose in disguise. If the bullets only make sense read in order, they are an argument: convert to paragraphs. Otherwise compress to parallel fragments.
- Cut announced honesty. No "the honest answer", "real talk", "I'll be blunt", "not the polite version". Honest writing does not flag itself, and the frame implies everything around it was less honest. Deliver the content instead.
- Make titles name their payload. No "The X, and the Y sitting inside it". No concealment metaphors (lurking beneath, hiding in plain sight, what nobody tells you). No "Topic: a deeper look". State the claim. Sentence case.
- Cut hedge stacks. "may potentially help" becomes "may help". Keep a hedge only when the claim actually is uncertain.
- Name the source or cut the claim. No "experts say", "studies show", "many companies find".
- Kill the moves that survive string bans. Contrast-then-mirror in any grammar: "never gets settled by a RACI. It gets settled the first time...". Crux nomination: crowning one item as "the one that decides", "the hard case", "where half the value is", usually followed by dismissing the rest. The kicker in any form: if the last sentence is the shortest and the most quotable, it is a kicker, fragment or not. Gnomic generalization: a category subject in the present tense with never or always ("The tool never decides which", "These fights never get settled"). One gnomic sentence per short text at most, and it is the first sentence to cut.
- Cut candor adverbs. "actually", "really", "genuinely", "truly", "finally" when nothing in the text contradicts them. Delete the word; if the sentence means the same, it was a candor flag, the residue of announced honesty after the frame was removed.
- Restore normal word order. No fronted objects for punch ("Technical, creative, and broad you can screen for in an afternoon", "That last one I've never seen"). No dropped subjects and articles to sound clipped ("Most useful artifact a PMM owns, and..."). Performed terseness reads as performance.
4. Add texture
Removing tells produces text that is clean and dead. A human wrote this, so something in it should only be true for that human.
- Concrete specifics where the source has them: a number, a name, a date, a place, a version, a cost. A full paragraph with none is a flag to check the source again, not a quota to fill.
- An opinion where an opinion is appropriate, including the unflattering one.
- Admitted uncertainty when uncertainty is real ("I don't know why this worked" beats a manufactured explanation).
- Varied sentence length. Vary it where the argument varies, not as a formula: the long-sentence-then-short-one pattern applied everywhere is itself becoming a recognizable humanizer tell.
When the source has no specific, go smaller, not bigger. The failure mode is compensating for a missing number or story with a universal claim or a typical scene: "the first time a launch goes badly and somebody finally says out loud who makes the call". A vivid hypothetical with "somebody" as its protagonist is a fabricated anecdote with the names removed, and it reads as one. Number-shaped idioms ("year two", "half the value", "in an afternoon") are the same dodge. With no specific to hand: refer to the input, ask a real question, or say less. If the writer has a real instance, put it in the past tense and first person; a generalization owned as "I watched X happen at Y" is texture, the same claim in the gnomic present is a fortune cookie.
No-fabrication rule, absolute: specificity comes from the source text or the user, never from you. If a rewrite needs a number, a name, a date, or an anecdote that is not in the input, stop and ask for it or leave the sentence general. Never invent a statistic, a quote, a customer, or a personal experience. This rule outranks every instruction above.
5. Channel fit pass
Now apply the channel section from references/channels.md. This is where length, structure, opening convention, formatting, and sign-off get set. Text that survives step 3 and fails step 5 still reads wrong.
6. Audit pass
Two gates, in order. The first is mechanical and has no judgment in it.
Gate A, literal scan. Scan the actual characters of every output produced this turn, files included:
- Each standing constraint from the voice profile.
- Any em dash character, in any use. (En dashes in numeric ranges pass.)
- Banned vocabulary from step 3, and the candor adverbs from step 3 item 15.
- The constructions from step 5, and redundant negation from step 6.
- Bullets over roughly fifteen words. Announced honesty. Titles that promise instead of name.
- Triads: three bullets, three clauses, three examples in a row.
Failing Gate A is not a matter of degree. Fix and rescan.
Gate B, read it cold. Answer: would a reader assume a model wrote this? Check for uniform rhythm, a tidy summary you re-added, bullets where prose belongs, paragraphs of equal length, a resurfaced banned word.
Those checks only fire on paragraphs. For anything under about 80 words (a comment, a reply, a Slack line, a short email), run these instead:
- Quote-card test. Is the last sentence the shortest and the most quotable? Then it is a kicker. End on the content instead.
- Standalone test. For a comment or reply: could it be posted on its own with nothing lost? Then it is a post, not a reply. It should need the thread to make sense.
- Thesis count. How many sentences are general claims with a category subject? More than one means the text is dispensing wisdom, not talking. Convert one to an owned instance, a reference to the input, or a question, and cut the rest.
- Move scan. Crux nomination in the first sentence, contrast-then-mirror anywhere, a credential pivot into a generalization, a closing menu question.
If yes on any, rewrite once. First drafts of a humanized rewrite reliably keep tells the second pass catches. Both gates happen silently: catch a tell, fix it, show only the fixed text. No trace of the correction appears in the deliverable.
7. Deliver
Return the text and nothing else, unless the user asked for reasoning. No preamble about what you changed, no narration of the audit pass or mid-draft corrections. If you had to leave a gap because of the no-fabrication rule, flag it in one line after the text.
If this turn produced a correction worth keeping, update the voice profile now. Say what you added in one line. Do not narrate anything else.
Do not humanize
Leave alone: direct quotes, legal and compliance language, regulated claims, security disclosures, contract terms, safety instructions, and anything where a stripped qualifier changes accuracy. In regulated or external formal contexts, a hedge is often the substance and not a tell. When a caveat carries legal weight, keep it and say so.
Do not apply personality guidance to text where voice is not wanted: status reports, runbooks, API docs, incident timelines.
False positives
Some patterns are legitimate. Do not strip them mechanically:
- A rule of three that is the actual number of items.
- Parallel structure in a board deck or a spec, where convention demands it.
- The word "leverage" when it means financial leverage.
- Formal register in a legal letter or an analyst briefing.
- Repetition of a term for clarity. Synonym cycling is the tell, not repetition.
References
references/ai-tells.md: full banned vocabulary, phrases, openers, structural patterns, punctuation and formatting tells, with before and after examples. Read for long-form work or when the audit pass flags a tell you cannot name; the step 3 checklist covers most short texts.references/channels.md: per-channel specs for length, structure, opening, formatting, sign-off, and the tells unique to that channel. Read only the sections that apply.references/voice-profile-template.md: blank template for building a personal voice profile, plus the maintenance protocol.
Pattern taxonomy draws on Wikipedia's "Signs of AI writing" (WikiProject AI Cleanup) and the open-source humanizer skill lineage that built on it.
Files (humanize-pro)
-
references
-
ai-tells.md 21.3 KB
# AI tells Detection and repair reference. The SKILL.md step 3 checklist covers most short texts; read this file in full for long-form work or when the audit pass flags something you cannot name. ## Contents 1. Vocabulary 2. Phrases and openers 3. Sentence constructions 4. Structural patterns 5. Punctuation 6. Formatting 7. Conversational artifacts 8. Accuracy failures 9. Before and after --- ## 1. Vocabulary Words that spike in model output and rarely in ordinary writing. Replace with the plain word, or cut the sentence. This list is a frequency heuristic, not a blocklist: a listed word stays when it is the plain, precise choice ("essential" in docs stating a field is required, "vital" in a medical claim). It also ages; which words spike shifts with each model generation, so judge by whether a plainer word does the same job, not by list membership alone. delve, dive into, tapestry, landscape, realm, journey, testament, pivotal, crucial, vital, essential, robust, seamless, streamlined, holistic, comprehensive, nuanced, multifaceted, intricate, myriad, plethora, leverage (as a verb), utilize, facilitate, foster, harness, unlock, elevate, empower, navigate (figurative), underscore, highlight (figurative), showcase, embark, cultivate, resonate, align (figurative), amplify, transformative, groundbreaking, revolutionary, cutting-edge, state-of-the-art, game-changing, next-generation, best-in-class, unparalleled, unwavering, ever-evolving, fast-paced, dynamic, vibrant, bustling, nestled, boasts, stands as, serves as, ensure (as filler), meticulous, invaluable, paramount, profound, remarkable, compelling, captivating. Also flag: significance inflation ("marking a turning point in the evolution of"), promotional adjectives on neutral facts, and any adjective doing the job a number should do. ## 2. Phrases and openers **Openers to delete outright**: Certainly. Absolutely. Of course. Great question. In today's [anything]. In the world of. When it comes to. It's important to note. It's worth noting. Let's dive in. Let's break it down. Here's the thing. Here's what you need to know. The truth is. At its core. Fundamentally. In essence. Simply put. Look. Honestly. I'll be honest. **Connectives on repeat**: Moreover, Furthermore, Additionally, Consequently, Notably, Importantly, That said, Ultimately, In conclusion. **Closers to delete**: I hope this helps. Let me know if you have any questions. Feel free to reach out. The future looks bright. Only time will tell. One thing is clear. At the end of the day. In summary (when the piece is short enough not to need one). The punchy fragment kicker: a short declarative beat-drop as the final line ("That's the whole game." "It compounds." "That's the job."). The callback closer that echoes the opening line to manufacture closure. One kicker in a piece can land; the tell is that every piece ends on one. **Discourse templates**: stock phrases for managing the argument rather than making it. The former / the latter (repeat the noun instead). The quantified residual: "gets you 80% of the way there", "the last 20%", "the remaining gap", "the final mile", "closes the gap", "the delta between X and Y". The tiered answer: "The short answer is yes. The longer answer is..." The paper-practice pivot: "On paper, X. In practice, Y." The news split: "That's the good news. The bad news is..." "This works until it doesn't." Each of these is fine once in a long piece and a tell on repeat; most of the time the fix is to say the underlying thing directly. **Vague attributions**: experts say, studies show, research suggests, many believe, it is widely regarded, industry leaders agree. Name the source, or cut the claim. ## 3. Sentence constructions | Pattern | Example | Fix | |---|---|---| | Negative parallelism | "It's not just a tool, it's a platform." | State what it is. | | Contrastive reframe | "This isn't about speed. It's about trust." | Pick one and say it. | | Tailing negation | "Fast setup, no configuration needed." | "Setup takes two minutes." | | Strawman negation | "We chose Postgres, not because it's trendy." | Cut, unless the reader really would have assumed the alternative. See below. | | Copula avoidance | "serves as / stands as / boasts / features" | is, has | | Superficial -ing analysis | "reflecting a broader shift, highlighting the need for" | Cut, or make it a claim with a source. | | Synonym cycling | protagonist, then main character, then central figure | Repeat the clearest term. | | False range | "from onboarding to churn, everything changed" | Name the actual things. | | Aphorism formula | "Trust is the currency of teams." | Say the concrete claim instead. | | Manufactured staccato | "No meetings. No decks. No excuses." | Vary length, make one real claim. | | Rhetorical fake-candor | "Honestly? It depends." | Answer. | | Credentialed honesty | "Not the LinkedIn answer. The honest one." | Give the answer. Honest writing does not announce itself. | | Hidden-depth title | "The metric, and the trap sitting inside it" | Name the trap in the title. | | Hedge stack | "may potentially be able to help" | "may help" | | Filler | "in order to", "due to the fact that", "the fact that" | to, because, that | | Former/latter reference | "the former is faster, the latter cheaper" | Repeat the nouns. | | Quantified residual | "Gets you 80% of the way. The last 20% is the hard part." | Name what is actually missing. See below. | | Tiered answer | "The short answer is yes. The longer answer is..." | Give the answer once. | | Paper-practice pivot | "On paper it scales. In practice, it doesn't." | State what actually happens, with the evidence. | | Concession pivot | "To be fair, the docs are thorough. But nobody reads them." | Keep only if the concession is real; otherwise cut the first half. | | Fragment kicker | "That's the whole game." as the closing line | End where the content ends. | | Full-sentence kicker | "The tool never decides which." as the closing line | Same tell with a subject and verb. End on the content. | | Two-sentence contrast | "These fights never get settled by a RACI. They get settled the first time a launch goes badly." | "Not X, it's Y" with a period in the middle. Say Y. | | Crux nomination | "Hiring people better than you is the one that decides whether year two works." | React to the item without ranking the author's list. See below. | | Dismiss-to-elevate | "The other three you can screen for in an afternoon. That last one nobody tests for." | Crux nomination plus a strawman. Keep the one claim you can back. | | Gnomic generalization | "These fights never get settled by a RACI." | Category subject, present tense, never or always. Own it as an instance ("a RACI never settled it on my team") or cut. | | Hypothetical anecdote | "the first time a launch goes badly and somebody finally says out loud who makes the call" | A vivid scene with "somebody" in it is an invented story. Use a real one from the user or state the claim plainly. | | Candor adverb | "where the work is actually going", "actually test for" | Delete "actually", "really", "genuinely", "truly", "finally" unless the text contradicts something. | | Fronted object | "Technical, creative, and broad you can screen for in an afternoon." | Normal word order. | | Article and subject drop | "Most useful artifact a PMM owns, and half the value is..." | Restore the subject. Clipped is not the same as terse. | | Idiomatic quantity | "year two", "half the value", "in an afternoon", "the last few years" | A real figure from the source, or a plain word. | | Menu question | "Summarize down to claims first, or keep them away from AI tooling entirely?" | One open question you want answered, or none. | | Approval stock | "sounds like the real deal", "the closing point lands for me too", "spot on" | Name the specific thing you agree with, or cut. | | Credential pivot | "I spent the last few years in workforce analytics, where the same dashboard gets used to..." | If the experience is real, follow it with a past-tense instance, not a generalization. | ### Credentialed honesty Flagging a statement as the honest one implies the surrounding statements were not. It is a claim about the writer rather than about the subject, and it costs the reader a beat to process before any content arrives. Forms: "the honest answer", "real talk", "I'll be blunt", "let me be candid", "not the polite version", "not the LinkedIn answer", "here's what nobody will tell you". Fix by deleting the frame and delivering the content. If the content is not actually candid, the frame was doing the work and the sentence has nothing in it. Watch for the stacked case. "Not the LinkedIn answer. The honest one." runs three tells in seven words: credentialed honesty, strawman negation (nobody offered a LinkedIn answer), and contrastive reframe in fragment form. Stacked tells like this are usually a whole passage to cut rather than a line to repair. ### Moves, not strings Every row in the table is a rhetorical move, listed by its most common wording. A model that has learned the wording reproduces the move in a different grammar, and the result passes a literal scan while still reading as generated. Four short LinkedIn comments that survived a full humanize pass and still read as AI to the user, with what was left in them: - "Hiring people better than you is the one that decides whether year two works. Technical, creative, and broad you can screen for in an afternoon. That last one I've never seen an interview process actually test for." Crux nomination, dismiss-to-elevate, fronted objects, a candor adverb, an idiomatic quantity, and three sentences that are each a thesis. - "Win/loss transcripts are the hard case. Most useful artifact a PMM owns, and half the value is a named customer saying something unflattering about a named competitor. Curious how people are actually handling those. Summarize down to claims first, or keep them away from AI tooling entirely?" Crux nomination, article drop, idiomatic quantity, candor adverb, "curious how", menu question. - "These fights never get settled by a RACI. They get settled the first time a launch goes badly and somebody finally says out loud who makes the call next time." Two-sentence contrast, two gnomic generalizations, a hypothetical anecdote, nothing owned by the writer. - "Your mom sounds like the real deal. The closing point lands for me too. I spent the last few years in workforce analytics, where the same dashboard gets used to justify a cut or to find where the work is actually going. The tool never decides which." Approval stock twice, credential pivot into a generalization, candor adverb, full-sentence kicker. The shape is validate, agree, credential, aphorism. None of these contain a banned word, an em dash, or a triad that is not the real count. What they share is that every sentence is a claim about the world and none is a reaction to a person. The fix at the string level is in the table. The fix at the move level: for short text, allow one general claim, and make the rest reference the input, own an instance in the past tense, or ask. ### Titles and headings The tell is a title that promises a payload instead of naming one. **Comma-and appendix.** "The metric, and the trap sitting inside it." "The launch, and what it cost us." "The framework, and why it fails." The second half advertises a complication without stating it. Test: after reading the title, can the reader say what the complication is? If not, it is a teaser. **Concealment metaphor.** Sitting inside it, lurking beneath, hiding in plain sight, the part nobody talks about, what's really going on. These signal depth rather than delivering it. **Colon abstraction.** "Positioning: a deeper look." "AI adoption: beyond the hype." Fix: state the claim. "Activation rate rewards the wrong onboarding" beats "The metric, and the trap sitting inside it." Sentence case, no title case. One exception. Editorial and newsletter headlines legitimately trade some specificity for pull, and a house style may require a hook. When a channel demands it, keep the hook and make the second half concrete rather than metaphorical. ### Redundant negation, in detail Three of the rows above belong to one family: a clause is asserted, then a negative twin is bolted on. They are not equally bad, and the last one is sometimes correct. **Negated synonym.** The second clause restates the first with a minus sign. "To fit in and not feel excluded." "Affordable, without being expensive." "Clear and not confusing." Information content is zero. Always cut. This is the most common of the three and the easiest to miss, because each half reads fine on its own. **Tailing negation.** A feature followed by the absence it implies. "Fast setup, no configuration needed." Cut the tail and make the first half concrete. **Strawman negation.** An alternative is ruled out that nobody was considering. "We chose Postgres, not because it's trendy." "This is a strategy problem, not a tooling problem" when no one raised tooling. The deletion test, applied to any of them: remove the negative clause and ask whether a reasonable reader now assumes something false. If yes, the clause is load-bearing and stays. If they assume nothing different, it was decoration. Strawman negation is the one that passes the test often enough to matter. "I left due to layoffs, not performance" on a resume gap is doing real work, because the reader's default assumption is the thing being ruled out. Do not strip these mechanically. The tell is inventing an objection so you can defeat it, not answering one the reader already has. ### The quantified residual The model frames nearly any comparison, migration, or maturity assessment as near-completeness plus a meaningful remainder: "gets you 80% of the way there", "the last 20% is where the real work is", "the remaining gap", "the final mile", "closing the gap". The percentage is almost never measured; it is a rhetorical shape borrowed from the 80/20 rule and applied to things nobody quantified. Two problems. The fake number violates the no-fabrication instinct even when it reads as figurative, and the frame hides the actual content: what specifically is missing, and how hard is it? Fix: replace the ratio with the inventory. "The importer handles CSV and JSON; XML mapping and retry logic are still open" beats "the tooling gets you 80% of the way there." If the source genuinely measured a proportion, keep it, with its source. ## 4. Structural patterns - **Rule of three everywhere.** Three benefits, three examples, three adjectives, three sections. Count your items and check whether the real number is two, four, or five. - **Uniform rhythm.** Every sentence 15 to 20 words. Every paragraph 3 sentences. Every bullet one line. Break it on purpose. - **Symmetry.** Sections of matched length, lists of matched length, a mirrored intro and conclusion. - **Formulaic challenge arc.** "Despite challenges, X continues to thrive." Cut the arc, keep the facts. - **Tidy takeaway.** A closing paragraph that resolves everything neatly. Real writing often ends on the unresolved part. - **Signposted sections.** A heading announcing what the next paragraph will do, followed by the paragraph doing it. - **Fragmented headers.** A heading followed by a single short sentence. - **Diff-anchored writing.** Describing what changed rather than what the thing is or does. ## 5. Punctuation - **Em dash**: hard ban, every use. Not as a clause separator, not as a parenthetical pair, not before an attribution. Use a period, comma, colon, or parentheses. This is the single most recognized tell, and a voice sample that uses them does not restore them; only an explicit user instruction does. En dashes in numeric ranges (pages 3–5, 2019–2024, a 2–1 vote) are a different character, correct typography, and stay. - **Curly quotes and apostrophes**: convert to straight, unless the destination is a typeset page. - **Exclamation points**: at most one, only if the enthusiasm is real. - **Ellipsis for suspense**: cut. - **Semicolons**: fine in long-form, wrong in Slack and social. ## 6. Formatting - Bold on scattered nouns and phrases inside body copy. Cut. - "**Label:** sentence" bullet blocks where prose works. Convert. - Prose disguised as a list: bullets that are full sentences. Two tests. If the bullets only make sense read in order, it is an argument and belongs in prose. If a bullet runs past roughly fifteen words, or carries a subordinate clause, it is a sentence that lost its paragraph. Compress to parallel fragments, or convert the block to prose. Reasoning goes in paragraphs; bullets are for scannable, parallel items. - Title Case Headings. Use sentence case. - Emoji as bullets or section markers. Cut, unless the channel norm allows. - Markdown in a surface that does not render it: LinkedIn, X, plain-text email, Slack headers. - Nested bullets three levels deep. - Horizontal rules between every section. ## 7. Conversational artifacts - Sycophancy: "Great question", "You're absolutely right", "What a fascinating problem". - Offers to continue: "Would you like me to expand on any of these?" - Meta-commentary about the writing: "I've structured this into three sections." - Knowledge or source disclaimers inside the deliverable: "While details are limited in available sources". - Restating the prompt before answering it. ## 8. Accuracy failures These are worse than style tells because they survive editing. - Invented statistics, percentages, and dollar figures. - Fabricated quotes and attributed opinions. - Invented anecdotes and customer examples. - Fake precision ("a 34% lift") where the source said "a meaningful lift". - Confident specifics filling a gap the source left open. **Rule**: specificity comes from the source or the user. When a sentence needs a fact you do not have, ask for it or leave it general. Never fill it. ## 9. Before and after **Significance inflation** - Before: "The launch marked a pivotal moment in the company's evolution, showcasing its unwavering commitment to innovation." - After: "The launch added self-serve signup, which had been on the roadmap for two years." **Negative parallelism plus triad** - Before: "It's not just about efficiency, it's about clarity, alignment, and momentum." - After: "It cut the review cycle from nine days to three." **Negated synonym** - Before: "The onboarding is designed to help new hires fit in and not feel excluded." - After: "New hires get a named buddy in week one." - Note: "and not feel excluded" restates "fit in" with a minus sign. Deleting it changes nothing a reader assumes. **Corporate hedge stack** - Before: "We believe this may potentially represent a significant opportunity going forward." - After: "This looks like a real opportunity. We'll know by the end of Q3." **Slack overreach** - Before: "**Summary:** The deploy is complete. **Next steps:** 1. Monitor errors 2. Update the changelog. Please let me know if you have any questions!" - After: "deploy's done. watching errors for an hour, then i'll update the changelog." - Also fine: "Deploy's done. I'm watching errors for an hour, then updating the changelog." Register follows the user and the channel; lowercase is an option, not a rule. **Cold email** - Before: "I hope this email finds you well. I noticed you're the VP of Marketing at Acme and wanted to reach out because I believe our platform could help you unlock significant efficiencies. Would you be opposed to a quick 15 minutes?" - After: "Saw Acme is hiring two PMMs this quarter. We built the positioning tooling one of them would otherwise spend six weeks on. Worth a look, or is this already handled?" **Two-sentence contrast plus hypothetical anecdote** (LinkedIn comment) - Before: "These fights never get settled by a RACI. They get settled the first time a launch goes badly and somebody finally says out loud who makes the call next time." - After, when the writer has an instance: "A RACI never settled this for us. What did was the Q2 launch going sideways, after which we wrote down who calls it." - After, without one: "Has a RACI ever settled this for anyone? Every version I've been near got settled by a bad launch instead." - Note: the first after needs the Q2 launch from the user. The second is shorter and asks. Neither has a category subject in the gnomic present. **Validate, agree, credential, aphorism** (LinkedIn comment) - Before: "Your mom sounds like the real deal. The closing point lands for me too. I spent the last few years in workforce analytics, where the same dashboard gets used to justify a cut or to find where the work is actually going. The tool never decides which." - After: "Agree on the closing point. In workforce analytics I watched the same dashboard get opened to justify a cut one quarter and to find where the hours went the next. Which one it was depended on who opened it." - Note: the compliment and the kicker are gone, and the generalization became a first-person past-tense instance. The last sentence carries content instead of a beat. **Crux nomination plus menu question** (LinkedIn comment) - Before: "Win/loss transcripts are the hard case. Most useful artifact a PMM owns, and half the value is a named customer saying something unflattering about a named competitor. Curious how people are actually handling those. Summarize down to claims first, or keep them away from AI tooling entirely?" - After: "Where do win/loss transcripts land under this? They are full of named customers saying unflattering things about named competitors, which is the whole reason they are useful." - Note: one question, tied to the post, and the question comes first because it is the point. -
channels.md 12.7 KB
# Channel specs Read only the section that applies. Each section gives length, structure, opening rule, formatting, sign-off, and the tells unique to that surface. ## Contents 1. LinkedIn 2. LinkedIn comment and reply 3. X / Twitter 4. Cold email (external, outbound) 5. Warm and reply email (external) 6. Internal email 7. Exec memo and board update 8. Slack (internal) 9. Slack Connect and external chat 10. Blog and long-form web 11. Landing page and product marketing copy 12. Product docs and help content 13. Press, analyst, and public statement 14. The internal vs external axis --- ## 1. LinkedIn **Length**: 80 to 200 words. Anything over 250 needs a reason. **Structure**: One idea. Two to four paragraphs. The first line has to carry real information, because it is all most people see. **Opening rule**: Lead with the specific claim, the number, or the thing that happened. Not a tease, not a question, not a one-word hook line. **Kill on sight**: - Broetry format: every sentence on its own line with a blank line between. Unless the user genuinely writes that way, collapse it into paragraphs. - Hook line, then "Here's why:", then a numbered list, then "What do you think?" - "I've seen this a hundred times." "Let that sink in." "Read that again." - Fake vulnerability setups: "I was wrong about X for 10 years." - Engagement bait CTAs. End on the point or on a real question you want answered. - Hashtag stacks. Zero to three, at the end, or none. - Emoji bullet points. - The "unpopular opinion:" prefix on a popular opinion. **What makes it read human**: a number you can only know from doing the work, a named tradeoff, an outcome that did not go well, a specific week or quarter. **Formatting**: no markdown, LinkedIn does not render it. No bold, no headers. Line breaks are the only structural tool. --- ## 2. LinkedIn comment and reply A comment is not a short post. Its job is to answer a person, and the most common failure is a polished mini-post left under someone else's post. **Length**: one to three sentences, under 60 words. Longer than the post is a tell. **The standalone test**: if the comment could be published on its own with nothing lost, it is a post, not a reply. A real comment needs the thread to make sense, because it refers to something in it. **Structure**: one move. Pick exactly one: - Agree with a specific line and add one owned instance, past tense, first person. - Disagree with a specific line and say why. - Ask the one question you want answered. Quote or paraphrase the line you are reacting to. Two moves is the ceiling; four (compliment, agree, credential, aphorism) is the template. **Opening rule**: start on the line you are reacting to, or on your own point. No compliment first. **Kill on sight**: - The mini-post: every sentence a general truth. One general claim at most; the rest refers to the post, owns an instance, or asks. - Crux nomination: "X is the one that decides", "X is the hard case", "half the value is". Ranking the author's list for them, then dismissing the rest to elevate one. - A kicker as the last line, fragment or full sentence. If the last line is the shortest and the most quotable, cut it or move the content into the sentence before it. - Approval stock: real deal, spot on, this lands, so much this, nailed it, well said, resonates, 100%. - "Curious how others are handling this" and every closing menu question ("A first, or B entirely?"). One open question, or none. - The credential pivot ("I spent N years in X, where...") followed by a generalization. Experience earns a past-tense instance, not an aphorism. - Gnomic present with never or always: "These fights never get settled by a RACI." - "Actually", "really", "genuinely" as candor flags. - "Great post", "Thanks for sharing", tagging people, hashtags, emoji. **What makes it read human**: a named instance in the past tense ("the Q2 launch", "at my last company"), an admitted gap ("we never solved this"), a question the commenter would want answered, disagreement. **X replies**: same rules, shorter, lowercase fine. --- ## 3. X / Twitter **Length**: under 280 for a single post. Threads only when the user asks for one. **Structure**: one claim per post. If it needs a setup sentence, it needs to be a different post. **Kill on sight**: the 🧵 emoji and "a thread:", "let that sink in", numbered thread scaffolding ("1/7"), hashtag stacks, "Here's what I learned:", the reply-guy rhetorical question opener. **Register**: lowercase is fine and often better. Fragments are fine. Formal capitalization on X reads like a brand account. --- ## 4. Cold email (external, outbound) **Length**: under 90 words in the body. Under 60 is better. **Subject**: 2 to 6 words, specific, lowercase or sentence case. Never "Quick question", "Following up", "Touching base", "Idea for {Company}". **Structure**: one line of why-you-specifically, one line of what-you-do, one ask. Stop. **Kill on sight**: - "I hope this email finds you well." "Hope you're having a great week." - "I'll cut to the chase" followed by not cutting to the chase. - "I noticed you're the {title} at {company}" with nothing that required looking. - Compliment sandwich openers. - Three-benefit bullet blocks. - "Would you be opposed to a quick 15 minutes?" and every other negative-consent trick. - "Let me know if this resonates." - P.S. lines engineered to look casual. **The ask**: one, specific, low cost. A question is better than a meeting request. **Sign-off**: name. Optionally one line of who you are. No title stack, no quote, no banner. --- ## 5. Warm and reply email (external) **Length**: match theirs, plus or minus a bit. Replying to two sentences with twelve is the tell. **Opening rule**: answer the question in the first sentence. Context after, if needed at all. **Kill on sight**: "Just circling back", "Bumping this to the top of your inbox", "Per my last email", "As discussed" when nothing was discussed, restating their entire message back to them, "Thanks so much for reaching out!" with an exclamation point that is not felt. **Keep**: real warmth where it exists. Named specifics from the prior thread. A direct no when the answer is no. --- ## 6. Internal email **Length**: under 150 words for most. If it needs more, it needs a doc with the email as a two-line summary and a link. **Structure**: BLUF. Decision, ask, or headline in the first two lines. Detail below. Deadline and owner explicit. **Kill on sight**: "I wanted to reach out", "Just wanted to flag", the exec-summary throat-clear before the actual summary, "Please let me know if you have any questions" as a default closer, bulleting things that are not parallel. **Format**: bullets only for genuinely parallel items or scannable options. Prose for reasoning. **Sign-off**: none needed for most internal mail. Name, or nothing. --- ## 7. Exec memo and board update **Length**: one page for a memo. Under 300 words for an update email. **Structure**: what happened, what it means, what you need. Numbers before narrative. Every number sourced or dated. **Kill on sight**: hedge stacks that hide a real position, "we continue to see strong momentum" and every other unfalsifiable status phrase, green status on a yellow project, adjectives doing the work numbers should do, "significant" and "substantial" without a figure attached. **Keep**: qualifiers that carry real uncertainty, stated plainly ("we don't yet know whether X; we'll know by the 14th"). Executive readers penalize false confidence more than they penalize hedging. **Human tell that works here**: naming the thing that is not going well, before someone asks. --- ## 8. Slack (internal) **Length**: match the question. A one-line question gets a one-line answer. This is the single most common failure in this channel. **Structure**: no headers, no sections. If it needs sections, it needs a doc or a canvas. Put detail in a thread, not in the parent message. **Kill on sight**: - Markdown headers and horizontal rules. Slack does not render them. - "**Summary:**" / "**Context:**" / "**Next steps:**" label blocks in a chat message. - Bullet lists with fewer than three items. - Formal greetings. "Hi team, I hope you're all doing well" in Slack reads like a bot. - Sign-offs. Nobody signs a Slack message. - Restating the question before answering it. - Numbered step lists for a two-step process. **Register**: lowercase openers are fine. Fragments are fine. One emoji is fine if the channel uses them. Thread replies can be three words. **When more length is warranted**: incident updates, announcements, decision records. Even then, lead with the one-line version and thread the rest. --- ## 9. Slack Connect and external chat Same mechanics as internal Slack, one adjustment: no internal shorthand, no unexplained acronyms, no candor about internal problems. Slightly more complete sentences. Still no headers, still no sign-off. --- ## 10. Blog and long-form web **Opening rule**: first sentence is a claim, a specific, or a scene. Never "In today's fast-paced digital landscape". Never a definition of the topic. Never a question you are about to answer. **Structure**: paragraphs of varying length, 1 to 6 sentences. Subheads only where the argument genuinely turns, not every 150 words. No subhead followed by a single-sentence paragraph. **Kill on sight**: "Key takeaways" boxes nobody asked for, a conclusion that restates the intro, "But here's the thing", "The truth is", "Let's break it down", every section running the same length, bolded phrases scattered through body copy, a triad of examples in every paragraph. **Human texture**: a first-person specific, a thing that failed, a named tool with a version number, a real cost, a disagreement with the conventional take. **SEO caveat**: keyword placement and internal links are structural requirements, not tells. Preserve them, but never at the cost of an unnatural sentence. --- ## 11. Landing page and product marketing copy **Headline**: a specific claim or outcome. Not "Unlock the power of X". Not "X, reimagined". Not an alliterative triad. **Kill on sight**: unlock, supercharge, seamlessly, effortlessly, empower, transform, revolutionize, game-changing, next-generation, best-in-class, "built for teams that move fast", the three-benefit trio with three icons, "Trusted by industry leaders" with no logos behind it, feature names capitalized mid-sentence for no reason. **Structure**: claim, proof, specific, ask. Proof means a number, a customer name, a demo, or a screenshot. A benefit without proof is decoration. **Register**: the shorter the surface, the more each word costs. Button copy should be a verb the user would say out loud. **SEO caveat**: same as blog. Title tags, meta descriptions, headers carrying target keywords, and internal links are structural requirements, not tells. Keep them; fix the sentence around the keyword, not the keyword. Flag any requirement-vs-style conflict in one line rather than resolving it silently. --- ## 12. Product docs and help content Voice is not wanted here. Skip the texture pass entirely. **Rules**: second person, present tense, imperative for steps. One action per step. State the outcome the user should see. Name the actor in passive constructions ("the system retries" not "retries are attempted"). **Kill on sight**: "simply", "just", "easily", "as you can see", encouragement ("Great! Now let's..."), diff-anchored writing that describes what changed instead of what the thing does. --- ## 13. Press, analyst, and public statement Hedging is often substance here, not slop. Do not strip qualifiers that carry legal or factual weight. **Kill on sight**: "is thrilled to announce", "marks a pivotal moment", "is poised to", "leading provider of", executive quotes that say nothing, superlatives without a source. **Keep**: attribution, dates, exact figures, the qualifier legal put there. **Quote rule**: an executive quote should say something only that person could say. If the quote works with any name attached to it, rewrite it or cut it. --- ## 14. The internal vs external axis Same content, different settings. | | Internal | External | |---|---|---| | Candor | Say the problem plainly, name who owns it | State facts, avoid attributing blame | | Hedging | Minimal, hedging reads as evasion | Keep qualifiers that are accurate or required | | Jargon and acronyms | Fine, shared context assumed | Expand on first use or cut | | Context restated | Minimal, they were there | Enough to stand alone | | Formatting | Loose, whatever is fastest to read | Consistent, it represents the company | | Sign-off | Often none | Name and role | | Numbers | Raw, including bad ones | Sourced, dated, and defensible | When the direction is ambiguous, treat it as external. Internal text that leaks reads worse than external text that was slightly too careful. -
voice-profile-template.md 2.8 KB
# Voice profile template Copy this, fill what you have evidence for, delete the rest. Blank sections are honest. Invented ones poison every draft that follows. Keep it to roughly one page. Long profiles stop being read, and a rule nobody reads is worse than no rule, because it creates the illusion of coverage. --- ```markdown # Voice profile: <name> Version 0.1, updated <date> Evidence base: <what this was built from, and how much of it> ## Standing constraints Absolute. A single violation fails the output, in chat replies and in generated files alike. - [stated] ... ## Register Who this person sounds like, and to whom. - [stated] ... - [observed] ... ## Sentence and paragraph shape Typical length, rhythm, fragment tolerance, paragraph size. - [observed] ... ## Vocabulary **Uses:** ... **Avoids:** ... ## Structural habits How they open, how they close, when they use a list instead of prose. - [observed] ... ## Channel deltas Where the voice shifts. Only note real differences. | Channel | Delta | |---|---| ## Open questions Things the evidence does not settle. Resolve by asking, not by guessing. - ... ## Changelog | Version | Date | Change | Triggered by | |---|---|---|---| ``` --- ## Confidence markers - **stated**: the person said it directly. Binding. - **observed**: three or more independent samples of their own writing. Strong default, overridable in context. - **provisional**: one or two samples, or a single edit. Apply it, but say so when it drives a visible choice. Only the person promotes a line up a level. Never do it on your own initiative, and never on the strength of your own repetition. ## Maintenance protocol Update on evidence, not on a calendar. Three triggers: **On correction.** The person edits a draft, rejects one, or names a line as wrong. Classify the change (constraint, register, structure, vocabulary, one-off), write the rule in their words, log it. One-off factual fixes are not voice rules. **On new sample.** They share something they wrote and shipped. Check it against the profile. Confirmed lines gain confidence. A contradicted line becomes an open question, not a deletion. **On periodic review.** Roughly quarterly, or after ten or so corrections. Re-read the whole profile end to end and ask three things: which rules have never once fired, which rules now contradict each other, and which provisional lines have earned promotion. Cut what is dead. ## What does not belong in a profile - Rules that suppress disagreement, caveats, or unwelcome findings. Those are not voice, and a profile is a bad place to hide them. - Anything derived from a single frustrated correction. Wait for the pattern. - Topic preferences, opinions, or subject-matter positions. This file governs how they write, not what they think. - Restatements of the base skill. If a rule is already in the universal pass, it does not need a line here.
-
-
SKILL.md 20 KB
--- name: humanize-pro description: >- Use when the user asks to humanize, unslop, de-slop, de-AI, clean up, tighten, or make text sound human or natural; when they say something reads like AI or like ChatGPT; when they ask whether something matches their voice or style guide; or when drafting or rewriting outbound human communication: LinkedIn posts and comments, X posts and replies, cold or warm email, internal email, exec memo, Slack, blog, landing page, help content, press or public statements. Applies to prose inside deliverables too: documents, decks, artifacts, and generated files, not only chat replies. Do not trigger for code, commit messages, PR descriptions, changelogs, legal or regulated text, or SEO structural elements (title tags, meta descriptions, keywords) unless the user explicitly asks to humanize those. metadata: version: 1.6.0 --- # Humanize Pro Two jobs, in this order: remove the statistical residue of a language model, then make the text fit the channel it ships in. Most humanizer skills only do the first, which produces clean prose that still lands wrong because a LinkedIn post is not a memo and a Slack reply is not an essay. A third job sits underneath both: sound like *this* writer, not like a generically de-slopped one. That is what the voice profile is for. ## When to trigger Use this skill when: - The user asks to humanize, unslop, de-slop, de-AI, clean up, or tighten text, or to make it sound human or natural. - The user says something reads like AI or like ChatGPT. - The user asks whether text matches their voice, style guide, or voice profile, or wants a profile built or updated. - You are drafting or rewriting outbound human communication, even if nobody said "humanize": LinkedIn posts and comments, X posts and replies, cold or warm email, internal email, exec memo, Slack, blog, landing page, help content, press or public statements. - Prose is going inside a deliverable: a document, deck, artifact, or generated file. The rules apply to the payload, not only the chat reply. Do not trigger for: - Code, commit messages, PR descriptions, or changelogs. - Legal or regulated text. - SEO structural elements (title tags, meta descriptions, keywords), unless the user explicitly asks to humanize those. ## Modes Pick one. If unclear, ask in a single line. - **Rewrite** (default): user pastes text, you return the fixed version. - **Draft**: user gives raw notes or a brief, you write it clean the first time. - **Audit**: user wants the tells named, not fixed. Return a numbered list of what would flag, with the line quoted and a one-line fix each. No rewrite. - **Profile**: user wants their voice profile built or updated from samples and past corrections. See "Voice profile" below. ## Precedence Requirements outrank style. In order: 1. The no-fabrication rule. 2. Named external requirements: legal and regulated language, brand guidelines, SEO structure (title tags, meta descriptions, keyword placement, internal links). 3. The user's **standing constraints** (see below). 4. The user's voice profile or writing sample. 5. Every style rule in this skill. When a rule collides with something above it, keep the higher item and flag the conflict in one line after the text. Never resolve it silently. ## Standing constraints A standing constraint is a rule the user has stated once and expects to hold forever, in every output, without being restated. Typical examples: a banned punctuation mark, a banned word, a forbidden greeting, a required sign-off, a length ceiling. Three things make constraints different from style preferences: - **They are absolute, not weighted.** A single violation is a failure even if the rest is excellent. - **They apply to every surface.** Chat prose, generated documents, artifacts, file contents, headings, image captions, table cells, code comments in user-facing snippets. A constraint violated inside a deliverable is the most common failure mode, because the model applies the rule to its reply and forgets the payload. - **They survive tool boundaries.** Text written to a file, passed to another skill, or produced inside an artifact is still the user's text. Record standing constraints at the top of the voice profile. Before delivering anything, run the constraint list as a literal scan of the output, including every file you wrote this turn. Do not rely on having intended to comply. ## Voice profile The voice profile is a versioned file describing how one specific person writes. It is not part of this skill; it belongs to the user. Look for it in this order: 1. A path the user names. 2. A personal brand or voice skill already loaded in the session. 3. `references/voice-profile.md` inside a private fork of this skill. 4. Persistent memory, if the surface has it. If none exists and the user wants one, offer to build it. Do not build it silently. ### Format ``` # Voice profile: <name> Version <n>, updated <date> ## Standing constraints (absolute, never violated) ## Register (who they sound like, to whom) ## Sentence and paragraph shape ## Vocabulary: use / avoid ## Structural habits (openers, closers, lists vs prose) ## Channel deltas (how the voice shifts by surface) ## Open questions (unresolved, needs more evidence) ## Changelog (what changed, what triggered it) ``` Every line carries a confidence marker: - **stated**: the user said it directly. Treat as binding. - **observed**: inferred from three or more independent samples of their own writing. Strong default, overridable. - **provisional**: inferred from one or two samples, or from a single edit. Apply, but flag when it drives a visible choice. Never promote a provisional line to stated. Only the user promotes. ### Building one Sources, in descending value: text the user wrote themselves; text the user edited and shipped; text the user approved unchanged; text the user rejected, with the reason. Chat messages count, and are often the most honest sample, because nobody performs in a chat message. Aim for one page. A voice profile that runs long stops being read. ## Capture corrections The profile is worth having only if it stays current, and the raw material arrives constantly: every edit the user makes to your draft is a labeled training example. When the user returns an edited version, rejects a draft, or says a line is wrong: 1. **Diff intent, not tokens.** Ask what class of change it is: a constraint violation, a register mismatch, a structural habit, a vocabulary preference, or a one-off factual fix. One-off fixes do not belong in the profile. 2. **Write the rule in their words where possible.** "Cut the setup sentence, start on the claim" beats "reduce preamble." 3. **Check for contradiction.** If the new correction contradicts an existing line, do not overwrite. Surface both and ask which holds. Contradictions are usually context-dependent rules that need a channel delta, not a replacement. 4. **Log it.** Add a changelog entry with the date and the triggering example. The changelog is what lets the user audit whether the profile is drifting. 5. **Update in the same turn.** A correction noted but not written is lost. Two failure modes to watch. **Over-fitting**: one heavy edit becomes a permanent rule and the voice narrows. Require three instances before a provisional line becomes observed. **Sycophantic drift**: the profile fills with rules that make outputs more agreeable rather than more accurate. If a proposed line would suppress disagreement, a caveat, or an unwelcome finding, it is not a voice rule. Leave it out. ## Workflow ### 1. Establish channel and audience Before writing anything, fix these three: - **Channel**: LinkedIn post, LinkedIn comment or reply, X post, X reply, cold email, internal email, exec memo, Slack, blog, landing page, product docs, press or analyst, board. A comment is its own channel, not a short post: it answers a person. - **Direction**: internal or external. This governs candor, hedging, jargon tolerance, and how much context you restate. - **Relationship**: cold, warm, peer, report, manager, exec, customer, public. Infer from the text when it is obvious. Ask one short question when it is not. Do not ask three. If no answer is possible (non-interactive run, pipeline, subagent), assume rewrite mode and external direction, and flag the assumption in one line after the text. Then load the matching section of `references/channels.md`. Load only what applies. ### 2. Calibrate voice Load the voice profile if one exists. Otherwise, if the user has supplied a writing sample, a brand or voice skill, or prior approved work, read it and match sentence rhythm, vocabulary, and quirks. **A voice profile or sample outranks every style rule in this skill except the no-fabrication rule, the em dash ban, and the user's standing constraints.** If it uses one-line paragraphs, keep them. If it uses em dashes, the ban still holds: only an explicit user instruction restores them, never an inference from samples. With no sample, aim for competent-professional-with-a-pulse: plain words, varied sentence length, an opinion where an opinion belongs. ### 3. Universal pass The checklist below covers most short texts. For long-form work (blog, memo, landing page), or when the audit pass flags something you cannot name, read `references/ai-tells.md` in full. Every tell below is a rhetorical move, listed by its most common wording so it can be scanned for. Rewording the move is not a fix. "It's not X, it's Y" spread across two sentences is still the contrast move; a five-word closing sentence is still the kicker. When you catch a string, ask what the sentence is doing, and remove the move. In priority order: 1. **Cut the opener.** Delete throat-clearing, context-setting first sentences, and any signposting ("Let's dive in", "Here's the thing", "In today's landscape"). Start with the claim. 2. **Cut the closer.** Delete summary paragraphs that restate what was just said, "The future looks bright" style endings, "I hope this helps", and offers to continue. 3. **Break the shape.** AI text has uniform paragraph length, uniform bullet length, and triads everywhere. Vary paragraph length deliberately. If you wrote three items, check whether there are actually two or four. 4. **Kill the vocabulary.** No delve, leverage, landscape, tapestry, testament, pivotal, seamless, robust, journey, unlock, elevate, navigate, realm, crucial, vital, comprehensive, holistic. See the full list in references. The list is a frequency heuristic, not a blocklist: a listed word stays when it is the plain, precise choice and no simpler word does the same job. 5. **Kill the constructions.** No "It's not just X, it's Y." No "This isn't about A. It's about B." No copula avoidance (serves as, stands as, boasts, features). No superficial -ing analysis (highlighting, underscoring, reflecting, showcasing). 6. **Kill redundant negation.** A clause asserted, then restated as its own negative: "to fit in and not feel excluded", "fast setup, no configuration needed". Delete the negative half. One exception: when the alternative being ruled out is genuinely what the reader would otherwise assume ("due to layoffs, not performance" on a resume gap), the clause carries information and stays. Apply the deletion test in `references/ai-tells.md`. Do not strip these mechanically. 7. **Kill the punctuation tells.** No em dashes. Hard rule, every use: not as a clause separator, not as a parenthetical pair, not before an attribution. Use periods, commas, colons, parentheses. A voice sample does not override this; only an explicit user instruction does. En dashes in numeric ranges (pages 3–5, 2019–2024) are a different character, correct typography, and stay unless a standing constraint says otherwise. No curly quotes outside typeset surfaces. No ellipsis for drama. 8. **Kill formatting slop.** No bold on random nouns. No "**Label:** sentence" bullets when prose works. No title case headings. No emoji unless the channel norm says otherwise. No markdown in a channel that does not render it. 9. **Fix bullets that are sentences.** A bullet past roughly fifteen words, or carrying a subordinate clause, is prose in disguise. If the bullets only make sense read in order, they are an argument: convert to paragraphs. Otherwise compress to parallel fragments. 10. **Cut announced honesty.** No "the honest answer", "real talk", "I'll be blunt", "not the polite version". Honest writing does not flag itself, and the frame implies everything around it was less honest. Deliver the content instead. 11. **Make titles name their payload.** No "The X, and the Y sitting inside it". No concealment metaphors (lurking beneath, hiding in plain sight, what nobody tells you). No "Topic: a deeper look". State the claim. Sentence case. 12. **Cut hedge stacks.** "may potentially help" becomes "may help". Keep a hedge only when the claim actually is uncertain. 13. **Name the source or cut the claim.** No "experts say", "studies show", "many companies find". 14. **Kill the moves that survive string bans.** Contrast-then-mirror in any grammar: "never gets settled by a RACI. It gets settled the first time...". Crux nomination: crowning one item as "the one that decides", "the hard case", "where half the value is", usually followed by dismissing the rest. The kicker in any form: if the last sentence is the shortest and the most quotable, it is a kicker, fragment or not. Gnomic generalization: a category subject in the present tense with never or always ("The tool never decides which", "These fights never get settled"). One gnomic sentence per short text at most, and it is the first sentence to cut. 15. **Cut candor adverbs.** "actually", "really", "genuinely", "truly", "finally" when nothing in the text contradicts them. Delete the word; if the sentence means the same, it was a candor flag, the residue of announced honesty after the frame was removed. 16. **Restore normal word order.** No fronted objects for punch ("Technical, creative, and broad you can screen for in an afternoon", "That last one I've never seen"). No dropped subjects and articles to sound clipped ("Most useful artifact a PMM owns, and..."). Performed terseness reads as performance. ### 4. Add texture Removing tells produces text that is clean and dead. A human wrote this, so something in it should only be true for that human. - Concrete specifics where the source has them: a number, a name, a date, a place, a version, a cost. A full paragraph with none is a flag to check the source again, not a quota to fill. - An opinion where an opinion is appropriate, including the unflattering one. - Admitted uncertainty when uncertainty is real ("I don't know why this worked" beats a manufactured explanation). - Varied sentence length. Vary it where the argument varies, not as a formula: the long-sentence-then-short-one pattern applied everywhere is itself becoming a recognizable humanizer tell. **When the source has no specific, go smaller, not bigger.** The failure mode is compensating for a missing number or story with a universal claim or a typical scene: "the first time a launch goes badly and somebody finally says out loud who makes the call". A vivid hypothetical with "somebody" as its protagonist is a fabricated anecdote with the names removed, and it reads as one. Number-shaped idioms ("year two", "half the value", "in an afternoon") are the same dodge. With no specific to hand: refer to the input, ask a real question, or say less. If the writer has a real instance, put it in the past tense and first person; a generalization owned as "I watched X happen at Y" is texture, the same claim in the gnomic present is a fortune cookie. **No-fabrication rule, absolute:** specificity comes from the source text or the user, never from you. If a rewrite needs a number, a name, a date, or an anecdote that is not in the input, stop and ask for it or leave the sentence general. Never invent a statistic, a quote, a customer, or a personal experience. This rule outranks every instruction above. ### 5. Channel fit pass Now apply the channel section from `references/channels.md`. This is where length, structure, opening convention, formatting, and sign-off get set. Text that survives step 3 and fails step 5 still reads wrong. ### 6. Audit pass Two gates, in order. The first is mechanical and has no judgment in it. **Gate A, literal scan.** Scan the actual characters of every output produced this turn, files included: - Each standing constraint from the voice profile. - Any em dash character, in any use. (En dashes in numeric ranges pass.) - Banned vocabulary from step 3, and the candor adverbs from step 3 item 15. - The constructions from step 5, and redundant negation from step 6. - Bullets over roughly fifteen words. Announced honesty. Titles that promise instead of name. - Triads: three bullets, three clauses, three examples in a row. Failing Gate A is not a matter of degree. Fix and rescan. **Gate B, read it cold.** Answer: would a reader assume a model wrote this? Check for uniform rhythm, a tidy summary you re-added, bullets where prose belongs, paragraphs of equal length, a resurfaced banned word. Those checks only fire on paragraphs. For anything under about 80 words (a comment, a reply, a Slack line, a short email), run these instead: - **Quote-card test.** Is the last sentence the shortest and the most quotable? Then it is a kicker. End on the content instead. - **Standalone test.** For a comment or reply: could it be posted on its own with nothing lost? Then it is a post, not a reply. It should need the thread to make sense. - **Thesis count.** How many sentences are general claims with a category subject? More than one means the text is dispensing wisdom, not talking. Convert one to an owned instance, a reference to the input, or a question, and cut the rest. - **Move scan.** Crux nomination in the first sentence, contrast-then-mirror anywhere, a credential pivot into a generalization, a closing menu question. If yes on any, rewrite once. First drafts of a humanized rewrite reliably keep tells the second pass catches. Both gates happen silently: catch a tell, fix it, show only the fixed text. No trace of the correction appears in the deliverable. ### 7. Deliver Return the text and nothing else, unless the user asked for reasoning. No preamble about what you changed, no narration of the audit pass or mid-draft corrections. If you had to leave a gap because of the no-fabrication rule, flag it in one line after the text. If this turn produced a correction worth keeping, update the voice profile now. Say what you added in one line. Do not narrate anything else. ## Do not humanize Leave alone: direct quotes, legal and compliance language, regulated claims, security disclosures, contract terms, safety instructions, and anything where a stripped qualifier changes accuracy. In regulated or external formal contexts, a hedge is often the substance and not a tell. When a caveat carries legal weight, keep it and say so. Do not apply personality guidance to text where voice is not wanted: status reports, runbooks, API docs, incident timelines. ## False positives Some patterns are legitimate. Do not strip them mechanically: - A rule of three that is the actual number of items. - Parallel structure in a board deck or a spec, where convention demands it. - The word "leverage" when it means financial leverage. - Formal register in a legal letter or an analyst briefing. - Repetition of a term for clarity. Synonym cycling is the tell, not repetition. ## References - `references/ai-tells.md`: full banned vocabulary, phrases, openers, structural patterns, punctuation and formatting tells, with before and after examples. Read for long-form work or when the audit pass flags a tell you cannot name; the step 3 checklist covers most short texts. - `references/channels.md`: per-channel specs for length, structure, opening, formatting, sign-off, and the tells unique to that channel. Read only the sections that apply. - `references/voice-profile-template.md`: blank template for building a personal voice profile, plus the maintenance protocol. Pattern taxonomy draws on Wikipedia's "Signs of AI writing" (WikiProject AI Cleanup) and the open-source humanizer skill lineage that built on it.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.