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
1431 skills
Install
$ npx -y skills add kalyvask/winning-writing --skill vividness --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/vividness

Context preview

The summary Claude sees to decide when to auto-load this skill.

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).

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
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.

Get the whole plugin
Stats
14
Stars
5
Forks
Active
Maintenance
JavaScript
Language
MIT
License
8d ago
Last commit
4mo ago
Created

Repo: kalyvask/winning-writing

Other skills on winning-writing.