Agent skill

Medium Writing

by ericrisco in ericrisco/rsc-harness

A skill your agent uses when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low…

MITAuto-check passedWriting & Content

Install Medium Writing

skills CLI
$ npx skills add ericrisco/rsc-harness --skill medium-writing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ericrisco/rsc-harness medium-writing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/medium-writing .claude/skills/medium-writing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
medium-writing
GitHub stars
156
Token cost
~3.3k tokens
SKILL.md length
1,720 words
Files
4 (incl. references)
Skills in repo
229
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low…

  • Rewriting ONE Medium story so it earns reads
  • SKILL.md covers The two numbers that govern…, Title + subtitle + kicker =…, The first screen earns the read and Scannable body, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Claps and Boost curation — the title

What it does

Medium Writing is an agent skill from ericrisco/rsc-harness. Use when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low read ratio, making a draft scannable and curation-eligible, or reshaping a blog post or newsletter into Medium-native form. NOT scheduling, tags or submitting to a publication (that is medium-publishing), NOT deciding topics or cadence (that is medium-strategy).

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/title-patterns.md`).

It sits in Writing & Content, covering Transcription, Blog and article writing and Newsletters. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.

When your agent uses it

  • Rewriting ONE Medium story so it earns reads
  • Claps and Boost curation — the title
  • Subtitle and kicker as a hook system
  • Fixing a story with views but a low read ratio

Example prompts

  • “/medium-writing”

What it can do on your machine

Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Medium Writing loads about 3.3k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 115 tokens; SKILL.md has 1,720 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~115
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,720 words, ~3,275 tokens.

Download SKILL.mdSave it as .claude/skills/medium-writing/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
medium-writing
description
Use when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low read ratio, making a draft scannable and curation-eligible, or reshaping a blog post or newsletter into Medium-native form. NOT scheduling, tags or submitting to a publication (that is `medium-publishing`), NOT deciding topics or cadence (that is `medium-strategy`).
tags
medium, writing, headlines, hooks, read-ratio, curation, boost, formatting
recommends
medium-publishing, medium-strategy, brand-voice, article-writing, content-engine
origin
risco

Medium Writing — One Story That Gets Read

You produce a single paste-ready Medium story: the hook system, the first screen, the scannable body, the images, the alt text — tuned for the two metrics Medium's 2026 model rewards. You do not publish it and you do not decide what to write.

You own the craft of one Medium story. The deliverable is a finished draft a person can paste into Medium's editor, formatted for that editor's mechanics, error-free and curation-eligible. Three things are explicitly out of scope:

  • Publishing mechanics — connecting the account, scheduling, tags, choosing/submitting to a publication, canonical/import, distribution status. That is medium-publishing.
  • Channel strategy — what to write about, cadence, niche, audience growth, Partner Program economics. That is medium-strategy.
  • The brand's reusable voice definition — that is ../brand-voice/SKILL.md. This skill applies a voice; it does not author one. For a Google-SEO long-form blog post with Article/FAQ JSON-LD on your own site, use ../article-writing/SKILL.md — Medium owns its own on-page surface, so schema is irrelevant here.

The two numbers that govern every choice

Medium's recommendation model is per-article and turns on two funnel ratios, not your follower count or tenure. Optimize for these or nothing else matters.

NumberRule-of-thumb aimWhat it meansWhat earns it
Impressions → views>10%People who saw the card clicked itTitle + subtitle + cover
Views → reads>50%People who clicked stayed 30s+The first screen delivering the title's promise

The two ratios are real and authoritative; the specific >10% and >50% targets are community rule-of-thumb benchmarks, not numbers Medium publishes. Treat them as "good enough to clear the bar," not as Medium's stated model. What Medium does document: a member read counts at 30s+, and the read ratio "adjusts" earnings up or down (Help Center, "Medium Partner Program earnings calculation").

Rule: the title earns the click, the first screen earns the read, and there can be no gap between them. Why: the read ratio (members who read 30s+ ÷ members who loaded the story) adjusts your earnings and explicitly penalizes stories that "attract clicks but do not deliver on the promise of their title or preview" — verbatim from Medium's Distribution Guidelines. A title that over-promises does not just under-perform; it is taxed. (This penalty is about the title/preview promise, not story length — long reads are not penalized for being long.)

Rule: claps feed the recommendation engine. Why: passing roughly 200 claps materially raises the chance Medium surfaces the story to new readers, so write something a reader wants to applaud at the end, not just open.

Title + subtitle + kicker = one hook system

These three are one mechanism, not three decorations. Write them together, last, after the body exists — you cannot promise what you have not yet delivered.

Pick a title archetype to match the payoff:

ArchetypeUse whenExample
Specific resultYou have a concrete number/outcome"How I Cut Our Build Time From 14 Minutes to 90 Seconds"
ContrarianYou disagree with received wisdom"Stop Writing Unit Tests First"
How-toThe value is a repeatable method"A 4-Step Way to Debug Any Flaky Test"
Narrative-IThe lesson rides on your story"I Shipped to Production on Day One. Here's What Broke."
QuestionThe reader shares the open question"Why Does Every Postgres Index Slow Down My Writes?"

The subtitle extends and qualifies the title — it is indexed for on-Medium and external search and is the preview text under the title, so it is load-bearing, never filler. Use it to add the specificity the title leaves out.

  • Bad → title "How I Cut Our Build Time" / subtitle "A story about CI."
  • Good → title "How I Cut Our Build Time From 14 Minutes to 90 Seconds" / subtitle "The fix was three lines of cache config — but finding them took a week of profiling."

The kicker is a short phrase that frames the category, e.g. "Engineering" or "Lessons From a Failed Launch." It sets context before the title lands.

Strong, not sensational. Boost curation rejects shocking or sensational titles, subtitles, and covers. A strong title makes a specific, deliverable promise; a sensational one manufactures alarm or withholds to bait the click. "How I Cut Our Build Time From 14 Minutes to 90 Seconds" is strong. "This One Trick Will SHOCK Your DevOps Team" is sensational and disqualifying. The full archetype library, with annotated Bad→Good pairs and the sensational-vs-strong line, is in references/title-patterns.md.

The first screen earns the read

The read ratio is won or lost above the first scroll. The reader arrived because the title made a promise; pay it immediately.

  • Rule: open on the promise within ~3 sentences. Why: every sentence of warm-up is a sentence in which a member can bounce before the 30-second read counts.
  • Rule: kill the meta-throat-clearing. Delete "In this article, I'll…", "Before we dive in…", "We've all been there…". Why: it announces the article instead of being the article, and it reads as AI filler to curators.
  • Rule: land one concrete payoff before the first scroll. Why: a number, a result, a sharp claim, or the single most useful line — proof the promise is real.

Bad → "Performance is something every engineer cares about. In this post, I want to share some thoughts on build times and why they matter to teams like ours."

Good → "Our CI took 14 minutes. After a week of profiling, three lines of cache config took it to 90 seconds. Here is exactly what those three lines were and how I found them."

Scannable body

Most readers scan before they commit. Build the page so a scan still delivers value.

  • Section headers are scan anchors. Let a reader lock onto the part they want; one header per distinct idea.
  • One idea per short block. Paragraphs of 1–3 sentences. A wall of text is the second-most-common read-ratio killer after a weak first screen.
  • Pull-quote the one screenshot-worthy line. Exactly one per story — the line you would want someone to share.
  • Drop cap is optional and at most once, at the open.
  • Rule: less is more on styling. Why: over-mixing drop caps, pull-quotes, bold runs, and embeds reads amateur and distracts from the argument; pick the few that earn their place.
Show full SKILL.md (704 more words)Show less

Images and alt text

  • The cover image sets the preview card alongside the title and subtitle — it participates in impressions→views, and like the title it must not be sensational.
  • In-body images break long text stretches and give the eye a rest; place one before any section that runs long.
  • Rule: every image gets alt text. Why: it is an accessibility requirement and a free relevance signal; describe the image's content, not "image1.png".

Boost-eligibility pass

Boost is human curation against Medium's Distribution Guidelines, and publications/editors remain a main discovery path into it — so the bar is "reads like a curated publication piece." (Medium closed the Boost Nomination Program on 2026-05-31 and is replacing it with an Editor Partner Program, expanded in July 2026; the Distribution Guidelines applied to Boost are unchanged, so this gate still holds.) Before delivering, run this gate — every item must pass:

  • Error-free — spelling, grammar, broken links, and formatting all clean. Copyediting is gating, not cosmetic.
  • Appropriately sourced — claims, stats, and quotes attributed with links; nothing asserted bare.
  • Narratively strong — a clear arc with a beginning, a middle, and a payoff; not a loose list of tips.
  • Not sensational — title, subtitle, and cover are strong but not shocking, explicit, or alarmist.
  • Human-written — AI-generated content is not Boost-eligible; the prose must read as the author's, with specific lived detail, not generic.
  • Not aggressively promotional — a sales pitch dressed as an article is deprioritized.

(The 180-day freshness window is a publishing-time concern — medium-publishing owns it. Your job is that the craft passes the moment it is published.)

Editor mechanics — label the structural lines

Medium's editor derives structure from formatting, not metadata: the first line of the story is the title (large "T"), the line directly below it formatted small "t" is the subtitle, and a kicker is a short phrase on a line above the title, also small "t". Mis-formatting these can render the story ineligible for curation. So the delivered draft must label them explicitly so the author applies the right formatting:

text
KICKER:   Engineering
TITLE:    How I Cut Our Build Time From 14 Minutes to 90 Seconds
SUBTITLE: The fix was three lines of cache config — but finding them took a week of profiling.

[body starts here…]

Tell the author plainly: in Medium's editor, type the kicker line first and format it small "t", then the title as the large "T" line, then the subtitle small "t" directly under it.

Learn from the author's stats (02-DOCS)

If 02-DOCS/ exists, learn before you write:

  • Read raw exports under 02-DOCS/raw/medium/ and any compiled patterns under 02-DOCS/wiki/medium/.
  • Bias toward the title/subtitle patterns and topics that historically beat a 50% read ratio for this author; avoid angles that drew clicks but bounced.
  • After a notable result, append the learned pattern to 02-DOCS/wiki/medium/read-ratio-patterns.md so the next draft inherits it.

read-ratio-patterns.md lives in the 02-DOCS/wiki/ OKF v0.1 bundle, so it carries YAML frontmatter with a non-empty type: — one block at the top, with new pattern blocks prepended newest-first below it. Use type: medium-record (the same type the medium-strategy skill writes under 02-DOCS/wiki/medium/, keeping the two skills' wiki content consistent). Create it with this header if it does not yet exist:

markdown
---
type: medium-record
title: Read-ratio patterns — Medium
description: Title/subtitle/topic patterns that historically beat a 50% read ratio for this author.
tags: [medium, read-ratio, titles, hooks]
timestamp: 2026-06-02T00:00:00Z
topic: medium
status: stable
---

## 2026-06-02 — <pattern learned>
- <title/subtitle archetype + topic that beat the 50% read ratio, with the number observed>

Cross-references use standard markdown links ([Text](./what-worked.md)), never wikilinks ([[...]]).

If 02-DOCS/ is absent, proceed from the craft defaults above and say so in one line, rather than inventing stats.

Anti-patterns

Anti-patternWhy it failsDo instead
Sensational title ("SHOCKING", "You won't believe…")Disqualifies the story from Boost curationStrong, specific, deliverable promise
Title over-promises the bodyMember read ratio penalizes the click-gap and taxes earningsWrite title + subtitle last, only promise what the body delivers
Warm-up intro ("In this article, I'll…")Members bounce before the 30s read countsOpen on the promise in ~3 sentences with a concrete payoff
Wall of textScanners leave; read ratio dropsSection headers, 1–3 sentence blocks, one idea per block
Over-styled (drop cap + 5 pull-quotes + bold everywhere)Reads amateur; distracts from the argumentLess is more; one pull-quote, headers, sparing bold
Generic AI-tell prose, no lived detailNot Boost-eligible; readers don't clapSpecific numbers, names, and first-hand detail in the author's voice
Claims with no sourcesFails the "appropriately sourced" curation gateAttribute every stat/quote with a link

Cross-references

  • Publish, schedule, tag, or submit the finished draft → medium-publishing.
  • Decide topics, cadence, niche, monetization → medium-strategy.
  • Define the reusable voice this draft writes in → ../brand-voice/SKILL.md.
  • A Google-SEO blog post with JSON-LD on your own site → ../article-writing/SKILL.md.
  • A multi-channel editorial calendar/pipeline → ../content-engine/SKILL.md.

© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in skills/medium-writing of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/title-patterns.md

Open the folder on GitHubat commit 92fde8f

Compare with similar skills

Medium Writing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Medium Writing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Medium Writing this skillericrisco/rsc-harness156—~3.3kAutomated safety check: PassMIT
Personal Chinese Writing Stylesugarforever/01coder-agent-skills136—~744Automated safety check: PassMIT
Voice Buildercharlie947/social-media-skills3.8k—~3.3kAutomated safety check: PassMIT
Youtube ContentTommy-yw/RunbookHermes5461 repos~785Automated safety check: PassMIT
Humanizer Zhai-zixun/humanizer-zh175—~1.2kAutomated safety check: PassMIT
Content Writer Agentmastra-ai/mastra29k—~1.3kAutomated safety check: PassCustom licence

Similar skills

  • Personal Chinese Writing Style

    sugarforever/01coder-agent-skills

    Apply the user's Chinese writing style when writing, translating, editing, proofreading, polishing, or publishing Chinese content, including blog posts, articles, subtitles, captions, tweets/X…

    136 GitHub stars~744 tokensUpdated 3 mo ago
    Writing & ContentAuto-check passed
  • Voice Builder

    charlie947/social-media-skills

    Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.

    3.8k GitHub stars~3.3k tokensUpdated 23 days ago
    Writing & ContentAuto-check passed
  • Youtube Content

    Tommy-yw/RunbookHermes

    Fetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts).

    546 GitHub starsUsed in 1 repo~785 tokens
    Writing & ContentAuto-check passed
  • Humanizer Zh

    ai-zixun/humanizer-zh

    Remove signs of AI-generated, translated, or overly mechanical Chinese prose.

    175 GitHub stars~1.2k tokensUpdated 4 mo ago
    Writing & ContentAuto-check passed
  • Content Writer Agent

    mastra-ai/mastra

    Authoring playbook for building agents that draft written content — blog posts, marketing copy, social media posts, newsletters, product descriptions, landing pages, or ad copy.

    29k GitHub stars~1.3k tokensUpdated today
    Writing & ContentAuto-check passed
  • Content Strategy And Assembly

    jacob-dietle/context-os

    This skill should be used when producing content (newsletter posts, blog posts, LinkedIn posts) from existing corpus material.

    111 GitHub stars~3.1k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed

More from ericrisco/rsc-harness

All 229 skills in this repo
  • Ab Testing

    ericrisco/rsc-harness

    A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…

    156 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Accessibility

    ericrisco/rsc-harness

    A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…

    156 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Ads

    ericrisco/rsc-harness

    A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…

    156 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Agent Eval

    ericrisco/rsc-harness

    A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…

    156 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed
  • AI Media

    ericrisco/rsc-harness

    A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…

    156 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Analytics

    ericrisco/rsc-harness

    A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.

    156 GitHub stars~2.8k tokensUpdated yesterday
    Auto-check passed

Questions about Medium Writing

What does Medium Writing do?

A skill your agent uses when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low…. Medium Writing is an agent skill from ericrisco/rsc-harness. Use when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low read ratio, making a draft scannable and curation-eligible, or reshaping a blog post or newsletter into Medium-native form.

When should I use Medium Writing?

Medium Writing fits situations like: rewriting ONE Medium story so it earns reads; claps and Boost curation — the title; subtitle and kicker as a hook system; fixing a story with views but a low read ratio.

How do I install Medium Writing in Claude Code?

Run `npx skills add ericrisco/rsc-harness --skill medium-writing -a claude-code`. Or copy the skill folder (skills/medium-writing in ericrisco/rsc-harness) into .claude/skills/medium-writing in your project. Claude Code loads it when a task matches its description.

How do I install Medium Writing in Codex?

Run `npx skills add ericrisco/rsc-harness --skill medium-writing -a codex`. Or copy the skill folder (skills/medium-writing in ericrisco/rsc-harness) into .agents/skills/medium-writing in your project. Codex loads it when a task matches its description.

Can I use Medium Writing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill medium-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/medium-writing, .gemini/skills/medium-writing, .github/skills/medium-writing and .opencode/skills/medium-writing in your project.

What does Medium Writing need to run?

SKILL.md names no scripts, command-line tools or credentials: Medium Writing is instructions for the agent only.

Does Medium Writing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Medium Writing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Medium Writing use?

Medium Writing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Medium Writing use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.

What are the alternatives to Medium Writing?

Skills that share tags, products or a category with Medium Writing: Personal Chinese Writing Style (sugarforever/01coder-agent-skills, 136 stars), Voice Builder (charlie947/social-media-skills, 3.8k stars), Youtube Content (Tommy-yw/RunbookHermes, 546 stars) and Humanizer Zh (ai-zixun/humanizer-zh, 175 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Medium Writing?

ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.

Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.