frontmatter · SKILL.md+
name: content-calendar description: > Turn content pillars, target platforms, and an honest posting cadence into a realistic 2-week content plan for LinkedIn, X, Instagram, Threads, Bluesky, and Facebook. Use when the user asks for a "content calendar", says "plan my week", "plan my next two weeks", or "what should I post this month". It balances pillars against formats (post, thread, carousel), anchors entries to real dates like launches and events, and deliberately leaves slack for reactive posting. It reads social-context.md for the user's brand voice, pillars, platforms, and stated cadence before planning anything. The output is a plan the user executes themselves — a markdown schedule of ideas with working hooks, not a queue of finished posts. metadata: version: 1.0.0 category: Plan topics: [planning] examplePrompt: "Plan my next two weeks of LinkedIn and X content"
Build a realistic 2-week content plan from the user's pillars, platforms, and honest cadence — a plan, not a scheduler.
Context
Read social-context.md at the project root (also check .agents/social-context.md) for brand voice, content pillars, target platforms, audience, and the ## Cadence section. If the file is missing, offer to run the social-context skill first, but don't block — ask 2–3 quick inline questions and proceed:
- What are your 2–4 content pillars?
- Which platforms, and which one matters most?
- How many posts per week have you actually sustained in the last month?
Workflow
- Confirm cadence reality before anything else. Take the number in
## Cadenceat face value — it's the user's honest count, so respect it. If the user asks for more volume than their stated cadence ("give me daily posts" when cadence says 3/week), push back once, explicitly: an unrealistic calendar is worse than none, because missed slots train the user to ignore the whole plan. Plan to the cadence they will actually keep, or to a new number they re-confirm out loud. - Fix the date range. Two weeks starting from the next natural posting day — usually tomorrow, or the coming Monday if today is late in the week. Ask about timezone only if an anchor date makes it genuinely ambiguous.
- Collect anchors. Ask whether anything real lands in the window: a launch, event, webinar, release, or a holiday their audience actually observes. Anchored content is placed first; the rest of the plan flows around it. Anything significant gets a small arc, not a single slot:
- one warm-up post 2–4 days before (tease the problem, not the announcement),
- the anchor-day post itself,
- one follow-through 1–3 days after (result, lesson, or behind-the-scenes).
- Distribute pillars. Spread pillars across the slots so no pillar appears twice in a row on the same platform, and no pillar exceeds ~40% of total slots unless the user says one pillar deliberately dominates. If they have 4+ pillars and few slots, don't shave every pillar to one token post — bench the weakest pillar for this fortnight and tell them which one and why.
- Distribute formats. Rotate the formats each platform actually supports, and match format to pillar — teaching content suits threads, carousels, and document posts; opinion and story content suits single text posts:
- LinkedIn: text post, document/carousel post, image post
- X: single post, thread, image post
- Instagram: carousel, Reel idea, single image
- Threads / Bluesky: short text post, small thread
- Facebook: text post, image post, link post Never assign a format the platform doesn't support, and never let one platform run a single format for the whole fortnight.
- Write a working title or hook for every slot. Not a topic label — an actual first line the user could open with. "Why we killed our best feature" beats "product lessons". If the brand voice is in context, write hooks in that voice; if a Never-list exists, honor it here too.
- Reserve reactive slack. Leave roughly 20% of slots — at least 2 across the fortnight — labelled
reactivewith no assigned topic. These absorb trending conversations, a reply that deserves to become a post, and news in the user's niche. Say this explicitly in the plan notes so the user reads them as capacity, not gaps. - Sequence for energy, not neatness. Front-load week 1 with the strongest hooks — early wins keep the plan alive. Put heavy-prep formats (carousel, long thread) on days the user likely has time; ask if you don't know. If one idea suits two platforms, stagger it 1–3 days apart with a reworked hook — never a same-day copy-paste.
- Do a final realism pass. Before presenting, verify:
- posts per platform per week ≤ stated cadence,
- no back-to-back same-pillar entries on any platform,
- every anchor date covered, arcs intact,
- every slot has a real hook, not a topic label. Cut before you cram — a 9-slot plan the user completes beats a 14-slot plan they abandon.
- Offer, but don't produce unprompted, an .ics export. If the user wants calendar entries, generate a
.icsfile with one all-day event per slot titled[platform] hook, so the plan lands in whatever calendar they already look at.
Quality bar
| Check | Constraint |
|---|---|
| Volume | Matches stated cadence exactly — never exceeds it |
| Pillar spacing | No pillar twice in a row per platform; no pillar > ~40% of slots |
| Format mix | At least 2 distinct formats per platform across the fortnight |
| Hooks | Every slot has a usable first line, not a topic label |
| Slack | ~20% of slots marked reactive, minimum 2 |
| Anchors | Every user-mentioned date has a slot; big ones get a warm-up and follow-through |
| Cross-posting | Same idea on two platforms is staggered 1–3 days with a reworked hook |
Every hook must pass the "would I stop scrolling?" test — specific, concrete, carrying a claim or tension:
| Fails | Passes |
|---|---|
| "Thoughts on productivity" | "I tracked every meeting for 30 days. 11 hours were pure theater." |
| "Our launch story" | "We launched to 4 signups. Here's the email that turned it around." |
| "Tips for founders" | "The advice that cost us six months: 'talk to more users.'" |
Deliverable
A markdown table with columns Date | Platform | Pillar | Format | Working title / hook | Status, every row's status set to idea. For example:
| Date | Platform | Pillar | Format | Working title / hook | Status |
| ---------- | -------- | --------------- | --------- | ----------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mon Jul 20 | LinkedIn | Build-in-public | Text post | "We shipped the wrong feature first. On purpose." | idea |
| Tue Jul 21 | X | Teaching | Thread | "7 pricing-page mistakes I keep seeing (with fixes):" | idea |
| Wed Jul 22 | X | — | — | reactive | idea | Below the table, a short Notes section covering: the cadence you planned to and why, which pillar (if any) was benched, and how to use the reactive slots. Offer the .ics export as an option. This is a plan for the user to execute themselves — hand it back and stop. |