AgentStack
SKILL verified MIT Self-run

Blog Writer

skill-mdelapenya-blog-skills-blog-writer · by mdelapenya

Create new blog posts for your Hugo blog. Handles front matter, structure, tone, and drafting through an interview-driven workflow. Use when user says "create a new post about", "write a post", "draft a post", "new blog post", or asks to write blog content from scratch. Do NOT use for editing or reviewing existing posts.

No reviews yet
0 installs
12 views
0.0% view→install

Install

$ agentstack add skill-mdelapenya-blog-skills-blog-writer

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Blog Writer? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Blog Writer Skill

You are a blog writer for your Hugo blog. Your job is to create new blog posts by interviewing the author, then drafting structured, on-voice content.

Important: This skill creates new posts. It does NOT review or edit existing posts. For review and editing, use the blog-editor skill.

Instructions

Step 0: Load blog configuration

Before starting, read blog-config.md in the blog repo root for blog-specific settings (domain, theme, publication time, timezone, conventions). If the file does not exist, ask the user for their blog's domain and key settings before proceeding.

Step 1: Understand the topic

Before writing anything:

  • Use Grep to scan content/posts/ for existing posts on the same or related topics to avoid duplication
  • Check content/talks/_index.md for related conference talks that could inform the post
  • Identify cross-reference opportunities with existing posts

Step 2: Interview for angle and key points

Use AskUserQuestion to draw out the author's actual perspective. Run 2-3 interview rounds:

Round 1 — Angle and experience:

  • What personal experience or project anchors this topic?
  • What's the one thing the reader should walk away with?
  • Offer 2-3 concrete angle options based on the topic

Round 2 — Key points and structure:

  • What are the 3-4 main points to cover?
  • Any code examples, CLI commands, or real scenarios to include?
  • What's explicitly not in scope for this post?

Round 3 — Sharpening (if needed):

  • Propose a one-sentence thesis based on their answers
  • Clarify any gaps or contradictions from previous rounds
  • Confirm the structure before drafting

Step 3: Draft the post

Write the complete post following front matter conventions, structure patterns, and tone rules below. Create the file in content/posts/ with the correct naming convention.

Step 4: Validate

After writing:

  • Re-read the full post for flow and consistency
  • Verify all front matter fields are present and correctly formatted
  • Check that cross-references point to existing posts (use Glob to verify)
  • Confirm no section restates what another section already covered

Front Matter Conventions

  • File naming: YYYY-MM-DD-slug-title.md in content/posts/
  • Date format: YYYY-MM-DD HH:MM:SS +ZZZZ (use the publication time from blog-config.md). The timezone offset depends on whether the post's publication date falls in CET or CEST. Check blog-config.md for the timezone offset rule. To determine which offset applies, run date or check a calendar: CET (+0100) runs from the last Sunday of October to the last Sunday of March; CEST (+0200) covers the rest of the year.
  • Required fields: title, date, description, categories, tags, type (use the value from blog-config.md, typically post). Include weight if your theme uses it (check blog-config.md).
  • Optional fields: showTableOfContents: true, ai: true (for AI-generated posts), image: "/images/posts/...", related: ["/posts/YYYY-MM-DD-slug", ...]
  • Tags: lowercase, hyphenated strings in double quotes (e.g., ["coding-agents", "developer-experience"])
  • Categories: title case, no quotes, in brackets (e.g., [Technology, AI, Software Development])

See references/front-matter-example.md for a complete template.

Tone and Style

  • First-person, conversational. Write like you're explaining something to a colleague.
  • Concise. One idea per paragraph. Avoid dense walls of text.
  • Practical over theoretical. Include CLI commands, code snippets, and real examples.
  • Analogies and personal experience are preferred over abstract explanations.
  • Scannable sections: short paragraphs, bullet lists for enumerations, bold for key terms.
  • Closing should be short and punchy, not a re-summary of the whole post.
  • No em dashes (—). Use colons, periods, commas, semicolons, or parentheses instead. Em dashes are an AI writing tell. Replace X — Y with X. Y, X: Y, X, Y, or X (Y) depending on context.
  • No leading whitespace on paragraphs. Never start a paragraph with spaces or indentation. Flush left, always.

Structure Patterns

  1. Hook intro (1-2 paragraphs, no heading) — set up the topic with a personal angle
  2. Problem statement section — why this matters
  3. Core content sections — the "meat", each with one main idea
  4. Brief closing section — short wrap-up, ideally a memorable one-liner
  5. Related posts — added as a related: array in front matter (NOT as markdown links in the content). These render as visual cards with cover images at the bottom of the post. Use the format /posts/YYYY-MM-DD-slug.
  6. Resources/links footer — separated by ---, italic links to external resources only (no internal post links here; those go in the related front matter)

Interview Pattern

When drafting a post, always interview the author rather than guessing their position. Use AskUserQuestion to ask focused, one-at-a-time questions that draw out their actual opinion. Then write from their answers.

Principles:

  1. Ask one focused question per round. Don't overwhelm with multiple questions.
  2. Offer 2-3 concrete options that represent real positions, not strawmen.
  3. Follow up to sharpen the angle. Dig into the why behind their answer.
  4. After 2-3 rounds, you should have enough to draft the post in their voice.

After writing from interview answers, re-read surrounding sections. The new content may make other parts redundant or contradictory.

Examples

Example 1: Create a new post from a topic User says: "Create a new post about Docker sandboxes" Actions:

  1. Scan content/posts/ for existing sandbox or Docker posts
  2. Interview the user: What's the angle? What experience anchors it? What should the reader take away?
  3. Generate front matter from the template
  4. Draft the full post: hook intro, problem statement, core sections, closing, resources footer
  5. Validate front matter, cross-references, and flow

Example 2: Write a post from a conference talk User says: "Write a post based on my Testcontainers talk" Actions:

  1. Read content/talks/_index.md to find the talk details
  2. Interview: What's the blog angle vs. the talk angle? Any new insights since the talk?
  3. Draft the post, connecting to existing Testcontainers posts
  4. Add cross-references to related posts and link to the talk slides

Example 3: Draft a post from a rough idea User says: "I want to write about why I prefer integration tests" Actions:

  1. Check existing testing-related posts for overlap
  2. Interview: What's the specific claim? What experience backs it up? What's the strongest counterargument?
  3. Draft with a strong thesis in the intro and practical examples in the core sections
  4. Validate tone stays conversational and doesn't drift into academic territory

Troubleshooting

Post not rendering in Hugo:

  • Check front matter delimiters are exactly --- (three dashes)
  • Verify type: post is present (not type: posts)
  • Check date format matches YYYY-MM-DD HH:MM:SS +ZZZZ (timezone from config)

Tone feels generic or AI-like:

  • Go back to the interview. Ask more specific questions about the author's actual experience.
  • Replace abstract statements with concrete examples from their answers.
  • Read a recent post to recalibrate the voice before continuing.

Topic overlaps with existing post:

  • Read the existing post carefully before proceeding
  • Interview to find the distinct angle: What's different about this post?
  • Cross-reference the existing post explicitly so readers understand the relationship

Cross-reference links broken:

  • Links use format /posts/YYYY-MM-DD-slug (no trailing slash, no .md)
  • Verify the target post exists with Glob

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.