Blog Voice Learner
Extracts a reusable author voice baseline from existing posts.
The skill appears limited to reading user-supplied local posts and producing VOICE.md or JSON, with no declared network, credential, or privileged operations; MIT licensing and a relatively narrow data flow reduce risk. However, sensitive-content handling, overwrite confirmation, rollback, dependency security, and path isolation are unspecified, so trust is well below full marks.
The workflow, input formats, output formats, and abnormal-input behavior are described clearly, and the repository provides CI and testing infrastructure. However, the referenced scripts/style_learn.py is not included in the evidence, and no tests or reproducible failure evidence cover this key path; the static ceiling and coverage gap require a conservative score.
The audience, semantic triggers, 5-to-10-post input range, supported file types, and downstream uses are fairly clear. Non-fit boundaries, Chinese-language style support, and behavior for mixed authors, duplicate samples, or ambiguous directories are not specified, so points are deducted.
The skill has standard frontmatter, a command table, argument hint, field documentation, error handling, MIT licensing, and partial repository-level version and CI signals. It lacks skill-specific versioning, changelog, maintenance owner, installation/dependency notes, troubleshooting, input/output examples, and an update path.
If the referenced script exists and is compatible, the skill should convert multiple posts into a reusable style profile for downstream blog skills, giving it a clear core benefit. The implementation, representative outputs, and directly usable results for this selected path are not provided, and no evidence shows that the metrics improve drafting outcomes, so only limited static credit is warranted.
The repository claims CI, tests, and deterministic testing, but the supplied tests mainly cover Brain adapters and general pipelines, not blog-style learning. There is no skill-specific test suite, independent review, or verifiable output evidence, so the score remains near the static minimum.
- Before use, verify that scripts/style_learn.py exists, that relative paths resolve correctly, and that its dependencies are available.
- The skill processes author content but does not define handling, retention, overwrite behavior, or cleanup for sensitive data, personal information, or generated VOICE.md files.
- Repository-wide CI and quality claims do not substitute for tests of the blog-style key path; do not assume the style metrics or output have been validated.
- Chinese metric validity is not documented; Chinese users should manually review whether sentence length, vocabulary richness, and AI-trigger metrics are meaningful for representative Chinese samples.
What does this skill do, and when should you use it?
Blog Voice Learner is the focused `blog-style` skill in the claude-blog repository. It learns from 5 to 10 posts written in the same author, brand, or editorial voice and turns measurable style signals into a reusable profile. It reads Markdown, MDX, text files, or directories and runs a local Python learner. The result can support `VOICE.md`, `blog-persona`, and `blog-write`, but this skill does not itself provide the repository’s broader research, SEO auditing, or publishing workflows.
Accepts article paths through /blog style learn <paths>; reads Markdown, MDX, text files, or a directory; runs python3 scripts/style_learn.py <paths> --format markdown; and produces Markdown, JSON, or VOICE.md-ready output. It measures mean and median sentence length, sentence-length variance, vocabulary richness, transition-word sentence rate, passive-voice rate, AI-trigger baseline, paragraph-length distribution, first-person usage, question-heading ratio, signature 2-gram and 3-gram phrases, and derived tone descriptors. Missing paths, unsupported files, and insufficient samples generate warnings; empty samples return zeroed metrics.
- A solo blogger has 5 to 10 representative posts and wants future drafts to preserve the established cadence and vocabulary.
- A marketing team wants to derive a reusable `VOICE.md` from existing brand content.
- An editor needs structured style values for creating or updating a `blog-persona` profile.
- A Claude Code skill builder wants a measurable writing baseline instead of an informal tone description.
What are this skill's strengths and limitations?
- Produces measurable style signals rather than only a broad tone label.
- Accepts Markdown, MDX, text files, and directories.
- Supports Markdown, JSON, and `VOICE.md`-ready outputs.
- Defines handling for missing paths, unsupported files, and empty samples.
- Its scope is style learning, not full blog research, SEO, fact-checking, or publishing.
- The recommended sample size is 5 to 10 posts; small samples reduce stability.
- The skill uses Claude Code slash-command conventions, so other clients require adaptation.
- The source provides no standalone installation procedure or independent test evidence for this skill.
How do you install this skill?
This skill is distributed as part of the full AgriciDaniel/claude-blog repository; the source does not document a standalone installation for skills/blog-style/SKILL.md. The README supports the public-repository flow: git clone https://github.com/AgriciDaniel/claude-blog.git, inspect install.sh, then optionally run git checkout v1.9.0, chmod +x install.sh, and ./install.sh. Restart Claude Code after installation.
How do you use this skill?
Collect 5 to 10 representative posts from the same author, brand, or editorial voice. Run python3 scripts/style_learn.py <paths> --format markdown. For machine-readable output, use python3 scripts/style_learn.py <paths> --format json --output voice-profile.json; for a VOICE.md block, use python3 scripts/style_learn.py <paths> --format markdown --output VOICE.md. In Claude Code, the documented trigger is /blog style learn <paths>. Fewer than five posts are allowed, but the profile may be less stable.
How does this skill compare with similar options?
Compared with asking a model to imitate a voice in a single prompt, it builds a structured baseline from multiple samples. Compared with the full claude-blog suite, it is narrower and focused on style learning and voice reuse.