Skip to content
Marketing
Skill

/ideate-month

Plan next month's content calendar from a theme, signals and last month's results. \"what should we post next month\"

From plugin
socialforge
4421 skills5 agents18 commands

Claude Code

$ npx -y skills add indranilbanerjee/socialforge --skill ideate-month --agent claude-code

SKILL.md

ideate-month.SKILL.md
name: ideate-month
description: "Plan next month's content calendar from a theme, signals and last month's results. \"what should we post next month\""
argument-hint: "[--brand <name>] [--month <YYYY-MM>] [--theme <text>] [--signals <pasted material>]"
effort: high
user-invocable: true

/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's `scripts/` folder, next to `skills/`. Run them with Python 3.10 or newer: `python`, or `python3` where `python` is 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

1. **The brand profile** (required) — pillars, voice, platforms, compliance rules from `brand-config.json`. No profile → stop and run `/socialforge:brand-setup` first. Ideating without pillars produces generic content for nobody. 2. **A theme or business context** (optional) — a launch, a season, a campaign the client named. 3. **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. 4. **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 a `performance.json` exists (built by `/socialforge:ingest-performance` from 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 honest `no_clear_wins` when 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. 5. **A research brief** (optional) — if `/socialforge:research-month` wrote `output/{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

1. Read the brand profile. List pillars, platforms, posting cadence. 2. 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: a `no_clear_wins` verdict is itself a finding — plan from pillars and signals and say the wins rung had nothing; never promote an `unranked` post (below the sample floor) to a win because it felt good. 3. Mine any signals into angles, each tagged with its pillar. Drop what does not map — and say so. 4. 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. 5. Fill the remaining cadence with one-off posts across pillars. 6. Assign every post a tier honestly: HERO (heavy production, big swing), HUB (core pillar content), HYGIENE (light, frequent presence). 7. 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-up
Read more
@indranilbanerjee
Ships withsocialforge

Your client wants 30 days of social content across six platforms with brand-faithful imagery, AI-generated video, and provenance signed for EU markets. You have five days.

4421 skills5 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
44
Star history of indranilbanerjee/socialforge on GitHub, a chart by star-history.com

Other skills on socialforge.

adapt-copy

adapt-copy

Adapt post copy per platform: character limits, hashtags, tone and the right CTA mechanism. \"rewrite this caption for LinkedIn\"

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag3w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about ideate-month.

Which coding agents can use ideate-month?
ideate-month installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.