source/skills/spawn-blogs/SKILL.md
Given the product and the existing page inventory, identify missing blog topics and generate new blog posts that capture search/AI intent using the query-fanout pattern. Use this skill whenever the user asks to "spawn blogs", "generate blog posts", "expand the blog", "build out a content cluster", "write blog ideas", "cover more search intents", "query fanout for blogs", or wants new long-form content that supports existing pillars. Output is one new post per topic in the project's existing post format (markdown, MDX, component, or CMS migration note), with frontmatter shape mirrored from an existing post.
npx skillsauth add zhizdev/overgrow spawn-blogsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill plans and drafts net-new blog posts that close gaps in the site's semantic pillars. It uses the query-fanout pattern: one seed intent is expanded into a fan of related sub-intents that modern search and AI systems decompose queries into, then each sub-intent becomes a post.
.overgrow/inventory.md. If missing, run init first..overgrow/audit.md if present — thin pillars and orphan topics are prime spawn targets.$ARGUMENTS: if a pillar name or topic seed is given, scope to it. If not, propose up to 3 candidate pillars to expand and {{ask_instruction}} which to run. Once chosen, proceed for that pillar.Before planning topics or drafting, read from the plugin's knowledge/ directory:
knowledge/query-fanout.md — the 15-facet query fan-out taxonomy (DEFN, ENTITY, COMPARE, etc.). Use it to build the candidate sub-intent set. This SKILL.md's "Query-fanout pattern" section is a summary; query-fanout.md is the authoritative list.knowledge/geo.md — SEO + GEO master reference. Pay particular attention to the sections on content structure, AI extraction / RAG chunking, and answer-engine citation patterns. Post structure below is distilled from this file.knowledge/pages.md — H-tag and AI-overview formatting rules. Apply directly when drafting headings and the TL;DR lead.If any of those files are not reachable, fall back to the summaries in this SKILL.md and continue.
Given a seed intent (e.g. "observability for PostgreSQL"), produce a fan of sub-intents covering the natural ways users and AI systems decompose the topic. A complete fan covers:
You do not need every branch for every pillar — pick the 5-10 branches that are both relevant and missing from existing content (per the inventory).
For the chosen pillar:
Every post the skill drafts uses this structure — it's tuned for both classic SEO ranking and AI-overview / chatbot citation.
FAQPage schema fodder..overgrow/inventory.md.Before writing anything, read the Authoring conventions section of .overgrow/inventory.md and open one existing post in the target blog directory to mirror its frontmatter shape exactly (key names, order, required fields, tag format, author field, etc.). Do not invent frontmatter keys.
Pick the output format from the detected convention:
.md or .mdx at the blog content root, using the inventory's recorded extension. Frontmatter matches an existing post's shape 1:1 — if existing posts use description not excerpt, use description; if they use publishedAt not date, use publishedAt; if they add author, add author..tsx / .astro route with prose components): mirror the pattern of an existing post component, including layout wrapper, MDX-component use, and metadata export..overgrow/content-plan.md under ## CMS migrations with the full post body plus field-by-field mapping to the CMS model.If no existing posts exist yet, fall back to this default frontmatter (and flag in content-plan that the project should standardize):
---
title: <title>
description: <meta description>
slug: <slug>
date: <YYYY-MM-DD>
pillar: <pillar name>
intent: <definitional | comparative | how-to | why | problem | role | integration | migration | cost | trends>
keywords: [<primary>, <secondary1>, <secondary2>]
draft: true
---
<body — following the structure above>
Use the project's draft gating idiom: if existing posts use draft: true, use it; if they use published: false, use that; if the project has no draft mechanism, add a TODO: review before shipping comment at the top of the body.
Then update .overgrow/content-plan.md (create if missing) with an entry per spawned post:
## <Pillar>
- [ ] <slug> — <title> — intent: <branch> — status: drafted <YYYY-MM-DD>
Leaving posts gated (via the project's existing draft mechanism or a TODO comment) is intentional — the user should run audit and humanize before publishing.
<!-- placeholder: replace with real example -->.{{config_file}}, BRAND.md, VOICE.md, style-guide.md). Otherwise default to clear, active, jargon-light.humanize/reference/word-lists.md from the start so there's less to clean.spawn-pages).spawn-internal-links). It only adds outbound links from the new posts it drafts.tools
Pull the open Bonemeal action queue (landing pages and blog posts the user has not built yet) via the bonemeal MCP server, let the user pick which ones to build, dispatch each to the spawn-pages or spawn-blogs skill with the action's brief, and mark each completed in Bonemeal once the file is written. Use this whenever the user says "grow", "/grow", "build my Bonemeal queue", "what's in my Bonemeal queue", "build the suggested pages", or wants to act on Bonemeal's content suggestions. Stop and ask the user before marking actions complete the first time, then remember their preference.
development
Given the product offering and existing page inventory, create new core landing and resource pages (homepage refresh, features, solutions, pricing, comparison, resource hubs, about) that capture core product intent using the query-fanout pattern. Use this skill whenever the user asks to "spawn pages", "generate landing pages", "create marketing pages", "build a pricing page", "add a solutions page", "build out the site", "fill in missing pages", or wants new top-level marketing/product pages. Output is one new page per route in the project's native file format (component or markdown), matching the existing page style and framework idiom.
development
Examine every existing page on the site, build a semantic map across pillars, and add missing internal links so the site becomes a semantic graph anchored on clear topical pillars. Use this skill whenever the user asks to "add internal links", "build internal linking", "build a semantic graph", "link related pages", "strengthen topical authority", "fix orphan pages", "add pillar linking", or wants hub-and-spoke linking between pillars, hubs, and supporting content. Output is an edit list (proposed link insertions) plus optionally direct edits to page source files.
development
Audit an existing sitemap.xml / robots.txt or generate new ones following sitemaps.org protocol and Google Search Central guidance, with a growth-first default that allows every crawler including AI search and AI training bots. Use this skill whenever the user asks to "build a sitemap", "generate sitemap.xml", "audit the sitemap", "refresh sitemap", "write robots.txt", "check robots", "allow AI crawlers", "block AI crawlers", "fix crawl budget", "submit to Google", or any other discovery / indexing configuration task. Output is a valid sitemap.xml (or sitemap index) and/or robots.txt, plus a written audit when auditing.