Find your landing page message
Connect a productβs value to a specific audience and write a clear first-screen message.
Turns your marketing strategy into an executable content calendar. Reads strategy.md, asks about your capacity (hours/week), then produces content-calendar.md with weekly themes, channel-specific content types, cadence, and format templates for 4 weeks. Use when: "content calendar", "what shou...
---
name: forbotsake-content-plan-897ecdd29daf
description: >
Turns your marketing strategy into an executable content calendar. Reads
strategy.md,
asks about your capacity (hours/week), then produces content-calendar.md with
weekly
themes, channel-specific content types, cadence, and format templates for 4
weeks.
Use when: "content calendar", "what should I post", "content plan", "how often
should I post",
"weekly content", "marketing calendar", "what to write", "content cadence".
Proactively invoke when the user has a strategy.md and asks about what content
to create
or how to organize their marketing output.
---
# /forbotsake-content-plan
From strategy to a 4-week content calendar you can actually execute on.
## Preamble
```bash
FORBOTSAKE_HOME="${FORBOTSAKE_HOME:-$HOME/.forbotsake}"
mkdir -p "$FORBOTSAKE_HOME"
# Discover forbotsake install directory
_FBS_ROOT=""
for _FBS_CANDIDATE in "$HOME/.codex/skills/forbotsake" "$HOME/.agents/skills/forbotsake"; do
[ -d "$_FBS_CANDIDATE" ] && _FBS_ROOT="$_FBS_CANDIDATE" && break
done
if [ -z "$_FBS_ROOT" ]; then
echo "WARNING: forbotsake not found. Install: bash <(curl -fsSL https://raw.githubusercontent.com/forbotsake/forbotsake/main/bin/install.sh)"
fi
# Check for updates
_UPD=""
[ -n "$_FBS_ROOT" ] && [ -x "$_FBS_ROOT/bin/forbotsake-update-check" ] && _UPD=$("$_FBS_ROOT/bin/forbotsake-update-check" 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "BRANCH: $_BRANCH"
```
```bash
# Check for strategy.md
if [ -f strategy.md ]; then
echo "STRATEGY_EXISTS: yes"
head -20 strategy.md
elif [ -f forbotsake-strategy.md ]; then
echo "STRATEGY_EXISTS: yes"
echo "STRATEGY_FILE: forbotsake-strategy.md"
head -20 forbotsake-strategy.md
else
echo "STRATEGY_EXISTS: no"
fi
# Check for existing content-calendar.md
if [ -f content-calendar.md ]; then
echo "EXISTING_CALENDAR: yes"
head -5 content-calendar.md
else
echo "EXISTING_CALENDAR: no"
fi
# Check for session resume file
_SESSION_FILE="$FORBOTSAKE_HOME/session-content-plan-$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)").json"
if [ -f "$_SESSION_FILE" ]; then
echo "RESUME_AVAILABLE: yes"
echo "SESSION_FILE: $_SESSION_FILE"
else
echo "RESUME_AVAILABLE: no"
fi
```
If output shows `UPGRADE_AVAILABLE <old> <new>`: read the forbotsake-upgrade SKILL.md
at `$_FBS_ROOT/forbotsake-upgrade/SKILL.md` (where `_FBS_ROOT` is the variable already
resolved in the preamble bash above) and follow the "Inline upgrade flow" section **Step 1
only**. If Step 1 results in "Yes" or "Always" (proceed with upgrade), continue through
Steps 2-7 of the inline flow. If Step 1 results in "Not now" or "Never" (declined),
skip Steps 2-7 entirely and continue with this skill immediately.
If output shows `JUST_UPGRADED <old> <new>`: tell user
"Running forbotsake v{new} (just updated from v{old})!" and continue.
If `STRATEGY_EXISTS` is `no`:
> "No strategy.md found. You need a strategy before building a content calendar.
> Run `/forbotsake-marketing-start` first to define your positioning, ICP, and channels."
Stop here. Do NOT proceed without a strategy.
If `EXISTING_CALENDAR` is `yes`, check frontmatter for `generated_by: forbotsake`.
- If forbotsake-generated: "Found existing content-calendar.md. Want to update it or start fresh?"
- If not forbotsake-generated: "Found content-calendar.md not generated by forbotsake. Replace it, or create alongside as forbotsake-content-calendar.md?"
Ask the user directly in conversation. Do NOT overwrite without asking.
If `RESUME_AVAILABLE` is `yes`: "Found a previous session in progress. Resume where you left off?"
Ask the user directly in conversation with options: A) Resume, B) Start fresh.
## Phase 1: Absorb the Strategy
Read `strategy.md` (or `forbotsake-strategy.md`) completely. Extract and internalize:
1. **Positioning statement** -- who is this for, what does it do, why is it different
2. **ICP** -- the specific person, their pain, their current solution, where they hang out
3. **Channel strategy** -- which channels scored highest, their rationale, planned content formats
4. **Messaging pillars** -- the 3 core claims and proof points
5. **First 2-week experiment** -- what was already planned
Present a summary back to the user:
> "From your strategy, I see:
> - **ICP:** {person description}
> - **Top channels:** {channel 1} (score {X}), {channel 2} (score {Y})
> - **Messaging pillars:** {pillar 1}, {pillar 2}, {pillar 3}
> - **Planned experiment:** {first experiment description}
>
> I'll build your calendar around these. First, I need to know your capacity."
## Phase 2: Capacity Assessment
Ask via direct conversation with the user:
> "How many hours per week can you realistically spend on marketing content?
> Be honest -- overcommitting leads to burnout and abandoned calendars.
>
> A) 1-2 hours/week (minimal: 1 channel, 2-3 pieces/week)
> B) 3-5 hours/week (moderate: 1-2 channels, 4-6 pieces/week)
> C) 6-10 hours/week (serious: 2-3 channels, 7-10 pieces/week)
> D) 10+ hours/week (full commitment: 3+ channels, daily content)
> E) Custom -- tell me your exact number"
**Session save after answer:**
```bash
echo '{"phase": "capacity", "answer": "USER_ANSWER"}' >> "$_SESSION_FILE"
```
Map capacity to a cadence tier:
| Tier | Hours | Channels | Pieces/week | Content types |
|------|-------|----------|-------------|---------------|
| Minimal | 1-2 | 1 | 2-3 | Short-form only (tweets, short posts) |
| Moderate | 3-5 | 1-2 | 4-6 | Short-form + 1 long-form |
| Serious | 6-10 | 2-3 | 7-10 | Short-form + long-form + email |
| Full | 10+ | 3+ | 10+ | All formats |
Follow-up question via direct conversation with the user:
> "Any content types you absolutely want to include or exclude?
> For example: 'I love writing threads but hate video' or 'I want to try a newsletter.'
>
> If no preference, just say 'no preference' and I'll optimize for your channels."
**Session save after answer:**
```bash
echo '{"phase": "content_prefs", "answer": "USER_ANSWER"}' >> "$_SESSION_FILE"
```
## Phase 3: Build the Calendar
**Read knowledge frameworks first:**
```bash
_SKILL_DIR=$(dirname "$(find $HOME/.codex/skills -path "*/forbotsake-content-plan/SKILL.md" -type f 2>/dev/null | head -1)")
echo "SKILL_DIR: $_SKILL_DIR"
```
Read `$_SKILL_DIR/../knowledge/frameworks/channel-selection.md` if it exists, for channel-specific content format guidance.
Build the calendar by:
1. **Select channels** from strategy.md, filtered by capacity tier. If capacity is minimal, use only the #1 channel. If moderate, top 2. And so on.
2. **Assign weekly themes** derived from the 3 messaging pillars. Rotate pillars across weeks:
- Week 1: Pillar 1 (the core value prop)
- Week 2: Pillar 2 (the differentiator)
- Week 3: Pillar 3 (the proof/credibility)
- Week 4: Community/engagement (respond, remix, amplify)
3. **Map content types to channels** using channel norms:
- X/Twitter: threads (3-7 tweets), single tweets, quote tweets, polls
- LinkedIn: story posts (1300 chars), carousel documents, articles
- Blog/SEO: how-to posts (1500-2500 words), comparison posts, tutorials
- Email/Newsletter: curated digests, behind-the-scenes, product updates
- Reddit: valuable comments, Show HN posts, community answers
- YouTube: tutorials (5-15 min), shorts (< 60s), walkthroughs
4. **Set cadence per channel** respecting capacity constraints. Always leave 20% buffer -- if someone says 5 hours, plan for 4 hours of content.
5. **Flag high-value targets for `/forbotsake-sharpen`:** While building the calendar, identify any content slots that involve a specific person or organization (e.g., "X thread mentioning @garrytan about gstack", "PR to gstack repo", "outreach to community leader"). For the top 1-2 highest-value targets, add a note in the calendar:
> "π― **High-value target β run `/forbotsake-sharpen` before creating this content.**
> Sharpen will research [target], map your connections, and produce a multi-touch
> execution plan so this content is part of a coordinated approach, not a one-off."
A target qualifies for flagging only if (a) the content slot is specifically about engaging that person/org, not just mentioning them, and (b) the desired outcome requires a response from them (not just awareness). Don't flag every proper noun.
6. **Create format templates** for each content type in the calendar. These are structural templates, not content:
Example thread template:
```
Tweet 1: Hook -- surprising claim or question related to {pillar}
Tweet 2: Context -- why this matters to {ICP}
Tweet 3-5: The insight/walkthrough/proof
Tweet 6: CTA -- what to do next
```
## Phase 4: Write content-calendar.md
Write `content-calendar.md` to the project root with this schema:
```markdown
---
schema_version: 1
generated_by: forbotsake
generated_at: {ISO timestamp}
capacity_hours_per_week: {number}
capacity_tier: {minimal|moderate|serious|full}
channels: [{channel1}, {channel2}]
---
# Content Calendar: {product name}
Generated by /forbotsake-content-plan on {date}
Strategy source: strategy.md
Status: ACTIVE
## Capacity
- **Hours/week:** {capacity}
- **Tier:** {tier}
- **Active channels:** {channels}
- **Buffer:** 20% of capacity reserved for engagement and ad-hoc
## Content Types by Channel
### {Channel 1}
| Type | Format | Time to create | Cadence |
|------|--------|---------------|---------|
{content types for this channel}
### {Channel 2}
(repeat as needed)
## Week 1: {Theme from Pillar 1}
**Focus:** {messaging pillar 1 description}
| Day | Channel | Type | Topic idea | Visual | Est. time |
|-----|---------|------|-----------|--------|-----------|
{specific content slots for the week, with visual treatment recommendation}
**Visual column guidelines:**
- `none` for hot takes, HN posts, Reddit comments, quick replies
- `text-card` for stat highlights, quote cards, key takeaways
- `ai-image` for launch posts, storytelling, blog headers, Product Hunt
- `video` for product demos, launch teasers, explainer shorts
- Default by channel: X thread β `ai-image` (hero), LinkedIn β `ai-image`, Blog β `ai-image`, Email β `none`, HN/Reddit β `none`
**Week 1 total:** {estimated hours}
## Week 2: {Theme from Pillar 2}
{same structure}
## Week 3: {Theme from Pillar 3}
{same structure}
## Week 4: Community & Engagement
**Focus:** Respond, remix, and amplify. Engage with replies, share user stories, remix top-performing content from weeks 1-3.
{same structure, with engagement-focused content}
## Format Templates
### {Content Type 1}: {Channel}
```
{structural template with placeholders}
```
### {Content Type 2}: {Channel}
```
{structural template with placeholders}
```
(one template per content type used in the calendar)
## Metrics to Track
| Channel | Metric | Tool | Check frequency |
|---------|--------|------|----------------|
{metrics per channel -- engagement rate, clicks, replies, signups, etc.}
## Monthly Review Prompts
After 4 weeks, answer these:
1. Which content type got the most engagement?
2. Which channel drove actual signups/conversions (not just views)?
3. What took longer than expected to create?
4. What should you double down on? What should you drop?
```
## Phase 5: Self-Test
After writing content-calendar.md, read it back and check:
1. Does total estimated time per week stay within the capacity budget (with 20% buffer)?
2. Is every content slot specific enough to start writing? ("Thread about API design" not "thread about product")
3. Are the format templates actionable? Could someone follow them without further instruction?
4. Does the cadence match channel norms? (e.g., not 1 tweet/week -- that's too infrequent for X)
If any check fails, fix it and tell the user what you adjusted.
## Phase 6: Next Steps
Tell the user:
> "Your content-calendar.md is ready. 4 weeks of content planned for {channels}.
>
> **What's in it:**
> - {N} content pieces per week across {M} channel(s)
> - Weekly themes rotating through your messaging pillars
> - Format templates for each content type
> - Estimated {X} hours/week (within your {Y} hour budget)
>
> **Next step:** `/forbotsake-create` to write your first piece of content.
> Start with Week 1, Day 1 -- the calendar tells you exactly what to make.
>
> Or if you want to challenge this plan first, run `/forbotsake-cmo-check`
> to stress-test your channel choices and cadence."
## Cleanup
Remove the session file on successful completion:
```bash
rm -f "$_SESSION_FILE" 2>/dev/null
```
---
name: forbotsake-content-plan-897ecdd29daf
description: >
Turns your marketing strategy into an executable content calendar. Reads
strategy.md,
asks about your capacity (hours/week), then produces content-calendar.md with
weekly
themes, channel-specific content types, cadence, and format templates for 4
weeks.
Use when: "content calendar", "what should I post", "content plan", "how often
should I post",
"weekly content", "marketing calendar", "what to write", "content cadence".
Proactively invoke when the user has a strategy.md and asks about what content
to create
or how to organize their marketing output.
---
# /forbotsake-content-plan
From strategy to a 4-week content calendar you can actually execute on.
## Preamble
```bash
FORBOTSAKE_HOME="${FORBOTSAKE_HOME:-$HOME/.forbotsake}"
mkdir -p "$FORBOTSAKE_HOME"
# Discover forbotsake install directory
_FBS_ROOT=""
for _FBS_CANDIDATE in "$HOME/.codex/skills/forbotsake" "$HOME/.agents/skills/forbotsake"; do
[ -d "$_FBS_CANDIDATE" ] && _FBS_ROOT="$_FBS_CANDIDATE" && break
done
if [ -z "$_FBS_ROOT" ]; then
echo "WARNING: forbotsake not found. Install: bash <(curl -fsSL https://raw.githubusercontent.com/forbotsake/forbotsake/main/bin/install.sh)"
fi
# Check for updates
_UPD=""
[ -n "$_FBS_ROOT" ] && [ -x "$_FBS_ROOT/bin/forbotsake-update-check" ] && _UPD=$("$_FBS_ROOT/bin/forbotsake-update-check" 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "BRANCH: $_BRANCH"
```
```bash
# Check for strategy.md
if [ -f strategy.md ]; then
echo "STRATEGY_EXISTS: yes"
head -20 strategy.md
elif [ -f forbotsake-strategy.md ]; then
echo "STRATEGY_EXISTS: yes"
echo "STRATEGY_FILE: forbotsake-strategy.md"
head -20 forbotsake-strategy.md
else
echo "STRATEGY_EXISTS: no"
fi
# Check for existing content-calendar.md
if [ -f content-calendar.md ]; then
echo "EXISTING_CALENDAR: yes"
head -5 content-calendar.md
else
echo "EXISTING_CALENDAR: no"
fi
# Check for session resume file
_SESSION_FILE="$FORBOTSAKE_HOME/session-content-plan-$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)").json"
if [ -f "$_SESSION_FILE" ]; then
echo "RESUME_AVAILABLE: yes"
echo "SESSION_FILE: $_SESSION_FILE"
else
echo "RESUME_AVAILABLE: no"
fi
```
If output shows `UPGRADE_AVAILABLE <old> <new>`: read the forbotsake-upgrade SKILL.md
at `$_FBS_ROOT/forbotsake-upgrade/SKILL.md` (where `_FBS_ROOT` is the variable already
resolved in the preamble bash above) and follow the "Inline upgrade flow" section **Step 1
only**. If Step 1 results in "Yes" or "Always" (proceed with upgrade), continue through
Steps 2-7 of the inline flow. If Step 1 results in "Not now" or "Never" (declined),
skip Steps 2-7 entirely and continue with this skill immediately.
If output shows `JUST_UPGRADED <old> <new>`: tell user
"Running forbotsake v{new} (just updated from v{old})!" and continue.
If `STRATEGY_EXISTS` is `no`:
> "No strategy.md found. You need a strategy before building a content calendar.
> Run `/forbotsake-marketing-start` first to define your positioning, ICP, and channels."
Stop here. Do NOT proceed without a strategy.
If `EXISTING_CALENDAR` is `yes`, check frontmatter for `generated_by: forbotsake`.
- If forbotsake-generated: "Found existing content-calendar.md. Want to update it or start fresh?"
- If not forbotsake-generated: "Found content-calendar.md not generated by forbotsake. Replace it, or create alongside as forbotsake-content-calendar.md?"
Ask the user directly in conversation. Do NOT overwrite without asking.
If `RESUME_AVAILABLE` is `yes`: "Found a previous session in progress. Resume where you left off?"
Ask the user directly in conversation with options: A) Resume, B) Start fresh.
## Phase 1: Absorb the Strategy
Read `strategy.md` (or `forbotsake-strategy.md`) completely. Extract and internalize:
1. **Positioning statement** -- who is this for, what does it do, why is it different
2. **ICP** -- the specific person, their pain, their current solution, where they hang out
3. **Channel strategy** -- which channels scored highest, their rationale, planned content formats
4. **Messaging pillars** -- the 3 core claims and proof points
5. **First 2-week experiment** -- what was already planned
Present a summary back to the user:
> "From your strategy, I see:
> - **ICP:** {person description}
> - **Top channels:** {channel 1} (score {X}), {channel 2} (score {Y})
> - **Messaging pillars:** {pillar 1}, {pillar 2}, {pillar 3}
> - **Planned experiment:** {first experiment description}
>
> I'll build your calendar around these. First, I need to know your capacity."
## Phase 2: Capacity Assessment
Ask via direct conversation with the user:
> "How many hours per week can you realistically spend on marketing content?
> Be honest -- overcommitting leads to burnout and abandoned calendars.
>
> A) 1-2 hours/week (minimal: 1 channel, 2-3 pieces/week)
> B) 3-5 hours/week (moderate: 1-2 channels, 4-6 pieces/week)
> C) 6-10 hours/week (serious: 2-3 channels, 7-10 pieces/week)
> D) 10+ hours/week (full commitment: 3+ channels, daily content)
> E) Custom -- tell me your exact number"
**Session save after answer:**
```bash
echo '{"phase": "capacity", "answer": "USER_ANSWER"}' >> "$_SESSION_FILE"
```
Map capacity to a cadence tier:
| Tier | Hours | Channels | Pieces/week | Content types |
|------|-------|----------|-------------|---------------|
| Minimal | 1-2 | 1 | 2-3 | Short-form only (tweets, short posts) |
| Moderate | 3-5 | 1-2 | 4-6 | Short-form + 1 long-form |
| Serious | 6-10 | 2-3 | 7-10 | Short-form + long-form + email |
| Full | 10+ | 3+ | 10+ | All formats |
Follow-up question via direct conversation with the user:
> "Any content types you absolutely want to include or exclude?
> For example: 'I love writing threads but hate video' or 'I want to try a newsletter.'
>
> If no preference, just say 'no preference' and I'll optimize for your channels."
**Session save after answer:**
```bash
echo '{"phase": "content_prefs", "answer": "USER_ANSWER"}' >> "$_SESSION_FILE"
```
## Phase 3: Build the Calendar
**Read knowledge frameworks first:**
```bash
_SKILL_DIR=$(dirname "$(find $HOME/.codex/skills -path "*/forbotsake-content-plan/SKILL.md" -type f 2>/dev/null | head -1)")
echo "SKILL_DIR: $_SKILL_DIR"
```
Read `$_SKILL_DIR/../knowledge/frameworks/channel-selection.md` if it exists, for channel-specific content format guidance.
Build the calendar by:
1. **Select channels** from strategy.md, filtered by capacity tier. If capacity is minimal, use only the #1 channel. If moderate, top 2. And so on.
2. **Assign weekly themes** derived from the 3 messaging pillars. Rotate pillars across weeks:
- Week 1: Pillar 1 (the core value prop)
- Week 2: Pillar 2 (the differentiator)
- Week 3: Pillar 3 (the proof/credibility)
- Week 4: Community/engagement (respond, remix, amplify)
3. **Map content types to channels** using channel norms:
- X/Twitter: threads (3-7 tweets), single tweets, quote tweets, polls
- LinkedIn: story posts (1300 chars), carousel documents, articles
- Blog/SEO: how-to posts (1500-2500 words), comparison posts, tutorials
- Email/Newsletter: curated digests, behind-the-scenes, product updates
- Reddit: valuable comments, Show HN posts, community answers
- YouTube: tutorials (5-15 min), shorts (< 60s), walkthroughs
4. **Set cadence per channel** respecting capacity constraints. Always leave 20% buffer -- if someone says 5 hours, plan for 4 hours of content.
5. **Flag high-value targets for `/forbotsake-sharpen`:** While building the calendar, identify any content slots that involve a specific person or organization (e.g., "X thread mentioning @garrytan about gstack", "PR to gstack repo", "outreach to community leader"). For the top 1-2 highest-value targets, add a note in the calendar:
> "π― **High-value target β run `/forbotsake-sharpen` before creating this content.**
> Sharpen will research [target], map your connections, and produce a multi-touch
> execution plan so this content is part of a coordinated approach, not a one-off."
A target qualifies for flagging only if (a) the content slot is specifically about engaging that person/org, not just mentioning them, and (b) the desired outcome requires a response from them (not just awareness). Don't flag every proper noun.
6. **Create format templates** for each content type in the calendar. These are structural templates, not content:
Example thread template:
```
Tweet 1: Hook -- surprising claim or question related to {pillar}
Tweet 2: Context -- why this matters to {ICP}
Tweet 3-5: The insight/walkthrough/proof
Tweet 6: CTA -- what to do next
```
## Phase 4: Write content-calendar.md
Write `content-calendar.md` to the project root with this schema:
```markdown
---
schema_version: 1
generated_by: forbotsake
generated_at: {ISO timestamp}
capacity_hours_per_week: {number}
capacity_tier: {minimal|moderate|serious|full}
channels: [{channel1}, {channel2}]
---
# Content Calendar: {product name}
Generated by /forbotsake-content-plan on {date}
Strategy source: strategy.md
Status: ACTIVE
## Capacity
- **Hours/week:** {capacity}
- **Tier:** {tier}
- **Active channels:** {channels}
- **Buffer:** 20% of capacity reserved for engagement and ad-hoc
## Content Types by Channel
### {Channel 1}
| Type | Format | Time to create | Cadence |
|------|--------|---------------|---------|
{content types for this channel}
### {Channel 2}
(repeat as needed)
## Week 1: {Theme from Pillar 1}
**Focus:** {messaging pillar 1 description}
| Day | Channel | Type | Topic idea | Visual | Est. time |
|-----|---------|------|-----------|--------|-----------|
{specific content slots for the week, with visual treatment recommendation}
**Visual column guidelines:**
- `none` for hot takes, HN posts, Reddit comments, quick replies
- `text-card` for stat highlights, quote cards, key takeaways
- `ai-image` for launch posts, storytelling, blog headers, Product Hunt
- `video` for product demos, launch teasers, explainer shorts
- Default by channel: X thread β `ai-image` (hero), LinkedIn β `ai-image`, Blog β `ai-image`, Email β `none`, HN/Reddit β `none`
**Week 1 total:** {estimated hours}
## Week 2: {Theme from Pillar 2}
{same structure}
## Week 3: {Theme from Pillar 3}
{same structure}
## Week 4: Community & Engagement
**Focus:** Respond, remix, and amplify. Engage with replies, share user stories, remix top-performing content from weeks 1-3.
{same structure, with engagement-focused content}
## Format Templates
### {Content Type 1}: {Channel}
```
{structural template with placeholders}
```
### {Content Type 2}: {Channel}
```
{structural template with placeholders}
```
(one template per content type used in the calendar)
## Metrics to Track
| Channel | Metric | Tool | Check frequency |
|---------|--------|------|----------------|
{metrics per channel -- engagement rate, clicks, replies, signups, etc.}
## Monthly Review Prompts
After 4 weeks, answer these:
1. Which content type got the most engagement?
2. Which channel drove actual signups/conversions (not just views)?
3. What took longer than expected to create?
4. What should you double down on? What should you drop?
```
## Phase 5: Self-Test
After writing content-calendar.md, read it back and check:
1. Does total estimated time per week stay within the capacity budget (with 20% buffer)?
2. Is every content slot specific enough to start writing? ("Thread about API design" not "thread about product")
3. Are the format templates actionable? Could someone follow them without further instruction?
4. Does the cadence match channel norms? (e.g., not 1 tweet/week -- that's too infrequent for X)
If any check fails, fix it and tell the user what you adjusted.
## Phase 6: Next Steps
Tell the user:
> "Your content-calendar.md is ready. 4 weeks of content planned for {channels}.
>
> **What's in it:**
> - {N} content pieces per week across {M} channel(s)
> - Weekly themes rotating through your messaging pillars
> - Format templates for each content type
> - Estimated {X} hours/week (within your {Y} hour budget)
>
> **Next step:** `/forbotsake-create` to write your first piece of content.
> Start with Week 1, Day 1 -- the calendar tells you exactly what to make.
>
> Or if you want to challenge this plan first, run `/forbotsake-cmo-check`
> to stress-test your channel choices and cadence."
## Cleanup
Remove the session file on successful completion:
```bash
rm -f "$_SESSION_FILE" 2>/dev/null
```
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.