Lead with the reader's problem, not the product. Most people scan and read maybe a quarter of the words, so front-load the point: first in the post, first in each section and paragraph.
Short paragraphs, 2–4 sentences, one idea each. White space is a feature, not filler.
Descriptive subheads that read as a map: skim only the H2s and you should get the gist. Break up any section that runs past ~300 words. Use lists for steps or anything parallel.
Most sentences under ~20 words. Active voice. Cut hedges: "just", "simply", "very", "really".
Concrete over abstract; show an example before stating a principle.
No exclamation points; no "in today's fast-paced world" openers.
Match length to what the question needs; there's no magic word count. A quick answer can be a few hundred words; a real guide earns its length. Don't pad to hit a number.
Mind the SEO surface: one descriptive title (~50–60 chars, keyword near the front), a short hyphenated slug, 3–5 internal links with real anchor text, and alt text on meaningful images. See references/format-specs.md for the numbers.
Structure
Hook: the problem or tension, in the reader's words; promise the payoff and preview it.
Stakes: why it matters now.
Payoff: the idea/solution, with one concrete example.
Close: the single takeaway, then one focused next step. No "in conclusion".
References
references/best-practices.md: sourced checklist of current blog tactics (scanning, hook, structure, readability, length, SEO basics, close).
references/format-specs.md: concrete specs for title and meta length, heading hierarchy, word-count ranges, readability targets, slug, alt text, and internal links.
references/banned-words.json: the words to avoid. The lint_against_style tool checks a draft against this list, so run the tool rather than reading the file.
Layers on top of
The writing-quality skill carries the surface-independent rules: AI tells, plain-English swaps, front-loading, concrete over abstract, voice. Load it too; this skill only adds what's specific to blog posts.
How to use it
Copy the folder
Take vercel-labs/blog-style from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
Check the name does not clash
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.