Agent Skills: sf-ai-agentforce: Standard Agentforce Platform Development

>

2agentID: Jaganpro/claude-code-sfskills/sf-ai-agentforce

Install this agent skill to your local

pnpm dlx add-skill https://github.com/Jaganpro/sf-skills/tree/HEAD/skills/sf-ai-agentforce

Skill Files

Browse the full folder contents for sf-ai-agentforce.

Download Skill

Loading file tree…

skills/sf-ai-agentforce/SKILL.md

Skill Metadata

Name
sf-ai-agentforce
Description
>
<!-- TIER: 1 | ENTRY POINT --> <!-- This is the starting document — read this FIRST --> <!-- Progressive disclosure: SKILL.md → Detailed Docs (Tier 2–3) -->

sf-ai-agentforce: Standard Agentforce Platform Development

Expert Agentforce developer specializing in the Setup UI / Agentforce Builder approach to agent development. Covers topic and action configuration, GenAiFunction/GenAiPlugin metadata, PromptTemplate authoring, Einstein Models API, and custom Lightning types.

Code-first alternative: For programmatic agent development using Agent Script DSL (.agent files), use sf-ai-agentscript instead. This skill covers the declarative, UI-driven approach.


Overview

Salesforce Agentforce enables organizations to build autonomous AI agents that handle customer interactions, automate tasks, and surface insights. This skill focuses on the standard platform approach:

  • Agentforce Builder (Setup UI) for visual agent configuration
  • GenAiFunction and GenAiPlugin metadata for registering actions
  • PromptTemplate metadata for reusable AI prompts
  • Einstein Models API (aiplatform.ModelsAPI) for native LLM access in Apex
  • Custom Lightning Types (LightningTypeBundle) for rich agent action UIs

Two Approaches to Agentforce

| Approach | Skill | When to Use | |----------|-------|-------------| | Setup UI / Agentforce Builder | sf-ai-agentforce (this skill) | Declarative agent config, point-and-click topics/actions | | Agent Script DSL | sf-ai-agentscript | Code-first .agent files, FSM architecture, version-controlled agents |

Both approaches produce agents that run on the same Agentforce runtime. Choose based on team preference and complexity requirements.


Core Concepts

Topics

Topics are the primary organizational unit for an agent's capabilities. Each topic groups related actions and instructions around a specific domain.

  • Description: Tells the LLM planner when to route to this topic (must be specific and unambiguous)
  • Scope: Defines what the topic can and cannot do (helps the planner make routing decisions)
  • Instructions: Step-by-step guidance the agent follows when a topic is active
  • Actions: The operations (Flow, Apex, Prompt Template) the agent can invoke within this topic

In the Agentforce Builder, topics are configured via Setup → Agentforce → Agents → [Agent] → Topics.

Actions

Actions are the executable operations an agent can perform. Each action wraps an underlying invocation target:

| Target Type | Description | Registered Via | |-------------|-------------|----------------| | Flow | Invokes an Autolaunched Flow | GenAiFunction with invocationTargetType: flow | | Apex | Invokes an @InvocableMethod | GenAiFunction with invocationTargetType: apex | | Prompt Template | Invokes a PromptTemplate | GenAiFunction with invocationTargetType: prompt | | Standard Action | Built-in platform actions (send email, create record) | Pre-registered by Salesforce |

Instructions

Instructions guide the agent's behavior within a topic. They are natural language directives that tell the LLM:

  • What steps to follow
  • When to invoke specific actions
  • How to handle edge cases and errors
  • When to escalate to a human agent

Agent Builder Workflow

Step-by-Step: Creating an Agent via Setup UI

1. Navigate to Agentforce Builder

Setup → Agentforce → Agents → New Agent

2. Choose Agent Type

  • Service Agent — Customer-facing support and service
  • Employee Agent — Internal productivity and automation

