Skip to content
Content
Skill

/vividness

Pushes a draft from abstract toward concrete at two scales. Noun-level (replaces "dog" with "German shepherd," "customer" with "Sarah at JPMorgan's options-trading desk," "many" with "47 of 100") and scene-level (turns "I was angry" into the body signal, room, and dialogue).

From plugin
winning-writing
1731 skills

Claude Code

$ npx -y skills add kalyvask/winning-writing --skill vividness --agent claude-code

SKILL.md

vividness.SKILL.md
name: vividness
description: Pushes a draft from abstract toward concrete at two scales. Noun-level (replaces "dog" with "German shepherd," "customer" with "Sarah at JPMorgan's options-trading desk," "many" with "47 of 100") and scene-level (turns "I was angry" into the body signal, room, and dialogue). Implements Kramon's "specific over abstract" rule, Kristof's "real names, real numbers, real interviews," and Lauren Weinstein's "could a director recreate this scene?" test. Use when a draft is technically correct but flat, when category nouns leak through, when stories tell instead of show, or when the user says "be specific," "show don't tell," "more vivid," "less abstract," "make it concrete," "find the colors." Pass --mode noun-level|scene-level|both (default both).

Vividness

Source: `points/core-rules.md` rule 2 (know your audience), Kramon's rule that **stories are 12× more memorable than statistics alone**, Lauren Weinstein's guest lecture in Glenn Kramon's *Winning Writing* (GSB, Spring 2026).

What this skill does

Two modes behind one skill. Both push abstract → concrete; they operate at different scales:

| Mode | Replaces | Use when | |---|---|---| | **noun-level** | "dog" → "German shepherd," "customer" → "Sarah at JPMorgan," "many" → "47 of 100" | Draft has category nouns the reader has to fill in | | **scene-level** | "I was angry" → body signal + room + dialogue + moment | Story is technically correct but flat |

Default `--mode both` runs noun-level first (fixes generic words), then scene-level (turns key moments into scenes). The order matters: noun replacements provide the concrete material a scene needs.

How to invoke

/vividness "draft text"
/vividness --mode noun-level "draft text"
/vividness --mode scene-level "draft text"
/vividness --mode both "draft text"

Without `--mode`, default to `both`.

A note on examples

Named "Sarah at JPMorgan" and "Priya at DoorDash" cases below are *fictional* people in fictional scenarios at real public companies. They exist as teaching shapes — named person + named institution + specific quote — not as anyone's real story. The real version of this skill uses real names.

---

Mode 1 — noun-level

Generic nouns force the reader to do work the writer should have done.

> *"A scientist studied dogs."*

Forgettable. The reader pictures nothing.

> *"Dr. Chen at UC Davis studied 47 German shepherds at a sheep-herding farm in Petaluma."*

The reader can see it. Specificity is the single highest-leverage rewrite a draft ever gets.

The replacement table

| Generic | Specific | |---|---| | dog | German shepherd, Alma my golden retriever, the puppy at the rescue | | engineer | John, the SRE on the payments team | | customer | Sarah at JPMorgan's options-trading desk | | city | Bozeman (population 56,000, mountain west) | | big company | Stripe (~7,000 employees, $1T+ payment volume annually) | | recent study | the 2024 Stanford HAI paper on agent reliability | | many people | 47 of the 100 PMs I interviewed | | a long time | 38 minutes | | somewhere | the Fillmore in 1989 (named venue, named year) | | early | 2:47 a.m. last Wednesday | | executives | the VP of Talent at Stripe | | consultant | a McKinsey BA who left to start a SaaS company | | AI tool | Claude Sonnet 4.6 with the web_search tool | | school | Stanford GSB's section H | | job | director of products at a 20-person fintech in Austin | | money | $64M in net savings | | feedback | "this is good but the part about latency is wrong" |

Six categories to fix (priority order)

**1. People** — first names + roles + locations wherever you have permission. ❌ *"A customer told us our latency was a problem."* ✅ *"Sarah at JPMorgan's options-trading desk told us in March: 'every 100ms costs us a million dollars in slippage.'"*

If no permission, use a *specific archetype*: *"a senior options trader at a top-tier investment bank, 12 years in the seat."*

**2. Numbers** — actual numbers or tight ranges, not "many" / "few" / "significant." ❌ *"We saw a significant drop in errors."* ✅ *"Errors dropped from 4,200/day to 380/day — a 91% reduction."*

If you don't know it, get it before publishing. If you can't, name the closest measurable proxy.

**3. Places** — named locations. Specificity here is free. ❌ *"At a tech company in California…"* ✅ *"At Stripe's South San Francisco office on Oyster Point…"*

**4. Times** — dates and durations. ❌ *"We launched the new pricing recently."* ✅ *"We launched the new pricing on March 14, 2026 — six weeks ago."*

**5. Things** — make/model/version/brand. ❌ *"a robot," "a coding model," "a phone"* ✅ *"the Meccano MeccaNoid G15," "Claude Sonnet 4.6," "an iPhone 16 Pro"*

Especially load-bearing in tech writing — *"an LLM"* is almost meaningless in 2026.

**6. Quotes vs. summaries** — the actual sentence in quotes. ❌ *"Customers love the new feature."* ✅ *"Priya at DoorDash, last Thursday: 'The brief is good, but it doesn't save us from the part that hurts.'"*

When generic wins (three cases)

1. **Privacy / NDA.** Use a precise archetype; don't fake a name. 2. **Universality is the point.** *"Most people who fall in love"* shouldn't have a name — specificity shrinks the claim. 3. **Specificity would distract.** Naming a product is fine; naming MSRP, review count, star rating is a fetish.

---

Mode 2 — scene-level

Most people summarize their stories:

> *"It was a difficult time. I didn't have money. I didn't have hope. Things looked dismal."*

That tells the audience what happened. The same story, shown:

> *"Six days a week I ate beans and weenies. I dug for change in the crevices of my couch so I could buy my son milk. There were nights my heart raced. I got sick of my own story."*

Same facts. Now the reader is in the room.

The work is what Weinstein called *finding the colors*: going back through the story and naming what the storyteller was thinking, seeing, and feeling in the body.

The three quest

Read more
@kalyvask
Ships withwinning-writing

31 Claude skills for cold outreach, op-eds, pitches, press inquiries, bios, exec memos, performance reviews, spoken-delivery talks, fact-checking, and reply-rate tracking.

Stars on GitHub

Momentum

stars in total
17
Star history of kalyvask/winning-writing on GitHub, a chart by star-history.com

Other skills on winning-writing.

bluf-rewriter

bluf-rewriter

Reorganizes a memo, email, status update, or report so the bottom line is up front. Implements Kramon's BLUF (Bottom Line Up…

compression

compression

Cuts a draft to a target word count without losing substance. Two modes behind one skill. target-count hits a specific number…

fun-angle

fun-angle

Finds the unexpected, dry, or self-deprecating angle that makes an email memorable. Turns "professional and polite" into "this…

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

officecli12d33k
@iofficeai@iofficeaiInstall Skill

Questions about vividness.

Which coding agents can use vividness?
vividness installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.