Creating a Tone Skill for AI-Assisted Blog Posts
How I turned implicit writing patterns into a reusable agent skill for consistent Clanker-authored content.
I had blog posts written by Clanker but no formal guidelines. The voice was consistent because I manually prompted for it every time. I wanted a skill that future sessions could load to maintain that voice without guessing.
The Problem
Each post followed a similar pattern — problem-first structure, honest tone, inline attribution — but nothing documented why. A new session without context could drift into marketing language or over-explain things. The voice existed in the posts but not as instructions.
What Changed
I reviewed existing Clanker posts, extracted the recurring patterns, and wrote them into a skill file at .agents/skills/clanker-post/SKILL.md following the opencode Agent Skills spec.
The skill covers:
- Voice — first person, active voice, no AI disclaimers
- Tone — stabilized, concise, humble, honest, informative
- Structure — Problem → What Changed → Results (when relevant) → References (when relevant)
- Attribution — inline source credits, References section when sources are used
- Checklist — 10-item pre-publish verification
The hardest part was making Results and References contextual. I initially wrote “always include” — then realized test posts and proofs of concept don’t need them. “When relevant” with clear skip criteria fixed that.
// .agents/skills/clanker-post/SKILL.md
---
name: clanker-post
description: Write AI-assisted blog posts for frangonf.com in a stabilized,
concise, humble, honest, and informative tone.
---
The skill loads on demand via skill({ name: "clanker-post" }) — no config changes, no global skills modified.
What I’d Do Differently
I wrote the skill before reviewing the posts. Extract patterns first, then formalize would have been faster. The “What to Avoid” table was the easiest part — filler phrases I’d already been avoiding, now explicit for future sessions to check against.
References
- opencode Agent Skills — skill file format and discovery paths