CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/blog-writer

Write developer blog posts from video transcripts, meeting notes, or rough ideas. Extracts narrative from source material, structures content with hooks and technical sections, formats code examples with placeholders, and checks drafts against 37 AI anti-patterns with structural variant detection, three-pass scanning (surface, skeleton, soul check), craft sweep, and rewrite auditing. Enforces sentence/paragraph craft rules, facts-over-assessments principles, and honest limitations. Includes interactive onboarding to learn the author's voice from writing samples. Persona files live at ~/.claude/blog-writer-persona/ by default, with symlink support for custom locations (e.g. Google Drive for backup). Optional global voice saves your voice profile to Claude Code user memory so it applies across all projects. Use this skill whenever the user wants to write a blog post, draft a blog, turn a transcript into a blog, work on blog content, or mentions "blog" in the context of content creation. Also trigger when the user provides a video transcript and wants written content derived from it, or when continuing work on a blog series.

92

1.51x
Quality

90%

Does it follow best practices?

Impact

94%

1.51x

Average score across 6 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

CHANGELOG.md

Changelog

Unreleased

Fixed

  • Eval scenario-2 (voice-profile onboarding) was scoring 0/0 — its output spec and all 11 criteria targeted the absolute ~/.claude/blog-writer-persona/ path, which the eval grader (working-directory only) cannot see, so every criterion failed in both baseline and with-context. Redirected outputs to the working directory; the scenario now grades real output (baseline 91 → with-context 100).

Removed

  • Retired four no-lift eval scenarios per jbaruch/coding-policy: plugin-evals ("lift, not attainment"), confirmed across two runs: the blog-writer-framework-override scenario (contrived, near-zero lift), and scenario-1 / scenario-5 / scenario-6 (anti-pattern cleanup, soul check, tightening) whose baselines run 94–99% — coincidence with universal competence, no headroom for the tile to show lift. Kept scenarios (0, 2, 3, 4, 7, 8) all contribute positive lift.

Added

  • Optional persona/framework.md for post-level voice overrides — A persona can now ship a persona/framework.md declaring post-level architecture (opening modes, argument shape by post type, density philosophy, first-person rules, closing modes, off-voice moves). When the file exists and has content, the skill reads it immediately after persona/voice.md and it overrides the Blog Anatomy section plus the narrative-density doctrine in references/tone-guide.md. Personas without the file are unaffected — the generic Blog Anatomy still applies. Originally contributed by @shelajev.

CHANGELOG.md

README.md

SKILL.md

tessl.json

tile.json