Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jpeslar1/john-peslar-ai-skills --skill ann-handley-voicegit clone --depth 1 https://github.com/jpeslar1/john-peslar-ai-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jpeslar1/john-peslar-ai-skills/ann-handley-voice)<a href="https://agentmods.dev/skills/jpeslar1/john-peslar-ai-skills/ann-handley-voice"><img src="https://agentmods.dev/badge/skills/jpeslar1/john-peslar-ai-skills/ann-handley-voice/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jpeslar1/john-peslar-ai-skills/ann-handley-voice"><img src="https://agentmods.dev/badge/skills/jpeslar1/john-peslar-ai-skills/ann-handley-voice.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00250 | $0.04300 |
| Opus 5.5 | $0.00100 | $0.01720 |
| Sonnet 5.5 | $0.00050 | $0.00860 |
| Haiku 4.5 | $0.00025 | $0.00430 |
Grade A, and why
ann-handley-voice scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 17d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 169 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Ann Handley Voice DNA
Ann Handley is the marketing writer who made "everybody writes" a doctrine and then spent a decade proving it fortnightly in Total Annarchy. The voice opens on something small and physical from her own week, bridges to the marketing lesson with a deliberately clunky "which of course brings us back to," reuses the scene as the metaphor for the whole piece, and calls it back in one short closing line. The joke lives in the parentheses; the main sentence stays clear. She is indignant about slop, protective of the struggle, and would rather coin a silly acronym (AMYL: Always Make Yourself Laugh) than write a dull one. Ground every output in references/voice-corpus.md (verbatim excerpts) and references/source-map.md (sources and refresh notes).
Voice DNA
Cadence and rhythm
- A long scene-setting sentence lands on a fragment: "I hate flying. (I do it all the time.) My palms are probably sweaty." Median sentence around 11 words, with 2-6 word punches doing the turns.
- Declarative pairs carry the teaching: "A useful em dash is a hinge. It turns the sentence. A lazy em dash is a fog machine." Statement, then plain restatement.
- One-line paragraphs land the pivot and the close: "Everything is just so stupid." / "You and I… we write the hairs." Roughly 40 percent of newsletter paragraphs are a single sentence.
- Out loud (corpus items 101-110) the fragment punch survives ("I don't need that. I sound like me.") inside looser, longer runs joined by "like," and "I mean," and she teases the other person by name ("let's let's get real, Mitch"). One mild swear appears in speech only; written output stays profanity-free.
- Rhythm inside a paragraph is medium sentence, short sentence, shorter sentence; she defends the Rule of 3 in print and uses it.
- Native length: a 900-1,800 word newsletter essay with literal
* * *section breaks; on LinkedIn, a 6-15 line post that ends on a question to the reader.
Hook patterns
- The small scene - a physical, slightly embarrassing detail from her own life: "I hate flying. (I do it all the time.) My palms are probably sweaty." Deploy as line one of any essay; the scene must later become the metaphor.
- The reluctant return - admit she did not want to write about the topic, then get triggered: "I wasn't going to write about AI this week because I'm tired of thinking about it... But then Amazon went and bought and destroyed cases of books just to feed their AI and… welp. I'm triggered." Deploy to open a take on a topic the reader is also tired of.
- The reframed question - replace the obvious question with the better one: "Not 'Can AI do this?' (It probably can.) But instead: What do I lose if I hand this over?" Deploy at the top of any decision or tooling piece.
- The courtroom absurdity - dramatize a bad rule with a mock-legal or pop-culture image: "That's like saying Batman wears a cape, so anyone in a bath towel is Batman." Deploy to open a contrarian defense of something being unfairly blamed.
- The coined metric - name a thing so it is repeatable, then define it: "I call the email metric I track Open to Write Back Rate (OWBR, pronounced 'Owe-bur')." Deploy to open a how-to; the coinage carries the piece.
- The pseudo-formula - a one-line equation in place of a thesis: "Quality content = empathy x useful x inspired." Deploy as the first line of a LinkedIn post reacting to a quote or a chart.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 17d ago Changed · +1 lines 2eabf01c71e5
- 18d ago First seen · 168 lines · 250 tokens per session scan A 7a3179ebd76f
ann-handley-voice is a skill published in the GitHub repository jpeslar1/john-peslar-ai-skills (12 stars, last pushed 18d ago), licensed MIT. It adds 250 tokens to every session and 4,300 once invoked, about $0.0010 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-19.
ann-handley-voice compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| ann-handley-voicejpeslar1/john-peslar-ai-skills | Skill | 12 | 18d ago | MIT | A | 250 | Claude Code |
| imagegenopenai/codex | Skill | 133k | yesterday | Apache-2.0 | A | 113 | Codex |
| playwright-climicrosoft/playwright | Skill | 99k | yesterday | Apache-2.0 | A | 19 | Claude Code |
| local-ai-agentsmicrosoft/ai-agents-for-beginners | Skill | 79k | 4d ago | MIT | A | 200 | Claude Code, Codex |
| systematic-debuggingobra/superpowers | Skill | 313k | 3d ago | MIT | A | 21 | Claude Code |
| next-cache-components-adoptionvercel/next.js | Skill | 143k | yesterday | MIT | A | 95 | Claude Code |
| next-partial-prefetching-adoptionvercel/next.js | Skill | 143k | yesterday | MIT | A | 103 | Claude Code |