ideate-month
Skill43 starsChanged 4 months agoMITView on GitHub
Plan next month's content calendar from a theme, signals and last month's results. \"what should we post next month\"
In this repository21 other files it gives its agents.
- AGENTS.mdAGENTS.md
- adapt-copySkill
- assemble-documentSkill
- brand-managerSkill
- build-review-gallerySkill
- c2pa-signSkill
- compose-creativeSkill
- create-previewsSkill
- finalize-monthSkill
- full-pipelineSkill
- generate-videoSkill
- index-assetsSkill
- ingest-performanceSkill
- manage-reviewsSkill
- match-assetsSkill
- model-checkSkill
- parse-calendarSkill
- price-checkSkill
- render-carouselsSkill
- research-monthSkill
- setupSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
If a performance.json exists (built by /socialforge:ingest-performance from the platform's own analytics export), this returns winners …
- Distinctive: line 42
If the measured path has no data, say so and offer to ingest an export first.
- Distinctive: line 48
Read the brand profile. List pillars, platforms, posting cadence.
- Very specific: line 49
Check the measured path first (ingest_performance.py --action wins), then fold in anecdotal reports.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/socialforge:ideate-month — the month before the calendar exists
Script location. If your host does not set
${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin'sscripts/folder, next toskills/. Run them with Python 3.10 or newer:python, orpython3wherepythonis not found (macOS, many Linux systems).
SocialForge's pipeline starts at parse-calendar — someone hands it a calendar.
This skill is for when nobody has: the client asks "what should this month be
about?", and that question is the actual work they are paying for.
The output is a draft calendar in the exact shape parse-calendar ingests,
so an approved plan flows into production with zero re-typing.
Inputs — use whichever exist, say which were missing
- The brand profile (required) — pillars, voice, platforms, compliance
rules from
brand-config.json. No profile → stop and run/socialforge:brand-setupfirst. Ideating without pillars produces generic content for nobody. - A theme or business context (optional) — a launch, a season, a campaign the client named.
- Raw signals (optional) — pasted news, industry threads, competitor moves, sales-call notes, community questions. Mine them; never use them as filler. Every signal either maps to a pillar and a concrete angle, or it is dropped and listed as dropped, with the reason.
- Last month's results (optional) — measured first, anecdote second:
- Measured: run
python "${CLAUDE_PLUGIN_ROOT}/scripts/ingest_performance.py" --action wins --brand {brand} --month {last-month}. If aperformance.jsonexists (built by/socialforge:ingest-performancefrom the platform's own analytics export), this returns winners ranked with a sample floor and a margin over the month's median engagement rate — plus an honestno_clear_winswhen the month was flat. A win here is validated audience demand: plan its compounding follow-ups. - Anecdotal: the review gallery, status tracker, or anything the client reports as having worked. Usable, but labeled — see the output rules.
- If the measured path has no data, say so and offer to ingest an export first; a two-minute CSV ingest upgrades the whole plan's foundation.
- Measured: run
- A research brief (optional) — if
/socialforge:research-monthwroteoutput/{brand}/{month}/research-brief.md, read it as evidence (outlier posts, customer language, competitor ad themes) and carry its basis labels into "What last month validated" and "Signals used / dropped"; its hypotheses are leads, not wins.
Process
- Read the brand profile. List pillars, platforms, posting cadence.
- Check the measured path first (
ingest_performance.py --action wins), then fold in anecdotal reports. Identify the 1–3 clear wins and design follow-ups that compound them — the deeper dive, the objection it raised, the adjacent question it opened. Not a repost of the same idea. Honesty rules: ano_clear_winsverdict is itself a finding — plan from pillars and signals and say the wins rung had nothing; never promote anunrankedpost (below the sample floor) to a win because it felt good. - Mine any signals into angles, each tagged with its pillar. Drop what does not map — and say so.
- Design 1–2 series — connected multi-part sequences with an arc (setup → develop → payoff), each part standing alone but rewarding the follower. A month of disconnected posts is a feed; a series builds a habit.
- Fill the remaining cadence with one-off posts across pillars.
- Assign every post a tier honestly: HERO (heavy production, big swing), HUB (core pillar content), HYGIENE (light, frequent presence).
- Balance platforms per the brand's platform config — not everything everywhere.
Output structure
# Month plan — {brand}, {YYYY-MM}
## The month's spine
[2-3 sentences: the theme, the wins being compounded, what the month should
have achieved by its last post]
## Series ({n})
### Series A: [name] — [pillar]
Arc: [what part 1 sets up, how it develops, where it pays off]
Parts: [P03, P07, P11] — see calendar below
## What last month validated (if performance was provided)
- [win — measured: 4.1% ER, 2.3x month median] → [the compounding follow-up now on the calendar, with post id]
- [win — anecdotal: client-reported] → [follow-up, labeled so the client knows the basis differs]
## Signals used / dropped (if signals were provided)
- USED: [signal] → [P05: the angle]
- DROPPED: [signal] — [why it does not serve this brand's pillars]
## Draft calendar (calendar-data.json compatible)
```json
{
"month": "YYYY-MM",
"brand": "{brand}",
"status": "DRAFT — needs client approval",
"posts": [
{
"post_id": "P01",
"date": "YYYY-MM-DD",
"platform": "linkedin",
"content_type": "carousel",
"tier": "HUB",
"topic": "[specific enough that a stranger could brief a designer from it]",
"pillar": "[brand pillar]",
"series": "[series name or null]",
"rationale": "[one line: why this post, why this day]"
}
]
}What I did not have
[Which optional inputs were missing and what they would have improved]
## Critical rules
- **Every post traces to a pillar, a win, or a signal.** A post that traces to
none of them is filler; cut it and say the cadence target was not met rather
than padding.
- **Topics must be briefable.** "5 mistakes agencies make with reporting
(carousel, one mistake per slide)" is a topic. "Engagement post" is not.
- **At least one series per month.** Disconnected posts build reach at best; a
series builds return visits.
- **Wins get follow-ups, not reposts.** The follow-up answers what the win
opened, from the validated angle — never the same post again slightly
reworded.
- **Tier honestly.** A month of all-HERO is a burnout plan; all-HYGIENE is
invisible. Typical shape: 1–2 HERO, 40–50% HUB, the rest HYGIENE.
- **The draft is a draft.** Output carries `status: DRAFT` and this skill never
writes calendar-data.json to the workspace itself — the client approves, then
`/socialforge:parse-calendar` ingests it as the approved source of truth.
- **State what was missing.** A plan built without performance data or signals
is a weaker plan; the client should know that, not discover it.
## Pairs with
- `/socialforge:ingest-performance` — feeds the wins rung from the platform's own numbers; run it on last month before planning this one
- `/socialforge:parse-calendar` — ingests the approved draft verbatim
- `/socialforge:reactive-post` — mid-month trend response; this skill plans, that one reacts
- `/socialforge:price-check` — quote the month's video load before the client approves itDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

