Agent skill

Blog Voice

by pockethost in pockethost/pockethost

Write PocketHost blog posts in Ben Allfree's voice (@cap'n).

MITAuto-check passedWriting & Content

Install Blog Voice

skills CLI
$ npx skills add pockethost/pockethost --skill blog-voice -a claude-code

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

GitHub CLI
$ gh skill install pockethost/pockethost blog-voice --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/pockethost/pockethost.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/blog-voice .claude/skills/blog-voice && 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-voice
GitHub stars
1.4k
Token cost
~977 tokens
SKILL.md length
429 words
Files
2
Skills in repo
11
Repo updated
First seen
Licence
MIT

At a glance

Write PocketHost blog posts in Ben Allfree's voice (@cap'n).

  • Works in 4 steps: State the old pain or limitation in one… → Explain the new approach in plain terms… → Tie back to user-visible behavior… → …
  • Editing posts under packages/dashboard/src/routes/(static)/blog/
  • SKILL.md covers Author and date, Tone, Punctuation and Structure, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Blog Voice is an agent skill from pockethost/pockethost. Write PocketHost blog posts in Ben Allfree's voice (@cap'n). Use when drafting or editing posts under packages/dashboard/src/routes/(static)/blog/, updating blog/toc.ts, announcing a shipped feature (with feature-blog skill), or when the user asks for blog content in the PocketHost style.

Its SKILL.md is about 980 tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `examples.md`).

It sits in Writing & Content, covering Blog and article writing. The repository describes itself as: Open source multitenant PocketBase server. The licence is MIT.

When your agent uses it

  • Editing posts under packages/dashboard/src/routes/(static)/blog/
  • Updating blog/toc.ts
  • Announcing a shipped feature (with feature-blog skill)
  • The user asks for blog content in the PocketHost style

Example prompts

  • “s voice (@cap”
  • “/blog-voice”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. State the old pain or limitation in one sentence.
  2. Explain the new approach in plain terms (not a file tree).
  3. Tie back to user-visible behavior (dashboard, version picker, serve, etc.).
  4. Optional: one concrete detail (API used, command to run). Not a code dump.

What it can do on your machine

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    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 Voice loads about 977 tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 429 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~75
When it runs · the whole SKILL.md, loaded when a task matches
~977

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from pockethost/pockethost at commit 82c9ba3, republished under its MIT licence (© pockethost). 429 words, ~977 tokens.

Download SKILL.mdSave it as .claude/skills/blog-voice/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
blog-voice
description
Write PocketHost blog posts in Ben Allfree's voice (@cap'n). Use when drafting or editing posts under packages/dashboard/src/routes/(static)/blog/, updating blog/toc.ts, announcing a shipped feature (with feature-blog skill), or when the user asks for blog content in the PocketHost style.

PocketHost blog voice

Write as Ben Allfree. First person, direct, technically literate but not dry.

Author and date

Author metadata lives in packages/dashboard/src/lib/blog/authors.ts (name, handle, email for Gravatar, optional link). Each toc.ts entry sets author (id, default capn) and date (Mon D, YYYY).

Posts no longer open with an inline signature line. The blog layout renders the author row with Gravatar automatically.

To add a new author:

ts
// packages/dashboard/src/lib/blog/authors.ts
contributor: {
  id: 'contributor',
  name: 'Jane Doe',
  handle: '@jane',
  email: 'jane@example.com',
  url: 'https://example.com',
},

Then set author: 'contributor' on the post's toc.ts entry.

Tone

  • Conversational expert. Assume readers know PocketBase. Explain PocketHost-specific context.
  • Honest and personal. Use "I" and "we". No corporate marketing speak.
  • Lead with the user win. Say what changed and why it matters before implementation detail.
  • Short paragraphs. One to four sentences. One idea per block.
  • Plain language. Prefer "download" over "artifact retrieval". Name tools when relevant.

Punctuation

  • No em dashes (—). Use a period and a new sentence, or rewrite.
  • No semicolons to glue independent clauses. Split into two sentences instead.
  • If a sentence only works with an em dash or semicolon, rewrite it.

Structure

LengthPattern
Short announcement (3–6 paragraphs)Hook → what changed → user impact → optional CTA
Longer technical postAdd ### sections. Rhetorical questions OK ("But what about…?")

Avoid changelog-style bullet dumps. One feature per post. See feature-blog skill. Legacy version roundups (pockethost-2-3-0-release) are not the current pattern.

PocketHost vocabulary

Use consistently:

  • PocketHost. The platform
  • PocketBase. The backend framework
  • Mothership. Control-plane PocketBase instance
  • Edge. Instance spawner / regional node
  • Instance. A user's hosted PocketBase

Billing language: Hard paywall. Pay Per PocketBase at $9/mo, $59/yr, or $149 lifetime per slot (250 MB DB + 10 GB files + one powered-on each). Unlimited instance records. Powered-on capped by paid slots. See .cursor/rules/billing-paywall.mdc.

