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.
> /plugin marketplace add kalyvask/winning-writing> /plugin install winning-writing@winning-writing
Repo: kalyvask/winning-writing
What's inside
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. Distilled from Stanford GSB's Winning Writing (Glenn Kramon, GSBGEN 352), Rachel Konrad's cold-outreach lectures, and Andrew Ross Sorkin's reporter playbook. Run them from Claude Code, from Cowork, from a three-mode browser Coach with a span-level inline critic and refinement chat, or from a Chrome side panel that imports the active Gmail compose.
Install as a Claude Code plugin — two commands, no clone:
/plugin marketplace add kalyvask/winning-writing
/plugin install winning-writing
Skills become available as /winning-writing:<skill-name> and update when the plugin version bumps. Or install by copying, if you want to edit the skills as your own:
git clone https://github.com/kalyvask/winning-writing
cp -r winning-writing/skills/* ~/.claude/skills/
Either way: open Claude Code (or Cowork), drop a draft into the chat, and say "critique this cold email" — Claude auto-triggers cold-email-coach, runs the rubric, calls in recipient-research, connection-finder, tell-them-something-new, style-tells, humanize, and whichever else applies. The skills compose. No UI to open, nothing to paste between windows.
To try the offline Draft Critic without installing anything: kalyvask.github.io/winning-writing — runs entirely client-side, no API key, pastes never leave your machine.
The same skills power all four. Pick whichever fits where you already work.
Skills live at ~/.claude/skills/. Claude auto-triggers them based on what you're doing. You can chain them by name ("now run humanize on the result"), inspect each SKILL.md to see exactly what it does, and edit any one of them to your taste. Web search, file editing, and multi-step orchestration all happen in-process.
Point Cowork at the repo folder. The skills get picked up automatically. Set Settings → Cowork → Edit Global Instructions to "Before every task, read everything in my context/ files." Same pipeline, no command line.
ui/coach.html ships with a mode selector. Pick how much orchestration you want:
| Mode | Calls | Time | Est. cost | What it does |
|---|---|---|---|---|
| Single-shot + polish (default) | 2–5 | 40–90s | $0.12–0.18 | Opus 4.8 drafts in one call; a Haiku planner reads the email and decides which surgical passes to run (style-tells, humanize, warmth-and-competence); only the relevant passes execute. The planner is the agent — it routes around skills that aren't needed. |
| Full agentic | 7–10 | 60–150s | $0.30–0.80 | Per-step pipeline: researcher (Sonnet + web_search) → connection-finder (Sonnet) → drafter (Opus 4.8) → surgical edits (Haiku, parallel) → warmth + competence audit (Sonnet) → rubric scorer (Sonnet). Every step is a separate call with its own prompt and model. Streaming trace shows latency + tokens per step and an "Inspect output" details block for each. |
| Single-shot | 1 | 30–80s | $0.10 | Original behavior. One Opus call with the full megaprompt. Fast and cheap but the routing is invisible. |
Single-shot is one call with embedded instructions. The other two route between agents explicitly: single-shot+polish has a planner deciding what to apply; full-agentic chains specialized agents into a final output. Both stream to the UI so you can audit each step.
Beyond the three pipeline modes, the Coach also ships a span-level inline critic that highlights specific words and sentences against the rule library, with Accept / Reject / Snooze per flag and a refinement chat for multi-turn iteration. See The UI below.
Composing in Gmail or LinkedIn? →
inline-coachCritiquing a cold email from the Gmail side panel? →side-panel-coach
Two MV3 extensions, same bundled rule library, different surfaces. Install one or both.
inline-coach/ — auto-attaches to Gmail compose AND LinkedIn DM surfaces (overlay bubble, full-page thread, InMail). Recipient parsing, connection-angle suggestions, S.H.I.T. pre-send checklist. Cold-email intent. Vite + React + TS; npm run build once before loading.side-panel-coach/ — opens in Chrome's side panel when you click the toolbar icon. One-click import of the active Gmail compose. Cold-email critic (the rule loader supports all six intents; the panel UI doesn't expose a picker yet — use the Coach UI for other intents), opt-in pre-send gate, opt-in "Live from GitHub" rule source. Gmail only. Vanilla JS, no build step.API key in chrome.storage.local; calls go browser-direct to api.anthropic.com. No backend on either. Load unpacked from chrome://extensions.
Claude reads the skills and principles in this repo as its operating system, runs through them in order on whatever draft or pitch you bring, and returns a complete cold-outreach package: dossier synthesis → connection angles → subject lines → drafted email → 12-dimension rubric score → flags to verify before sending.
The rules are not in the model's training — they're loaded from skills/ and points/ at runtime. That's the whole point: Glenn Kramon's class is opinionated, the banned-word list is enforced, and the LLM follows those rules, not its own median instincts.
Five pieces:
points/ — distilled rules and frameworks. The "what."skills/ — 31 focused Claude skills (SKILL.md files). The "how."context/ — about-me.md + voice-and-style.md so Claude writes in your voice, not generic AI voice. Update them incrementally via voice-update --source manual (one rule at a time), voice-update --source memory (batch pull from Claude Code's auto-memory), or voice-update --source sent-mail (audit recent Gmail sent mail against the voice file).ui/ — optional browser pages: an offline draft critic, and a Claude-powered Coach with a span-level inline critic and refinement chat. Not needed if you're already in Claude Code.side-panel-coach/ and inline-coach/ — two Chrome MV3 extensions backed by the same rule library. side-panel-coach opens in Chrome's side panel on click and supports multiple critic intents; inline-coach auto-attaches to Gmail and LinkedIn compose surfaces. Personal-use, load unpacked.Built because most cold emails, op-eds, and memos read the same — hedged, jargon-heavy, AI-flavored. The principles here are opinionated and the banned-word list is enforced. I drafted with Claude as a sparring partner, then rewrote every line by hand so it doesn't sound like one. If you spot a "delve," a "tapestry," or five short sentences in a row, open an issue — that's the bug this repo exists to prevent.
If you forked or cloned this repo, do these seven steps in order before running anything. The whole point of the toolkit is that Claude critiques your writing against your voice — until you fill in the context files, every output is generic.
Install the skills. Fastest: /plugin marketplace add kalyvask/winning-writing then /plugin install winning-writing in Claude Code. For a personalized fork, copy instead: cp -r skills/* ~/.claude/skills/ on macOS/Linux; copy skills\* into %USERPROFILE%\.claude\skills\ on Windows — copied skills are yours to edit. (Skip this step if you're using Cowork — point Cowork at the repo folder and it picks them up.)
Edit context/about-me.md. Open the file and replace every bracketed placeholder with the real thing. Look for: [Your name], [role / title], [the thing you're working on right now], [N years] of prior experience, [the through-line that makes your career make sense], your Primary focus / Secondary / Public output bullets, the "How I think" paragraph, the five "What you (Claude) should know" bullets, and your contact line. Be specific — named companies, real numbers, actual side projects. Generic in, generic out.
Edit context/voice-and-style.md. Keep the structure (Posture, Sentence structure, Words I like, Banned words, AI tells, Format preferences, Length targets) — those are the rules. Replace the four Sample paragraph blocks with three or four paragraphs of your own writing you'd be happy to be cloned from. Leave the "What's working" notes — they teach Claude why a paragraph lands. Add or remove banned words to match your taste.
Tell Claude to read your context on every task. In Claude Code, add this to your project CLAUDE.md: "Before every task, read everything in my context/ files." In Cowork, set the same line in Settings → Cowork → Edit Global Instructions. From now on every session starts with Claude knowing your voice.
Drop drafts into a gitignored folder. Create drafts/ (or outputs/) at the repo root and put any work-in-progress there. Both folders are already in .gitignore, as are any files matching *.draft.md or *.private.md. Nothing in those paths will ever be committed.
(Optional) Set your Anthropic API key for the Coach UI or the Chrome extension. Skip this step entirely if you're using Claude Code or Cowork — those don't need a separate key. If you do want the UI or the extension: get a key at console.anthropic.com/settings/keys. For the UI, paste it into the API field on first load (persists in localStorage on your machine only), or drop it into a gitignored ui/.local-key.js file. For the extension, paste it into the panel's Settings (persists in chrome.storage.local). The repo ships with no keys.
(Optional) Install one of the Chrome extensions. Open chrome://extensions, toggle Developer mode, click Load unpacked, point at side-panel-coach/ for the side-panel UX or build inline-coach/ first (npm install && npm run build inside it, then load dist/) for the auto-attaching inline UX. Pin the icon. Full instructions in side-panel-coach/README.md and inline-coach/README.md.
Done. Open Claude Code and try "draft me a cold email to [person] asking for [thing]" — Claude will run the full pipeline.
FAQ
winning-writing is a Claude Code plugin with 31 hand-picked skills for content work, indexed on Flowy. Install it with the command on its page. It includes bluf-rewriter, compression, feedback-rephraser. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it