Agent skill

Blog Post Writer

by nicknisi in nicknisi/claude-plugins

Turn Nick Nisi's raw material into a blog post draft in his voice.

MITAuto-check passedWriting & Content

Install Blog Post Writer

skills CLI
$ npx skills add nicknisi/claude-plugins --skill blog-post-writer -a claude-code

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

GitHub CLI
$ gh skill install nicknisi/claude-plugins blog-post-writer --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/nicknisi/claude-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/content/skills/blog-post-writer .claude/skills/blog-post-writer && 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
blog-post-writer
GitHub stars
114
Token cost
~1.8k tokens
SKILL.md length
1,020 words
Files
33 (incl. scripts, references)
Skills in repo
12
Repo updated
First seen
Licence
MIT

At a glance

Turn Nick Nisi's raw material into a blog post draft in his voice.

  • Works in 7 steps: Gather the raw material → Interview for the parts you cannot mine → Read the corpus, not a description of it → …
  • The user says write a blog post
  • SKILL.md covers The rule this skill exists to…, Process, Output Format and Bundled Resources
  • Calls python3

What it does

Blog Post Writer is an agent skill from nicknisi/claude-plugins. Turn Nick Nisi's raw material into a blog post draft in his voice. Use when the user says "write a blog post," "draft a post," "write about [topic]," "turn my notes into a blog post," or provides scattered ideas that need shaping. Produces a deliberately flat draft with sourced facts and tagged gaps — never a finished post.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 33 other files, including scripts and reference files (for example `references/catch-22.md`, `references/comedians-set.md` and `references/compare-contrast.md`).

It sits in Writing & Content, covering Blog and article writing. The repository describes itself as: Nick's own marketplace of Claude Plugins. The licence is MIT.

When your agent uses it

  • The user says write a blog post
  • Write about [topic]
  • Turn my notes into a blog post
  • Provides scattered ideas that need shaping

Example prompts

  • “write a blog post,”
  • “draft a post,”
  • “write about [topic],”
  • “/blog-post-writer”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Gather the raw material
  2. Interview for the parts you cannot mine
  3. Read the corpus, not a description of it
  4. Structure from the material
  5. Write the ugly draft
  6. Run the structural gate — before Nick reads it
  7. Hand off, don't ship

What it can do on your machine

Read from SKILL.md and the folder at commit 6a6decd. 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

    Ships 1 file in scripts/, which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    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

Blog Post Writer loads about 1.8k tokens when it runs, and up to ~46k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 1,020 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from nicknisi/claude-plugins at commit 6a6decd, republished under its MIT licence (© nicknisi). 1,020 words, ~1,773 tokens.

