Help us improve
Share bugs, ideas, or general feedback.
From sf-skills
Guides Salesforce Data Cloud ingestion and lake preparation: data streams, DLOs, transforms, Document AI, and unstructured ingestion. Use when setting up or managing how data enters Data Cloud.
npx claudepluginhub ccmalcom/sf-skills-plugin --plugin sf-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/sf-skills:preparing-datacloudThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when the user needs **ingestion and lake preparation work**: data streams, Data Lake Objects (DLOs), transforms, Document AI, unstructured ingestion, or the handoff from connector setup into a live stream.
Guides multi-phase Salesforce Data Cloud workflows: connect, prepare, harmonize, segment, act, and retrieve. Use for cross-phase pipelines, data spaces, data kits, and troubleshooting root causes across phases.
Guides Salesforce Data Cloud (2025) integration patterns and architecture: data ingestion from 200+ sources, harmonization, identity resolution, real-time activation, zero-copy querying.
Generates bulk Salesforce data operation scripts (Data Loader CSV templates and Anonymous Apex) for owner reassignment, deduplication, mass field update, stale record closing, contact deactivation, and lead conversion.
Share bugs, ideas, or general feedback.
Use this skill when the user needs ingestion and lake preparation work: data streams, Data Lake Objects (DLOs), transforms, Document AI, unstructured ingestion, or the handoff from connector setup into a live stream.
Use preparing-datacloud when the work involves:
sf data360 data-stream *sf data360 dlo *sf data360 transform *sf data360 docai *Delegate elsewhere when the user is:
Ask for or infer:
node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase prepare --json.2>/dev/null for normal usage.Profile, Engagement, or Other before creating the stream.node ~/.claude/skills/orchestrating-datacloud/scripts/diagnose-org.mjs -o <org> --phase prepare --json
sf data360 data-stream list -o <org> 2>/dev/null
sf data360 dlo list -o <org> 2>/dev/null
Use these rules when suggesting categories:
| Category | Use for | Typical requirement |
|---|---|---|
Profile | person/entity records | primary key |
Engagement | time-based events or interactions | primary key + event time field |
Other | reference/configuration/supporting datasets | primary key |
When the source is ambiguous, ask the user explicitly whether the dataset should be treated as Profile, Engagement, or Other.
sf data360 data-stream get -o <org> --name <stream> 2>/dev/null
sf data360 data-stream create-from-object -o <org> --object Contact --connection SalesforceDotCom_Home 2>/dev/null
sf data360 data-stream create -o <org> -f stream.json 2>/dev/null
sf data360 data-stream run -o <org> --name <stream> 2>/dev/null
sf data360 dlo get -o <org> --name Contact_Home__dll 2>/dev/null
Use the smaller refresh scope that matches the user goal:
sf data360 data-stream run -o <org> --name <stream> 2>/dev/null
sf data360 connection run-existing -o <org> --name <connection-id> 2>/dev/null
data-stream run is the closest match to a stream-level refresh or re-scan.connection run-existing runs at the connection level and can be useful for some connector workflows, but it is not a reliable replacement for stream refresh on unstructured sources.data-stream run when the goal is to re-scan newly added or changed files.For SharePoint-style document ingestion, a minimal unstructured DLO payload can look like:
{
"name": "my_udlo",
"label": "My UDLO",
"category": "Directory_Table",
"dataSource": {
"sourceType": "SF_DRIVE",
"directoryAndFilesDetails": [
{
"dirName": "SPUnstructuredDocument/<CONNECTION_ID>/<SITE_ID>",
"fileName": "*"
}
],
"sourceConfig": {
"reservedPrefix": "$dcf_content$"
}
}
}
Use the UI for the first-time unstructured setup when the user needs the richer end-to-end pipeline. The UI path can seed additional document metadata fields and downstream assets that a bare CLI DLO create flow may not provision automatically.
For external systems pushing records into Data Cloud:
sf data360 connection schema-upsertexamples/ingestion-api/cd examples/ingestion-api
cp .env.example .env
python3 send-data.py
Key details:
202 means the payload was accepted for processing, not that records are queryable immediatelyOnce the stream and DLO are healthy, hand off to harmonizing-datacloud.
sf data360 data-stream run and sf data360 connection run-existing are not interchangeable; prefer stream-level refresh for unstructured rescans.SFDC streams sync on a platform-managed schedule; data-stream run is not the general control path for CRM connector refresh.__c → _c transformations.CdpDataStreams means the stream module is gated for the current org/user; guide the user to provisioning/permissions review instead of retrying blindly.Prepare task: <stream / dlo / transform / docai>
Source: <connection + object>
Target org: <alias>
Artifacts: <stream names / dlo names / json definitions>
Verification: <passed / partial / blocked>
Next step: <harmonize or retrieve>