3. Add Topics For each capability area:

  • Provide a clear Name and Description
  • Write Instructions that guide the agent's reasoning
  • Add a Scope statement (what's in/out of bounds)

4. Configure Actions per Topic Assign actions to each topic. Actions can target:

  • Autolaunched Flows (most common)
  • Apex InvocableMethods (via GenAiFunction)
  • Prompt Templates (for LLM-generated content)
  • Standard platform actions

5. Set Action Inputs & Outputs For each action:

  • Define inputs the agent collects from the user (slot filling)
  • Define outputs the agent uses in its response
  • Mark which outputs are displayable to the user

6. Configure Agent-Level Settings

  • System Instructions: Global persona and behavior guidelines
  • Default Agent User: The running user context for the agent
  • Welcome Message: Initial greeting
  • Error Message: Fallback when something goes wrong

7. Preview & Test

# Preview in Agentforce Builder (uses standard org auth)
sf agent preview --api-name MyAgent --target-org MyOrg

8. Publish

sf agent publish authoring-bundle --api-name MyAgent --target-org MyOrg

# Publish (skip metadata retrieve for CI/CD pipelines, v2.122.6+)
sf agent publish authoring-bundle --api-name MyAgent --skip-retrieve --target-org MyOrg

CLI Agent Lifecycle

Manage agent state via CLI (requires agent to be published first):

| Command | Purpose | |---------|---------| | sf agent activate --api-name X --target-org Y | Activate a published agent (no --json support) | | sf agent deactivate --api-name X --target-org Y | Deactivate an active agent (no --json support) |

Note: sf agent create --spec <file> exists but is NOT recommended — agents created this way don't use Agent Script and are less flexible. Use the authoring-bundle workflow instead.

Full lifecycle: Validate → Deploy → Publish → Activate → (Deactivate → Re-publish → Re-activate)

Cross-references: sf-deploy for deployment orchestration, sf-ai-agentscript for Agent Script development.

Agent Spec Generation

Generate an agent spec YAML with sf agent generate agent-spec. Key flags:

  • --type customer|internal — Agent type
  • --role, --company-name, --company-description — Core identity
  • --tone formal|casual|neutral — Conversational style
  • --full-interview — Interactive prompt for all properties
  • --spec <existing.yaml> — Iterative refinement of an existing spec

Full flag reference: See references/cli-commands.md for the complete generate agent-spec workflow with all 15+ flags.


GenAiFunction & GenAiPlugin Metadata

GenAiFunction

A GenAiFunction registers a single action that an Agentforce agent can invoke. It wraps an underlying Flow, Apex method, or Prompt Template.

Metadata XML Structure:

<?xml version="1.0" encoding="UTF-8"?>
<GenAiFunction xmlns="http://soap.sforce.com/2006/04/metadata">
    <masterLabel>Look Up Order Status</masterLabel>
    <developerName>Lookup_Order_Status</developerName>
    <description>Retrieves the current status of a customer order</description>

    <!-- Target: the Flow, Apex, or Prompt to invoke -->
    <invocationTarget>Get_Order_Status_Flow</invocationTarget>
    <invocationTargetType>flow</invocationTargetType>

    <!-- Capability: tells the LLM planner WHEN to use this action -->
    <capability>
        Look up the current status of a customer's order when they
        ask about shipping, delivery, or order tracking.
    </capability>

    <!-- Inputs: what the agent collects from the user -->
    <genAiFunctionInputs>
        <developerName>orderNumber</developerName>
        <description>The customer's order number</description>
        <dataType>Text</dataType>
        <isRequired>true</isRequired>
    </genAiFunctionInputs>

    <!-- Outputs: what the action returns -->
    <genAiFunctionOutputs>
        <developerName>orderStatus</developerName>
        <description>Current status of the order</description>
        <dataType>Text</dataType>
        <isRequired>true</isRequired>
    </genAiFunctionOutputs>
</GenAiFunction>

File Location:

force-app/main/default/genAiFunctions/Lookup_Order_Status.genAiFunction-meta.xml

Invocation Target Types

| invocationTargetType | Target Value | Notes | |------------------------|--------------|-------| | flow | Flow API name | Flow must be Active | | apex | Apex class name | Class must have @InvocableMethod | | prompt | PromptTemplate API name | Template must be Active |

GenAiPlugin

A GenAiPlugin groups multiple GenAiFunction entries into a logical unit. This is useful for organizing related actions.

<?xml version="1.0" encoding="UTF-8"?>
<GenAiPlugin xmlns="http://soap.sforce.com/2006/04/metadata">
    <masterLabel>Order Management Plugin</masterLabel>
    <developerName>Order_Management_Plugin</developerName>
    <description>Actions for managing customer orders</description>

    <genAiFunctions>
        <functionName>Lookup_Order_Status</functionName>
    </genAiFunctions>
    <genAiFunctions>
        <functionName>Cancel_Order</functionName>
    </genAiFunctions>
    <genAiFunctions>
        <functionName>Return_Order</functionName>
    </genAiFunctions>
</GenAiPlugin>

File Location:

force-app/main/default/genAiPlugins/Order_Management_Plugin.genAiPlugin-meta.xml

Deployment Order

  1. Deploy the underlying Flow / Apex / PromptTemplate first
  2. Deploy GenAiFunction metadata (references the targets)
  3. Deploy GenAiPlugin metadata (references the functions)
  4. Publish the Agent (references the plugin/functions via topics)
# Step 1: Deploy targets
sf project deploy start -m "Flow:Get_Order_Status_Flow" --target-org MyOrg

# Step 2: Deploy GenAiFunction
sf project deploy start -m "GenAiFunction:Lookup_Order_Status" --target-org MyOrg

# Step 3: Deploy GenAiPlugin (optional grouping)
sf project deploy start -m "GenAiPlugin:Order_Management_Plugin" --target-org MyOrg

# Step 4: Publish agent
sf agent publish authoring-bundle --api-name MyAgent --target-org MyOrg

PromptTemplate Configuration

PromptTemplate is the metadata type for creating reusable AI prompts. Templates can be invoked by Agentforce agents (via GenAiFunction), Einstein Prompt Builder, Apex code, and Flows.

Template Types: flexPrompt | salesGeneration | fieldCompletion | recordSummary

Variable Types: freeText (runtime input) | recordField (SObject field binding) | relatedList (child records) | resource (Static Resource)

Key Integration Points:

  • Agent Action: Register a GenAiFunction with invocationTargetType: prompt
  • Apex: ConnectApi.EinsteinLlm.generateMessagesForPromptTemplate()
  • Flow: Use the "Prompt Template" action element

Full reference: See references/prompt-templates.md for complete metadata structure, variable types, examples, Data Cloud grounding, and best practices.


Models API

The Einstein Models API (aiplatform.ModelsAPI) enables native LLM access from Apex without external HTTP callouts. Use it for custom AI logic beyond what Agentforce topics/actions provide.

Available Models:

  • sfdc_ai__DefaultOpenAIGPT4OmniMini — Cost-effective general tasks
  • sfdc_ai__DefaultOpenAIGPT4Omni — Complex reasoning
  • sfdc_ai__DefaultAnthropic — Nuanced understanding
  • sfdc_ai__DefaultGoogleGemini — Multimodal tasks

Key Patterns:

  • Queueable for single-record async AI processing
  • Batch for bulk processing (scope size 10–20)
  • Platform Events for notifying completion to LWC/Flow

Prerequisites: Einstein Generative AI enabled, API v61.0+, Einstein Generative AI User permission set assigned.

Full reference: See references/models-api.md for complete Apex examples, Queueable/Batch patterns, Chatter integration, and governor limit guidance.


Custom Lightning Types

Custom Lightning Types (LightningTypeBundle) define structured data types with custom UI components for agent action inputs and outputs. When an agent action needs a rich input form or a formatted output display, create a custom type with:

  • schema.json — JSON Schema data structure definition
  • editor.json — Custom input collection UI (lightning components)
  • renderer.json — Custom output display UI (lightning components)

Requirements: API v64.0+ (Fall '25), Enhanced Chat V2 enabled in Service Cloud.

File Structure:

force-app/main/default/lightningTypeBundles/OrderDetails/
├── schema.json
├── editor.json
├── renderer.json
└── OrderDetails.lightningTypeBundle-meta.xml

Full reference: See references/custom-lightning-types.md for complete schema examples, editor/renderer configuration, and integration with GenAiFunction.


Orchestration Order

Prerequisite skills must run in this order:

sf-metadata → sf-apex → sf-flow → sf-ai-agentforce → sf-deploy

Why this order:

  1. sf-metadata — Custom objects/fields must exist before Apex/Flows reference them
  2. sf-apex — InvocableMethod classes must be deployed before Flows or GenAiFunctions reference them
  3. sf-flow — Flows must be active before GenAiFunctions can target them
  4. sf-ai-agentforce (this skill) — GenAiFunction/GenAiPlugin metadata and agent configuration
  5. sf-deploy — Final deployment and agent publishing

MANDATORY Delegations:

| Requirement | Delegate To | Why | |-------------|-------------|-----| | Flow creation | Use the sf-flow skill | 110-point validation, proper XML | | Apex creation | Use the sf-apex skill | InvocableMethod generation, 150-point scoring | | Deployment | Use the sf-deploy skill | Centralized deployment orchestration |


Cross-Skill Integration

| Skill | Purpose | When to Use | |-------|---------|-------------| | sf-ai-agentscript | Agent Script DSL (code-first) | Writing .agent files with FSM architecture | | sf-ai-agentforce-testing | Agent testing | Test execution, coverage analysis, agentic fix loops | | sf-flow | Flow actions | Creating Autolaunched Flows for agent actions | | sf-apex | Apex actions | Writing InvocableMethod classes for agent actions | | sf-deploy | Deployment | Publishing agents, deploying metadata | | sf-metadata | Object/field setup | Creating SObjects and fields that actions reference | | sf-integration | External APIs | Named Credentials, External Services for agent callouts |

Integration Patterns

| Direction | Pattern | Notes | |-----------|---------|-------| | Agent → Flow | GenAiFunction targets Flow | Most common action pattern | | Agent → Apex | GenAiFunction targets InvocableMethod | For complex business logic | | Agent → Prompt | GenAiFunction targets PromptTemplate | For AI-generated content | | Agent → Custom Type | GenAiFunction uses LightningTypeBundle | Rich input/output UIs | | Agent → External API | Flow/Apex wraps Named Credential callout | Via sf-integration skill |


Key Insights

| Insight | Issue | Fix | |---------|-------|-----| | GenAiFunction requires active target | Deploying GenAiFunction before its Flow/Apex target | Deploy targets first, then GenAiFunction | | PromptTemplate field bindings | {!variableName} must match variable developerName exactly | Check spelling and case sensitivity | | Custom Lightning Types require v64.0+ | Bundle won't deploy on older API versions | Set <version>64.0</version> or higher in package.xml | | GenAiPlugin groups functions | Individual GenAiFunctions must exist before the plugin | Deploy GenAiFunctions before GenAiPlugin | | Capability text is critical | Vague capability descriptions cause poor routing | Write specific, scenario-based capability text | | Enhanced Chat V2 for custom types | Custom type UI won't render without it | Enable Enhanced Chat V2 in Setup → Chat Settings | | Models API needs async context | Synchronous calls in triggers will timeout | Use Queueable with Database.AllowsCallouts | | Input/output names must match | GenAiFunction input names must match Flow variable API names | Verify exact name match (case-sensitive) | | Validation before publish | Skipping validation causes late-stage failures | Always run sf agent validate authoring-bundle first | | Data type mapping | GenAiFunction dataType must align with target parameter types | Use Text, Number, Boolean, Date as appropriate |


Scoring System (100 Points)

Categories

| Category | Points | Key Criteria | |----------|--------|--------------| | Agent Configuration | 20 | System instructions, welcome/error messages, agent user set | | Topic & Action Design | 25 | Clear descriptions, proper scope, logical routing, capability text | | Metadata Quality | 20 | Valid GenAiFunction/GenAiPlugin XML, correct target types, input/output definitions | | Integration Patterns | 15 | Proper orchestration order, dependency management, cross-skill delegation | | PromptTemplate Usage | 10 | Variable bindings correct, template types appropriate, prompts well-structured | | Deployment Readiness | 10 | Validation passes, dependencies deployed first, package.xml correct |

Thresholds

| Score | Rating | Action | |-------|--------|--------| | 90–100 | Excellent | Deploy with confidence | | 80–89 | Very Good | Minor improvements suggested | | 70–79 | Good | Review before deploy | | 60–69 | Needs Work | Address issues before deploy | | < 60 | Critical | Block deployment |

Validation Report Format

Score: 87/100 ⭐⭐⭐⭐ Very Good
├─ Agent Configuration:     18/20 (90%)
├─ Topic & Action Design:   22/25 (88%)
├─ Metadata Quality:        17/20 (85%)
├─ Integration Patterns:    13/15 (87%)
├─ PromptTemplate Usage:     9/10 (90%)
└─ Deployment Readiness:     8/10 (80%)

Issues:
⚠️ [Metadata] GenAiFunction "Cancel_Order" missing output definition
⚠️ [Integration] Flow "Get_Order_Status" not yet deployed to org
✓ All PromptTemplate variable bindings valid
✓ GenAiPlugin references resolve correctly

Document Map

Tier 2: Detailed References

| Document | Description | Read When | |----------|-------------|-----------| | references/cli-commands.md | CLI command reference for agent lifecycle, generation, and publishing | Using sf agent commands | | references/prompt-templates.md | Complete PromptTemplate metadata, variable types, Data Cloud grounding | Authoring reusable AI prompts | | references/models-api.md | aiplatform.ModelsAPI Apex patterns, Queueable/Batch integration | Building custom AI logic in Apex | | references/custom-lightning-types.md | LightningTypeBundle schema/editor/renderer configuration | Creating rich action input/output UIs |

Cross-Skill References

| Need | Skill | |------|-------| | Agent Script DSL development | sf-ai-agentscript | | Agent testing & coverage | sf-ai-agentforce-testing | | Flow creation for actions | sf-flow | | Apex InvocableMethod classes | sf-apex | | Metadata deployment | sf-deploy |


Version History

| Version | Date | Changes | |---------|------|---------| | 2.0.0 | 2026-02-07 | Complete rewrite. Skill refocused on standard Agentforce platform (Setup UI, GenAiFunction/GenAiPlugin, PromptTemplate, Models API, Custom Lightning Types). Agent Script DSL content moved to sf-ai-agentscript. |


Sources & Acknowledgments

| Source | Contribution | |--------|-------------| | Salesforce Agentforce Documentation | Official platform reference | | Salesforce Diaries | Models API patterns, Custom Lightning Types guide | | trailheadapps/agent-script-recipes | Official Salesforce examples | | Jag Valaiyapathy | Skill authoring, scoring system, orchestration design |


License

MIT License. See LICENSE file in sf-ai-agentforce folder. Copyright (c) 2024–2026 Jag Valaiyapathy