Download SKILL.mdSave it as .claude/skills/blog-post-writer/SKILL.md (or your agent's skills folder). This skill also uses 32 other files; get the full folder from GitHub.
name
blog-post-writer
description
Turn Nick Nisi's raw material into a blog post draft in his voice. Use when the user says "write a blog post," "draft a post," "write about [topic]," "turn my notes into a blog post," or provides scattered ideas that need shaping. Produces a deliberately flat draft with sourced facts and tagged gaps — never a finished post.

Nick Nisi Blog Writer

Turn raw material into a draft Nick finishes. This skill does research, structure, and connective prose. It does not produce publishable first-person writing.

The rule this skill exists to enforce

Facts may come from logs. Feelings may not.

An earlier version of this skill shipped a post that readers called AI slop. The facts were impeccable — real timestamps, real commit stats, real Slack quotes. The failure was that it also generated Nick's inner life: what he thought, what he'd assumed, what moved him. Nine such claims; one had a source. Readers can't always name that, but they feel it, and they stop trusting the piece.

The measured version: that post claimed inner states at 5.84 per 1,000 words against Nick's corpus mean of 0.97. Six times his rate. He mostly writes about what he built. The draft wrote about how he felt about what he built.

Everything below follows from that.

Process

1. Gather the raw material

Accept the mess: scattered thoughts, code, commands, conclusions, links. Don't require organization.

If the material is thin, mine it — session logs, Slack, git history, the repos themselves. This is the pipeline's genuine strength and there's no reason to hold back. Record a source for every fact. A working file of claim → source keeps the draft honest and makes step 5 mechanical.

2. Interview for the parts you cannot mine

This is the highest-value step in the skill. Do not skip it.

Logs record what Nick did. They never record what he thought. Ask 8–15 targeted questions with ask_user_question or plain prose, and capture the answers verbatim:

  • "What did you actually think when X happened?"
  • "Why did you really stop doing Y? Not the tidy reason — the real one."
  • "What's the part of this you'd argue with someone about?"
  • "What did you get wrong that you'd rather not include?"

Tell him to type fast and not polish. His unpolished answers are the raw material for every voice-load-bearing sentence in the post. They will be flat, hedged, and specific — that flatness is the voice. Do not smooth it.

If he declines to be interviewed, the post ships with [NICK: ...] markers where his inner life would go. That is a correct outcome, not a failure.

3. Read the corpus, not a description of it

Read 2–3 recent posts from src/content/posts/ in full — most recent first, plus any on a similar topic. Write connective prose consistent with those, not with a summary of them.

Then read references/voice-tone.md, which is now a list of ceilings and prohibitions, not features to hit. Requesting a feature makes a model execute it every time it applies; that's what produced eight aphorisms in an eight-section post. Only constraints are safe to state.

4. Structure from the material

Find the chronology or the argument already in the facts and follow it.

Do not select a narrative framework. references/frameworks.md exists as diagnostic vocabulary for talking about a draft that already exists — never as a template to fill. Choosing a framework means choosing what the events meant, which is Nick's call, not the tool's. A flawlessly executed Story Circle is the single most detectable artifact this skill can produce, because no human drafting from memory has ever produced one.

The only structural instruction: identify the one turn the post exists to make, arrange the facts so it lands, and leave flat ground everywhere else.

Section headers are descriptive — they name the topic ("What Fleet is", "Three signals, none trustworthy alone"). Allusive narrative-beat headers ("The drift", "Coming home") read as chapter titles and are a tell in bulk.

Show full SKILL.md (424 more words)Show less
5. Write the ugly draft

Informationally complete, rhetorically inert. Aim for flat.

Nick is good at adding voice to plain prose and bad at excising pastiche from clever prose. A draft that already sounds finished is the worst possible artifact to hand him — he has to fight it. Give him something that obviously needs him.

Hard rules while drafting:

RuleWhy
Every mental-state sentence is a verbatim quote from step 2, or a [NICK: what were you actually thinking here?] markerThe core failure. Untagged invented interiority is an automatic fail.
Sections end on information — a fact, a number, a command, or just stopEight aphoristic endings is the template's silhouette
Every number traces to a source"Twelve minutes of curiosity" was invented precision that narrativizes a life
One sustained metaphor per post, maximumA metaphor recurring across 3+ sections is a framework fingerprint
No narrator stage directions"Now watch what happened next" is Nick emceeing a post he'd never emcee

Where you'd reach for a rhetorical flourish, write the plain sentence instead and let Nick decide whether it deserves more.

6. Run the structural gate — before Nick reads it
bash
python3 scripts/slopcheck.py \
  --corpus '/Users/nicknisi/Developer/nicknisi.com/src/content/posts/*.md*' \
  --draft path/to/draft.mdx

It calibrates against Nick's real posts and flags outliers in both directions — suppression is as suspicious as excess. A draft engineered to dodge a metric looks different from one that never considered it.

The gate's job is to produce Nick's rewrite list, not to certify the draft. Fix what it flags, then hand over.

The interiority section always prints and is not scored against the corpus — it exits non-zero while any claim is unconfirmed. A structurally clean draft with unconfirmed first-person claims is not a passing draft. Those lines go to Nick, not to you.

Vocabulary checks (the tighten-prose skill) run last and matter least. They scan for 2024-era tells like "delve" and "leverage" and will pass a maximally slop-shaped draft — they did exactly that on the post that caused this rewrite.

7. Hand off, don't ship

Deliver:

  1. The flat draft
  2. The interiority list — every sentence claiming his inner life, for him to rewrite or cut
  3. The gate output
  4. Open questions

Do not publish a post whose first-person sentences Nick has not read and approved. He isn't the editor of this artifact. He's the only source for half of it.

Output Format

See references/post-template.md for frontmatter schema and file conventions.

Bundled Resources

  • references/voice-tone.md — ceilings and prohibitions, with measured rates from his corpus
  • references/post-template.md — frontmatter schema and structural skeleton
  • references/frameworks.md — diagnostic vocabulary for critiquing a finished draft
  • scripts/slopcheck.py — corpus-calibrated structural detector

© nicknisi, 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 32 other files (scripts, references) in plugins/content/skills/blog-post-writer of nicknisi/claude-plugins.

  • SKILL.md
  • references/catch-22.md
  • references/comedians-set.md
  • references/compare-contrast.md
  • references/converging-ideas.md
  • references/existential-awakening.md
  • references/frameworks.md
  • references/freytags-pyramid.md
  • references/in-medias-res.md
  • references/kafkaesque-labyrinth.md
  • references/kishotenketsu.md
  • references/nested-loops.md
  • references/post-mortem.md
  • references/post-template.md
  • references/problem-agitation-solution.md
  • references/progressive-disclosure.md
  • references/reverse-chronology.md
  • references/scqa.md
  • references/sisyphean-arc.md
  • references/socratic-path.md
  • … and 13 more

Open the folder on GitHubat commit 6a6decd

Compare with similar skills

Blog Post Writer 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.

Blog Post Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Blog Post Writer this skillnicknisi/claude-plugins114—~1.8kAutomated safety check: PassMIT
Khazix WeChat Article WriterKKKKhazix/khazix-skills21k1 repos~2.9kAutomated safety check: PassMIT
Figurevectorize-io/hindsight48k—~1.9kAutomated safety check: PassMIT
SepiaNanako0129/sepia3.1k—~3.6kAutomated safety check: PassMIT
Blog Post Draftingluongnv89/claude-howto42k—~2.1kAutomated safety check: PassMIT
Notion To Blogwasp-lang/wasp19k—~922Automated safety check: PassMIT

Similar skills

  • Khazix WeChat Article Writer

    KKKKhazix/khazix-skills

    Writes long-form WeChat official account articles in the personal style of the Khazix account, from briefs, links, PDFs or rough notes, with a topic quality check.

    21k GitHub starsUsed in 1 repo~2.9k tokens
    Writing & ContentAuto-check passed
  • Figure

    vectorize-io/hindsight

    Draw an animated figure (boxes, arrows, moving data) as one self-contained SVG for a GitHub README, PR, issue or blog post.

    48k GitHub stars~1.9k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Sepia

    Nanako0129/sepia

    Make AI-generated writing read as human-written, in fiction and in professional prose.

    3.1k GitHub stars~3.6k tokensUpdated 2 days ago
    Writing & ContentAuto-check passed
  • Blog Post Drafting

    luongnv89/claude-howto

    Guides drafting a blog post from an idea and optional source material: research, brainstorming, outlining and version-tracked drafts, with user approval at each step.

    42k GitHub stars~2.1k tokensUpdated today
    Writing & ContentAuto-check passed
  • Notion To Blog

    wasp-lang/wasp

    Transfer a blog post from Notion to the Wasp blog. An agent skill from wasp-lang/wasp.

    19k GitHub stars~922 tokensUpdated today
    Writing & ContentAuto-check passed
  • Blog Post

    nteract/semiotic

    Author a new entry for the Semiotic blog. An agent skill from nteract/semiotic.

    2.7k GitHub stars~3.4k tokensUpdated today
    Writing & ContentAuto-check passed

More from nicknisi/claude-plugins

All 12 skills in this repo
  • Image Gen

    nicknisi/claude-plugins

    Generate or edit images via Google Gemini (nano-banana-pro) or OpenAI gpt-image-2.

    114 GitHub stars~502 tokensUpdated 2 mo ago
    Auto-check passed
  • Prototype

    nicknisi/claude-plugins

    Build a throwaway prototype to answer a design question before committing to real implementation.

    114 GitHub stars~1.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Squad Review

    nicknisi/claude-plugins

    Review the current branch with six specialist lenses (security, correctness, conventions, tests, architecture, duplication), then put every finding through an adversarial verifier that tries to…

    114 GitHub stars~751 tokensUpdated 2 mo ago
    Auto-check passed
  • Tmux

    nicknisi/claude-plugins

    Read and drive other tmux panes when Claude runs inside tmux.

    114 GitHub stars~3.1k tokensUpdated 2 mo ago
    Auto-check passed
  • Youtube Notes

    nicknisi/claude-plugins

    Pull captions from a YouTube video and turn them into chapter-aligned notes where every claim carries a clickable timestamp.

    114 GitHub stars~2.8k tokensUpdated 2 mo ago
    Auto-check passed
  • Conference Talk Builder

    nicknisi/claude-plugins

    Create conference talk outlines and slide-by-slide content plans using narrative frameworks.

    114 GitHub stars~2.7k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Blog Post Writer

What does Blog Post Writer do?

Turn Nick Nisi's raw material into a blog post draft in his voice. Blog Post Writer is an agent skill from nicknisi/claude-plugins. Turn Nick Nisi's raw material into a blog post draft in his voice.

When should I use Blog Post Writer?

Blog Post Writer fits situations like: the user says write a blog post; write about [topic]; turn my notes into a blog post; provides scattered ideas that need shaping.

How do I install Blog Post Writer in Claude Code?

Run `npx skills add nicknisi/claude-plugins --skill blog-post-writer -a claude-code`. Or copy the skill folder (plugins/content/skills/blog-post-writer in nicknisi/claude-plugins) into .claude/skills/blog-post-writer in your project. Claude Code loads it when a task matches its description.

How do I install Blog Post Writer in Codex?

Run `npx skills add nicknisi/claude-plugins --skill blog-post-writer -a codex`. Or copy the skill folder (plugins/content/skills/blog-post-writer in nicknisi/claude-plugins) into .agents/skills/blog-post-writer in your project. Codex loads it when a task matches its description.

Can I use Blog Post Writer 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 nicknisi/claude-plugins --skill blog-post-writer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/blog-post-writer, .gemini/skills/blog-post-writer, .github/skills/blog-post-writer and .opencode/skills/blog-post-writer in your project.

What does Blog Post Writer need to run?

Going by SKILL.md and its folder, Blog Post Writer needs the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Blog Post Writer 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 Blog Post Writer 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Blog Post Writer use?

Blog Post Writer 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 Blog Post Writer use?

About 1.8k tokens (SKILL.md is roughly 7.1k 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 44k tokens, read only when the agent opens those files.

What are the alternatives to Blog Post Writer?

Skills that share tags, products or a category with Blog Post Writer: Khazix WeChat Article Writer (KKKKhazix/khazix-skills, 21k stars), Figure (vectorize-io/hindsight, 48k stars), Sepia (Nanako0129/sepia, 3.1k stars) and Blog Post Drafting (luongnv89/claude-howto, 42k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Blog Post Writer?

nicknisi (a GitHub user) maintains it in nicknisi/claude-plugins, which has 114 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on August 11, 2026.

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