Link internal posts with /blog/{slug} paths.

Show full SKILL.md (149 more words)Show less

Technical posts

When describing engineering work:

  1. State the old pain or limitation in one sentence.
  2. Explain the new approach in plain terms (not a file tree).
  3. Tie back to user-visible behavior (dashboard, version picker, serve, etc.).
  4. Optional: one concrete detail (API used, command to run). Not a code dump.

Skip implementation minutiae agents already know (factory patterns, import paths) unless the post is a deep dive.

File checklist

New post (one folder per slug — see .cursor/rules/blog-articles.mdc):

  1. packages/dashboard/src/routes/(static)/blog/{slug}/+page.md
  2. Co-located images in the same {slug}/ folder; reference with relative paths (![alt](hero.png))
  3. Add entry at top of packages/dashboard/src/routes/(static)/blog/toc.ts with description, date, and author

Slug: lowercase kebab-case, descriptive (webhooks-launch, not post-12).

When the user adds images before or after the draft, scan the slug folder and weave them into the article with sensible alt text and placement.

Examples

See examples.md for representative excerpts from published posts.

© pockethost, 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 1 other file in .cursor/skills/blog-voice of pockethost/pockethost.

  • SKILL.md
  • examples.md

Open the folder on GitHubat commit 82c9ba3

Compare with similar skills

Blog Voice 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 Voice compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Blog Voice this skillpockethost/pockethost1.4k—~977Automated 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 today
    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 yesterday
    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 10 days ago
    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 pockethost/pockethost

All 11 skills in this repo
  • Check Push

    pockethost/pockethost

    Run pnpm check:push (lint, types, tests) before git push or PR-ready work.

    1.4k GitHub stars~665 tokensUpdated 12 days ago
    Auto-check passed
  • Commit

    pockethost/pockethost

    Create scoped git commits from the current conversation (e.g.

    1.4k GitHub stars~1.3k tokensUpdated 12 days ago
    Auto-check: notes
  • Feature Blog

    pockethost/pockethost

    Ship user-facing PocketHost features with a blog post instead of semver release notes.

    1.4k GitHub stars~818 tokensUpdated 12 days ago
    Auto-check passed
  • Lemon Squeezy Integration

    pockethost/pockethost

    Full Lemon Squeezy integration — REST API, @lemonsqueezy/lemonsqueezy.js server SDK, Lemon.js checkout overlays, webhooks, customdata, and subscriptions.

    1.4k GitHub stars~1.1k tokensUpdated 12 days ago
    Auto-check passed
  • Pocketbase

    pockethost/pockethost

    Models PocketBase backends: collections, relations, auth, API rules, migrations, and architecture.

    1.4k GitHub stars~1k tokensUpdated 12 days ago
    Auto-check passed
  • Pocketbase Admin Plugins

    pockethost/pockethost

    Builds PocketBase superuser admin UI extensions (admin plugins) on PB ≥0.37: ServeEvent.uiExtensions, client main.js, window.app SPA hooks, Shablon UI, reactive stores, CSP, SSE/realtime topics.

    1.4k GitHub stars~1.8k tokensUpdated 12 days ago
    Auto-check passed

Questions about Blog Voice

What does Blog Voice do?

Write PocketHost blog posts in Ben Allfree's voice (@cap'n). Blog Voice is an agent skill from pockethost/pockethost. Write PocketHost blog posts in Ben Allfree's voice (@cap'n).

When should I use Blog Voice?

Blog Voice fits situations like: editing posts under packages/dashboard/src/routes/(static)/blog/; updating blog/toc.ts; announcing a shipped feature (with feature-blog skill); the user asks for blog content in the PocketHost style.

How do I install Blog Voice in Claude Code?

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

How do I install Blog Voice in Codex?

Run `npx skills add pockethost/pockethost --skill blog-voice -a codex`. Or copy the skill folder (.cursor/skills/blog-voice in pockethost/pockethost) into .agents/skills/blog-voice in your project. Codex loads it when a task matches its description.

Can I use Blog Voice 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 pockethost/pockethost --skill blog-voice -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-voice, .gemini/skills/blog-voice, .github/skills/blog-voice and .opencode/skills/blog-voice in your project.

What does Blog Voice need to run?

SKILL.md names no scripts, command-line tools or credentials: Blog Voice is instructions for the agent only.

Does Blog Voice 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 Voice 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. Review the folder before installing.

What licence does Blog Voice use?

Blog Voice 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 Voice use?

About 977 tokens (SKILL.md is roughly 3.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Blog Voice?

Skills that share tags, products or a category with Blog Voice: 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 Voice?

pockethost (a GitHub organization) maintains it in pockethost/pockethost, which has 1,444 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on September 28, 2026.

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