agentforce-architectur…
Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA…
Creates, edits, and publishes Salesforce CMS content of any kind — any domain, any topic. Single and bulk: create many in parallel, edit one or many, publish all or a subset. Use this skill ANY TIME a user asks to create, generate, write, draft, author, or add content, OR to
Claude Code
$ npx -y skills add forcedotcom/sf-skills --skill experience-cms-content-generate --agent claude-code
Codex
$ npx skills add forcedotcom/sf-skills --skill experience-cms-content-generate -a codex -y
Cursor
$ npx skills add forcedotcom/sf-skills --skill experience-cms-content-generate -a cursor -y
Gemini CLI
$ npx skills add forcedotcom/sf-skills --skill experience-cms-content-generate -a gemini-cli -y
GitHub Copilot
$ npx skills add forcedotcom/sf-skills --skill experience-cms-content-generate -a github-copilot -y
OpenCode
$ npx skills add forcedotcom/sf-skills --skill experience-cms-content-generate -a opencode -y
Windsurf
$ npx skills add forcedotcom/sf-skills --skill experience-cms-content-generate -a windsurf -y
name: experience-cms-content-generate
description: "Creates, edits, and publishes Salesforce CMS content of any kind — any domain, any topic. Single and bulk: create many in parallel, edit one or many, publish all or a subset. Use this skill ANY TIME a user asks to create, generate, write, draft, author, or add content, OR to update, edit, or revise a content record, OR to publish it, OR to delete/remove a content record. Triggers like \"create a <thing> about X\", \"create 5 <things>\", \"update content <id>\", \"publish content <id>\", \"publish the record <id>\", \"make <id> live\", \"delete content <id>\" — where <thing> is any user-named content type. Activates FIRST whenever content authoring, editing, publishing, or deletion is mentioned, regardless of subject. Handles the full workflow: finding the content type, resolving the workspace, creating content, editing or publishing it — including a record identified by its variantId. Does not apply to defining a content type / schema (use experience-cms-content-type-generate), cloning, versioning, workspaces, or media."
metadata:
version: "1.1"
domains: ["Experience"]
minApiVersion: "64.0"
relatedSkills:
- "experience-cms-content-render"
- "experience-cms-content-type-generate"
cliTools:
- tool: ["sf"]
semver: ">=2.0.0"
mcpTools:
content-write: { tools: ["create_cms_content", "update_cms_content_variant", "publish_content", "get_or_create_cms_workspace_and_web_app_channel"], semver: ">=1.0.0" }
content-readonly: { tools: ["get_content", "get_content_variant"], semver: ">=1.0.0" }
skill_bridge: { tools: ["load_skill", "search_skills"], semver: ">=1.0.0" }Universal skill for creating Salesforce CMS content records — orchestrates type discovery, workspace resolution, and `create_cms_content` dispatch against an existing `ContentTypeBundle`.
**Content generation is server-side, always.** `create_cms_content` / `update_cms_content_variant` take the goal / edit instruction as `prompt`; the server generates + validates the body against the schema and returns the persisted record. Agent never walks the schema, assembles `contentBody`, pre-validates, or regenerates rejected fields (Principle 3).
**Creates managed content records in Salesforce CMS** — instances authored against an existing `ContentTypeBundle`.
**Use when the user wants to:** create a content record of any kind (single or bulk) from a free-text prompt against an existing CMS type; edit/refine session items; **update/edit** OR **publish** a record identified directly by `managedContentVariantId` / `managedContentId` — even if NOT created this session (Step 0 → UPDATE / PUBLISH entry); publish all or a subset; **delete/remove a record** — this skill OWNS the delete request and routes to a hard stop (Step 0-D); never surface the internal reason.
**DO NOT use when the user wants to:** define a new content type / schema (use `experience-cms-content-type-generate`); unpublish, clone, or version a record; manage workspaces / folders / channels; attach images / media; apply branding.
**"Create image/media content" is NOT a pre-flight scope-out** (only literal binary file attach/upload is the excluded "attach media" above). Creating an image/video content *record* (e.g. from a URL) enters the normal flow — resolve type + workspace, dispatch `create_cms_content`, never refuse up front or propose a REST / UI workaround. `sfdc_cms__media` is server-decided: let the tool return the error, then hard-stop per Principle 15 (`references/error-recovery.md`).
**Follow steps in order — do not skip or reorder.**
Every successful run MUST end by dispatching `create_cms_content` (≥1×), each carrying the goal via `prompt`.
Interaction-minimal — the only pre-dispatch question is Step 3 (workspace). Never ask for goal refinement, mode, or body details. **Step 1 is silent.** FQN in prompt → Step 2 fast-path; else Step 2a delegates with no intervening `ask_user_tool`. **Bulk exception:** Step 4 presents topic prompts for approval.
**VERBATIM QUESTION CONTRACT — EVERY `ask_user_tool`, no exceptions.** Full rule → `references/ux-rules.md`. Every question goes through `ask_user_tool` (never plain text); before ANY call, open `assets/questions.md` and copy BOTH the `question` string AND the `answers` array **character-for-character**, filling only `<placeholders>` — never reword/shorten the `question`, never add/drop/reorder `answers`, never put list content into an answer. No template covers it? STOP and re-read `assets/questions.md` — never compose one ad hoc.
- [ ] Step 1: Understand intent (silent — domain, count, FQN if present) - [ ] Step 2: Resolve content type — fast-path (Buckets 1/2/3) or delegate → contentTypeFqn - [ ] Step 3: Resolve workspace — UIBundle options or manual ID - [ ] Step 4: Build payload — single or bulk (topic approval if bulk) - [ ] Step 5: Dispatch create_cms_content (parallel for bulk) - [ ] Step 6: Display content body + summary - [ ] Step 7: Post-action loop — Edit / Publish / End - [ ] Step 8: Edit — update_cms_content_variant - [ ] Step 9: Publish — publish_content - [ ] Step 10: Post-publish — Create more / Render (if UIBundle) / End
**Before Step 1, classify into exactly one intent and route.** update/publish/delete are first-class entry points — NOT only tails of the create flow. Opening with one of those verbs → do NOT freelance (pick tools by intuition, run SOQL, guess a variant ID). Read the opening verb and route:
| User intent (opening verb) | Route to | |---|---| | create, generate, write, draft, author, post, add, compose; "create N `<things>`" | **CREATE** — continue to Step 1 | | update, edit, change, modify, revise an existing record | **UPDATE entry** — Step 0-U | | publish an existing record | **PUBLISH entry** — Step 0-P | | delete, remove, destroy a record | **D
This repository provides Salesforce agent skills, plugins, and sample apps for building applications.
Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA…
Use this skill to Upgrade Einstein Bots into Agentforce agents end-to-end in a single pass, orchestrating per-bot Agent Spec…
Data Cloud 360° view of a single Agentforce session. TRIGGER when user asks to trace, inspect, summarize, or describe a specific…
Build, modify, audit, repair, optimize, debug, and deploy agents with Agentforce Agent Script. TRIGGER when: user creates,…
Analyze production Agentforce agent behavior using session traces and Data Cloud, and manage Agent Health Monitoring (AHM)…
Use to design an AI agent persona — identity, voice, tone, behavioral style, guardrails — and encode it into Agent Script (.agent…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.