Manages content creation queues by syncing tasks with Bonemeal and dispatching work to generators.
Install
mkdir -p .claude/skills/grow && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12526" && unzip -o skill.zip -d .claude/skills/grow && rm skill.zipInstalls to .claude/skills/grow
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
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.Key capabilities
- →Pull open Bonemeal action queue for landing pages and blog posts
- →Let the user pick which actions to build
- →Dispatch selected actions to `spawn-pages` or `spawn-blogs` skill
- →Mark completed actions in Bonemeal, attributing to 'Overgrow'
- →Manage project-scoped and developer-scoped state files
- →Handle authentication with the Bonemeal MCP server
How it works
The skill integrates with the Bonemeal MCP server to pull the action queue, allows the user to select items, dispatches them to content generation skills, and marks them as complete.
Inputs & outputs
When to use grow
- →Building new landing pages
- →Creating blog posts from queue
- →Managing content deployment
About this skill
Overgrow — Grow (Bonemeal Action Queue)
This skill is the integration point between the Bonemeal MCP server and the rest of overgrow. It surfaces the open action queue from the user's Bonemeal project, lets them pick what to build, dispatches each item to the existing spawn-pages or spawn-blogs skill with the action's brief as input, then marks each one completed back on Bonemeal — attributing the completion to "Overgrow" in the Bonemeal UI.
Prerequisites
- The user must already have authenticated the bonemeal MCP server. If
mcp__overgrow__list_projectsis unavailable, tell them to run/mcpand authenticate theovergrowserver, then re-invoke this skill. - Two state files. Create on first run.
State files
State is split into project-scoped (committed to git, shared across collaborators) and developer-scoped (per-machine).
.overgrow/bonemeal.json (in repo root, committed)
{
"project_id": "<uuid>",
"project_name": "<for log lines>"
}
Identifies which Bonemeal project this repo represents. Same answer for every developer who clones the repo, so it belongs in version control.
~/.config/overgrow/preferences.json (per-developer, never committed)
{
"auto_complete": true | false | null
}
Each developer's personal answer to "should $grow auto-mark actions complete in Bonemeal?". null until they answer, then true ("always") or false ("ask each time").
If $XDG_CONFIG_HOME is set, prefer $XDG_CONFIG_HOME/overgrow/preferences.json over ~/.config/.... If running on a system without ~/.config/ (e.g. some Windows setups), fall back to a sensible per-user location and tell the user where you wrote it.
Create either file (and parent directories) on first read if missing. Treat unreadable / malformed JSON as "uninitialized" — re-prompt the user for what's needed and rewrite cleanly.
Flow
1. Resolve the project
Read .overgrow/bonemeal.json. If project_id is null/missing:
- Call
mcp__overgrow__list_projects(no arguments). - If exactly one project is returned, use it; tell the user "Linking this repo to Bonemeal project: {name}".
- If multiple, present a numbered list with
name,workspace.name,id, and callAskUserQuestionto ask which one this repo represents. - Persist
project_idandproject_nameto.overgrow/bonemeal.json. - Suggest the user commit the file so collaborators don't get re-prompted.
If project_id is set, skip the resolve step. (User can edit the file by hand to relink.)
2. Pull the queue
Call mcp__overgrow__get_project_actions with:
project: <state.project_id>status: "proposed"(default — the open queue)action_type:filter based on$ARGUMENTS:"landing"→landing_page"blogs"→blog_post- empty → call once with
landing_page, once withblog_post, merge results.
limit: 50(generous; the daily generator caps lower than this anyway).
If the queue is empty, tell the user "Your Bonemeal queue is clear — no proposed landing pages or blog posts." and stop.
3. Present the queue
Render a numbered list grouped by action_type. Each row: [N] [type icon] {title} — {opportunity_overview}.
opportunity_overview is markdown with bold on the hook; render as-is.
Then call AskUserQuestion asking which to build. Accept these reply forms:
all— build everything in the list.1, 3, 5— comma-separated numbers (or ranges like1-3).landing/blogs— only that type from the list.skip/cancel— exit without building.
4. Build each chosen action
Process the selected actions in order. For each:
4a. Landing page (action_type === "landing_page")
The action's metadata is shaped:
{
"target_keywords": ["..."],
"gap_prompts": ["..."],
"competing_domains": ["..."]
}
Invoke the spawn-pages skill with a brief built from:
title(the action title; this is the page intent)descriptionandopportunity_overview(rationale and 1-line hook)metadata.target_keywords(primary + secondary keywords)metadata.gap_prompts(the AI-search prompts the page must answer; pass these into spawn-pages's query-fanout step instead of generating new ones)metadata.competing_domains(sites currently winning the keyword; reference for differentiation)
Phrase the dispatch as a natural-language sub-task to spawn-pages so it triggers the existing skill machinery — don't try to call it as a tool.
4b. Blog post (action_type === "blog_post")
The action's metadata is shaped:
{
"topic": "...",
"target_keywords": ["..."],
"gap_prompts": ["..."],
"competing_content_urls": ["..."]
}
Invoke the spawn-blogs skill with a brief built from:
title(post title)descriptionandopportunity_overviewmetadata.topic(the pillar / cluster anchor)metadata.target_keywordsmetadata.gap_prompts(sub-intents to cover)metadata.competing_content_urls(for the "what to do differently" pass)
Same dispatch style as 4a.
5. Mark completed
After each successful build (file written and saved):
-
Compute the relative URL of the created page. Examples:
app/foo/page.tsx→/fooapp/blog/(post)/foo/page.mdx→/blog/foocontent/blog/foo.md→/blog/foo
If the routing convention is ambiguous (custom framework), use the file path the user can
git diffto find it; better than no URL. -
Determine whether to confirm. Read
auto_completefrom the per-developer preferences file (~/.config/overgrow/preferences.jsonor$XDG_CONFIG_HOME/overgrow/preferences.json):- If
auto_complete === true, skip the prompt. - If
auto_complete === false, prompt once per action: "Mark {title} complete in Bonemeal? [y/n]". - If
auto_completeis null/missing, prompt once with three options viaAskUserQuestion:Yes,No,Always (don't ask again).- On
Always, writeauto_complete: trueto the preferences file before calling. - On
Yes, leaveauto_completeunset for this run, but ask again next run (current-run yeses don't change the persistent setting). - On
No, leaveauto_completeunset and skip the call for this action.
- On
- If
-
If confirmed, call
mcp__overgrow__mark_action_complete:action_id: <action.id>output_url: <relative URL from step 1>(omit if the URL really can't be derived)
-
If the call returns
isError, log the message but continue to the next action — Bonemeal-side failures shouldn't block the local build queue.
6. End-of-run summary
Print:
Built X / Y selected actions.- For each successful action:
✓ {title} → {output_url}(and· marked complete in Bonemealif applicable) - For each failed action:
✗ {title} — {short reason} Z proposed actions still in your queue. Re-run $grow to refresh.
Failure modes
- MCP not authenticated: tell the user to run
/mcp. Don't try to skip and rebuild blindly. - Build failed for an action: do NOT mark complete. Leave it in
proposedstate so it shows up next run. - Action already marked complete in Bonemeal between fetch and mark: the MCP tool's UPDATE will no-op and return
isError: true; treat as a benign skip. - State files corrupted or unreadable: treat as uninitialized — re-prompt and rewrite cleanly. The two files are independent; a broken
preferences.jsondoesn't invalidate the project link, and vice versa.
Conventions
- Always tell the user what you're doing (one-line status: "Pulling queue…", "Building landing page X of Y…", "Marked complete in Bonemeal").
- Don't batch silent calls — each MCP call is a remote write and the user should see them happen.
- If
$ARGUMENTSislandingorblogs, pass through to theaction_typefilter and skip the other type entirely.
When not to use it
- →When the user is not working with Bonemeal content suggestions
- →When the Bonemeal MCP server is not authenticated
- →When the task is not about building landing pages or blog posts
Prerequisites
Limitations
- →It requires authentication with the Bonemeal MCP server
- →It relies on `spawn-pages` and `spawn-blogs` skills for content generation
- →It manages state files for project and developer preferences
How it compares
This skill automates the process of acting on Bonemeal's content suggestions, including authentication, queue management, content generation dispatch, and completion marking, unlike manual content creation.
Compared to similar skills
grow side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| grow (this skill) | 0 | 3mo | No flags | Intermediate |
| amcs-producer-notes-generator | 5 | 9mo | No flags | Advanced |
| sales-automator | 5 | 4mo | No flags | Beginner |
| social-media-generator | 6 | 9mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
amcs-producer-notes-generator
miethe
Generate production notes defining song structure, hooks, instrumentation hints, per-section tags, and mix parameters. Aligns with style spec and blueprint production guidelines. Use when creating arrangement, dynamics, and audio engineering guidance for composition and rendering.
sales-automator
sickn33
Draft cold emails, follow-ups, and proposal templates. Creates pricing pages, case studies, and sales scripts. Use PROACTIVELY for sales outreach or lead nurturing.
social-media-generator
ailabs-393
This skill should be used when the user requests social media content creation for Twitter, Instagram, LinkedIn, or Facebook. It generates platform-optimized posts and saves them in an organized folder structure with meaningful filenames based on event details.
xhs-note-creator
comeonzhj
小红书笔记素材创作技能。当用户需要创建小红书笔记素材时使用这个技能。技能包含:根据用户的需求和提供的资料,撰写小红书笔记内容(标题+正文),生成图片卡片(封面+正文卡片),以及发布小红书笔记。
blogpost-creator
Xe
Create new blogposts from a template or linkposts using the hydrate command.
libreoffice-writer
Anhvu1107
ALWAYS use this when the user or an upstream archive refers to `libreoffice-writer`, the nested skill path form for `writer`, or the equivalent slash path. This is a namespace-preserving alias that routes to `writer` while retaining strict validation, Senior Master execution, and Codex review standa