plugins/salesforce-master/skills/agentforce-2025/SKILL.md
Salesforce Agentforce AI agents and autonomous automation (2025-2026). PROACTIVELY activate for: (1) building Agentforce agents and topics, (2) Agent Builder configuration, (3) Atlas Reasoning Engine usage, (4) Agentforce action setup (Apex, Flow, Prompt Templates), (5) topic-based routing and instructions, (6) Agentforce Service Agent vs Sales Agent vs Custom, (7) Einstein Trust Layer (data masking, toxicity detection), (8) prompt engineering for grounded responses, (9) Agentforce testing and Test Center, (10) deploying agents across orgs. Provides: agent design patterns, topic and action templates, prompt engineering recipes, Trust Layer configuration, and deployment workflow.
npx skillsauth add JosiahSiegel/claude-plugin-marketplace agentforce-2025Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
Examples:
D:/repos/project/file.tsxD:\repos\project\file.tsxThis applies to:
NEVER create new documentation files unless explicitly requested by the user.
Agentforce is Salesforce's enterprise AI agent platform that enables autonomous, proactive applications to execute specialized tasks for employees and customers. Agentforce agents use large language models (LLMs) with the Atlas Reasoning Engine to analyze context, reason through decisions, and take action autonomously.
Key Distinction: Agentforce represents the evolution from Einstein Copilot (conversational assistant) to autonomous agents that can complete tasks without human prompting.
The Atlas Reasoning Engine is the brain of Agentforce, enabling agents to:
┌─────────────────────────────────────────────────┐
│ Agentforce Agent │
├─────────────────────────────────────────────────┤
│ 1. Topics (what agent handles) │
│ 2. Actions (what agent can do) │
│ 3. Instructions (how agent behaves) │
│ 4. Channel Integrations (where agent works) │
│ 5. Data Sources (what agent knows) │
└─────────────────────────────────────────────────┘
Agentforce 2.0 is the digital labor platform for enterprises, enabling a limitless workforce through AI agents. Key enhancements:
Detailed Agentforce Builder workflow — agent creation, topics, instructions, actions, grounding, testing, publishing, Data Cloud integration, trust / guardrails, and deployment mechanics — lives in references/agentforce-builder.md. Load that reference when building or configuring agents rather than just selecting an architecture.
Capabilities:
Example Flow:
Customer: "Where is my order #12345?"
↓
Agent: Validates order number
↓
Agent: Queries Order object
↓
Agent: Retrieves tracking information
↓
Agent: "Your order #12345 shipped yesterday and will arrive Thursday.
Tracking: UPS 1Z999AA10123456784. Need anything else?"
Capabilities:
Example Flow:
Lead: "Tell me about your enterprise plan"
↓
Agent: Retrieves product information
↓
Agent: Explains features, pricing
↓
Agent: Detects buying intent
↓
Agent: "Would you like to schedule a demo with our sales team?"
↓
Agent: Creates meeting, updates lead status to "Meeting Scheduled"
Capabilities:
Capabilities:
Publish events to trigger Agentforce actions:
// Publish event when order status changes
public class OrderEventPublisher {
public static void publishOrderUpdate(Id orderId, String newStatus) {
OrderStatusChangeEvent__e event = new OrderStatusChangeEvent__e(
OrderId__c = orderId,
NewStatus__c = newStatus,
Timestamp__c = System.now()
);
EventBus.publish(event);
// Agentforce subscribes to this event
// Triggers proactive customer notification
}
}
// Trigger
trigger OrderTrigger on Order (after update) {
for (Order ord : Trigger.new) {
if (ord.Status != Trigger.oldMap.get(ord.Id).Status) {
OrderEventPublisher.publishOrderUpdate(ord.Id, ord.Status);
}
}
}
Agentforce Flow (subscribed to OrderStatusChangeEvent__e):
1. Receive event
2. Query order and customer details
3. Determine notification channel (email, SMS, push)
4. Generate personalized message using LLM
5. Send notification via preferred channel
6. Log interaction in Customer timeline
Integrate Agentforce with external AI providers:
public class AgentOpenAIIntegration {
@InvocableMethod(label='Generate Response with GPT-4')
public static List<String> generateResponse(List<AIRequest> requests) {
List<String> responses = new List<String>();
for (AIRequest req : requests) {
HttpRequest httpReq = new HttpRequest();
httpReq.setEndpoint('callout:OpenAI/v1/chat/completions');
httpReq.setMethod('POST');
httpReq.setHeader('Content-Type', 'application/json');
Map<String, Object> payload = new Map<String, Object>{
'model' => 'gpt-4',
'messages' => new List<Object>{
new Map<String, String>{
'role' => 'system',
'content' => req.systemPrompt
},
new Map<String, String>{
'role' => 'user',
'content' => req.userMessage
}
},
'temperature' => 0.7,
'max_tokens' => 500
};
httpReq.setBody(JSON.serialize(payload));
Http http = new Http();
HttpResponse httpRes = http.send(httpReq);
if (httpRes.getStatusCode() == 200) {
Map<String, Object> result = (Map<String, Object>)JSON.deserializeUntyped(httpRes.getBody());
List<Object> choices = (List<Object>)result.get('choices');
Map<String, Object> choice = (Map<String, Object>)choices[0];
Map<String, Object> message = (Map<String, Object>)choice.get('message');
responses.add((String)message.get('content'));
}
}
return responses;
}
public class AIRequest {
@InvocableVariable(required=true)
public String systemPrompt;
@InvocableVariable(required=true)
public String userMessage;
}
}
public class AgentClaudeIntegration {
@InvocableMethod(label='Generate Response with Claude')
public static List<String> generateResponse(List<AIRequest> requests) {
List<String> responses = new List<String>();
for (AIRequest req : requests) {
HttpRequest httpReq = new HttpRequest();
httpReq.setEndpoint('callout:Anthropic/v1/messages');
httpReq.setMethod('POST');
httpReq.setHeader('Content-Type', 'application/json');
httpReq.setHeader('anthropic-version', '2023-06-01');
Map<String, Object> payload = new Map<String, Object>{
'model' => 'claude-3-5-sonnet-20241022',
'max_tokens' => 1024,
'system' => req.systemPrompt,
'messages' => new List<Object>{
new Map<String, String>{
'role' => 'user',
'content' => req.userMessage
}
}
};
httpReq.setBody(JSON.serialize(payload));
Http http = new Http();
HttpResponse httpRes = http.send(httpReq);
if (httpRes.getStatusCode() == 200) {
Map<String, Object> result = (Map<String, Object>)JSON.deserializeUntyped(httpRes.getBody());
List<Object> content = (List<Object>)result.get('content');
Map<String, Object> contentBlock = (Map<String, Object>)content[0];
responses.add((String)contentBlock.get('text'));
}
}
return responses;
}
}
Track agent effectiveness:
Custom Reporting Object:
public class AgentInteractionLogger {
public static void logInteraction(String agentName, String topic,
Boolean resolved, Decimal duration) {
AgentInteraction__c interaction = new AgentInteraction__c(
AgentName__c = agentName,
Topic__c = topic,
Resolved__c = resolved,
Duration__c = duration,
Timestamp__c = System.now()
);
insert interaction;
}
}
-- Resolution rate by agent
SELECT AgentName__c,
COUNT(Id) as TotalInteractions,
SUM(CASE WHEN Resolved__c = true THEN 1 ELSE 0 END) as Resolved,
AVG(Duration__c) as AvgDuration
FROM AgentInteraction__c
WHERE CreatedDate = LAST_N_DAYS:30
GROUP BY AgentName__c
-- Top topics requiring human escalation
SELECT Topic__c,
COUNT(Id) as Escalations
FROM AgentInteraction__c
WHERE Resolved__c = false
AND CreatedDate = LAST_N_DAYS:30
GROUP BY Topic__c
ORDER BY COUNT(Id) DESC
LIMIT 10
with sharing keywordsIMPORTANT: Einstein Copilot was retired in January 2025 and renamed to "Agentforce (Default)". It is now one of the Agentforce agents.
If you have Einstein Copilot (now Agentforce Assistant), migration path:
Einstein Copilot → Agentforce (Default)
- Automatically migrated in January 2025
- Conversational UI remains the same
- Add autonomous triggers and workflows
- Convert Copilot Actions to Agent Actions
- Add proactive agent behaviors
- Enable multi-channel deployment (including Slack in 2.0)
Action Migration Example:
// Einstein Copilot Action (reactive)
@InvocableMethod(label='Copilot: Get Account Info')
public static List<Account> getAccountInfo(List<Id> accountIds) {
return [SELECT Id, Name, Industry FROM Account WHERE Id IN :accountIds];
}
// Agentforce Action (proactive + reactive)
@InvocableMethod(label='Agent: Monitor and Alert on Account Changes')
public static void monitorAccounts(List<Id> accountIds) {
// Not only retrieve data, but also:
// 1. Monitor for changes
// 2. Detect anomalies (sudden revenue drop)
// 3. Proactively alert account manager
// 4. Suggest next best actions
}
Agentforce represents a paradigm shift from conversational assistants to autonomous agents that can complete complex, multi-step tasks without human intervention while maintaining trust and security.
development
Use for Clerk sessions, tokens, webhooks, orgs, and security. PROACTIVELY activate for session tokens, JWT templates, getToken(), custom claims, pending sessions, multi-session UX, organizations, roles, permissions, system vs custom permissions, features/plans, MFA/passkeys/password policy/bot protection, Clerk webhooks, Svix signatures, verifyWebhook(), user/org sync, retries/replays, environment variables, custom domains, secret rotation, logs, and auth security reviews. Provides token semantics, webhook idempotency, authorization defaults, and hardening checklist.
tools
Use for Clerk in Next.js. PROACTIVELY activate for @clerk/nextjs setup, App Router auth()/currentUser(), clerkMiddleware(), proxy.ts/middleware.ts, createRouteMatcher(), protected pages/layouts/Route Handlers/Server Actions/API routes/tRPC, auth.protect() role/permission/token checks, ClerkProvider placement, server-only clerkClient, Link prefetch, redirects, 401/404 auth failures, custom domains, __clerk proxy paths, and deployment gotchas. Provides file patterns, server/client boundary rules, matcher templates, and production checks.
development
Use for Clerk frontend auth flows. PROACTIVELY activate for React, JavaScript, Vue, Nuxt, Astro, Expo, React Router, TanStack React Start, or SPA setup; ClerkProvider and publishable-key wiring; SignIn/SignUp/UserButton/UserProfile/OrganizationSwitcher; custom useUser/useAuth/useClerk/useSignIn/useSignUp/useSession/useOrganization flows; multi-session UX; cross-origin getToken() fetches; loading states, redirects, routing, CORS/cookies, or hydration bugs. Provides SDK selection, UI patterns, token-fetch templates, and frontend gotchas.
development
Use for Clerk dev/prod readiness, deployment, and multi-language implementation planning. PROACTIVELY activate for environment variables, pk_test/sk_test vs pk_live/sk_live, local dev, preview/staging/prod instances, domains/DNS, redirects, OAuth credentials, custom domains/proxy, authorizedParties, CSP, CORS/cookies, webhooks/tunnels, Vercel/Netlify/Cloudflare/API gateways, monitoring/troubleshooting, and backends in Node/Express/Fastify, Python/FastAPI/Django/Flask, Go, Ruby/Rails, Java/Spring, .NET, PHP/Laravel. Provides checklists, rollout plans, and language-portable patterns.