source/skills/spawn-internal-links/SKILL.md
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.
npx skillsauth add zhizdev/overgrow spawn-internal-linksInstall 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 turns a flat set of pages into a semantic graph organized around pillars. It maps every page to its pillar(s), builds the hub-and-spoke links that should exist (pillar ↔ supporting pages, supporting ↔ supporting where topically adjacent), and proposes the insertions needed to close the gaps.
.overgrow/inventory.md. If missing, run init first..overgrow/audit.md if present — orphan and dead-end flags are the primary targets.$ARGUMENTS: if a pillar name is given, scope to it. Otherwise run across all pillars.Before mapping, read from the plugin's knowledge/ directory:
knowledge/geo.md — authority, topical clusters, and internal-link sections. The hub-and-spoke / pillar-cluster pattern and anchor-text rules live here.knowledge/pages.md — H-tag and content-structure rules that the link anchors should align with.If those files are not reachable, fall back to the summary below but prefer the reference.
spawn-pages (for solutions/feature pillars) or spawn-blogs (for topic pillars with a "what is X" hub)..overgrow/inventory.md. If a target page is missing, flag it as a spawn-pages or spawn-blogs candidate instead of emitting a broken link.Write .overgrow/internal-links.md:
# Overgrow — Internal Link Plan
_Run: <YYYY-MM-DD>_
_Scope: <all | pillar>_
## Pillar map
### <Pillar>
- Hub: <route> — <source path>
- Supporting:
- <route> — <source path>
- ...
## Proposed insertions
### <Source route> (<source path>)
- **Insert:** link to `<target route>` with anchor `"<anchor text>"` — near `"<excerpt from source that identifies the insertion point>"`
- Reason: <e.g. "supporting → pillar hub; currently orphan from pillar">
- ...
## Orphan pages after plan
<routes that will still have < 2 inbound content links even after insertions — candidates for new supporting content or reconsideration of placement>
## Missing targets
<list of would-be link targets that do not exist yet — feed these into `spawn-pages` or `spawn-blogs`>
If the user explicitly asks to apply the insertions, make the edits directly in the source files. Otherwise leave them as a plan and let the user review.
.md/.mdx, JSX anchor or <Link> for React routes, etc.). Match the framework's idiom.spawn-pages or spawn-blogs.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
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.
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.