Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Automate Salesforce tasks via Rube MCP (Composio): leads, contacts, accounts, opportunities, SOQL queries. Always search tools first for current schemas.
.claude/skills/davepoon-salesforce-automation/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 4 |
| gemini-3.1-pro-preview | 100% | 1 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 110% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 123% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 197% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 16% | 0% |
Automate Salesforce CRM operations through Composio's Salesforce toolkit via Rube MCP.
Toolkit docs: composio.dev/toolkits/salesforce
RUBE_MANAGE_CONNECTIONS with toolkit salesforceRUBE_SEARCH_TOOLS first to get current tool schemasGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit salesforceWhen to use: User wants to create, search, update, or list leads
Tool sequence:
SALESFORCE_SEARCH_LEADS - Search leads by criteria Optional]SALESFORCE_LIST_LEADS - List all leads Optional]SALESFORCE_CREATE_LEAD - Create a new lead Optional]SALESFORCE_UPDATE_LEAD - Update lead fields Optional]SALESFORCE_ADD_LEAD_TO_CAMPAIGN - Add lead to campaign Optional]SALESFORCE_APPLY_LEAD_ASSIGNMENT_RULES - Apply assignment rules Optional]Key parameters:
LastName: Required for lead creationCompany: Required for lead creationEmail, Phone, Title: Common lead fieldslead_id: Lead ID for updatescampaign_id: Campaign ID for campaign operationsPitfalls:
When to use: User wants to manage contacts and their associated accounts
Tool sequence:
SALESFORCE_SEARCH_CONTACTS - Search contacts Optional]SALESFORCE_LIST_CONTACTS - List contacts Optional]SALESFORCE_CREATE_CONTACT - Create a new contact Optional]SALESFORCE_SEARCH_ACCOUNTS - Search accounts Optional]SALESFORCE_CREATE_ACCOUNT - Create a new account Optional]SALESFORCE_ASSOCIATE_CONTACT_TO_ACCOUNT - Link contact to account Optional]Key parameters:
LastName: Required for contact creationName: Account name for creationAccountId: Account ID to associate with contactcontact_id, account_id: IDs for associationPitfalls:
When to use: User wants to track and manage sales opportunities
Tool sequence:
SALESFORCE_SEARCH_OPPORTUNITIES - Search opportunities Optional]SALESFORCE_LIST_OPPORTUNITIES - List all opportunities Optional]SALESFORCE_GET_OPPORTUNITY - Get opportunity details Optional]SALESFORCE_CREATE_OPPORTUNITY - Create new opportunity Optional]SALESFORCE_RETRIEVE_OPPORTUNITIES_DATA - Retrieve opportunity data Optional]Key parameters:
Name: Opportunity name (required)StageName: Sales stage (required)CloseDate: Expected close date (required)Amount: Deal valueAccountId: Associated accountPitfalls:
When to use: User wants to query Salesforce data with custom SOQL
Tool sequence:
SALESFORCE_RUN_SOQL_QUERY / SALESFORCE_QUERY - Execute SOQL Required]Key parameters:
query: SOQL query stringPitfalls:
Account.Name not Account Name)When to use: User wants to create, search, update, or complete tasks
Tool sequence:
SALESFORCE_SEARCH_TASKS - Search tasks Optional]SALESFORCE_UPDATE_TASK - Update task fields Optional]SALESFORCE_COMPLETE_TASK - Mark task as complete Optional]Key parameters:
task_id: Task ID for updatesStatus: Task status valueSubject: Task subjectPitfalls:
Basic query:
SELECT Id, Name, Email FROM Contact WHERE LastName = 'Smith'With relationships:
SELECT Id, Name, Account.Name FROM Contact WHERE Account.Industry = 'Technology'Date filtering:
SELECT Id, Name FROM Lead WHERE CreatedDate = TODAY
SELECT Id, Name FROM Opportunity WHERE CloseDate = NEXT_MONTHSALESFORCE_QUERY with nextRecordsUrl for paginationdone field in response; if false, continue pagingField API Names:
__c suffixID Formats:
| Task | Tool Slug | Key Params | |------|-----------|------------| | Create lead | SALESFORCE_CREATE_LEAD | LastName, Company | | Search leads | SALESFORCE_SEARCH_LEADS | query | | List leads | SALESFORCE_LIST_LEADS | (filters) | | Update lead | SALESFORCE_UPDATE_LEAD | lead_id, fields | | Create contact | SALESFORCE_CREATE_CONTACT | LastName | | Search contacts | SALESFORCE_SEARCH_CONTACTS | query | | Create account | SALESFORCE_CREATE_ACCOUNT | Name | | Search accounts | SALESFORCE_SEARCH_ACCOUNTS | query | | Link contact | SALESFORCE_ASSOCIATE_CONTACT_TO_ACCOUNT | contact_id, account_id | | Create opportunity | SALESFORCE_CREATE_OPPORTUNITY | Name, StageName, CloseDate | | Get opportunity | SALESFORCE_GET_OPPORTUNITY | opportunity_id | | Search opportunities | SALESFORCE_SEARCH_OPPORTUNITIES | query | | Run SOQL | SALESFORCE_RUN_SOQL_QUERY | query | | Query | SALESFORCE_QUERY | query | | Search tasks | SALESFORCE_SEARCH_TASKS | query | | Update task | SALESFORCE_UPDATE_TASK | task_id, fields | | Complete task | SALESFORCE_COMPLETE_TASK | task_id | | Get user info | SALESFORCE_GET_USER_INFO | (none) | | Custom objects | SALESFORCE_GET_ALL_CUSTOM_OBJECTS | (none) | | Create record | SALESFORCE_CREATE_A_RECORD | object_type, fields | | Transfer ownership | SALESFORCE_MASS_TRANSFER_OWNERSHIP | records, new_owner |
Powered by Composio
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | fail→fail | 6,922 | 6,631 | -4% | 1 | 1 | 0% | 1,195 | 2,330 | +95% | 0 | 0 | — |
case-01 | fail→fail | 4,395 | 6,115 | +39% | 1 | 1 | 0% | 856 | 2,106 | +146% | 0 | 0 | — |
case-02 | fail→fail | 6,788 | 4,457 | -34% | 1 | 1 | 0% | 1,318 | 2,107 | +60% | 0 | 0 | — |
case-03 | fail→fail | 6,639 | 4,987 | -25% | 1 | 1 | 0% | 1,192 | 2,031 | +70% | 0 | 0 | — |
case-04 | fail→pass | 13,779 | 19,864 | +44% | 1 | 1 | 0% | 2,854 | 6,004 | +110% | 0 | 0 | — |
case-05 | pass→fail | 6,707 | 3,918 | -42% | 1 | 1 | 0% | 1,195 | 2,021 | +69% | 0 | 0 | — |
case-06 | pass→pass | 2,367 | 4,416 | +87% | 1 | 1 | 0% | 494 | 2,776 | +462% | 0 | 0 | — |
case-07 | pass→fail | 7,357 | 5,212 | -29% | 1 | 1 | 0% | 1,283 | 2,143 | +67% | 0 | 0 | — |
case-09 | pass→pass | 6,553 | 4,592 | -30% | 1 | 1 | 0% | 1,100 | 2,760 | +151% | 0 | 0 | — |
case-10 | pass→pass | 2,853 | 2,797 | -2% | 1 | 1 | 0% | 532 | 2,300 | +332% | 0 | 0 | — |
case-11 | pass→pass | 3,983 | 5,615 | +41% | 1 | 1 | 0% | 775 | 2,774 | +258% | 0 | 0 | — |
case-12 | fail→fail | 5,875 | 5,929 | +1% | 1 | 1 | 0% | 1,029 | 2,156 | +110% | 0 | 0 | — |
case-13 | fail→pass | 6,794 | 4,660 | -31% | 1 | 1 | 0% | 1,210 | 2,693 | +123% | 0 | 0 | — |
case-14 | fail→fail | 9,398 | 5,654 | -40% | 1 | 1 | 0% | 1,634 | 2,314 | +42% | 0 | 0 | — |
case-15 | fail→fail | 6,482 | 6,000 | -7% | 1 | 1 | 0% | 1,255 | 2,312 | +84% | 0 | 0 | — |
case-16 | fail→pass | 4,286 | 1,947 | -55% | 1 | 1 | 0% | 732 | 2,175 | +197% | 0 | 0 | — |
case-17 | fail→pass | 7,043 | 2,431 | -65% | 1 | 1 | 0% | 1,139 | 2,251 | +98% | 0 | 0 | — |
case-18 | pass→pass | 5,491 | 1,935 | -65% | 1 | 1 | 0% | 1,042 | 2,075 | +99% | 0 | 0 | — |
case-19 | pass→pass | 4,912 | 1,253 | -74% | 1 | 1 | 0% | 825 | 2,029 | +146% | 0 | 0 | — |
case-20 | fail→pass | 9,671 | 1,875 | -81% | 1 | 1 | 0% | 1,861 | 2,155 | +16% | 0 | 0 | — |
case-21 | pass→pass | 2,583 | 3,482 | +35% | 1 | 1 | 0% | 407 | 2,488 | +511% | 0 | 0 | — |
case-22 | pass→pass | 4,378 | 2,557 | -42% | 1 | 1 | 0% | 680 | 2,221 | +227% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 13 counted toward the lift figure. The other 9 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 13 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.