bolta-skills-indexProvides a structured catalog of all Bolta skills, recommending install sets and routing to skill files for discovery and setup.
Install via ClawdBot CLI:
clawdbot install MaxFritzhand/bolta-skills-indexDisplay name: Bolta Skills Registry
Slug: bolta-skills-registry
Version: 0.5.4
Tags: registry,catalog,bootstrap,workspace,index,discovery
Organization: bolta.ai
Author: Max Fritzhand
Type: registry
Executes: false
{
"name": "bolta.skills.index",
"version": "0.5.4",
"publisher": "bolta.ai",
"verified": true,
"sourceRepository": "https://github.com/boltaai/bolta-skills",
"requiredEnvironmentVariables": [
{
"name": "BOLTA_API_KEY",
"required": true,
"sensitive": true,
"description": "Bolta API key (obtain at bolta.ai/register)",
"format": "sk_live_[64 characters]",
"scope": "workspace"
},
{
"name": "BOLTA_WORKSPACE_ID",
"required": true,
"sensitive": false,
"description": "Workspace UUID for API operations",
"format": "UUID"
},
{
"name": "BOLTA_AGENT_ID",
"required": false,
"sensitive": false,
"description": "Agent principal UUID (for audit logging)",
"format": "UUID"
}
],
"trustedDomains": [
"platty.boltathread.com",
"bolta.ai"
],
"permissions": [
"network:https:platty.boltathread.com",
"network:https:bolta.ai"
],
"thirdPartyPackages": [
{
"name": "@boltaai/mcp-server",
"registry": "npm",
"verified": true,
"sourceRepository": "https://github.com/boltaai/bolta-mcp-server"
}
]
}
This skill requires sensitive API credentials. Read this section carefully before installing.
BOLTA_API_KEY (REQUIRED, SENSITIVE)
sk_live_ followed by 64 alphanumeric charactersposts:write if creating content)bolta.team.rotate_key skillBOLTA_WORKSPACE_ID (REQUIRED)
550e8400-e29b-41d4-a716-446655440000)BOLTA_AGENT_ID (OPTIONAL, RECOMMENDED)
This skill makes HTTPS requests to:
https://platty.boltathread.com - Bolta API serverhttps://bolta.ai - Main application and agent registration portalNo other domains are contacted. All requests are authenticated with your API key.
This skill references:
@boltaai/mcp-server (npm package for Claude Desktop integration)Before installing this skill, you MUST:
platty.boltathread.com and bolta.aiIf you cannot verify the above, DO NOT install this skill.
export BOLTA_API_KEY="sk_live_..."bolta.team.rotate_key skill for zero-downtime rotationposts:write, voice:read)workspace:admin unless absolutely necessarybolta.audit.export_activitybolta.quota.statusThe canonical registry and orchestration layer for all Bolta skills.
This skill serves as the single source of truth for skill discovery, installation recommendations, and workspace-aware capability bootstrapping. It does not execute content operations directly β instead, it provides intelligent routing to the appropriate skills based on:
Key Responsibilities:
When to Use:
Data Access:
This skill accesses:
This skill does NOT access:
https://github.com/boltaai/bolta-skills
Before using Bolta skills, you need to set up agent API access to authenticate your requests.
Visit bolta.ai/register to create your agent principal and obtain an API key.
What you'll need:
During registration, you'll configure:
Agent Name
Example: "Claude Content Agent"
Description: Human-readable name for audit logs
Agent Role
Options:
- creator - Can create drafts (recommended for testing)
- editor - Can create + schedule posts
- reviewer - Can approve/reject posts (review-only access)
Recommended: Start with "creator" role for safety
Permissions
Minimum for content skills:
β posts:write - Create posts
β voice:read - Read voice profiles
Optional (based on use case):
β‘ posts:schedule - Schedule posts (requires editor+ role)
β‘ posts:approve - Approve posts for publishing
β‘ templates:read - Use content templates
β‘ cron:execute - Run automated jobs
After registration, you'll receive:
API Key: sk_live_00000000000000000000000000000000
Workspace ID: 550e8400-e29b-41d4-a716-446655440000
Agent ID: 660e8400-e29b-41d4-a716-446655440001
IMPORTANT:
bolta.team.rotate_key)Set Required Environment Variables:
Before using any Bolta skills, you MUST configure these environment variables:
# Required: Your Bolta API key (from bolta.ai/register)
export BOLTA_API_KEY="sk_live_your_actual_key_here"
# Required: Your workspace UUID (from bolta.ai/register)
export BOLTA_WORKSPACE_ID="550e8400-e29b-41d4-a716-446655440000"
# Optional: Agent principal UUID (for audit logging)
export BOLTA_AGENT_ID="660e8400-e29b-41d4-a716-446655440001"
For Claude Desktop (MCP):
{
"mcpServers": {
"bolta": {
"command": "npx",
"args": ["-y", "@boltaai/mcp-server"],
"env": {
"BOLTA_API_KEY": "sk_live_your_actual_key_here",
"BOLTA_WORKSPACE_ID": "550e8400-e29b-41d4-a716-446655440000",
"BOLTA_AGENT_ID": "660e8400-e29b-41d4-a716-446655440001"
}
}
}
}
For Direct API Calls:
# Use environment variables in your requests
curl https://platty.boltathread.com/v1/posts \
-H "Authorization: Bearer ${BOLTA_API_KEY}" \
-H "X-Workspace-ID: ${BOLTA_WORKSPACE_ID}" \
-H "Content-Type: application/json" \
-d '{ "prompt": "Create a post about productivity" }'
For Node.js/TypeScript Applications:
import { BoltaClient } from '@boltaai/sdk';
// Load from environment variables (recommended)
const bolta = new BoltaClient({
apiKey: process.env.BOLTA_API_KEY,
workspaceId: process.env.BOLTA_WORKSPACE_ID,
agentId: process.env.BOLTA_AGENT_ID // Optional
});
// Verify all required vars are set
if (!process.env.BOLTA_API_KEY || !process.env.BOLTA_WORKSPACE_ID) {
throw new Error('Missing required Bolta credentials. Set BOLTA_API_KEY and BOLTA_WORKSPACE_ID');
}
Security Reminder:
.env files locally (add .env to .gitignore)bolta.team.rotate_keyTest your configuration with a simple skill:
curl https://api.bolta.ai/v1/workspaces/{workspace_id} \
-H "Authorization: Bearer YOUR_API_KEY"
{
"id": "550e8400-...",
"name": "My Workspace",
"safe_mode": true,
"autonomy_mode": "managed",
"max_posts_per_day": 100
}
### Troubleshooting Setup
#### Error: "Invalid API Key"
**Cause:** Key is incorrect or has been rotated
**Solutions:**
1. Verify key matches exactly (no extra spaces)
2. Check if key was rotated β Get new key at bolta.ai/register
3. Ensure you're using the correct workspace key
#### Error: "Workspace Not Found"
**Cause:** Workspace ID mismatch or no access
**Solutions:**
1. Verify workspace_id matches your registration
2. Confirm you have access to this workspace (visit bolta.ai/workspaces)
3. Check if workspace was deleted
#### Error: "Permission Denied"
**Cause:** Agent role lacks required permission
**Solutions:**
1. Check your agent's permissions at bolta.ai/register
2. For content creation: Need `posts:write` minimum
3. For scheduling: Need `posts:schedule` + editor role
4. For automation: Need `cron:execute` permission
---
## Installation & First Run
### π― Complete Skill Pack Installation
**You're currently viewing the registry skill only.** To access the full Bolta skills library, you should install the complete skill pack.
**Option 1: Install Full Skill Pack (Recommended)**bash
git clone https://github.com/boltaai/bolta-skills.git
curl -L https://github.com/boltaai/bolta-skills/archive/refs/heads/main.zip -o bolta-skills.zip
unzip bolta-skills.zip
**What You Get:**
bolta-skills/
βββ README.md # β START HERE - Complete getting started guide
βββ skills/
β βββ bolta.skills.index/ # β You're here (registry)
β βββ voice-plane/
β β βββ bolta.voice.bootstrap/
β β βββ bolta.voice.learn_from_samples/
β β βββ bolta.voice.evolve/
β β βββ bolta.voice.validate/
β βββ content-plane/
β β βββ bolta.draft.post/
β β βββ bolta.loop.from_template/
β β βββ bolta.week.plan/
β β βββ bolta.content.repurpose/
β β βββ bolta.content.thread_builder/
β βββ review-plane/
β β βββ bolta.inbox.triage/
β β βββ bolta.review.digest/
β β βββ bolta.review.approve_and_route/
β β βββ bolta.review.suggest_edits/
β β βββ bolta.review.compliance_check/
β βββ automation-plane/
β β βββ bolta.cron.generate_to_review/
β β βββ bolta.cron.generate_and_schedule/
β β βββ bolta.recurring.from_template/
β β βββ bolta.auto.respond_to_trending/
β β βββ bolta.auto.content_gap_fill/
β βββ control-plane/
β βββ bolta.team.create_agent_teammate/
β βββ bolta.team.rotate_key/
β βββ bolta.policy.explain/
β βββ bolta.audit.export_activity/
β βββ bolta.quota.status/
β βββ bolta.workspace.config/
βββ docs/
β βββ getting-started.md # Quickstart guide
β βββ autonomy-modes.md # Understanding autonomy levels
β βββ safe-mode.md # Safe Mode deep dive
β βββ quotas.md # Quota enforcement guide
β βββ voice-versioning.md # Voice profile evolution
βββ examples/
βββ basic-workflow.md # Common usage patterns
βββ automation-setup.md # Setting up cron jobs
βββ multi-agent.md # Managing multiple agents
**Option 2: Install Individual Skills (Manual)**
If you only need specific skills, install them individually:bash
curl -L https://raw.githubusercontent.com/boltaai/bolta-skills/main/skills/voice-plane/bolta.voice.bootstrap/SKILL.md \
-o bolta.voice.bootstrap.md
curl -L https://raw.githubusercontent.com/boltaai/bolta-skills/main/skills/content-plane/bolta.draft.post/SKILL.md \
-o bolta.draft.post.md
---
### π First Run: Read the README
**IMPORTANT: After installation, read the README for complete setup instructions.**
**Quick Start Commands:**bash
cd bolta-skills
cat README.md
code README.md # VS Code
vim README.md # Vim
**What the README Covers:**
3. β
Environment variable configuration
4. β
First skill execution (test workflow)
5. β
Troubleshooting common issues
6. β
Recommended skill installation order
7. β
Best practices for production use
**Critical README Sections:**markdown
---
### π Recommended First-Run Flow
**After installing the skill pack:**
**Step 1: Read Documentation**bash
**Step 2: Verify Installation**bash
ls -la skills/*/SKILL.md
**Step 3: Configure Agent**bash
export BOLTA_API_KEY="sk_live_..."
export BOLTA_WORKSPACE_ID="..."
curl https://platty.boltathread.com/v1/workspaces/${BOLTA_WORKSPACE_ID} \
-H "Authorization: Bearer ${BOLTA_API_KEY}"
Step 5: Install Recommended Skills
# The registry will recommend skills based on your:
# - Safe Mode setting
# - Autonomy mode
# - User role
# - Current quotas
# Follow recommendations to install your first skill set
Mistake 1: Skipping the README
β Installing skills without reading README
β
Read README.md first β understand workflows β install skills
Mistake 2: Missing Environment Variables
β Running skills without BOLTA_API_KEY set
β
Configure env vars BEFORE running any skill
Mistake 3: Installing Skills Out of Order
β Running bolta.draft.post before creating voice profile
β
Follow recommended order: voice.bootstrap β draft.post β review
Mistake 4: Not Understanding Autonomy Modes
β Using autopilot mode without understanding routing
β
Read docs/autonomy-modes.md β start with "assisted" β graduate to "managed"
Mistake 5: Hardcoding API Keys
β Putting API keys directly in skill files
β
Use environment variables β .env file β add .env to .gitignore
After installing the skill pack, verify:
Once all items are checked, you're ready to use the full Bolta skill library!
Once your API is configured:
Run: bolta.voice.bootstrap
β Establishes your brand voice
Run: bolta.draft.post
β Creates a test post in Draft status
Run: bolta.skills.index
β Returns personalized skill recommendations
Review: Safe Mode (ON/OFF)
Review: Autonomy Mode (assisted/managed/autopilot)
Set: Daily quota limits
Skills are organized into planes β logical groupings that separate concerns and enable modular capability composition.
Purpose: Brand voice creation, evolution, and validation
Voice is the foundation of all content operations. These skills help establish, refine, and maintain consistent brand voice across all generated content.
Core Principle: Voice should be learned from examples, validated against real content, and evolved over time.
Skills:
bolta.voice.bootstrap - Interactive voice profile creation from scratchbolta.voice.learn_from_samples - Extract voice patterns from existing contentbolta.voice.evolve - Refine voice based on approved postsbolta.voice.validate - Score content against voice profile (0-100)Typical Flow:
Purpose: Content creation, planning, and scheduling
The execution layer for post creation. These skills transform ideas into scheduled social media posts.
Core Principle: Content should be intentional, planned, and aligned with voice.
Skills:
bolta.draft.post - Create a single post in Draft statusbolta.loop.from_template - Generate multiple posts from a templatebolta.week.plan - Plan a week's worth of content with schedulingbolta.content.repurpose - Transform long-form content into social postsbolta.content.thread_builder - Create multi-post threads (Twitter, LinkedIn)Output: Draft or Scheduled posts (subject to Safe Mode routing)
Purpose: Human-in-the-loop review and approval workflows
Enables teams to review, approve, and refine agent-generated content before publishing.
Core Principle: Autonomy with oversight β agents generate, humans decide.
Skills:
bolta.inbox.triage - Organize pending posts by priority/topicbolta.review.digest - Daily summary of posts awaiting reviewbolta.review.approve_and_route - Bulk approve + schedule postsbolta.review.suggest_edits - AI-powered improvement suggestionsbolta.review.compliance_check - Flag posts for policy violationsTypical Flow:
review.digest sends daily summaryinbox.triageapprove_and_routePurpose: Scheduled, recurring, and autonomous content generation
The autonomy layer. These skills enable hands-off content operations with guardrails.
Core Principle: Predictable automation with quota enforcement and safety nets.
Skills:
bolta.cron.generate_to_review - Daily content generation β Pending Approvalbolta.cron.generate_and_schedule - Autonomous scheduling (requires Safe Mode OFF)bolta.recurring.from_template - Recurring posts (daily tips, weekly roundups)bolta.auto.respond_to_trending - Auto-generate posts from trending topicsbolta.auto.content_gap_fill - Detect scheduling gaps and auto-fillSafety Guardrails:
Purpose: Workspace governance, policy, and audit
The management layer for teams, permissions, security, and compliance.
Core Principle: Visibility and control for workspace administrators.
Skills:
bolta.team.create_agent_teammate - Provision agent principals with specific rolesbolta.team.rotate_key - Rotate API keys for securitybolta.policy.explain - Explain authorization decisions ("Why was this blocked?")bolta.audit.export_activity - Export audit logs (PostActivity, JobRuns)bolta.quota.status - View current quota usage (daily posts, hourly API calls)bolta.workspace.config - View/update autonomy mode, Safe Mode, quotasTypical Use Cases:
Path: skills/voice-plane/bolta.voice.bootstrap/SKILL.md
Purpose: Interactive voice profile creation wizard
Inputs: Brand name, industry, target audience
Outputs: Complete VoiceProfile (tone, dos, don'ts, constraints)
Permissions: voice:write
Safe Mode: Compatible
Typical Duration: 5-10 minutes (interactive)
Path: skills/voice-plane/bolta.voice.learn_from_samples/SKILL.md
Purpose: Extract voice patterns from existing content
Inputs: URLs or text samples (3-10 examples)
Outputs: Voice profile draft with auto-detected patterns
Permissions: voice:write
Safe Mode: Compatible
Typical Duration: 2-3 minutes
Path: skills/voice-plane/bolta.voice.evolve/SKILL.md
Purpose: Refine voice based on approved posts
Inputs: Date range for approved posts
Outputs: Updated VoiceProfile (version incremented)
Permissions: voice:write, posts:read
Safe Mode: Compatible
Typical Duration: 1-2 minutes
Note: Creates new VoiceProfileVersion snapshot
Path: skills/voice-plane/bolta.voice.validate/SKILL.md
Purpose: Score content against voice profile
Inputs: Post ID or content text
Outputs: Compliance score (0-100), deviation report
Permissions: voice:read, posts:read
Safe Mode: Compatible
Typical Duration: < 30 seconds
Path: skills/content-plane/bolta.draft.post/SKILL.md
Purpose: Create a single post in Draft status
Inputs: Topic, platform(s), optional voice profile ID
Outputs: Post ID (Draft status)
Permissions: posts:write
Safe Mode: Always routes to Draft
Autonomy Mode: Respects assisted/managed routing
Quota Impact: +1 to daily post count
Typical Duration: 30-60 seconds
Path: skills/content-plane/bolta.loop.from_template/SKILL.md
Purpose: Generate multiple posts from a template
Inputs: Template ID, count (1-50), variation parameters
Outputs: Array of Post IDs
Permissions: posts:write, templates:read
Safe Mode: Routes all posts to Draft
Quota Impact: +N to daily post count (checked before execution)
Typical Duration: 1-3 minutes (depends on count)
Note: Uses JobRun tracking for observability
Path: skills/content-plane/bolta.week.plan/SKILL.md
Purpose: Plan a week's content with scheduling
Inputs: Start date, posting frequency, themes
Outputs: 7-day content calendar with scheduled posts
Permissions: posts:write, posts:schedule
Safe Mode: Routes to Pending Approval if ON
Autonomy Mode: Respects managed/autopilot routing
Quota Impact: +5-15 to daily post count (spread across week)
Typical Duration: 3-5 minutes
Path: skills/content-plane/bolta.content.repurpose/SKILL.md
Purpose: Transform long-form content into social posts
Inputs: Blog URL or full text, target platforms
Outputs: Multiple platform-specific posts
Permissions: posts:write
Safe Mode: Routes to Draft
Typical Duration: 2-4 minutes
Path: skills/content-plane/bolta.content.thread_builder/SKILL.md
Purpose: Create multi-post threads
Inputs: Topic, thread length (2-10 posts), platform
Outputs: Linked post sequence
Permissions: posts:write
Safe Mode: Routes to Draft
Typical Duration: 1-2 minutes
Path: skills/review-plane/bolta.inbox.triage/SKILL.md
Purpose: Organize pending posts by priority
Inputs: Optional filters (platform, date range)
Outputs: Categorized list of posts awaiting review
Permissions: posts:read, posts:review
Safe Mode: N/A (read-only)
Typical Duration: < 10 seconds
Path: skills/review-plane/bolta.review.digest/SKILL.md
Purpose: Daily summary of posts awaiting review
Inputs: None (workspace context)
Outputs: Formatted summary with quick approve links
Permissions: posts:read, posts:review
Safe Mode: N/A (read-only)
Typical Duration: < 5 seconds
Note: Designed for cron execution (daily 9am)
Path: skills/review-plane/bolta.review.approve_and_route/SKILL.md
Purpose: Bulk approve and schedule posts
Inputs: Post IDs or filter criteria
Outputs: Updated post statuses
Permissions: posts:write, posts:approve, posts:schedule
Safe Mode: N/A (human override)
Typical Duration: < 30 seconds
Note: Bypasses Safe Mode (human decision)
Path: skills/review-plane/bolta.review.suggest_edits/SKILL.md
Purpose: AI-powered improvement suggestions
Inputs: Post ID
Outputs: Suggested edits with rationale
Permissions: posts:read, voice:read
Safe Mode: N/A (read-only)
Typical Duration: < 30 seconds
Path: skills/review-plane/bolta.review.compliance_check/SKILL.md
Purpose: Flag posts for policy violations
Inputs: Post ID or bulk filter
Outputs: Compliance report with severity flags
Permissions: posts:read, policies:read
Safe Mode: N/A (read-only)
Typical Duration: < 10 seconds
Path: skills/automation-plane/bolta.cron.generate_to_review/SKILL.md
Purpose: Daily content generation β Pending Approval
Inputs: None (uses workspace settings)
Outputs: Posts in Pending Approval status
Permissions: posts:write, cron:execute
Safe Mode: Compatible (routes to Pending Approval)
Autonomy Mode: Recommended for managed/governance
Quota Impact: +3-10 posts/day (configurable)
Typical Duration: 2-5 minutes
Execution: Daily cron (configurable time)
Path: skills/automation-plane/bolta.cron.generate_and_schedule/SKILL.md
Purpose: Autonomous scheduling (no human review)
Inputs: None (uses workspace settings)
Outputs: Posts in Scheduled status
Permissions: posts:write, posts:schedule, cron:execute
Safe Mode: INCOMPATIBLE (requires Safe Mode OFF)
Autonomy Mode: REQUIRES autopilot
Quota Impact: +5-15 posts/day (configurable)
Typical Duration: 3-7 minutes
Execution: Daily cron (configurable time)
Warning: Bypasses human review β use with caution
Path: skills/automation-plane/bolta.recurring.from_template/SKILL.md
Purpose: Recurring posts (daily tips, weekly roundups)
Inputs: Template ID, recurrence pattern (daily/weekly/monthly)
Outputs: RecurringPostReview record + scheduled posts
Permissions: posts:write, templates:read
Safe Mode: Respects routing
Quota Impact: +N posts per recurrence
Typical Duration: 1-2 minutes (setup)
Path: skills/automation-plane/bolta.auto.respond_to_trending/SKILL.md
Purpose: Auto-generate posts from trending topics
Inputs: Trending topic sources (Twitter, Google Trends)
Outputs: Posts related to current trends
Permissions: posts:write, integrations:read
Safe Mode: Routes to Pending Approval
Quota Impact: +1-5 posts/day
Typical Duration: 2-3 minutes
Path: skills/automation-plane/bolta.auto.content_gap_fill/SKILL.md
Purpose: Detect scheduling gaps and auto-fill
Inputs: Date range to analyze
Outputs: Posts to fill detected gaps
Permissions: posts:write, posts:read
Safe Mode: Routes to Pending Approval
Quota Impact: Variable (based on gaps detected)
Typical Duration: 3-5 minutes
Path: skills/control-plane/bolta.team.create_agent_teammate/SKILL.md
Purpose: Provision agent principals with roles
Inputs: Agent name, role (creator/editor/reviewer), permissions
Outputs: AgentPrincipal record + API key
Permissions: workspace:admin, agents:create
Safe Mode: N/A (admin operation)
Role Required: Owner or Admin
Typical Duration: < 30 seconds
Path: skills/control-plane/bolta.team.rotate_key/SKILL.md
Purpose: Rotate API keys for security
Inputs: API key ID or agent ID
Outputs: New API key (old key revoked)
Permissions: workspace:admin, agents:manage
Safe Mode: N/A (admin operation)
Role Required: Owner or Admin
Typical Duration: < 10 seconds
Note: Old key immediately invalidated
Path: skills/control-plane/bolta.policy.explain/SKILL.md
Purpose: Explain authorization decisions
Inputs: Action attempt (e.g., "Why can't I publish?")
Outputs: Policy analysis with specific blockers
Permissions: None (informational)
Safe Mode: N/A (read-only)
Typical Duration: < 5 seconds
Use Case: Troubleshooting "Access Denied" errors
Path: skills/control-plane/bolta.audit.export_activity/SKILL.md
Purpose: Export audit logs
Inputs: Date range, filters (principal, action type, denied actions)
Outputs: CSV or JSON export of PostActivity records
Permissions: workspace:admin, audit:read
Safe Mode: N/A (admin operation)
Role Required: Owner or Admin
Typical Duration: < 30 seconds
Use Case: Compliance reporting, SOC2 audits
Path: skills/control-plane/bolta.quota.status/SKILL.md
Purpose: View current quota usage
Inputs: None (workspace context)
Outputs: Daily post count, hourly API usage, limits, percentage
Permissions: workspace:read
Safe Mode: N/A (read-only)
Typical Duration: < 5 seconds
Path: skills/control-plane/bolta.workspace.config/SKILL.md
Purpose: View/update workspace settings
Inputs: Settings to update (autonomy_mode, safe_mode, quotas)
Outputs: Updated workspace configuration
Permissions: workspace:admin
Safe Mode: N/A (admin operation)
Role Required: Owner or Admin
Typical Duration: < 10 seconds
Warning: Changing autonomy mode affects all agent operations
Install sets are curated skill bundles tailored to specific autonomy modes and use cases.
Autonomy Level: Low (maximum human control)
Safe Mode: Must be ON
Use Case: New users, high-stakes brands, learning Bolta
Skills:
bolta.voice.bootstrap - Set up initial voice profilebolta.draft.post - Create individual posts (always Draft)bolta.loop.from_template - Scale content creation safelybolta.week.plan - Plan content calendarRationale:
Assisted mode prioritizes learning and control. All content goes to Draft for manual review before scheduling. Ideal for:
Expected Workflow:
Autonomy Level: Medium (guided automation with oversight)
Safe Mode: ON (recommended) or OFF
Use Case: Established users, moderate volume, review workflows
Skills:
bolta.inbox.triage - Organize posts for reviewbolta.review.digest - Daily review summariesbolta.review.approve_and_route - Bulk approval workflowbolta.voice.validate - Quality scoringbolta.cron.generate_to_review - Daily automated generationRationale:
Managed mode balances efficiency with oversight. Agent generates content autonomously, but humans approve before publishing. Ideal for:
Expected Workflow:
Autonomy Level: High (hands-off automation)
Safe Mode: Must be OFF (incompatible)
Use Case: High volume, trusted voice, minimal oversight
Skills:
bolta.cron.generate_and_schedule - Autonomous schedulingbolta.auto.respond_to_trending - Trend-based postingbolta.auto.content_gap_fill - Auto-fill scheduling gapsbolta.recurring.from_template - Recurring post automationbolta.quota.status - Monitor quota usageRationale:
Autopilot mode maximizes efficiency for high-volume operations. Agent schedules directly without human approval. Ideal for:
Expected Workflow:
Warning:
Autopilot bypasses human review. Only use with:
Autonomy Level: N/A (control & audit focused)
Safe Mode: N/A
Use Case: Admins, compliance teams, workspace management
Skills:
bolta.policy.explain - Authorization troubleshootingbolta.audit.export_activity - Compliance exportsbolta.team.create_agent_teammate - Agent provisioningbolta.team.rotate_key - Security operationsbolta.workspace.config - Workspace administrationbolta.quota.status - Usage monitoringbolta.voice.validate - Quality auditingRationale:
Governance mode is not an autonomy level β it's a control plane install set for administrators. Ideal for:
Expected Workflow:
This matrix determines which skills to recommend based on workspace context.
IF voice_profile_count == 0:
RECOMMEND: bolta.voice.bootstrap (HIGH PRIORITY)
RATIONALE: Cannot create content without voice profile
IF safe_mode == ON AND autonomy_mode == "autopilot":
ERROR: Incompatible configuration
RECOMMEND: Either disable Safe Mode OR switch to "managed"
RATIONALE: Autopilot bypasses review; contradicts Safe Mode intent
IF principal_type == "agent":
IF agent.permissions NOT IN required_permissions:
EXCLUDE: Skills requiring missing permissions
RECOMMEND: bolta.policy.explain to understand blockers
IF role IN ["viewer", "reviewer"]:
EXCLUDE: All write operations (posts:write, voice:write)
INCLUDE: Read-only skills (audit.export, policy.explain)
IF role IN ["creator", "editor"]:
INCLUDE: Content plane skills
EXCLUDE: Control plane skills (team.*, workspace.config)
IF role IN ["admin", "owner"]:
INCLUDE: All skills (no restrictions)
IF daily_posts_used >= (daily_post_limit * 0.8):
WARN: "Approaching daily quota limit"
RECOMMEND: bolta.quota.status to view usage
IF daily_posts_used >= daily_post_limit:
BLOCK: All posts:write skills
RECOMMEND: Increase quota via bolta.workspace.config
IF autonomy_mode == "assisted":
INCLUDE: Content plane (draft only)
EXCLUDE: Automation plane (no cron jobs)
IF autonomy_mode == "managed":
INCLUDE: Content + Review planes
INCLUDE: bolta.cron.generate_to_review (safe automation)
EXCLUDE: bolta.cron.generate_and_schedule (requires autopilot)
IF autonomy_mode == "autopilot":
INCLUDE: All automation skills
REQUIRE: Safe Mode OFF
RECOMMEND: Quota monitoring (quota.status)
API Call: GET /api/v1/workspaces/{workspace_id}
Extract:
safe_mode (boolean)autonomy_mode (assisted/managed/autopilot/governance)max_posts_per_day (int, nullable)max_api_requests_per_hour (int, nullable)API Call: GET /api/v1/me or use request context
Extract:
principal_type (user or agent)role (owner/admin/editor/creator/reviewer/viewer)permissions array, autonomy_overrideAPI Call: GET /api/v1/workspaces/{workspace_id}/voice-profiles
Extract:
voice_profile_count (0 = needs bootstrap)version (higher version = more refined)status (active/draft/archived)API Call: GET /api/v1/workspaces/{workspace_id}/quota-status (via bolta.quota.status)
Extract:
daily_posts.used / daily_posts.limithourly_api_requests.used / hourly_api_requests.limitRun through decision matrix (see above) to filter skills.
Output:
recommended_skills - Array of skill slugsexcluded_skills - Array with exclusion reasonswarnings - Array of configuration issues{
"workspace_id": "uuid",
"safe_mode": true,
"autonomy_mode": "managed",
"role": "editor",
"principal_type": "user",
"voice_profile_status": {
"exists": true,
"version": 3,
"status": "active"
},
"quota_status": {
"daily_posts": {
"used": 12,
"limit": 100,
"percentage": 12
},
"hourly_api_requests": {
"used": 45,
"limit": 1000,
"percentage": 4.5
}
},
"recommended_mode": "managed",
"recommended_skills": [
"bolta.draft.post",
"bolta.loop.from_template",
"bolta.week.plan",
"bolta.inbox.triage",
"bolta.review.digest",
"bolta.review.approve_and_route",
"bolta.voice.validate",
"bolta.cron.generate_to_review"
],
"excluded_skills": [
{
"skill": "bolta.cron.generate_and_schedule",
"reason": "Requires autonomy_mode=autopilot (current: managed)"
},
{
"skill": "bolta.workspace.config",
"reason": "Requires role owner/admin (current: editor)"
}
],
"warnings": [],
"next_steps": [
"Install recommended skills via MCP or API",
"Run bolta.voice.validate to check content quality",
"Configure daily digest via bolta.review.digest"
]
}
{
"workspace_id": "550e8400-e29b-41d4-a716-446655440000",
"safe_mode": true,
"autonomy_mode": "assisted",
"role": "owner",
"principal_type": "user",
"voice_profile_status": {
"exists": false,
"version": 0,
"status": null
},
"quota_status": {
"daily_posts": {"used": 0, "limit": 100, "percentage": 0},
"hourly_api_requests": {"used": 0, "limit": 1000, "percentage": 0}
},
"recommended_mode": "assisted",
"recommended_skills": [
"bolta.voice.bootstrap"
],
"excluded_skills": [],
"warnings": [
{
"type": "missing_voice_profile",
"message": "No voice profile found. Run bolta.voice.bootstrap to get started.",
"severity": "high"
}
],
"next_steps": [
"1. Run bolta.voice.bootstrap to create your brand voice",
"2. After voice setup, install content plane skills",
"3. Create your first post with bolta.draft.post"
]
}
{
"workspace_id": "660e8400-e29b-41d4-a716-446655440001",
"safe_mode": true,
"autonomy_mode": "managed",
"role": "admin",
"principal_type": "user",
"voice_profile_status": {
"exists": true,
"version": 5,
"status": "active"
},
"quota_status": {
"daily_posts": {"used": 18, "limit": 50, "percentage": 36},
"hourly_api_requests": {"used": 142, "limit": 1000, "percentage": 14.2}
},
"recommended_mode": "managed",
"recommended_skills": [
"bolta.draft.post",
"bolta.loop.from_template",
"bolta.week.plan",
"bolta.content.repurpose",
"bolta.inbox.triage",
"bolta.review.digest",
"bolta.review.approve_and_route",
"bolta.voice.validate",
"bolta.voice.evolve",
"bolta.cron.generate_to_review",
"bolta.team.create_agent_teammate",
"bolta.audit.export_activity",
"bolta.quota.status"
],
"excluded_skills": [
{
"skill": "bolta.cron.generate_and_schedule",
"reason": "Requires autonomy_mode=autopilot AND safe_mode=OFF"
}
],
"warnings": [],
"next_steps": [
"Configure daily content generation via bolta.cron.generate_to_review",
"Set up review workflow with digest notifications",
"Consider voice evolution (version 5 is mature)"
]
}
{
"workspace_id": "770e8400-e29b-41d4-a716-446655440002",
"safe_mode": false,
"autonomy_mode": "autopilot",
"role": "owner",
"principal_type": "user",
"voice_profile_status": {
"exists": true,
"version": 12,
"status": "active"
},
"quota_status": {
"daily_posts": {"used": 47, "limit": 200, "percentage": 23.5},
"hourly_api_requests": {"used": 523, "limit": 2000, "percentage": 26.15}
},
"recommended_mode": "autopilot",
"recommended_skills": [
"bolta.draft.post",
"bolta.loop.from_template",
"bolta.week.plan",
"bolta.content.repurpose",
"bolta.content.thread_builder",
"bolta.inbox.triage",
"bolta.review.digest",
"bolta.review.approve_and_route",
"bolta.voice.validate",
"bolta.voice.evolve",
"bolta.cron.generate_to_review",
"bolta.cron.generate_and_schedule",
"bolta.auto.respond_to_trending",
"bolta.auto.content_gap_fill",
"bolta.recurring.from_template",
"bolta.quota.status",
"bolta.workspace.config"
],
"excluded_skills": [],
"warnings": [
{
"type": "high_autonomy",
"message": "Autopilot mode bypasses human review. Monitor quota usage and validate voice compliance regularly.",
"severity": "medium"
},
{
"type": "quota_usage",
"message": "Daily quota at 23.5% usage. Consider monitoring trends to avoid hitting limit.",
"severity": "low"
}
],
"next_steps": [
"Monitor quota usage daily via bolta.quota.status",
"Run voice validation spot-checks (10% of published posts)",
"Review JobRun stats weekly for error trends"
]
}
{
"workspace_id": "880e8400-e29b-41d4-a716-446655440003",
"safe_mode": true,
"autonomy_mode": "managed",
"role": "creator",
"principal_type": "agent",
"agent": {
"id": "agent-uuid",
"name": "Content Bot",
"permissions": ["posts:write", "posts:read", "templates:read"],
"autonomy_override": null
},
"voice_profile_status": {
"exists": true,
"version": 7,
"status": "active"
},
"quota_status": {
"daily_posts": {"used": 8, "limit": 30, "percentage": 26.67},
"hourly_api_requests": {"used": 67, "limit": 500, "percentage": 13.4}
},
"recommended_mode": "managed",
"recommended_skills": [
"bolta.draft.post",
"bolta.loop.from_template"
],
"excluded_skills": [
{
"skill": "bolta.week.plan",
"reason": "Requires posts:schedule permission (agent lacks this)"
},
{
"skill": "bolta.review.approve_and_route",
"reason": "Requires posts:approve permission (agent lacks this)"
},
{
"skill": "bolta.voice.evolve",
"reason": "Requires voice:write permission (agent lacks this)"
},
{
"skill": "bolta.workspace.config",
"reason": "Requires workspace:admin permission (agent role: creator)"
}
],
"warnings": [
{
"type": "limited_permissions",
"message": "Agent has limited permissions. Some skills are unavailable.",
"severity": "info"
}
],
"next_steps": [
"Use bolta.draft.post to create content",
"Use bolta.loop.from_template for batch generation",
"Human reviewers should use bolta.review.approve_and_route to publish"
]
}
{
"workspace_id": "990e8400-e29b-41d4-a716-446655440004",
"safe_mode": true,
"autonomy_mode": "managed",
"role": "editor",
"principal_type": "user",
"voice_profile_status": {
"exists": true,
"version": 4,
"status": "active"
},
"quota_status": {
"daily_posts": {"used": 100, "limit": 100, "percentage": 100},
"hourly_api_requests": {"used": 234, "limit": 1000, "percentage": 23.4}
},
"recommended_mode": "managed",
"recommended_skills": [
"bolta.inbox.triage",
"bolta.review.digest",
"bolta.review.approve_and_route",
"bolta.voice.validate",
"bolta.quota.status",
"bolta.policy.explain"
],
"excluded_skills": [
{
"skill": "bolta.draft.post",
"reason": "Daily quota limit reached (100/100 posts)"
},
{
"skill": "bolta.loop.from_template",
"reason": "Daily quota limit reached (100/100 posts)"
},
{
"skill": "bolta.week.plan",
"reason": "Daily quota limit reached (100/100 posts)"
}
],
"warnings": [
{
"type": "quota_exceeded",
"message": "Daily post quota limit reached. No new posts can be created until tomorrow (resets at UTC midnight).",
"severity": "high"
}
],
"next_steps": [
"Review and approve existing posts in queue",
"Consider increasing daily quota via bolta.workspace.config (admin only)",
"Check quota status at midnight UTC for reset"
]
}
{
"workspace_id": "aa0e8400-e29b-41d4-a716-446655440005",
"safe_mode": true,
"autonomy_mode": "autopilot",
"role": "owner",
"principal_type": "user",
"voice_profile_status": {
"exists": true,
"version": 8,
"status": "active"
},
"quota_status": {
"daily_posts": {"used": 5, "limit": 150, "percentage": 3.33},
"hourly_api_requests": {"used": 12, "limit": 1500, "percentage": 0.8}
},
"recommended_mode": "ERROR",
"recommended_skills": [],
"excluded_skills": [
{
"skill": "ALL",
"reason": "Incompatible configuration: autopilot mode requires Safe Mode OFF"
}
],
"warnings": [
{
"type": "configuration_conflict",
"message": "Autopilot mode is incompatible with Safe Mode ON. Autopilot bypasses human review, which contradicts Safe Mode's intent.",
"severity": "critical"
}
],
"next_steps": [
"Choose one of the following:",
" A) Disable Safe Mode to use autopilot (workspace.config)",
" B) Switch to 'managed' autonomy mode to keep Safe Mode ON",
"Current config blocks all agent operations until resolved."
],
"error": {
"code": "INCOMPATIBLE_CONFIGURATION",
"message": "Autopilot autonomy mode requires Safe Mode to be OFF. Please update workspace configuration."
}
}
The registry integrates with Bolta's authorization layer to ensure skill recommendations respect workspace policies.
Step 1: Pre-flight Authorization Check
Before recommending a skill, check if the principal is authorized:
from users.authorization import authorize, PostAction
# Check if user can create posts
auth_result = authorize(
principal_type="user",
role="editor",
workspace=workspace,
action=PostAction.CREATE,
requested_status="Scheduled",
agent=None # or agent instance if principal is agent
)
if not auth_result.allowed:
# Exclude skill with reason
excluded_skills.append({
"skill": "bolta.week.plan",
"reason": auth_result.reason
})
Step 2: Respect Autonomy Mode Routing
Skills that create posts must account for autonomy mode routing:
# Autonomy mode routing table
AUTONOMY_ROUTING = {
"assisted": {
"Draft": "Draft", # Always Draft
"Scheduled": "Draft", # Routed to Draft
"Posted": "Draft" # Routed to Draft
},
"managed": {
"Draft": "Draft",
"Scheduled": "Pending Approval", # Routed to review
"Posted": "Pending Approval" # Routed to review
},
"autopilot": {
"Draft": "Draft",
"Scheduled": "Scheduled", # No routing (requires Safe Mode OFF)
"Posted": "Posted" # No routing (requires Safe Mode OFF)
},
"governance": {
"Draft": "Pending Approval",
"Scheduled": "Pending Approval",
"Posted": "Pending Approval"
}
}
# Skills should document expected output status after routing
Step 3: Quota Enforcement
Skills that create posts must respect quota limits:
from posts.quota_enforcement import QuotaEnforcer
# Check quota before recommending bulk operations
allowed, reason = QuotaEnforcer.check_daily_post_quota(
workspace=workspace,
count=10 # e.g., bolta.loop.from_template with count=10
)
if not allowed:
excluded_skills.append({
"skill": "bolta.loop.from_template",
"reason": reason # e.g., "Daily quota exceeded (95/100)"
})
Step 4: Safe Mode Compatibility
Some skills are incompatible with Safe Mode:
SAFE_MODE_INCOMPATIBLE = [
"bolta.cron.generate_and_schedule", # Bypasses review
]
if workspace.safe_mode and skill in SAFE_MODE_INCOMPATIBLE:
excluded_skills.append({
"skill": skill,
"reason": "Incompatible with Safe Mode ON (requires human review bypass)"
})
Each skill should provide structured metadata for registry indexing:
skill:
slug: bolta.draft.post
display_name: Draft Post
version: 1.2.0
plane: content
permissions:
required:
- posts:write
optional:
- voice:read # For voice profile selection
compatibility:
safe_mode: compatible # compatible | incompatible | n/a
autonomy_modes:
- assisted
- managed
- autopilot
roles:
- owner
- admin
- editor
- creator
quotas:
posts_created: 1 # Impact on daily quota
api_requests: 2 # Typical API call count
dependencies:
required:
- voice_profile # Must have voice profile
optional:
- templates # Enhanced with templates
execution:
typical_duration_seconds: 45
max_duration_seconds: 120
idempotent: true
retryable: true
outputs:
post_status: Draft # Before autonomy routing
job_tracked: true # Creates JobRun record
audit_logged: true # Creates PostActivity record
0.5.4 (Current) - Version bump
0.5.3 - Installation & First Run Guidance
0.5.1 - Security Patch
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
For skill installation issues, contact: support@bolta.ai
AI Usage Analysis
Analysis is being generated⦠refresh in a few seconds.
Marketing Mode combines 23 comprehensive marketing skills covering strategy, psychology, content, SEO, conversion optimization, and paid growth. Use when users need marketing strategy, copywriting, SEO help, conversion optimization, paid advertising, or any marketing tactic.
Access 23 marketing modules offering checklists, frameworks, and ready-to-use deliverables for CRO, SEO, copywriting, analytics, launches, ads, and social me...
SEO specialist agent with site audits, content writing, keyword research, technical fixes, link building, and ranking strategies.
Perform deep SEO competitor analysis, including keyword research, backlink checking, and content strategy mapping. Use when the user wants to analyze a website's competitors or improve their own SEO ranking by studying the competition.
Query Google Search Console for SEO data - search queries, top pages, CTR opportunities, URL inspection, and sitemaps. Use when analyzing search performance,...
Run local SEO autopilot for boll-koll.se or hyresbyte.se and return PR link plus summary.