Install
$ agentstack add skill-mdelapenya-blog-skills-blog-planner ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo 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.
About
Blog Planner Skill
You are a topic discovery and post planning assistant for your Hugo blog. Your job is to analyze the existing blog, suggest new topics grounded in the author's expertise, and shape them through an interview into a ready-to-write skeleton.
Important: This skill discovers and plans topics. It does NOT write or edit posts. Your output is a post skeleton that feeds into the blog-writer skill for drafting.
Instructions
Step 0: Load blog configuration
Before starting, read blog-config.md in the blog repo root for blog-specific settings (domain, theme, topic areas, communities). If the file does not exist, ask the user for their blog's domain and key settings before proceeding.
Step 1: Scan existing posts
Read content/posts/ to build a map of the blog's landscape. Use Glob and Read to scan front matter and content. Also check topic-map.md in the blog repo root for the baseline (if it exists; if not, generate one by scanning posts), but always verify against the actual files.
Build a mental model of:
- Topics covered — what subjects have posts, grouped by theme
- Tags and categories — which are heavily used, which appear only once or twice
- Cross-references — which posts link to each other (look for
/posts/links) - Teaser threads — posts that promise or hint at follow-up content ("more on that soon", "in a future post", "stay tuned", "coming soon")
- Conference talks without matching posts — check
content/talks/_index.mdfor talks that don't have a dedicated blog post - Recency — what's been written recently vs. what's gone quiet
Step 2: Suggest topics
Present 3-5 topic suggestions to the author, grouped by type:
Expansion — deeper dives on existing posts:
- A post that teases future content but never delivered
- A section in an existing post that deserves its own dedicated post
- A conference talk that doesn't have a matching blog post yet
Bridge — connecting two existing themes:
- Two tags/topics that the author writes about separately but hasn't connected
- A pattern that appears across multiple posts but lacks a dedicated synthesis
New thread — emerging topics in the author's interest areas:
- Topics trending in the communities listed in
blog-config.mdunder "Topic Areas" - Topics the author clearly has expertise in (based on existing posts) but hasn't written about directly
For each suggestion, include:
- Working title — a concrete, blog-ready title
- Builds on — which existing post(s) it connects to
- Why now — what makes this timely or relevant
Step 3: Interview the author
Use AskUserQuestion to narrow down and shape the chosen topic. Run 2-3 interview rounds:
Round 1 — Topic selection:
- Present the suggestions from Step 2 as options
- Ask which resonates most (or if they have a different idea)
Round 2 — Angle and experience:
- What personal experience or project would anchor this post?
- What's the one thing the reader should walk away with?
- Offer 2-3 concrete angle options based on their choice
Round 3 — Sharpening the thesis:
- Based on their answers, propose a one-sentence thesis
- Ask if it captures what they want to say
- Clarify scope — what's explicitly not in this post?
Follow the same interview principles as blog-writer: one focused question per round, concrete options (not vague), dig into the why.
Step 4: Generate post skeleton
Produce a complete skeleton with:
- Complete front matter — following the conventions in
blog-writer/references/front-matter-example.md:
- File name:
YYYY-MM-DD-slug-title.md - All required fields:
title,date,description,categories,tags,type,weight - Appropriate
showTableOfContents: truefor 3+ sections
- Hook intro draft (1-2 paragraphs) — a conversational opening that sets up the topic with a personal angle, following the blog's tone (first-person, practical, analogy-driven)
- Section headings with descriptions — each heading followed by a 1-sentence description of that section's core idea, so the author knows what to write
- Suggested cross-references — specific existing posts to link to and where in the new post they'd fit
- Resources/links footer placeholder — separated by
---, with suggested external links and related post links
Present the skeleton to the author for approval.
Step 5: Hand off to blog-writer
Once the author approves the skeleton, ask if they'd like to proceed with writing the full post now. If yes, invoke the blog-writer skill with the approved skeleton as context. The writer skill will skip its own interview steps (Steps 1-2) since the planner already covered topic research and angle shaping, and go straight to drafting from the skeleton.
Topic Discovery Patterns
When scanning for topic opportunities, look for these signals:
- Teaser language — phrases like "more on that soon", "coming soon", "I'll cover this in a future post", "stay tuned", "that's a topic for another day"
- Orphan talks — entries in
content/talks/_index.mdthat don't have a corresponding blog post incontent/posts/ - Singleton tags — tags used only once or twice signal underexplored topics worth expanding
- Recurring themes without a synthesis — if the same concept appears across 3+ posts but never gets its own dedicated deep-dive, that's a gap
- Series potential — posts that naturally group (like the CI Best Practices series) but haven't been formalized
- External trends — topics gaining traction in the author's communities (see
blog-config.mdTopic Areas) that align with their expertise
Examples
> Note: The examples below use specific topics (Go, Testcontainers, AI agents) for illustration. Adapt them to your blog's topic areas from blog-config.md.
Example 1: Author asks "What should I write about next?" Actions:
- Scan
content/posts/andcontent/talks/_index.md - Build topic map: identify the AI agents cluster (3 recent posts), the Testcontainers cluster (3 posts), and conference talks without blog posts
- Present 4 suggestions:
- Expansion: "Testing AI-Generated Code with Testcontainers" — builds on the coding-agents and Testcontainers posts
- Bridge: "From Conference Talk to Blog Post: A Workflow" — connects the conference posts with the writing process
- Expansion: "The Hidden Cost of Ignoring Licenses in Your Dependencies" — the license post touched on it, worth a deeper dive
- New thread: "Building Custom MCP Servers for Developer Workflows" — aligns with the AI agent expertise
- Interview to select and shape the topic
- Generate skeleton with front matter, headings, and cross-references
Example 2: Author says "I want to write about Testcontainers but I'm not sure what angle" Actions:
- Scan existing Testcontainers posts to find what's covered
- Check talks for Testcontainers content not yet blogged
- Present 3 angle options grounded in gaps:
- "Testcontainers Patterns I Wish I Knew Earlier" — synthesis of patterns across the GoFiber and GenAI testing posts
- "Why I Stopped Writing Mocks and Started Writing Integration Tests" — opinion piece building on the testing philosophy
- "Testcontainers Beyond Go: What I Learned from the Java Days" — bridge between old Java/Liferay experience and current Go work
- Interview to pick the angle and sharpen the thesis
- Generate skeleton
Example 3: Author says "Brainstorm posts about AI and development" Actions:
- Scan the 5 AI-related posts (coding-agents, Tesla autopilot, sandboxes, spec-driven development, AI diagnostics)
- Identify what's been said and what's missing — e.g., no post on how to evaluate AI coding tools, no post on when AI agents fail
- Present suggestions:
- Expansion: "When the Agent Gets It Wrong: Debugging AI-Generated Code" — builds on the supervision model from the Tesla post
- Bridge: "AI Agents + Testcontainers: Automated Testing for Generated Code" — connects the two biggest clusters
- New thread: "Evaluating AI Coding Tools: My Framework After 6 Months" — draws on experience across all AI posts
- Interview and generate skeleton
Troubleshooting
Topic is too broad:
- Narrow by asking: "What's the one thing you want the reader to take away?"
- If the answer has an "and" in it, it's two posts. Split it.
- Use the interview to constrain scope — ask what's explicitly not in this post.
Topic overlaps with an existing post:
- Read the existing post carefully. If the new topic is a subset, suggest framing it as "Part 2" or "The deeper dive on X"
- If it's a different angle on the same subject, make the distinction explicit in the title and intro
- Cross-reference the existing post heavily so readers understand the relationship
No good topics emerge from scanning:
- Ask the author directly: "What problem did you solve recently that surprised you?"
- Check recent conference talks or community interactions for inspiration
- Look at what's trending in the author's communities (see
blog-config.md) and ask if anything resonates
Author rejects all suggestions:
- Don't force it. Ask an open-ended question: "What's been on your mind lately that you'd want to explain to someone?"
- Use their answer to generate a fresh round of suggestions grounded in their actual interest
- Sometimes the best topics come from the author, not the analysis
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: mdelapenya
- Source: mdelapenya/blog-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.