
Salesforce
Wire your agent or app to Salesforce CRM objects and workflows via Membrane CLI without hand-rolling OAuth and credential refresh.
Overview
Salesforce is an agent skill for the Build phase that integrates Salesforce CRM data and workflows through the Membrane CLI with handled authentication.
Install
npx skills add https://github.com/membranedev/application-skills --skill salesforceWhat is this skill?
- Membrane CLI install and tenant login for Salesforce (`membrane login --tenant`)
- Coverage of core CRM entities: Account, Contact, Lead, Opportunity, Case, Task, and related objects
- Uses `membrane action run` and `membrane request` for typed actions and custom REST paths
- Program-first workflow: search actions, inspect schemas, then generate integration code
- Free-tier Membrane account supported; MIT-licensed skill package
- Documents 14+ Salesforce object types including Account, Lead, Opportunity, and Dashboard
Adoption & trust: 1.3k installs on skills.sh; 178 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want your agent or backend to read and update Salesforce records but do not want to maintain OAuth tokens and API auth code yourself.
Who is it for?
Indie SaaS or internal tools that need CRM read/write during development and already use or can adopt Membrane.
Skip if: Builders who need only static Salesforce documentation without live API access, or environments that cannot install npm global CLIs or use network.
When should I use this skill?
User wants to interact with Salesforce data, records, or workflows and mentions CRM, Membrane, or Salesforce API tasks.
What do I get? / Deliverables
After setup, you run Membrane CLI actions against Salesforce entities and embed those calls in your integration or agent workflow.
- Authenticated Membrane Salesforce session
- Runnable action or request snippets for target CRM operations
Recommended Skills
Journey fit
Connecting live CRM data belongs in build when the product needs real customer, lead, and opportunity records. Salesforce access is a third-party SaaS integration surfaced through Membrane’s authenticated CLI and action runners.
How it compares
Integration skill via Membrane connector CLI, not a self-hosted MCP server or raw SOAP/REST cookbook alone.
Common Questions / FAQ
Who is salesforce for?
Solo builders and small teams shipping apps or agents that must interact with Salesforce CRM and marketing data through a managed auth layer.
When should I use salesforce?
During build when implementing lead sync, opportunity updates, case management, or custom REST calls against a Salesforce org with Membrane handling credentials.
Is salesforce safe to install?
The skill expects network access, global npm CLI install, and Membrane login storing tenant credentials—review the Security Audits panel on this Prism page and scope secrets before use.
SKILL.md
READMESKILL.md - Salesforce
# Salesforce Salesforce is a leading cloud-based CRM platform that helps businesses manage customer relationships and sales processes. It's primarily used by sales, marketing, and customer service teams to track leads, automate marketing campaigns, and provide customer support. Official docs: https://developer.salesforce.com/docs ## Salesforce Overview - **Account** - **Case** - **Contact** - **Contract** - **Lead** - **Opportunity** - **Order** - **Product** - **Quote** - **Solution** - **Task** - **User** - **Dashboard** - **Report** ## Working with Salesforce This skill uses the Membrane CLI to interact with Salesforce. Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing. ### Install the CLI Install the Membrane CLI so you can run `membrane` from the terminal: ```bash npm install -g @membranehq/cli@latest ``` ### Authentication ```bash membrane login --tenant --clientName=<agentType> ``` This will either open a browser for authentication or print an authorization URL to the console, depending on whether interactive mode is available. **Headless environments:** The command will print an authorization URL. Ask the user to open it in a browser. When they see a code after completing login, finish with: ```bash membrane login complete <code> ``` Add `--json` to any command for machine-readable JSON output. **Agent Types** : claude, openclaw, codex, warp, windsurf, etc. Those will be used to adjust tooling to be used best with your harness ### Connecting to Salesforce Use `membrane connection ensure` to find or create a connection by app URL or domain: ```bash membrane connection ensure "https://www.salesforce.com/" --json ``` The user completes authentication in the browser. The output contains the new connection id. This is the fastest way to get a connection. The URL is normalized to a domain and matched against known apps. If no app is found, one is created and a connector is built automatically. If the returned connection has `state: "READY"`, skip to **Step 2**. #### 1b. Wait for the connection to be ready If the connection is in `BUILDING` state, poll until it's ready: ```bash npx @membranehq/cli connection get <id> --wait --json ``` The `--wait` flag long-polls (up to `--timeout` seconds, default 30) until the state changes. Keep polling until `state` is no longer `BUILDING`. The resulting state tells you what to do next: - **`READY`** — connection is fully set up. Skip to **Step 2**. - **`CLIENT_ACTION_REQUIRED`** — the user or agent needs to do something. The `clientAction` object describes the required action: - `clientAction.type` — the kind of action needed: - `"connect"` — user needs to authenticate (OAuth, API key, etc.). This covers initial authentication and re-authentication for disconnected connections. - `"provide-input"` — more information is needed (e.g. which app to connect to). - `clientAction.description` — human-readable explanation of what's needed. - `clientAction.uiUrl` (optional) — URL to a pre-built UI where the user can complete the action. Show this to the user when present. - `clientAction.agentInstructions` (optional) — instructions for the AI agent on how to proceed programmatically. After the user completes the action (e.g. authenticates in the browser), poll again with `membrane connection get <id> --json` to check if the state moved to `READY`. - **`CONFIGURATION_ERROR`** or **`SETUP_FAILE