# Blog Style

Learn author writing style from 5 to 10 existing blog posts and generate a voice...

- Repository: https://github.com/AgriciDaniel/claude-blog (2608 stars)
- Category: Writing
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add AgriciDaniel/claude-blog --skill blog-style -g -a claude-code -y`
Codex: `npx skills add AgriciDaniel/claude-blog --skill blog-style -g -a codex -y`
Cursor: `npx skills add AgriciDaniel/claude-blog --skill blog-style -g -a cursor -y`
Gemini CLI: `npx skills add AgriciDaniel/claude-blog --skill blog-style -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add AgriciDaniel/claude-blog`

## Description

Learn author writing style from 5 to 10 existing blog posts and generate a voice profile for /blog style learn, VOICE.md, blog-persona, and blog-write when users ask to infer tone, analyze author voice, learn style, or build a writing baseline.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Blog Style - Writing Style Learning

Learn an author voice profile from existing posts, then use it as a baseline for
VOICE.md, blog-persona, and blog-write. The profile captures measurable style
signals so future drafts can preserve the author's cadence, vocabulary, and
tone.

## Commands

| Command | Purpose |
|---------|---------|
| `/blog style learn <paths>` | Analyze sample posts and generate a voice profile |

## Learn Workflow

Use 5 to 10 representative posts from the same author, brand, or editorial
voice. Accept individual markdown files, MDX files, text files, or a directory
containing posts.

Run the local learner:

```bash
python3 scripts/style_learn.py <paths> --format markdown
```

For machine-readable output:

```bash
python3 scripts/style_learn.py <paths> --format json --output voice-profile.json
```

For a VOICE.md-ready block:

```bash
python3 scripts/style_learn.py <paths> --format markdown --output VOICE.md
```

If fewer than the requested minimum sample count is supplied, warn and continue.
The default minimum is 5 posts.

## Profile Fields

The learner aggregates the existing blog analyzer across each sample post:

- Sentence length mean and median
- Sentence length burstiness as corpus variance
- Vocabulary richness as type-token ratio
- Transition-word sentence rate
- Passive-voice sentence rate
- AI trigger words per 1,000 words as a baseline to preserve or avoid
- Paragraph-length distribution
- First-person usage rate
- Heading-as-question ratio
- Signature phrases from top 2-gram and 3-gram content phrases with stopwords removed
- Tone descriptors derived from the measured metrics

## Consuming the Profile

Drop the markdown block into project `VOICE.md` when the goal is durable
project context. Blog-write can use the style baselines as drafting targets:

The rest: https://github.com/AgriciDaniel/claude-blog/blob/HEAD/brain/.raw/sources/claude-blog-skill/skills/blog-style/SKILL.md
