@salesforce/afv-skills 1.41.0 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/dx-app-analytics-query/SKILL.md +1 -3
- package/skills/platform-dataspace-access-configure/SKILL.md +1 -3
- package/skills/data360-activate/README.md +0 -38
- package/skills/data360-activate/SKILL.md +0 -127
- package/skills/data360-connect/README.md +0 -57
- package/skills/data360-connect/SKILL.md +0 -163
- package/skills/data360-connect/examples/connections/heroku-postgres.json +0 -15
- package/skills/data360-connect/examples/connections/ingest-api-connection.json +0 -5
- package/skills/data360-connect/examples/connections/ingest-api-schema.json +0 -31
- package/skills/data360-connect/examples/connections/redshift.json +0 -16
- package/skills/data360-connect/examples/connections/sharepoint-unstructured.json +0 -20
- package/skills/data360-connect/examples/connections/snowflake-connection.json +0 -42
- package/skills/data360-harmonize/README.md +0 -31
- package/skills/data360-harmonize/SKILL.md +0 -126
- package/skills/data360-orchestrate/README.md +0 -120
- package/skills/data360-orchestrate/SKILL.md +0 -263
- package/skills/data360-orchestrate/assets/definitions/activation-target.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/activation.template.json +0 -7
- package/skills/data360-orchestrate/assets/definitions/calculated-insight.template.json +0 -7
- package/skills/data360-orchestrate/assets/definitions/data-action-target.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/data-action.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/data-graph.template.json +0 -21
- package/skills/data360-orchestrate/assets/definitions/data-stream.template.json +0 -55
- package/skills/data360-orchestrate/assets/definitions/dmo.template.json +0 -17
- package/skills/data360-orchestrate/assets/definitions/identity-resolution.template.json +0 -30
- package/skills/data360-orchestrate/assets/definitions/mapping.template.json +0 -14
- package/skills/data360-orchestrate/assets/definitions/relationship.template.json +0 -12
- package/skills/data360-orchestrate/assets/definitions/search-index.template.json +0 -9
- package/skills/data360-orchestrate/assets/definitions/segment.template.json +0 -16
- package/skills/data360-orchestrate/references/feature-readiness.md +0 -157
- package/skills/data360-orchestrate/references/plugin-setup.md +0 -138
- package/skills/data360-orchestrate/scripts/bootstrap-plugin.sh +0 -53
- package/skills/data360-orchestrate/scripts/diagnose-org.mjs +0 -511
- package/skills/data360-orchestrate/scripts/generate-manifest.mjs +0 -68
- package/skills/data360-orchestrate/scripts/verify-plugin.sh +0 -58
- package/skills/data360-prepare/README.md +0 -50
- package/skills/data360-prepare/SKILL.md +0 -203
- package/skills/data360-prepare/examples/ingestion-api/.env.example +0 -8
- package/skills/data360-prepare/examples/ingestion-api/README.md +0 -48
- package/skills/data360-prepare/examples/ingestion-api/send-data.py +0 -144
- package/skills/data360-query/README.md +0 -43
- package/skills/data360-query/SKILL.md +0 -128
- package/skills/data360-query/examples/search-indexes/hybrid-structured.json +0 -44
- package/skills/data360-query/examples/search-indexes/vector-knowledge.json +0 -43
- package/skills/data360-segment/README.md +0 -35
- package/skills/data360-segment/SKILL.md +0 -123
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: data360-harmonize
|
|
3
|
-
description: "Salesforce Data Cloud Harmonize phase. Use this skill when the user works with DMOs, mappings, relationships, identity resolution, unified profiles, data graphs, or universal IDs. TRIGGER when: user works with DMOs, mappings, relationships, identity resolution, unified profiles, data graphs, or universal IDs. DO NOT TRIGGER when: the task is only about streams/DLOs (use data360-prepare), segments/insights (use data360-segment), retrieval/search (use data360-query), or STDM/session tracing (use agentforce-observe)."
|
|
4
|
-
metadata:
|
|
5
|
-
cliTools:
|
|
6
|
-
- tool: ["node"]
|
|
7
|
-
semver: ">=18.0.0"
|
|
8
|
-
- tool: ["sf"]
|
|
9
|
-
semver: ">=2.0.0"
|
|
10
|
-
relatedSkills:
|
|
11
|
-
- "agentforce-observe"
|
|
12
|
-
- "data360-orchestrate"
|
|
13
|
-
- "data360-prepare"
|
|
14
|
-
- "data360-query"
|
|
15
|
-
- "data360-segment"
|
|
16
|
-
version: "1.0"
|
|
17
|
-
domains: ["Data 360"]
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
# data360-harmonize: Data Cloud Harmonize Phase
|
|
21
|
-
|
|
22
|
-
Use this skill when the user needs **schema harmonization and unification work**: DMOs, field mappings, relationships, identity resolution, unified profiles, data graphs, or universal ID lookup.
|
|
23
|
-
|
|
24
|
-
## When This Skill Owns the Task
|
|
25
|
-
|
|
26
|
-
Use `data360-harmonize` when the work involves:
|
|
27
|
-
- `sf data360 dmo *`
|
|
28
|
-
- `sf data360 identity-resolution *`
|
|
29
|
-
- `sf data360 data-graph *`
|
|
30
|
-
- `sf data360 profile *`
|
|
31
|
-
- `sf data360 universal-id lookup`
|
|
32
|
-
|
|
33
|
-
Delegate elsewhere when the user is:
|
|
34
|
-
- still ingesting streams or building DLOs → [data360-prepare](../data360-prepare/SKILL.md)
|
|
35
|
-
- working on segment logic or calculated insights → [data360-segment](../data360-segment/SKILL.md)
|
|
36
|
-
- running SQL, describe, or search-index workflows → [data360-query](../data360-query/SKILL.md)
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Required Context to Gather First
|
|
41
|
-
|
|
42
|
-
Ask for or infer:
|
|
43
|
-
- source DLO and target DMO names
|
|
44
|
-
- whether the task is schema creation, mapping, IR, or graph-related
|
|
45
|
-
- target org alias
|
|
46
|
-
- whether a ruleset already exists
|
|
47
|
-
- the user’s desired unified entity model
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Core Operating Rules
|
|
52
|
-
|
|
53
|
-
- Inspect DMO schema before creating mappings.
|
|
54
|
-
- Run the shared readiness classifier before mutating harmonization assets: `node ../data360-orchestrate/scripts/diagnose-org.mjs -o <org> --phase harmonize --json`.
|
|
55
|
-
- Prefer `dmo list --all` when browsing the catalog, but use first-page `dmo list` for fast readiness checks.
|
|
56
|
-
- Use `query describe` or `dmo get --json` instead of inventing unsupported describe flows.
|
|
57
|
-
- Treat identity resolution runs as asynchronous and verify results after execution.
|
|
58
|
-
- Keep unified-profile work separate from STDM/session tracing work.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Recommended Workflow
|
|
63
|
-
|
|
64
|
-
### 1. Classify readiness for harmonize work
|
|
65
|
-
```bash
|
|
66
|
-
node ../data360-orchestrate/scripts/diagnose-org.mjs -o <org> --phase harmonize --json
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### 2. Inspect the catalog
|
|
70
|
-
```bash
|
|
71
|
-
sf data360 dmo list --all -o <org> 2>/dev/null
|
|
72
|
-
sf data360 identity-resolution list -o <org> 2>/dev/null
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### 3. Inspect schema before mapping
|
|
76
|
-
```bash
|
|
77
|
-
sf data360 query describe -o <org> --table ssot__Individual__dlm 2>/dev/null
|
|
78
|
-
sf data360 dmo get -o <org> --name ssot__Individual__dlm --json 2>/dev/null
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### 4. Create or review mappings intentionally
|
|
82
|
-
```bash
|
|
83
|
-
sf data360 dmo mapping-list -o <org> --source Contact_Home__dll --target ssot__Individual__dlm 2>/dev/null
|
|
84
|
-
sf data360 dmo map-to-canonical -o <org> --dlo Contact_Home__dll --dmo ssot__Individual__dlm --dry-run 2>/dev/null
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### 5. Run IR only after mappings are trustworthy
|
|
88
|
-
```bash
|
|
89
|
-
sf data360 identity-resolution create -o <org> -f ir-ruleset.json 2>/dev/null
|
|
90
|
-
sf data360 identity-resolution run -o <org> --name Main 2>/dev/null
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## High-Signal Gotchas
|
|
96
|
-
|
|
97
|
-
- `dmo list` should usually use `--all`.
|
|
98
|
-
- Use `query describe` or `dmo get --json`; there is no `dmo describe` command.
|
|
99
|
-
- Mapping and related commands can be sensitive to API-version differences.
|
|
100
|
-
- Unified DMO names are ruleset-specific rather than generic.
|
|
101
|
-
- Data graph definitions are sensitive to field selection and relationship shape.
|
|
102
|
-
- If `dmo list` works but `identity-resolution list` is gated, treat that as a phase-specific gap rather than a full Data Cloud outage.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Output Format
|
|
107
|
-
|
|
108
|
-
```text
|
|
109
|
-
Harmonize task: <dmo / mapping / relationship / ir / data-graph>
|
|
110
|
-
Source/target: <dlo → dmo or ruleset/graph names>
|
|
111
|
-
Target org: <alias>
|
|
112
|
-
Artifacts: <json files / commands>
|
|
113
|
-
Verification: <passed / partial / blocked>
|
|
114
|
-
Next step: <segment / retrieve / follow-up>
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## References
|
|
120
|
-
|
|
121
|
-
- [../data360-orchestrate/assets/definitions/dmo.template.json](../data360-orchestrate/assets/definitions/dmo.template.json)
|
|
122
|
-
- [../data360-orchestrate/assets/definitions/mapping.template.json](../data360-orchestrate/assets/definitions/mapping.template.json)
|
|
123
|
-
- [../data360-orchestrate/assets/definitions/relationship.template.json](../data360-orchestrate/assets/definitions/relationship.template.json)
|
|
124
|
-
- [../data360-orchestrate/assets/definitions/identity-resolution.template.json](../data360-orchestrate/assets/definitions/identity-resolution.template.json)
|
|
125
|
-
- [../data360-orchestrate/assets/definitions/data-graph.template.json](../data360-orchestrate/assets/definitions/data-graph.template.json)
|
|
126
|
-
- [../data360-orchestrate/references/feature-readiness.md](../data360-orchestrate/references/feature-readiness.md)
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# data360-orchestrate
|
|
2
|
-
|
|
3
|
-
Salesforce Data Cloud skill family for sf-skills. This is the **cross-phase orchestrator** for community-driven Data Cloud workflows built around the external `sf data360` CLI runtime.
|
|
4
|
-
|
|
5
|
-
## What this skill is for
|
|
6
|
-
|
|
7
|
-
Use `data360-orchestrate` when the task spans multiple Data Cloud phases:
|
|
8
|
-
- connection + ingestion + harmonization setup
|
|
9
|
-
- troubleshooting a Data Cloud pipeline end to end
|
|
10
|
-
- managing data spaces or data kits
|
|
11
|
-
- deciding which specialized Data Cloud skill to use next
|
|
12
|
-
|
|
13
|
-
## What this skill is *not*
|
|
14
|
-
|
|
15
|
-
- It does **not** vendor or fork the external Data Cloud CLI plugin.
|
|
16
|
-
- It does **not** use MCP.
|
|
17
|
-
- It does **not** replace phase-specific skills once the problem is localized.
|
|
18
|
-
- It does **not** cover STDM/session tracing/parquet analysis; use `agentforce-observe` for that.
|
|
19
|
-
|
|
20
|
-
## Data Cloud skill family
|
|
21
|
-
|
|
22
|
-
| Skill | Purpose |
|
|
23
|
-
|---|---|
|
|
24
|
-
| [data360-orchestrate](../data360-orchestrate/) | Orchestrator, data spaces, data kits, cross-phase workflows |
|
|
25
|
-
| [data360-connect](../data360-connect/) | Connections, connectors, source discovery |
|
|
26
|
-
| [data360-prepare](../data360-prepare/) | Data streams, DLOs, transforms, DocAI |
|
|
27
|
-
| [data360-harmonize](../data360-harmonize/) | DMOs, mappings, identity resolution, data graphs |
|
|
28
|
-
| [data360-segment](../data360-segment/) | Segments, calculated insights |
|
|
29
|
-
| [data360-activate](../data360-activate/) | Activations, activation targets, data actions |
|
|
30
|
-
| [data360-query](../data360-query/) | SQL, async query, vector search, search indexes |
|
|
31
|
-
|
|
32
|
-
## Runtime model
|
|
33
|
-
|
|
34
|
-
This family assumes:
|
|
35
|
-
- Salesforce CLI (`sf`)
|
|
36
|
-
- a Data Cloud-enabled org
|
|
37
|
-
- the external community `sf data360` plugin linked into `sf`
|
|
38
|
-
|
|
39
|
-
See [references/plugin-setup.md](references/plugin-setup.md).
|
|
40
|
-
|
|
41
|
-
## Deterministic helpers included
|
|
42
|
-
|
|
43
|
-
| Path | Purpose |
|
|
44
|
-
|---|---|
|
|
45
|
-
| [scripts/bootstrap-plugin.sh](scripts/bootstrap-plugin.sh) | Clone/update the community plugin, compile it, and link it into `sf` |
|
|
46
|
-
| [scripts/verify-plugin.sh](scripts/verify-plugin.sh) | Check that the runtime is available before starting Data Cloud work |
|
|
47
|
-
| [scripts/diagnose-org.mjs](scripts/diagnose-org.mjs) | Classify org readiness by phase before mutating Data Cloud assets |
|
|
48
|
-
| [references/feature-readiness.md](references/feature-readiness.md) | Map high-signal errors and feature gates to concrete next steps |
|
|
49
|
-
| [assets/definitions/](assets/definitions/) | Generic JSON templates for repeatable Data Cloud definition files |
|
|
50
|
-
|
|
51
|
-
## Generic templates
|
|
52
|
-
|
|
53
|
-
The family includes reusable starting points for:
|
|
54
|
-
- data streams
|
|
55
|
-
- DMOs
|
|
56
|
-
- mappings
|
|
57
|
-
- identity resolution rulesets
|
|
58
|
-
- segments
|
|
59
|
-
- search indexes
|
|
60
|
-
|
|
61
|
-
These are intentionally generic and should be adapted to the target org.
|
|
62
|
-
|
|
63
|
-
## Quick start
|
|
64
|
-
|
|
65
|
-
### 1. Verify the runtime
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
bash ./scripts/verify-plugin.sh
|
|
69
|
-
# or with an org alias
|
|
70
|
-
bash ./scripts/verify-plugin.sh myorg
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
The helper treats `sf data360 doctor` as advisory and falls back to additional read-only smoke checks when an org is only partially provisioned.
|
|
74
|
-
|
|
75
|
-
### 2. Diagnose feature readiness before mutating
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
node ./scripts/diagnose-org.mjs -o myorg --json
|
|
79
|
-
# optional retrieve-plane probe, only when you know the table is real
|
|
80
|
-
node ./scripts/diagnose-org.mjs -o myorg --phase retrieve --describe-table MyDMO__dlm --json
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Use the diagnose helper to distinguish between:
|
|
84
|
-
- feature-gated modules
|
|
85
|
-
- empty-but-enabled modules
|
|
86
|
-
- query-plane issues
|
|
87
|
-
- runtime/auth problems
|
|
88
|
-
|
|
89
|
-
### 3. Bootstrap the plugin if needed
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
python3 ~/.claude/sf-skills-install.py --with-datacloud-runtime
|
|
93
|
-
# or run the helper script directly
|
|
94
|
-
bash ./scripts/bootstrap-plugin.sh
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 4. Start with read-only inspection
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
sf data360 man
|
|
101
|
-
sf data360 doctor -o myorg 2>/dev/null
|
|
102
|
-
sf data360 dmo list -o myorg 2>/dev/null
|
|
103
|
-
sf data360 segment list -o myorg 2>/dev/null
|
|
104
|
-
sf data360 activation platforms -o myorg 2>/dev/null
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Common examples
|
|
108
|
-
|
|
109
|
-
```text
|
|
110
|
-
"Set up a Customer 360 proof of concept in Data Cloud"
|
|
111
|
-
"Troubleshoot why my unified profiles are not increasing"
|
|
112
|
-
"I need to figure out whether this issue is in mappings, identity resolution, or segment SQL"
|
|
113
|
-
"Show me how to inspect data spaces and data kits for this org"
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## References
|
|
117
|
-
|
|
118
|
-
- [SKILL.md](SKILL.md) - Orchestrator guidance
|
|
119
|
-
- [references/plugin-setup.md](references/plugin-setup.md) - Plugin install and verification
|
|
120
|
-
- [references/feature-readiness.md](references/feature-readiness.md) - Readiness classification and setup guidance
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: data360-orchestrate
|
|
3
|
-
description: "Salesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. Use this skill when the user needs a multi-step Data Cloud pipeline, cross-phase troubleshooting, or data space and data kit management. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase sf data360 workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching phase-specific skill), the task is STDM/session tracing/parquet telemetry (use agentforce-observe), standard CRM SOQL (use platform-soql-query), or Apex implementation (use platform-apex-generate)."
|
|
4
|
-
metadata:
|
|
5
|
-
cliTools:
|
|
6
|
-
- tool: ["curl"]
|
|
7
|
-
semver: ">=7.0.0"
|
|
8
|
-
- tool: ["git"]
|
|
9
|
-
semver: ">=2.0.0"
|
|
10
|
-
- tool: ["node"]
|
|
11
|
-
semver: ">=18.0.0"
|
|
12
|
-
- tool: ["npx"]
|
|
13
|
-
semver: ">=9.0.0"
|
|
14
|
-
- tool: ["python3"]
|
|
15
|
-
semver: ">=3.10.0"
|
|
16
|
-
- tool: ["sf"]
|
|
17
|
-
semver: ">=2.0.0"
|
|
18
|
-
- tool: ["yarn"]
|
|
19
|
-
semver: ">=1.22.0"
|
|
20
|
-
relatedSkills:
|
|
21
|
-
- "agentforce-observe"
|
|
22
|
-
- "automation-flow-generate"
|
|
23
|
-
- "data360-activate"
|
|
24
|
-
- "data360-connect"
|
|
25
|
-
- "data360-harmonize"
|
|
26
|
-
- "data360-prepare"
|
|
27
|
-
- "data360-query"
|
|
28
|
-
- "data360-segment"
|
|
29
|
-
- "platform-apex-generate"
|
|
30
|
-
- "platform-custom-field-generate"
|
|
31
|
-
- "platform-custom-object-generate"
|
|
32
|
-
- "platform-data-manage"
|
|
33
|
-
- "platform-metadata-deploy"
|
|
34
|
-
- "platform-soql-query"
|
|
35
|
-
version: "1.0"
|
|
36
|
-
domains: ["Data 360"]
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
# data360-orchestrate: Salesforce Data Cloud Orchestrator
|
|
40
|
-
|
|
41
|
-
Use this skill when the user needs **product-level Data Cloud workflow guidance** rather than a single isolated command family: pipeline setup, cross-phase troubleshooting, data spaces, data kits, or deciding whether a task belongs in Connect, Prepare, Harmonize, Segment, Act, or Retrieve.
|
|
42
|
-
|
|
43
|
-
This skill intentionally follows sf-skills house style while using the external `sf data360` command surface as the runtime. The plugin is **not vendored into this repo**.
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## When This Skill Owns the Task
|
|
48
|
-
|
|
49
|
-
Use `data360-orchestrate` when the work involves:
|
|
50
|
-
- multi-phase Data Cloud setup or remediation
|
|
51
|
-
- data spaces (`sf data360 data-space *`)
|
|
52
|
-
- data kits (`sf data360 data-kit *`)
|
|
53
|
-
- health checks (`sf data360 doctor`)
|
|
54
|
-
- CRM-to-unified-profile pipeline design
|
|
55
|
-
- deciding how to move from ingestion → harmonization → segmentation → activation
|
|
56
|
-
- cross-phase troubleshooting where the root cause is not yet clear
|
|
57
|
-
|
|
58
|
-
Delegate to a phase-specific skill when the user is focused on one area:
|
|
59
|
-
|
|
60
|
-
| Phase | Use this skill | Typical scope |
|
|
61
|
-
|---|---|---|
|
|
62
|
-
| Connect | [data360-connect](../data360-connect/SKILL.md) | connections, connectors, source discovery |
|
|
63
|
-
| Prepare | [data360-prepare](../data360-prepare/SKILL.md) | data streams, DLOs, transforms, DocAI |
|
|
64
|
-
| Harmonize | [data360-harmonize](../data360-harmonize/SKILL.md) | DMOs, mappings, identity resolution, data graphs |
|
|
65
|
-
| Segment | [data360-segment](../data360-segment/SKILL.md) | segments, calculated insights |
|
|
66
|
-
| Act | [data360-activate](../data360-activate/SKILL.md) | activations, activation targets, data actions |
|
|
67
|
-
| Retrieve | [data360-query](../data360-query/SKILL.md) | SQL, search indexes, vector search, async query |
|
|
68
|
-
|
|
69
|
-
Delegate outside the family when the user is:
|
|
70
|
-
- extracting Session Tracing / STDM telemetry → [agentforce-observe](../agentforce-observe/SKILL.md)
|
|
71
|
-
- writing CRM SOQL only → [platform-soql-query](../platform-soql-query/SKILL.md)
|
|
72
|
-
- loading CRM source data → [platform-data-manage](../platform-data-manage/SKILL.md)
|
|
73
|
-
- creating missing CRM schema → [platform-custom-object-generate](../platform-custom-object-generate/SKILL.md) or [platform-custom-field-generate](../platform-custom-field-generate/SKILL.md)
|
|
74
|
-
- implementing downstream Apex or Flow logic → [platform-apex-generate](../platform-apex-generate/SKILL.md), [automation-flow-generate](../automation-flow-generate/SKILL.md)
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## Required Context to Gather First
|
|
79
|
-
|
|
80
|
-
Ask for or infer:
|
|
81
|
-
- target org alias
|
|
82
|
-
- whether the plugin is already installed and linked
|
|
83
|
-
- whether the user wants design guidance, read-only inspection, or live mutation
|
|
84
|
-
- data sources involved: CRM objects, external databases, file ingestion, knowledge, etc.
|
|
85
|
-
- desired outcome: unified profiles, segments, activations, vector search, analytics, or troubleshooting
|
|
86
|
-
- whether the user is working in the default data space or a custom one
|
|
87
|
-
- whether the org has already been classified with `scripts/diagnose-org.mjs`
|
|
88
|
-
- which command family is failing today, if any
|
|
89
|
-
|
|
90
|
-
If plugin availability or org readiness is uncertain, start with:
|
|
91
|
-
- [references/plugin-setup.md](references/plugin-setup.md)
|
|
92
|
-
- [references/feature-readiness.md](references/feature-readiness.md)
|
|
93
|
-
- `scripts/verify-plugin.sh`
|
|
94
|
-
- `scripts/diagnose-org.mjs`
|
|
95
|
-
- `scripts/bootstrap-plugin.sh`
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Core Operating Rules
|
|
100
|
-
|
|
101
|
-
- Use the external `sf data360` plugin runtime; do **not** reimplement or vendor the command layer.
|
|
102
|
-
- Prefer the smallest phase-specific skill once the task is localized.
|
|
103
|
-
- Run readiness classification before mutation-heavy work. Prefer `scripts/diagnose-org.mjs` over guessing from one failing command.
|
|
104
|
-
- For `sf data360` commands, suppress linked-plugin warning noise with `2>/dev/null` unless the stderr output is needed for debugging.
|
|
105
|
-
- Distinguish **Data Cloud SQL** from CRM SOQL.
|
|
106
|
-
- Do **not** treat `sf data360 doctor` as a full-product readiness check; the current upstream command only checks the search-index surface.
|
|
107
|
-
- Do **not** treat `query describe` as a universal tenant probe; only use it with a known DMO/DLO table after broader readiness is confirmed.
|
|
108
|
-
- Preserve Data Cloud-specific API-version workarounds when they matter.
|
|
109
|
-
- Prefer generic, reusable JSON definition files over org-specific workshop payloads.
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## Recommended Workflow
|
|
114
|
-
|
|
115
|
-
### 1. Verify the runtime and auth
|
|
116
|
-
Confirm:
|
|
117
|
-
- `sf` is installed
|
|
118
|
-
- the community Data Cloud plugin is linked
|
|
119
|
-
- the target org is authenticated
|
|
120
|
-
|
|
121
|
-
Recommended checks:
|
|
122
|
-
```bash
|
|
123
|
-
sf data360 man
|
|
124
|
-
sf org display -o <alias>
|
|
125
|
-
bash ./scripts/verify-plugin.sh <alias>
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Treat `sf data360 doctor` as a broad health signal, not the sole gate. On partially provisioned orgs it can fail even when read-only command families like connectors, DMOs, or segments still work.
|
|
129
|
-
|
|
130
|
-
### 2. Classify readiness before changing anything
|
|
131
|
-
Run the shared classifier first:
|
|
132
|
-
```bash
|
|
133
|
-
node ./scripts/diagnose-org.mjs -o <org> --json
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Only use a query-plane probe after you know the table name is real:
|
|
137
|
-
```bash
|
|
138
|
-
node ./scripts/diagnose-org.mjs -o <org> --phase retrieve --describe-table MyDMO__dlm --json
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Use the classifier to distinguish:
|
|
142
|
-
- empty-but-enabled modules
|
|
143
|
-
- feature-gated modules
|
|
144
|
-
- query-plane issues
|
|
145
|
-
- runtime/auth failures
|
|
146
|
-
|
|
147
|
-
### 3. Discover existing state with read-only commands
|
|
148
|
-
Use targeted inspection after classification:
|
|
149
|
-
```bash
|
|
150
|
-
sf data360 doctor -o <org> 2>/dev/null
|
|
151
|
-
sf data360 data-space list -o <org> 2>/dev/null
|
|
152
|
-
sf data360 data-stream list -o <org> 2>/dev/null
|
|
153
|
-
sf data360 dmo list -o <org> 2>/dev/null
|
|
154
|
-
sf data360 identity-resolution list -o <org> 2>/dev/null
|
|
155
|
-
sf data360 segment list -o <org> 2>/dev/null
|
|
156
|
-
sf data360 activation platforms -o <org> 2>/dev/null
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### 4. Localize the phase
|
|
160
|
-
Route the task:
|
|
161
|
-
- source/connector issue → Connect
|
|
162
|
-
- ingestion/DLO/stream issue → Prepare
|
|
163
|
-
- mapping/IR/unified profile issue → Harmonize
|
|
164
|
-
- audience or insight issue → Segment
|
|
165
|
-
- downstream push issue → Act
|
|
166
|
-
- SQL/search/index issue → Retrieve
|
|
167
|
-
|
|
168
|
-
### 5. Choose deterministic artifacts when possible
|
|
169
|
-
Prefer JSON definition files and repeatable scripts over one-off manual steps. Generic templates live in:
|
|
170
|
-
- `assets/definitions/data-stream.template.json`
|
|
171
|
-
- `assets/definitions/dmo.template.json`
|
|
172
|
-
- `assets/definitions/mapping.template.json`
|
|
173
|
-
- `assets/definitions/relationship.template.json`
|
|
174
|
-
- `assets/definitions/identity-resolution.template.json`
|
|
175
|
-
- `assets/definitions/data-graph.template.json`
|
|
176
|
-
- `assets/definitions/calculated-insight.template.json`
|
|
177
|
-
- `assets/definitions/segment.template.json`
|
|
178
|
-
- `assets/definitions/activation-target.template.json`
|
|
179
|
-
- `assets/definitions/activation.template.json`
|
|
180
|
-
- `assets/definitions/data-action-target.template.json`
|
|
181
|
-
- `assets/definitions/data-action.template.json`
|
|
182
|
-
- `assets/definitions/search-index.template.json`
|
|
183
|
-
|
|
184
|
-
### 6. Verify after each phase
|
|
185
|
-
Typical verification:
|
|
186
|
-
- stream/DLO exists
|
|
187
|
-
- DMO/mapping exists
|
|
188
|
-
- identity resolution run completed
|
|
189
|
-
- unified records or segment counts look correct
|
|
190
|
-
- activation/search index status is healthy
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## High-Signal Gotchas
|
|
195
|
-
|
|
196
|
-
- `connection list` requires `--connector-type`.
|
|
197
|
-
- `dmo list --all` is useful when you need the full catalog, but first-page `dmo list` is often enough for readiness checks and much faster.
|
|
198
|
-
- Segment creation may need `--api-version 64.0`.
|
|
199
|
-
- `segment members` returns opaque IDs; use SQL joins for human-readable details.
|
|
200
|
-
- `sf data360 doctor` can fail on partially provisioned orgs even when some read-only commands still work; fall back to targeted smoke checks.
|
|
201
|
-
- `query describe` errors such as `Couldn't find CDP tenant ID` or `DataModelEntity ... not found` are query-plane clues, not automatic proof that the whole product is disabled.
|
|
202
|
-
- Many long-running jobs are asynchronous in practice even when the command returns quickly.
|
|
203
|
-
- Some Data Cloud operations still require UI setup outside the CLI runtime.
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## Output Format
|
|
208
|
-
|
|
209
|
-
When finishing, report in this order:
|
|
210
|
-
1. **Task classification**
|
|
211
|
-
2. **Runtime status**
|
|
212
|
-
3. **Readiness classification**
|
|
213
|
-
4. **Phase(s) involved**
|
|
214
|
-
5. **Commands or artifacts used**
|
|
215
|
-
6. **Verification result**
|
|
216
|
-
7. **Next recommended step**
|
|
217
|
-
|
|
218
|
-
Suggested shape:
|
|
219
|
-
|
|
220
|
-
```text
|
|
221
|
-
Data Cloud task: <setup / inspect / troubleshoot / migrate>
|
|
222
|
-
Runtime: <plugin ready / missing / partially verified>
|
|
223
|
-
Readiness: <ready / ready_empty / partial / feature_gated / blocked>
|
|
224
|
-
Phases: <connect / prepare / harmonize / segment / act / retrieve>
|
|
225
|
-
Artifacts: <json files, commands, scripts>
|
|
226
|
-
Verification: <passed / partial / blocked>
|
|
227
|
-
Next step: <next phase, setup guidance, or cross-skill handoff>
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
## Cross-Skill Integration
|
|
233
|
-
|
|
234
|
-
| Need | Delegate to | Reason |
|
|
235
|
-
|---|---|---|
|
|
236
|
-
| load or clean CRM source data | [platform-data-manage](../platform-data-manage/SKILL.md) | seed or fix source records before ingestion |
|
|
237
|
-
| create missing CRM schema | [platform-custom-object-generate](../platform-custom-object-generate/SKILL.md), [platform-custom-field-generate](../platform-custom-field-generate/SKILL.md) | Data Cloud expects existing objects/fields |
|
|
238
|
-
| deploy permissions or bundles | [platform-metadata-deploy](../platform-metadata-deploy/SKILL.md) | environment preparation |
|
|
239
|
-
| write Apex against Data Cloud outputs | [platform-apex-generate](../platform-apex-generate/SKILL.md) | code implementation |
|
|
240
|
-
| Flow automation after segmentation/activation | [automation-flow-generate](../automation-flow-generate/SKILL.md) | declarative orchestration |
|
|
241
|
-
| session tracing / STDM / parquet analysis | [agentforce-observe](../agentforce-observe/SKILL.md) | different Data Cloud use case |
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## Reference Map
|
|
246
|
-
|
|
247
|
-
### Start here
|
|
248
|
-
- [references/plugin-setup.md](references/plugin-setup.md)
|
|
249
|
-
- [references/feature-readiness.md](references/feature-readiness.md)
|
|
250
|
-
|
|
251
|
-
### Phase skills
|
|
252
|
-
- [data360-connect](../data360-connect/SKILL.md)
|
|
253
|
-
- [data360-prepare](../data360-prepare/SKILL.md)
|
|
254
|
-
- [data360-harmonize](../data360-harmonize/SKILL.md)
|
|
255
|
-
- [data360-segment](../data360-segment/SKILL.md)
|
|
256
|
-
- [data360-activate](../data360-activate/SKILL.md)
|
|
257
|
-
- [data360-query](../data360-query/SKILL.md)
|
|
258
|
-
|
|
259
|
-
### Deterministic helpers
|
|
260
|
-
- [scripts/bootstrap-plugin.sh](scripts/bootstrap-plugin.sh)
|
|
261
|
-
- [scripts/verify-plugin.sh](scripts/verify-plugin.sh)
|
|
262
|
-
- [scripts/diagnose-org.mjs](scripts/diagnose-org.mjs)
|
|
263
|
-
- [assets/definitions/](assets/definitions/)
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"developerName": "High_Value_Customers_Activation",
|
|
3
|
-
"displayName": "High Value Customers Activation",
|
|
4
|
-
"description": "Example activation linking a published segment to a destination target",
|
|
5
|
-
"segmentName": "High_Value_Customers",
|
|
6
|
-
"activationTargetName": "CRM_Target"
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"developerName": "Lifetime_Value",
|
|
3
|
-
"displayName": "Lifetime Value",
|
|
4
|
-
"description": "Example calculated insight over an order-style DMO",
|
|
5
|
-
"definitionType": "CALCULATED_METRIC",
|
|
6
|
-
"expression": "SELECT ssot__IndividualId__c, SUM(ssot__TotalAmount__c) AS total_spend FROM ssot__SalesOrder__dlm GROUP BY ssot__IndividualId__c"
|
|
7
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"developerName": "Customer_360_Graph",
|
|
3
|
-
"displayName": "Customer 360 Graph",
|
|
4
|
-
"description": "Example Data Graph rooted on a unified customer entity",
|
|
5
|
-
"sourceObject": {
|
|
6
|
-
"name": "UnifiedssotIndividualMain__dlm",
|
|
7
|
-
"type": "derived",
|
|
8
|
-
"fields": [
|
|
9
|
-
{
|
|
10
|
-
"name": "ssot__Id__c"
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"name": "ssot__FirstName__c"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"name": "ssot__LastName__c"
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"relatedObjects": []
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Customer_Stream",
|
|
3
|
-
"label": "Customer Stream",
|
|
4
|
-
"datasource": "SalesforceDotCom_Home",
|
|
5
|
-
"datastreamType": "CONNECTORSFRAMEWORK",
|
|
6
|
-
"connectorInfo": {
|
|
7
|
-
"connectorType": "SalesforceDotCom",
|
|
8
|
-
"connectorDetails": {
|
|
9
|
-
"name": "SalesforceDotCom_Home",
|
|
10
|
-
"sourceObject": "Custom_Object__c"
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"dataLakeObjectInfo": {
|
|
14
|
-
"label": "Customer",
|
|
15
|
-
"name": "Customer__dll",
|
|
16
|
-
"category": "Profile",
|
|
17
|
-
"dataspaceInfo": [
|
|
18
|
-
{
|
|
19
|
-
"name": "Default"
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
"dataLakeFieldInputRepresentations": [
|
|
23
|
-
{
|
|
24
|
-
"name": "Id",
|
|
25
|
-
"label": "Record ID",
|
|
26
|
-
"dataType": "Text",
|
|
27
|
-
"isPrimaryKey": true
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"name": "External_Id_c",
|
|
31
|
-
"label": "External ID",
|
|
32
|
-
"dataType": "Text",
|
|
33
|
-
"isPrimaryKey": false
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
"sourceFields": [
|
|
38
|
-
{
|
|
39
|
-
"name": "Id",
|
|
40
|
-
"dataType": "Text"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"name": "External_Id__c",
|
|
44
|
-
"dataType": "Text"
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"mappings": [],
|
|
48
|
-
"refreshConfig": {
|
|
49
|
-
"isAccelerationEnabled": true,
|
|
50
|
-
"refreshMode": "UPSERT",
|
|
51
|
-
"frequency": {
|
|
52
|
-
"frequencyType": "HOURLY"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"developerName": "Customer_Profile__dlm",
|
|
3
|
-
"label": "Customer Profile",
|
|
4
|
-
"category": "Profile",
|
|
5
|
-
"fields": [
|
|
6
|
-
{
|
|
7
|
-
"name": "External_Id_c__c",
|
|
8
|
-
"label": "External ID",
|
|
9
|
-
"type": "Text"
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"name": "Preferred_Tier_c__c",
|
|
13
|
-
"label": "Preferred Tier",
|
|
14
|
-
"type": "Text"
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"label": "Main",
|
|
3
|
-
"description": "Generic identity resolution ruleset using customer identifiers and contact points",
|
|
4
|
-
"configurationType": "individual",
|
|
5
|
-
"rulesetId": "main",
|
|
6
|
-
"doesRunAutomatically": false,
|
|
7
|
-
"matchRules": [
|
|
8
|
-
{
|
|
9
|
-
"label": "Exact Email",
|
|
10
|
-
"criteria": [
|
|
11
|
-
{
|
|
12
|
-
"entityName": "ssot__ContactPointEmail__dlm",
|
|
13
|
-
"fieldName": "ssot__EmailAddress__c",
|
|
14
|
-
"matchMethodType": "exactnormalized",
|
|
15
|
-
"caseSensitiveMatch": false,
|
|
16
|
-
"shouldMatchOnBlank": false
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
"reconciliationRules": [
|
|
22
|
-
{
|
|
23
|
-
"entityName": "ssot__Individual__dlm",
|
|
24
|
-
"ruleType": "lastupdated",
|
|
25
|
-
"shouldIgnoreEmptyValue": true,
|
|
26
|
-
"sources": [],
|
|
27
|
-
"fields": []
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
}
|