Goal
Produce a sensible 7-day plan: variety + cadence + voice consistency.
V2 Changes
- Agent-aware execution: Uses agent memory to recall what content styles performed best
- State machine updated:
Draft → Inbox (V2 terminology, no more "pending_review")
- Safe Mode is workspace-level only
- Agent memory integration: Stores and recalls top-performing topics, hook styles, posting times
Policy Rules
- Safe Mode enforcement (workspace-level):
- If Safe Mode ON: route all posts to Inbox regardless of role
- If Safe Mode OFF: Creator/Viewer still route to Inbox; Editor/Admin can leave as drafts
- If templates not provided: pick from workspace templates by matching weekly_theme
- Ensure variety across 7 days (don't repeat same hook style 3 days in a row)
Steps
Check policy & capabilities:
bolta.get_workspace_policy(workspace_id) → extract safe_mode
bolta.get_my_capabilities(workspace_id) → check role capabilities
bolta.get_voice_profile(voice_profile_id) → tone, style rules
Load agent memory (if agent context):
- If
agent_id provided:
bolta.recall(agent_id, "top_performing_topics") → prioritize proven topics
bolta.recall(agent_id, "best_posting_times") → suggest optimal times
bolta.recall(agent_id, "preferred_hook_style") → use successful hooks
Load recent context:
bolta.list_recent_posts(account_ids, limit=14) → avoid repetition from last 2 weeks
Build 7-day plan:
Generate posts for each slot:
Route based on governance:
- If Safe Mode ON OR role is Creator/Viewer OR
requested_action == send_to_inbox:
- All posts transition to
inbox state as a batch
- System creates single
inbox_item_id for the bundle (7 posts grouped)
final_state = inbox
- Else:
- Leave posts in
draft state
final_state = draft
Store learnings (if agent context):
- If successful and
agent_id provided:
bolta.remember(agent_id, "last_weekly_plan_theme", weekly_theme)
bolta.remember(agent_id, "content_variety_ratio", goal_distribution)
Output
Return:
post_ids (array of UUIDs, one per day)
calendar (array of objects with: day, goal, topic, hook_style, post_id, suggested_time)
final_state (draft | inbox)
inbox_item_id (if routed to inbox as bundle)
Example Calendar Output
{
"post_ids": ["uuid1", "uuid2", ...],
"calendar": [
{
"day": 1,
"goal": "teach",
"topic": "How to write viral hooks",
"hook_style": "question",
"post_id": "uuid1",
"suggested_time": "2026-02-21T09:00:00Z"
},
{
"day": 2,
"goal": "story",
"topic": "How we 10x'd engagement in 30 days",
"hook_style": "mini-story",
"post_id": "uuid2",
"suggested_time": "2026-02-22T10:00:00Z"
},
...
],
"final_state": "inbox",
"inbox_item_id": "bundle-uuid"
}
Failure Handling
- If template rendering fails: fall back to voice-based generation
- If any post creation fails: continue with others, note failures in warnings
- If routing fails: leave all posts in draft state with error context
Agent Types That Use This Skill
- content_creator — Primary use case (weekly planning as part of content strategy)
- custom — User-defined agents with content planning enabled
1---2name: bolta-week-plan3version: 2.0.04description: Generate a 7-day content calendar draft using voice profile + optional templates. V2 - Agent-aware, routes via workspace Safe Mode governance.5category: creator6roles_allowed: [Viewer, Creator, Editor, Admin]7agent_types: [content_creator, custom]8safe_defaults:9 never_publish: true10 never_schedule_unless_explicit: true11tools_required:12 - bolta.get_workspace_policy13 - bolta.get_my_capabilities14 - bolta.get_voice_profile15 - bolta.list_templates16 - bolta.render_template17 - bolta.draft_post18 - bolta.list_recent_posts19 - bolta.remember20 - bolta.recall21inputs_schema:22 type: object23 required: [workspace_id, voice_profile_id]24 properties:25 workspace_id: { type: string }26 agent_id: { type: string, description: "V2 - Agent executing this skill" }27 voice_profile_id: { type: string }28 account_ids: { type: array, items: { type: string } }29 templates: { type: array, items: { type: string }, description: "template_ids; optional" }30 weekly_theme: { type: string }31 requested_action: { type: string, enum: [draft_only, send_to_inbox] }32 job_id: { type: string, description: "V2 - Job ID if executed as part of a job" }33outputs_schema:34 type: object35 properties:36 post_ids: { type: array, items: { type: string } }37 calendar: { type: array, items: { type: object } }38 final_state: { type: string, enum: [draft, inbox] }39 inbox_item_id: { type: string }40organization: bolta.ai41author: Max Fritzhand42---4344## Goal45Produce a sensible 7-day plan: variety + cadence + voice consistency.4647## V2 Changes48- **Agent-aware execution:** Uses agent memory to recall what content styles performed best49- **State machine updated:** `Draft → Inbox` (V2 terminology, no more "pending_review")50- **Safe Mode is workspace-level only**51- **Agent memory integration:** Stores and recalls top-performing topics, hook styles, posting times5253## Policy Rules541. **Safe Mode enforcement (workspace-level):**55 - If Safe Mode ON: route all posts to Inbox regardless of role56 - If Safe Mode OFF: Creator/Viewer still route to Inbox; Editor/Admin can leave as drafts572. If templates not provided: pick from workspace templates by matching weekly_theme583. Ensure variety across 7 days (don't repeat same hook style 3 days in a row)5960## Steps61621. **Check policy & capabilities:**63 - `bolta.get_workspace_policy(workspace_id)` → extract `safe_mode`64 - `bolta.get_my_capabilities(workspace_id)` → check role capabilities65 - `bolta.get_voice_profile(voice_profile_id)` → tone, style rules66672. **Load agent memory (if agent context):**68 - If `agent_id` provided:69 - `bolta.recall(agent_id, "top_performing_topics")` → prioritize proven topics70 - `bolta.recall(agent_id, "best_posting_times")` → suggest optimal times71 - `bolta.recall(agent_id, "preferred_hook_style")` → use successful hooks72733. **Load recent context:**74 - `bolta.list_recent_posts(account_ids, limit=14)` → avoid repetition from last 2 weeks75764. **Build 7-day plan:**77 - Create 7 slots (Day 1..7). Each slot includes:78 - **Goal:** teach | story | proof | CTA | engagement | thought-leadership79 - **Hook style:** question | contrarian | list | mini-story | stat | quote80 - **Topic:** short description81 - **Optimal time:** based on agent memory or default (9am, varies by day)82 83 - **Variety rules:**84 - Don't repeat same goal type 2 days in a row85 - Don't repeat same hook style 3 days in a row86 - Balance educational vs promotional (70/30 split)87885. **Generate posts for each slot:**89 - If `templates` provided and match slot goal: 90 - `bolta.render_template(template_id, {topic, hook_style, voice_profile_id})`91 - Else if workspace templates available:92 - `bolta.list_templates(workspace_id)` → pick template matching slot goal93 - Else:94 - Generate from scratch using voice profile + slot plan95 96 - For each post:97 - `bolta.draft_post({workspace_id, voice_profile_id, account_ids, content, status: "draft"})`98 - Collect `post_id`991006. **Route based on governance:**101 - If Safe Mode ON OR role is Creator/Viewer OR `requested_action == send_to_inbox`:102 - All posts transition to `inbox` state as a batch103 - System creates single `inbox_item_id` for the bundle (7 posts grouped)104 - `final_state = inbox`105 - Else:106 - Leave posts in `draft` state107 - `final_state = draft`1081097. **Store learnings (if agent context):**110 - If successful and `agent_id` provided:111 - `bolta.remember(agent_id, "last_weekly_plan_theme", weekly_theme)`112 - `bolta.remember(agent_id, "content_variety_ratio", goal_distribution)`113114## Output115Return:116- `post_ids` (array of UUIDs, one per day)117- `calendar` (array of objects with: day, goal, topic, hook_style, post_id, suggested_time)118- `final_state` (draft | inbox)119- `inbox_item_id` (if routed to inbox as bundle)120121## Example Calendar Output122```json123{124 "post_ids": ["uuid1", "uuid2", ...],125 "calendar": [126 {127 "day": 1,128 "goal": "teach",129 "topic": "How to write viral hooks",130 "hook_style": "question",131 "post_id": "uuid1",132 "suggested_time": "2026-02-21T09:00:00Z"133 },134 {135 "day": 2,136 "goal": "story",137 "topic": "How we 10x'd engagement in 30 days",138 "hook_style": "mini-story",139 "post_id": "uuid2",140 "suggested_time": "2026-02-22T10:00:00Z"141 },142 ...143 ],144 "final_state": "inbox",145 "inbox_item_id": "bundle-uuid"146}147```148149## Failure Handling150- If template rendering fails: fall back to voice-based generation151- If any post creation fails: continue with others, note failures in warnings152- If routing fails: leave all posts in draft state with error context153154## Agent Types That Use This Skill155- **content_creator** — Primary use case (weekly planning as part of content strategy)156- **custom** — User-defined agents with content planning enabled