{"id":"cc2a3c0c-d405-43d0-8871-052950bfb968","shortId":"tgRx6F","kind":"skill","title":"salesforce","tagline":"Query and manage Salesforce CRM data via the Salesforce CLI (`sf`). Run SOQL/SOSL queries, inspect object schemas, create/update/delete records, bulk import/export, execute Apex, deploy metadata, and make raw REST API calls.","description":"# Salesforce Skill\n\nUse the Salesforce CLI (`sf`) to interact with Salesforce orgs. The CLI must be authenticated before use. Always add `--json` for structured output.\n\nIf the `sf` binary is not available, stop and ask the user to install the Salesforce CLI using the repo's declared install metadata or the official Salesforce CLI guide. After the CLI is available, authenticate with `sf org login web` before touching org data.\n\n## Safety Boundaries\n\n- Do not create, update, delete, deploy, or execute Apex without explicit user confirmation.\n- Do not reveal access tokens, auth URLs, refresh tokens, or verbose org-display output in chat.\n- Do not export data to files unless the user asked for a saved artifact or bulk workflow.\n- Do not target a production org by default when sandbox or staging access is available.\n\n## Authentication and Org Management\n\n### Log in (opens browser)\n```bash\nsf org login web --alias my-org\n```\n\nOther login methods:\n```bash\n# JWT-based login (CI/automation)\nsf org login jwt --client-id <consumer-key> --jwt-key-file server.key --username user@example.com --alias my-org\n\n# Login with an existing access token\nsf org login access-token --instance-url https://mycompany.my.salesforce.com\n\n# Login via SFDX auth URL (from a file)\nsf org login sfdx-url --sfdx-url-file authUrl.txt --alias my-org\n```\n\n### Manage orgs\n```bash\n# List all authenticated orgs\nsf org list --json\n\n# Display info about the default org (access token, instance URL, username)\nsf org display --json\n\n# Display info about a specific org\nsf org display --target-org my-org --json\n\n# Display with SFDX auth URL (sensitive - contains refresh token)\nsf org display --target-org my-org --verbose --json\n\n# Open org in browser\nsf org open\nsf org open --target-org my-org\n\n# Log out\nsf org logout --target-org my-org\n```\n\n### Configuration and aliases\n```bash\n# Set default target org\nsf config set target-org my-org\n\n# List all config variables\nsf config list\n\n# Get a specific config value\nsf config get target-org\n\n# Set an alias\nsf alias set prod=user@example.com\n\n# List aliases\nsf alias list\n```\n\n## Querying Data (SOQL)\n\nStandard SOQL queries via the default API:\n```bash\n# Basic query\nsf data query --query \"SELECT Id, Name, Email FROM Contact LIMIT 10\" --json\n\n# WHERE clause\nsf data query --query \"SELECT Id, Name, Amount, StageName FROM Opportunity WHERE StageName = 'Closed Won'\" --json\n\n# Relationship queries (parent-to-child)\nsf data query --query \"SELECT Id, Name, (SELECT LastName, Email FROM Contacts) FROM Account LIMIT 5\" --json\n\n# Relationship queries (child-to-parent)\nsf data query --query \"SELECT Id, Name, Account.Name FROM Contact\" --json\n\n# LIKE for text search\nsf data query --query \"SELECT Id, Name FROM Account WHERE Name LIKE '%Acme%'\" --json\n\n# Date filtering\nsf data query --query \"SELECT Id, Name, CreatedDate FROM Lead WHERE CreatedDate = TODAY\" --json\n\n# ORDER BY + LIMIT\nsf data query --query \"SELECT Id, Name, Amount FROM Opportunity ORDER BY Amount DESC LIMIT 20\" --json\n\n# Include deleted/archived records\nsf data query --query \"SELECT Id, Name FROM Account\" --all-rows --json\n\n# Query from a file\nsf data query --file query.soql --json\n\n# Tooling API queries (metadata objects like ApexClass, ApexTrigger)\nsf data query --query \"SELECT Id, Name, Status FROM ApexClass\" --use-tooling-api --json\n\n# Output to CSV file\nsf data query --query \"SELECT Id, Name, Email FROM Contact\" --result-format csv --output-file contacts.csv\n\n# Target a specific org\nsf data query --query \"SELECT Id, Name FROM Account\" --target-org my-org --json\n```\n\nFor queries returning more than 10,000 records, use Bulk API instead:\n```bash\nsf data export bulk --query \"SELECT Id, Name, Email FROM Contact\" --output-file contacts.csv --result-format csv --wait 10\nsf data export bulk --query \"SELECT Id, Name FROM Account\" --output-file accounts.json --result-format json --wait 10\n```\n\n## Text Search (SOSL)\n\nSOSL searches across multiple objects at once:\n```bash\n# Search for text across objects\nsf data search --query \"FIND {John Smith} IN ALL FIELDS RETURNING Contact(Name, Email), Lead(Name, Email)\" --json\n\n# Search in name fields only\nsf data search --query \"FIND {Acme} IN NAME FIELDS RETURNING Account(Name, Industry), Contact(Name)\" --json\n\n# Search from a file\nsf data search --file search.sosl --json\n\n# Output to CSV\nsf data search --query \"FIND {test} RETURNING Contact(Name)\" --result-format csv\n```\n\n## Single Record Operations\n\n### Get a record\n```bash\n# By record ID\nsf data get record --sobject Contact --record-id 003XXXXXXXXXXXX --json\n\n# By field match (WHERE-like)\nsf data get record --sobject Account --where \"Name=Acme\" --json\n\n# By multiple fields (values with spaces need single quotes)\nsf data get record --sobject Account --where \"Name='Universal Containers' Phone='(123) 456-7890'\" --json\n```\n\n### Create a record (confirm with user first)\n```bash\nsf data create record --sobject Contact --values \"FirstName='Jane' LastName='Doe' Email='jane@example.com'\" --json\n\nsf data create record --sobject Account --values \"Name='New Company' Website=www.example.com Industry='Technology'\" --json\n\n# Tooling API object\nsf data create record --sobject TraceFlag --use-tooling-api --values \"DebugLevelId=7dl... LogType=CLASS_TRACING\" --json\n```\n\n### Update a record (confirm with user first)\n```bash\n# By ID\nsf data update record --sobject Contact --record-id 003XXXXXXXXXXXX --values \"Email='updated@example.com'\" --json\n\n# By field match\nsf data update record --sobject Account --where \"Name='Old Acme'\" --values \"Name='New Acme'\" --json\n\n# Multiple fields\nsf data update record --sobject Account --record-id 001XXXXXXXXXXXX --values \"Name='Acme III' Website=www.example.com\" --json\n```\n\n### Delete a record (require explicit user confirmation)\n```bash\n# By ID\nsf data delete record --sobject Account --record-id 001XXXXXXXXXXXX --json\n\n# By field match\nsf data delete record --sobject Account --where \"Name=Acme\" --json\n```\n\n## Bulk Data Operations (Bulk API 2.0)\n\nFor large datasets (thousands to millions of records):\n\n### Bulk export\n```bash\n# Export to CSV\nsf data export bulk --query \"SELECT Id, Name, Email FROM Contact\" --output-file contacts.csv --result-format csv --wait 10\n\n# Export to JSON\nsf data export bulk --query \"SELECT Id, Name FROM Account\" --output-file accounts.json --result-format json --wait 10\n\n# Include soft-deleted records\nsf data export bulk --query \"SELECT Id, Name FROM Account\" --output-file accounts.csv --result-format csv --all-rows --wait 10\n\n# Resume a timed-out export\nsf data export resume --job-id 750XXXXXXXXXXXX --json\n```\n\n### Bulk import\n```bash\n# Import from CSV\nsf data import bulk --file accounts.csv --sobject Account --wait 10\n\n# Resume a timed-out import\nsf data import resume --job-id 750XXXXXXXXXXXX --json\n```\n\n### Bulk upsert\n```bash\nsf data upsert bulk --file contacts.csv --sobject Contact --external-id Email --wait 10\n```\n\n### Bulk delete\n```bash\n# Delete records listed in CSV (CSV must have an Id column)\nsf data delete bulk --file records-to-delete.csv --sobject Contact --wait 10\n```\n\n### Tree export/import (for related records)\n```bash\n# Export with relationships into JSON tree format\nsf data export tree --query \"SELECT Id, Name, (SELECT Name, Email FROM Contacts) FROM Account\" --json\n\n# Export with a plan file (for multiple objects)\nsf data export tree --query \"SELECT Id, Name FROM Account\" --plan --output-dir export-data\n\n# Import from tree JSON files\nsf data import tree --files Account.json,Contact.json\n\n# Import using a plan definition file\nsf data import tree --plan Account-Contact-plan.json\n```\n\n## Schema Inspection\n\n```bash\n# Describe an object (fields, relationships, picklist values)\nsf sobject describe --sobject Account --json\n\n# Describe a custom object\nsf sobject describe --sobject MyCustomObject__c --json\n\n# Describe a Tooling API object\nsf sobject describe --sobject ApexClass --use-tooling-api --json\n\n# List all objects\nsf sobject list --json\n\n# List only custom objects\nsf sobject list --sobject custom --json\n\n# List only standard objects\nsf sobject list --sobject standard --json\n```\n\n## Execute Apex Code\n\n```bash\n# Execute Apex from a file\nsf apex run --file script.apex --json\n\n# Run interactively (type code, press Ctrl+D to execute)\nsf apex run\n\n# Run Apex tests\nsf apex run test --test-names MyTestClass --json\n\n# Get test results\nsf apex get test --test-run-id 707XXXXXXXXXXXX --json\n\n# View Apex logs\nsf apex list log --json\nsf apex get log --log-id 07LXXXXXXXXXXXX\n```\n\n## REST API (Advanced)\n\nMake arbitrary authenticated REST API calls:\n```bash\n# GET request\nsf api request rest 'services/data/v62.0/limits' --json\n\n# List API versions\nsf api request rest '/services/data/' --json\n\n# Create a record via REST\nsf api request rest '/services/data/v62.0/sobjects/Account' --method POST --body '{\"Name\":\"REST Account\",\"Industry\":\"Technology\"}' --json\n\n# Update a record via REST (PATCH)\nsf api request rest '/services/data/v62.0/sobjects/Account/001XXXXXXXXXXXX' --method PATCH --body '{\"BillingCity\":\"San Francisco\"}' --json\n\n# GraphQL query\nsf api request graphql --body '{\"query\":\"{ uiapi { query { Account { edges { node { Name { value } } } } } } }\"}' --json\n\n# Custom headers\nsf api request rest '/services/data/v62.0/limits' --header 'Accept: application/xml'\n\n# Save response to file\nsf api request rest '/services/data/v62.0/limits' --stream-to-file limits.json\n```\n\n## Metadata Deployment and Retrieval\n\n```bash\n# Deploy metadata to an org\nsf project deploy start --source-dir force-app --json\n\n# Deploy specific metadata components\nsf project deploy start --metadata ApexClass:MyClass --json\n\n# Retrieve metadata from an org\nsf project retrieve start --metadata ApexClass --json\n\n# Check deploy status\nsf project deploy report --job-id 0AfXXXXXXXXXXXX --json\n\n# Generate a new Salesforce DX project\nsf project generate --name my-project\n\n# List metadata components in the org\nsf project list ignored --json\n```\n\n## Diagnostics\n\n```bash\n# Run CLI diagnostics\nsf doctor\n\n# Check CLI version\nsf version\n\n# See what is new\nsf whatsnew\n```\n\n## Common SOQL Patterns\n\n```sql\n-- Count records\nSELECT COUNT() FROM Contact WHERE AccountId = '001XXXXXXXXXXXX'\n\n-- Aggregate query\nSELECT StageName, COUNT(Id), SUM(Amount) FROM Opportunity GROUP BY StageName\n\n-- Date literals\nSELECT Id, Name FROM Lead WHERE CreatedDate = LAST_N_DAYS:30\n\n-- Subquery (semi-join)\nSELECT Id, Name FROM Account WHERE Id IN (SELECT AccountId FROM Contact WHERE Email LIKE '%@acme.com')\n\n-- Polymorphic lookup\nSELECT Id, Who.Name, Who.Type FROM Task WHERE Who.Type = 'Contact'\n\n-- Multiple WHERE conditions\nSELECT Id, Name, Amount FROM Opportunity WHERE Amount > 10000 AND StageName != 'Closed Lost' AND CloseDate = THIS_QUARTER\n```\n\n## Guardrails\n\n- **Always use `--json`** for structured, parseable output.\n- **Never create, update, or delete records** without explicit user confirmation. Describe the operation and ask before executing.\n- **Never delete records** unless the user explicitly requests it and confirms the specific record(s).\n- **Never bulk delete or bulk import** without user reviewing the file/query and confirming.\n- Use `LIMIT` on queries to avoid excessive data. Start with `LIMIT 10` and increase if the user needs more.\n- For queries over 10,000 records, use `sf data export bulk` instead of `sf data query`.\n- When the user asks to \"find\" or \"search\" a single object, use SOQL `WHERE ... LIKE '%term%'`. When searching across multiple objects, use SOSL via `sf data search`.\n- Use `--target-org <alias>` when the user has multiple orgs; ask which org if ambiguous.\n- If authentication fails or a session expires, guide the user through `sf org login web`.\n- Bulk API 2.0 has SOQL limitations (no aggregate functions like `COUNT()`). Use standard `sf data query` for those.\n- When describing objects (`sf sobject describe`), the JSON output can be very large. Summarize the key fields, required fields, and relationships for the user rather than dumping the raw output.","tags":["salesforce","agent","skills","jdrhyne","agent-skills","agentic-ai","ai-agents","automation","claude-code","clawdbot","codex","cursor"],"capabilities":["skill","source-jdrhyne","skill-salesforce","topic-agent-skills","topic-agentic-ai","topic-ai-agents","topic-automation","topic-claude-code","topic-clawdbot","topic-codex","topic-cursor","topic-developer-tools","topic-gemini-cli","topic-github-copilot","topic-llm-agents"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jdrhyne/agent-skills/salesforce","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jdrhyne/agent-skills","source_repo":"https://github.com/jdrhyne/agent-skills","install_from":"skills.sh"}},"qualityScore":"0.565","qualityRationale":"deterministic score 0.56 from registry signals: · indexed on github topic:agent-skills · 230 github stars · SKILL.md body (12,010 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:54:19.937Z","embedding":null,"createdAt":"2026-04-18T22:05:05.181Z","updatedAt":"2026-04-22T00:54:19.937Z","lastSeenAt":"2026-04-22T00:54:19.937Z","tsv":"'-7890':810 '/services/data':1383 '/services/data/v62.0/limits':1444,1456 '/services/data/v62.0/sobjects/account':1394 '/services/data/v62.0/sobjects/account/001xxxxxxxxxxxx':1414 '000':622,1727 '001xxxxxxxxxxxx':922,949,1573 '003xxxxxxxxxxxx':770,888 '07lxxxxxxxxxxxx':1357 '0afxxxxxxxxxxxx':1517 '10':411,621,649,669,1004,1027,1055,1086,1118,1142,1715,1726 '10000':1642 '123':808 '2.0':969,1798 '20':523 '30':1599 '456':809 '5':452 '707xxxxxxxxxxxx':1340 '750xxxxxxxxxxxx':1069,1100 '7dl':864 'accept':1446 'access':121,164,215,221,267 'access-token':220 'account':450,483,536,608,659,719,783,802,839,901,918,945,959,1017,1042,1084,1170,1189,1235,1400,1432,1608 'account-contact-plan.json':1220 'account.json':1207 'account.name':467 'accountid':1572,1613 'accounts.csv':1046,1082 'accounts.json':663,1021 'acm':487,714,786,905,909,925,962 'acme.com':1619 'across':675,684,1757 'add':53 'advanc':1360 'aggreg':1574,1803 'alia':180,207,246,376,378,385 'alias':341,383 'all-row':537,1051 'alway':52,1652 'ambigu':1780 'amount':422,515,520,1581,1637,1641 'apex':24,113,1291,1295,1300,1315,1318,1321,1333,1343,1346,1351 'apexclass':557,568,1257,1492,1505 'apextrigg':558 'api':31,396,552,572,626,850,861,968,1251,1261,1359,1365,1371,1377,1380,1391,1411,1425,1441,1453,1797 'app':1481 'application/xml':1447 'arbitrari':1362 'artifact':148 'ask':67,144,1673,1742,1776 'auth':123,230,295 'authent':49,93,167,255,1363,1782 'authurl.txt':245 'avail':64,92,166 'avoid':1709 'base':190 'bash':175,187,252,342,397,628,680,757,819,876,937,980,1073,1104,1121,1148,1223,1293,1367,1466,1544 'basic':398 'billingc':1418 'binari':61 'bodi':1397,1417,1428 'boundari':104 'browser':174,315 'bulk':21,150,625,632,653,964,967,978,987,1011,1036,1071,1080,1102,1108,1119,1136,1692,1695,1733,1796 'c':1246 'call':32,1366 'chat':134 'check':1507,1550 'child':436,457 'child-to-par':456 'ci/automation':192 'class':866 'claus':414 'cli':11,38,46,74,86,90,1546,1551 'client':198 'client-id':197 'close':428,1645 'closed':1648 'code':1292,1308 'column':1132 'common':1561 'compani':843 'compon':1486,1534 'condit':1633 'config':348,358,361,366,369 'configur':339 'confirm':117,815,872,936,1668,1686,1703 'contact':409,448,469,587,639,697,722,745,766,825,884,994,1112,1140,1168,1570,1615,1630 'contact.json':1208 'contacts.csv':595,643,998,1110 'contain':298,806 'count':1565,1568,1578,1806 'creat':107,812,822,836,854,1385,1660 'create/update/delete':19 'createdd':498,502,1595 'crm':6 'csv':576,591,647,737,750,983,1002,1050,1076,1126,1127 'ctrl':1310 'custom':1239,1272,1278,1438 'd':1311 'data':7,102,138,388,401,416,438,461,476,492,509,529,546,560,579,601,630,651,687,710,730,739,762,779,798,821,835,853,880,897,914,941,955,965,985,1009,1034,1063,1078,1094,1106,1134,1157,1181,1196,1203,1216,1711,1731,1737,1764,1810 'dataset':972 'date':489,1587 'day':1598 'debuglevelid':863 'declar':79 'default':159,265,344,395 'definit':1213 'delet':109,930,942,956,1031,1120,1122,1135,1663,1677,1693 'deleted/archived':526 'deploy':25,110,1463,1467,1474,1483,1489,1508,1512 'desc':521 'describ':1224,1233,1237,1243,1248,1255,1669,1815,1819 'diagnost':1543,1547 'dir':1193,1478 'display':131,261,274,276,284,292,303 'doctor':1549 'doe':830 'dump':1840 'dx':1523 'edg':1433 'email':407,446,585,637,699,702,831,890,992,1116,1166,1617 'excess':1710 'execut':23,112,1290,1294,1313,1675 'exist':214 'expir':1787 'explicit':115,934,1666,1682 'export':137,631,652,979,981,986,1005,1010,1035,1061,1064,1149,1158,1172,1182,1195,1732 'export-data':1194 'export/import':1144 'extern':1114 'external-id':1113 'fail':1783 'field':695,707,717,773,790,894,912,952,1227,1830,1832 'file':140,203,234,244,544,548,577,594,642,662,728,732,997,1020,1045,1081,1109,1137,1176,1201,1206,1214,1298,1302,1451,1460 'file/query':1701 'filter':490 'find':690,713,742,1744 'first':818,875 'firstnam':827 'forc':1480 'force-app':1479 'format':590,646,666,749,1001,1024,1049,1155 'francisco':1420 'function':1804 'generat':1519,1527 'get':363,370,754,763,780,799,1329,1334,1352,1368 'graphql':1422,1427 'group':1584 'guardrail':1651 'guid':87,1788 'header':1439,1445 'id':199,405,420,442,465,480,496,513,533,564,583,605,635,656,760,769,878,887,921,939,948,990,1014,1039,1068,1099,1115,1131,1162,1186,1339,1356,1516,1579,1590,1605,1610,1623,1635 'ignor':1541 'iii':926 'import':1072,1074,1079,1092,1095,1197,1204,1209,1217,1696 'import/export':22 'includ':525,1028 'increas':1717 'industri':721,846,1401 'info':262,277 'inspect':16,1222 'instal':71,80 'instanc':224,269 'instance-url':223 'instead':627,1734 'interact':41,1306 'jane':828 'jane@example.com':832 'job':1067,1098,1515 'job-id':1066,1097,1514 'john':691 'join':1603 'json':54,260,275,291,311,412,430,453,470,488,504,524,540,550,573,615,667,703,724,734,771,787,811,833,848,868,892,910,929,950,963,1007,1025,1070,1101,1153,1171,1200,1236,1247,1262,1269,1279,1289,1304,1328,1341,1349,1375,1384,1403,1421,1437,1482,1494,1506,1518,1542,1654,1821 'jwt':189,196,201 'jwt-base':188 'jwt-key-fil':200 'key':202,1829 'larg':971,1826 'last':1596 'lastnam':445,829 'lead':500,700,1593 'like':471,486,556,777,1618,1753,1805 'limit':410,451,507,522,1705,1714,1801 'limits.json':1461 'list':253,259,356,362,382,386,1124,1263,1268,1270,1276,1280,1286,1347,1376,1532,1540 'liter':1588 'log':171,328,1344,1348,1353,1355 'log-id':1354 'login':97,178,185,191,195,211,219,227,237,1794 'logout':332 'logtyp':865 'lookup':1621 'lost':1646 'make':28,1361 'manag':4,170,250 'match':774,895,953 'metadata':26,81,554,1462,1468,1485,1491,1496,1504,1533 'method':186,1395,1415 'million':975 'multipl':676,789,911,1178,1631,1758,1774 'must':47,1128 'my-org':181,208,247,288,307,325,336,353,612 'my-project':1529 'myclass':1493 'mycompany.my.salesforce.com':226 'mycustomobject':1245 'mytestclass':1327 'n':1597 'name':406,421,443,466,481,485,497,514,534,565,584,606,636,657,698,701,706,716,720,723,746,785,804,841,903,907,924,961,991,1015,1040,1163,1165,1187,1326,1398,1435,1528,1591,1606,1636 'need':794,1721 'never':1659,1676,1691 'new':842,908,1521,1558 'node':1434 'object':17,555,677,685,851,1179,1226,1240,1252,1265,1273,1283,1749,1759,1816 'offici':84 'old':904 'open':173,312,318,321 'oper':753,966,1671 'opportun':425,517,1583,1639 'order':505,518 'org':44,96,101,130,157,169,177,183,194,210,218,236,249,251,256,258,266,273,281,283,287,290,302,306,309,313,317,320,324,327,331,335,338,346,352,355,373,599,611,614,1471,1499,1537,1769,1775,1778,1793 'org-display':129 'output':57,132,574,593,641,661,735,996,1019,1044,1192,1658,1822,1843 'output-dir':1191 'output-fil':592,640,660,995,1018,1043 'parent':434,459 'parent-to-child':433 'parseabl':1657 'patch':1409,1416 'pattern':1563 'phone':807 'picklist':1229 'plan':1175,1190,1212,1219 'polymorph':1620 'post':1396 'press':1309 'prod':380 'product':156 'project':1473,1488,1501,1511,1524,1526,1531,1539 'quarter':1650 'queri':2,15,387,392,399,402,403,417,418,432,439,440,455,462,463,477,478,493,494,510,511,530,531,541,547,553,561,562,580,581,602,603,617,633,654,689,712,741,988,1012,1037,1160,1184,1423,1429,1431,1575,1707,1724,1738,1811 'query.soql':549 'quot':796 'rather':1838 'raw':29,1842 'record':20,527,623,752,756,759,764,768,781,800,814,823,837,855,871,882,886,899,916,920,932,943,947,957,977,1032,1123,1147,1387,1406,1566,1664,1678,1689,1728 'record-id':767,885,919,946 'records-to-delete.csv':1138 'refresh':125,299 'relat':1146 'relationship':431,454,1151,1228,1834 'repo':77 'report':1513 'request':1369,1372,1381,1392,1412,1426,1442,1454,1683 'requir':933,1831 'respons':1449 'rest':30,1358,1364,1373,1382,1389,1393,1399,1408,1413,1443,1455 'result':589,645,665,748,1000,1023,1048,1331 'result-format':588,644,664,747,999,1022,1047 'resum':1056,1065,1087,1096 'retriev':1465,1495,1502 'return':618,696,718,744 'reveal':120 'review':1699 'row':539,1053 'run':13,1301,1305,1316,1317,1322,1338,1545 'safeti':103 'salesforc':1,5,10,33,37,43,73,85,1522 'san':1419 'sandbox':161 'save':147,1448 'schema':18,1221 'script.apex':1303 'search':474,671,674,681,688,704,711,725,731,740,1746,1756,1765 'search.sosl':733 'see':1555 'select':404,419,441,444,464,479,495,512,532,563,582,604,634,655,989,1013,1038,1161,1164,1185,1567,1576,1589,1604,1612,1622,1634 'semi':1602 'semi-join':1601 'sensit':297 'server.key':204 'services/data/v62.0/limits':1374 'session':1786 'set':343,349,374,379 'sf':12,39,60,95,176,193,217,235,257,272,282,301,316,319,330,347,360,368,377,384,400,415,437,460,475,491,508,528,545,559,578,600,629,650,686,709,729,738,761,778,797,820,834,852,879,896,913,940,954,984,1008,1033,1062,1077,1093,1105,1133,1156,1180,1202,1215,1231,1241,1253,1266,1274,1284,1299,1314,1320,1332,1345,1350,1370,1379,1390,1410,1424,1440,1452,1472,1487,1500,1510,1525,1538,1548,1553,1559,1730,1736,1763,1792,1809,1817 'sfdx':229,239,242,294 'sfdx-url':238 'sfdx-url-fil':241 'singl':751,795,1748 'skill':34 'skill-salesforce' 'smith':692 'sobject':765,782,801,824,838,856,883,900,917,944,958,1083,1111,1139,1232,1234,1242,1244,1254,1256,1267,1275,1277,1285,1287,1818 'soft':1030 'soft-delet':1029 'soql':389,391,1562,1751,1800 'soql/sosl':14 'sosl':672,673,1761 'sourc':1477 'source-dir':1476 'source-jdrhyne' 'space':793 'specif':280,365,598,1484,1688 'sql':1564 'stage':163 'stagenam':423,427,1577,1586,1644 'standard':390,1282,1288,1808 'start':1475,1490,1503,1712 'status':566,1509 'stop':65 'stream':1458 'stream-to-fil':1457 'structur':56,1656 'subqueri':1600 'sum':1580 'summar':1827 'target':154,286,305,323,334,345,351,372,596,610,1768 'target-org':285,304,322,333,350,371,609,1767 'task':1627 'technolog':847,1402 'term':1754 'test':743,1319,1323,1325,1330,1335,1337 'test-nam':1324 'test-run-id':1336 'text':473,670,683 'thousand':973 'time':1059,1090 'timed-out':1058,1089 'today':503 'token':122,126,216,222,268,300 'tool':551,571,849,860,1250,1260 'topic-agent-skills' 'topic-agentic-ai' 'topic-ai-agents' 'topic-automation' 'topic-claude-code' 'topic-clawdbot' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-gemini-cli' 'topic-github-copilot' 'topic-llm-agents' 'touch':100 'trace':867 'traceflag':857 'tree':1143,1154,1159,1183,1199,1205,1218 'type':1307 'uiapi':1430 'univers':805 'unless':141,1679 'updat':108,869,881,898,915,1404,1661 'updated@example.com':891 'upsert':1103,1107 'url':124,225,231,240,243,270,296 'use':35,51,75,570,624,859,1210,1259,1653,1704,1729,1750,1760,1766,1807 'use-tooling-api':569,858,1258 'user':69,116,143,817,874,935,1667,1681,1698,1720,1741,1772,1790,1837 'user@example.com':206,381 'usernam':205,271 'valu':367,791,826,840,862,889,906,923,1230,1436 'variabl':359 'verbos':128,310 'version':1378,1552,1554 'via':8,228,393,1388,1407,1762 'view':1342 'wait':648,668,1003,1026,1054,1085,1117,1141 'web':98,179,1795 'websit':844,927 'whatsnew':1560 'where-lik':775 'who.name':1624 'who.type':1625,1629 'without':114,1665,1697 'won':429 'workflow':151 'www.example.com':845,928","prices":[{"id":"f6be2f03-3b22-4fc9-aaf1-b98291fb7078","listingId":"cc2a3c0c-d405-43d0-8871-052950bfb968","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jdrhyne","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:05:05.181Z"}],"sources":[{"listingId":"cc2a3c0c-d405-43d0-8871-052950bfb968","source":"github","sourceId":"jdrhyne/agent-skills/salesforce","sourceUrl":"https://github.com/jdrhyne/agent-skills/tree/main/skills/salesforce","isPrimary":false,"firstSeenAt":"2026-04-18T22:05:05.181Z","lastSeenAt":"2026-04-22T00:54:19.937Z"}],"details":{"listingId":"cc2a3c0c-d405-43d0-8871-052950bfb968","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jdrhyne","slug":"salesforce","github":{"repo":"jdrhyne/agent-skills","stars":230,"topics":["agent-skills","agentic-ai","ai-agents","automation","claude-code","clawdbot","codex","cursor","developer-tools","gemini-cli","github-copilot","llm-agents","mcp","openclaw","prompt-engineering","prompts"],"license":null,"html_url":"https://github.com/jdrhyne/agent-skills","pushed_at":"2026-03-27T14:29:53Z","description":"A collection of AI agent skills for Clawdbot, Claude Code, Codex","skill_md_sha":"31a2855a3067f888a1b238d74b3f9c066bcf8d36","skill_md_path":"skills/salesforce/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jdrhyne/agent-skills/tree/main/skills/salesforce"},"layout":"multi","source":"github","category":"agent-skills","frontmatter":{"name":"salesforce","description":"Query and manage Salesforce CRM data via the Salesforce CLI (`sf`). Run SOQL/SOSL queries, inspect object schemas, create/update/delete records, bulk import/export, execute Apex, deploy metadata, and make raw REST API calls."},"skills_sh_url":"https://skills.sh/jdrhyne/agent-skills/salesforce"},"updatedAt":"2026-04-22T00:54:19.937Z"}}