@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.
Files changed (47) hide show
  1. package/package.json +1 -1
  2. package/skills/dx-app-analytics-query/SKILL.md +1 -3
  3. package/skills/platform-dataspace-access-configure/SKILL.md +1 -3
  4. package/skills/data360-activate/README.md +0 -38
  5. package/skills/data360-activate/SKILL.md +0 -127
  6. package/skills/data360-connect/README.md +0 -57
  7. package/skills/data360-connect/SKILL.md +0 -163
  8. package/skills/data360-connect/examples/connections/heroku-postgres.json +0 -15
  9. package/skills/data360-connect/examples/connections/ingest-api-connection.json +0 -5
  10. package/skills/data360-connect/examples/connections/ingest-api-schema.json +0 -31
  11. package/skills/data360-connect/examples/connections/redshift.json +0 -16
  12. package/skills/data360-connect/examples/connections/sharepoint-unstructured.json +0 -20
  13. package/skills/data360-connect/examples/connections/snowflake-connection.json +0 -42
  14. package/skills/data360-harmonize/README.md +0 -31
  15. package/skills/data360-harmonize/SKILL.md +0 -126
  16. package/skills/data360-orchestrate/README.md +0 -120
  17. package/skills/data360-orchestrate/SKILL.md +0 -263
  18. package/skills/data360-orchestrate/assets/definitions/activation-target.template.json +0 -5
  19. package/skills/data360-orchestrate/assets/definitions/activation.template.json +0 -7
  20. package/skills/data360-orchestrate/assets/definitions/calculated-insight.template.json +0 -7
  21. package/skills/data360-orchestrate/assets/definitions/data-action-target.template.json +0 -5
  22. package/skills/data360-orchestrate/assets/definitions/data-action.template.json +0 -5
  23. package/skills/data360-orchestrate/assets/definitions/data-graph.template.json +0 -21
  24. package/skills/data360-orchestrate/assets/definitions/data-stream.template.json +0 -55
  25. package/skills/data360-orchestrate/assets/definitions/dmo.template.json +0 -17
  26. package/skills/data360-orchestrate/assets/definitions/identity-resolution.template.json +0 -30
  27. package/skills/data360-orchestrate/assets/definitions/mapping.template.json +0 -14
  28. package/skills/data360-orchestrate/assets/definitions/relationship.template.json +0 -12
  29. package/skills/data360-orchestrate/assets/definitions/search-index.template.json +0 -9
  30. package/skills/data360-orchestrate/assets/definitions/segment.template.json +0 -16
  31. package/skills/data360-orchestrate/references/feature-readiness.md +0 -157
  32. package/skills/data360-orchestrate/references/plugin-setup.md +0 -138
  33. package/skills/data360-orchestrate/scripts/bootstrap-plugin.sh +0 -53
  34. package/skills/data360-orchestrate/scripts/diagnose-org.mjs +0 -511
  35. package/skills/data360-orchestrate/scripts/generate-manifest.mjs +0 -68
  36. package/skills/data360-orchestrate/scripts/verify-plugin.sh +0 -58
  37. package/skills/data360-prepare/README.md +0 -50
  38. package/skills/data360-prepare/SKILL.md +0 -203
  39. package/skills/data360-prepare/examples/ingestion-api/.env.example +0 -8
  40. package/skills/data360-prepare/examples/ingestion-api/README.md +0 -48
  41. package/skills/data360-prepare/examples/ingestion-api/send-data.py +0 -144
  42. package/skills/data360-query/README.md +0 -43
  43. package/skills/data360-query/SKILL.md +0 -128
  44. package/skills/data360-query/examples/search-indexes/hybrid-structured.json +0 -44
  45. package/skills/data360-query/examples/search-indexes/vector-knowledge.json +0 -43
  46. package/skills/data360-segment/README.md +0 -35
  47. package/skills/data360-segment/SKILL.md +0 -123
@@ -1,14 +0,0 @@
1
- {
2
- "sourceObjectName": "Customer__dll",
3
- "targetObjectName": "Customer_Profile__dlm",
4
- "fieldMappings": [
5
- {
6
- "sourceFieldName": "External_Id_c",
7
- "targetFieldName": "External_Id_c__c"
8
- },
9
- {
10
- "sourceFieldName": "Preferred_Tier_c",
11
- "targetFieldName": "Preferred_Tier_c__c"
12
- }
13
- ]
14
- }
@@ -1,12 +0,0 @@
1
- {
2
- "relationships": [
3
- {
4
- "sourceObjectName": "Order_Header__dlm",
5
- "targetObjectName": "ssot__Individual__dlm",
6
- "cardinality": "ManyToOne",
7
- "sourceFieldName": "Customer_ID_c__c",
8
- "targetFieldName": "ssot__PartyId__c",
9
- "relationshipOwner": "DataCloud"
10
- }
11
- ]
12
- }
@@ -1,9 +0,0 @@
1
- {
2
- "developerName": "Knowledge_Index",
3
- "displayName": "Knowledge Index",
4
- "description": "Example semantic search index for a structured or unstructured Data Cloud source",
5
- "sourceObject": "KnowledgeArticleVersion__dlm",
6
- "embeddingModel": "e5_large_v2",
7
- "chunkingStrategy": "passage_extraction",
8
- "similarityMetric": "COSINE"
9
- }
@@ -1,16 +0,0 @@
1
- {
2
- "displayName": "High Value Customers",
3
- "developerName": "High_Value_Customers",
4
- "description": "Example segment built from a unified DMO",
5
- "segmentType": "Dbt",
6
- "includeDbt": {
7
- "models": {
8
- "models": [
9
- {
10
- "name": "UnifiedCustomers",
11
- "sql": "SELECT ui.ssot__Id__c FROM UnifiedssotIndividualMain__dlm ui JOIN ssot__SalesOrder__dlm so ON ui.ssot__Id__c = so.ssot__IndividualId__c GROUP BY ui.ssot__Id__c HAVING SUM(so.ssot__TotalAmount__c) > 1000"
12
- }
13
- ]
14
- }
15
- }
16
- }
@@ -1,157 +0,0 @@
1
- # Data Cloud Feature Readiness
2
-
3
- Use this guide when a Data Cloud command fails and you need to decide whether the issue is:
4
- - runtime / plugin setup
5
- - org authentication
6
- - product provisioning
7
- - feature gating
8
- - empty-but-enabled configuration
9
- - a bad table name or wrong probe
10
-
11
- The goal is to **detect first, classify second, and guide third** instead of blindly executing a command and surfacing a raw error.
12
-
13
- ## Core principle
14
-
15
- Do **not** treat one failing command as proof that all of Data Cloud is unavailable.
16
-
17
- Different command families hit different backend surfaces. A failure in one area can coexist with successful read-only access in another.
18
-
19
- Examples:
20
- - `sf data360 doctor` checks the **search-index** endpoint only.
21
- - `sf data360 query describe` checks the **query** plane and requires a real DMO/DLO table name.
22
- - `sf data360 dmo list` checks a **catalog/listing** endpoint.
23
- - `sf data360 activation platforms` checks the **activation destination** surface.
24
-
25
- ## Recommended first step
26
-
27
- Run the shared readiness classifier before mutation-heavy work:
28
-
29
- ```bash
30
- node ../scripts/diagnose-org.mjs -o myorg --json
31
- ```
32
-
33
- For retrieve/query work, only add a table probe when you already know the table name is real:
34
-
35
- ```bash
36
- node ../scripts/diagnose-org.mjs -o myorg --phase retrieve --describe-table MyDMO__dlm --json
37
- ```
38
-
39
- ## Signal matrix
40
-
41
- | Signal | What it usually means | What to do next | What **not** to assume |
42
- |---|---|---|---|
43
- | `sf data360 man` fails | Runtime/plugin missing | Install or relink the community runtime | Do not debug org features yet |
44
- | `sf org display -o <org>` fails | Org auth missing | Re-authenticate the org | Do not blame Data Cloud |
45
- | `No results.` | Feature is reachable but currently empty | Continue with create/setup flow | Do not say the feature is disabled |
46
- | `This feature is not currently enabled for this user type or org: [CdpXxx]` | Specific module is gated for the current org/user | Guide the user to setup/provisioning/permission review for that module | Do not say the entire product is disabled |
47
- | `Couldn't find CDP tenant ID. Please enable CDP first.` | The **query** plane could not resolve a CDP tenant for that request | Re-check broader readiness with `data-space list`, `dmo list`, and `doctor`; then retry with a known table if appropriate | Do not treat this as universal proof that all Data Cloud endpoints are off |
48
- | `NOT_FOUND: DataModelEntity ... is not found` | The table name is not queryable in that org | Pick a real DMO/DLO from `dmo list`, `dlo list`, or `dmo get` | Do not say the whole query feature is unavailable |
49
- | `Request failed` | Generic endpoint failure or inconclusive response | Fall back to neighboring read-only probes | Do not stop after one generic failure |
50
-
51
- ## High-signal feature gates
52
-
53
- ### `CdpDataStreams`
54
- Typical impact:
55
- - `sf data360 data-stream list`
56
- - prepare / ingestion workflows
57
-
58
- Suggested guidance:
59
- - review Data Cloud Setup provisioning
60
- - review source connector readiness
61
- - confirm the user has the right Data Cloud permissions
62
- - for Salesforce CRM ingestion, confirm the connector/integration user has object + field read access in the source org
63
-
64
- ### `CdpIdentityResolution`
65
- Typical impact:
66
- - `sf data360 identity-resolution list`
67
- - harmonize / unified profile workflows
68
-
69
- Suggested guidance:
70
- - review harmonization and identity-resolution entitlements
71
- - verify Data Cloud permission sets for the acting user
72
- - confirm upstream DLO/DMO work is already healthy before retrying IR
73
-
74
- ### `CdpActivationTarget`
75
- Typical impact:
76
- - `sf data360 activation-target list`
77
- - downstream audience delivery setup
78
-
79
- Suggested guidance:
80
- - review Data Cloud activation permissions
81
- - review target/destination setup in Data Cloud Setup
82
- - confirm the org/edition actually exposes activation-target management for that user
83
-
84
- ### `CdpActivationExternalPlatform`
85
- Typical impact:
86
- - `sf data360 activation platforms`
87
- - platform catalog for destinations such as ads or storage targets
88
-
89
- Suggested guidance:
90
- - review Activation Targets setup
91
- - review destination-specific authentication/configuration
92
- - check whether the org exposes additional toggles in **Data Cloud Setup → Feature Manager**
93
-
94
- ### `CdpDataSpace`
95
- Typical impact:
96
- - `sf data360 data-space list`
97
- - core multi-space administration
98
-
99
- Suggested guidance:
100
- - review core Data Cloud provisioning and user access
101
- - confirm the user is intended to administer/view data spaces
102
-
103
- ## What is usually **not** fully programmatic
104
-
105
- Do not promise a pure CLI flow for:
106
- - initial Data Cloud tenant provisioning
107
- - license assignment
108
- - every org-wide Data Cloud enablement step
109
-
110
- These commonly require Setup UI, provisioning, licensing, or account-level activation.
111
-
112
- ## What is often programmatic **after** provisioning
113
-
114
- Once the org is properly provisioned, many workflows are programmatic through `sf data360`, including:
115
- - data-space listing / get / create / update
116
- - DMO catalog inspection and some DMO mutations
117
- - segment and calculated insight lifecycle operations
118
- - activation target and data action target operations
119
- - search-index lifecycle operations
120
- - hybrid search and related retrieve-plane workflows on newer runtime versions
121
-
122
- Exact coverage still depends on org entitlements and the user's permissions.
123
-
124
- ## Known partial-automation gap
125
-
126
- Some external database connectors can be created via API while the corresponding data-stream creation flow still requires UI steps or org-specific browser automation.
127
-
128
- Practical guidance:
129
- - treat connection creation and stream creation as separate capability checks
130
- - do not assume a successful external connection create call means `data-stream create` will work for that connector
131
- - if the org relies on that path, guide the user toward manual UI creation or a locally validated Playwright/browser automation helper rather than promising a generic CLI-only workflow
132
-
133
- ## User-facing guidance model
134
-
135
- When blocked, respond in this order:
136
- 1. **Classify the failing surface** — runtime, auth, provisioning, feature gate, empty state, or bad table
137
- 2. **Show the evidence** — the specific command + high-signal error text
138
- 3. **Give the next setup step** — Data Cloud Setup, permissions, Feature Manager, source-object permissions, destination auth, etc.
139
- 4. **Avoid false claims** — don't say "Data Cloud is off" unless multiple core probes support that conclusion
140
-
141
- ## Setup guidance to point users toward
142
-
143
- Depending on the failing feature, guide users to review:
144
- - **Setup → Data Cloud Setup** for core provisioning / Get Started flow
145
- - **Standard Data Cloud permission sets** appropriate to the task (for example Architect/Admin vs activation-focused roles)
146
- - **Data Cloud Setup → Feature Manager** for org-specific toggles or beta features that are actually exposed there
147
- - **Source org permissions** for CRM ingestion users when streams/connectors depend on object/field access
148
- - **Activation target and destination authentication** when activation features are partially enabled but not usable yet
149
-
150
- ## Skill author checklist
151
-
152
- Before telling the user a feature is unavailable:
153
- - [ ] Did I run a targeted probe for this phase?
154
- - [ ] Did I check at least one neighboring read-only probe?
155
- - [ ] Did I avoid treating `doctor` as a full product readiness check?
156
- - [ ] Did I avoid treating `query describe` as a universal tenant probe?
157
- - [ ] Did I tell the user exactly what setup area to review next?
@@ -1,138 +0,0 @@
1
- # Data Cloud Community Plugin Setup
2
-
3
- The data360-orchestrate family uses a **community `sf data360` CLI runtime**. sf-skills does not vendor or fork that plugin.
4
-
5
- ## Why this setup exists
6
-
7
- - keeps sf-skills focused on skills, prompts, docs, and templates
8
- - lets the upstream runtime continue to evolve independently
9
- - avoids MCP and keeps execution deterministic
10
-
11
- ## Prerequisites
12
-
13
- - Node.js 18+
14
- - yarn
15
- - Salesforce CLI (`sf`)
16
- - git
17
- - a Data Cloud-enabled org authenticated with `sf org login web -a <alias>`
18
-
19
- ## Recommended setup path
20
-
21
- If you use the Python installer, it can install this optional runtime for you:
22
-
23
- ```bash
24
- python3 ~/.claude/sf-skills-install.py --with-datacloud-runtime
25
- ```
26
-
27
- Or use the helper script directly:
28
-
29
- ```bash
30
- bash ../scripts/bootstrap-plugin.sh
31
- ```
32
-
33
- By default it clones the plugin into `~/.sf-community-tools/datacloud/sf-cli-plugin-data360`, installs dependencies, compiles it, and links it into the local Salesforce CLI.
34
-
35
- ## Manual setup
36
-
37
- ```bash
38
- git clone https://github.com/Jaganpro/sf-cli-plugin-data360.git
39
- cd sf-cli-plugin-data360
40
- yarn install
41
- npx tsc
42
- node ../scripts/generate-manifest.mjs .
43
- sf plugins link .
44
- ```
45
-
46
- ## Verification
47
-
48
- ```bash
49
- sf data360 man
50
- bash ../scripts/verify-plugin.sh
51
- bash ../scripts/verify-plugin.sh myorg
52
- node ../scripts/diagnose-org.mjs -o myorg --json
53
- ```
54
-
55
- For newer command families such as `sf data360 query hybrid` and recent pagination fixes, update the community runtime to the latest upstream commit by re-running the bootstrap helper.
56
-
57
- `sf data360 doctor` is useful, but it is not the only readiness signal. On partially provisioned orgs it can fail even when other read-only Data Cloud commands still work. The helper script treats `doctor` as advisory and falls back to additional smoke checks.
58
-
59
- Use `diagnose-org.mjs` when you need phase-specific readiness classification instead of a simple pass/fail check. It helps distinguish:
60
- - empty-but-enabled modules
61
- - feature-gated modules
62
- - query-plane issues
63
- - runtime/auth failures
64
-
65
- ## Output-noise tip
66
-
67
- When using linked community plugins, stderr can include warning noise. For normal usage, prefer:
68
-
69
- ```bash
70
- sf data360 dmo list --all -o myorg 2>/dev/null
71
- sf data360 segment list -o myorg 2>/dev/null
72
- ```
73
-
74
- ## Troubleshooting
75
-
76
- ### ESM auto-transpile warning
77
-
78
- If you see `Warning: @gthoppae/sf-cli-plugin-data360 is a linked ESM module and cannot be auto-transpiled`, generate the oclif command manifest:
79
-
80
- ```bash
81
- node ../scripts/generate-manifest.mjs ~/.sf-community-tools/datacloud/sf-cli-plugin-data360
82
- ```
83
-
84
- This tells oclif to use pre-compiled output directly instead of attempting auto-transpilation. The `npx oclif manifest` alternative may fail on newer Node.js versions due to `@oclif/core` version mismatches.
85
-
86
- ### Clone error references `gthoppae/sf-cli-plugin-data360`
87
-
88
- If the clone failure mentions `gthoppae/sf-cli-plugin-data360`, your local `~/.claude/sf-skills-install.py` copy is outdated. Refresh the installer first, then retry the optional runtime install:
89
-
90
- ```bash
91
- python3 ~/.claude/sf-skills-install.py --force-update
92
- python3 ~/.claude/sf-skills-install.py --with-datacloud-runtime
93
- ```
94
-
95
- Or rerun the latest installer directly from GitHub:
96
-
97
- ```bash
98
- curl -sSL https://raw.githubusercontent.com/Jaganpro/sf-skills/main/tools/install.py | python3 - --with-datacloud-runtime
99
- ```
100
-
101
- ### Plugin not found after install
102
-
103
- If `sf` was installed globally (with `sudo`), the default data directory may be root-owned. Set `SF_DATA_DIR` in your shell profile:
104
-
105
- ```bash
106
- export SF_DATA_DIR="${HOME}/.local/share/sf"
107
- ```
108
-
109
- Then re-run `sf plugins link .` from the plugin directory, or re-run the bootstrap script.
110
-
111
- ## What to do if the plugin is missing
112
-
113
- 1. run the bootstrap script
114
- 2. re-open your shell if `sf` plugin discovery is stale
115
- 3. verify with `sf data360 man`
116
- 4. only then start live Data Cloud work
117
-
118
- ## Setup guidance reminder
119
-
120
- The runtime can help you **detect** missing capability, but it cannot fully replace Setup for:
121
- - initial Data Cloud provisioning / tenant creation
122
- - license assignment
123
- - every org-wide feature enablement step
124
-
125
- When a module is gated, guide users toward the right setup area instead of promising a fully programmatic enablement flow. See [feature-readiness.md](feature-readiness.md).
126
-
127
- ## Scope reminder
128
-
129
- This setup is for the Data Cloud product family:
130
- - `data360-orchestrate`
131
- - `data360-connect`
132
- - `data360-prepare`
133
- - `data360-harmonize`
134
- - `data360-segment`
135
- - `data360-activate`
136
- - `data360-query`
137
-
138
- For STDM/session tracing/parquet work, use `agentforce-observe` instead of this plugin-focused family.
@@ -1,53 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- PLUGIN_REPO="${PLUGIN_REPO:-https://github.com/Jaganpro/sf-cli-plugin-data360.git}"
5
- BASE_DIR="${1:-${HOME}/.sf-community-tools/datacloud}"
6
- PLUGIN_DIR="${BASE_DIR}/sf-cli-plugin-data360"
7
- export SF_DATA_DIR="${SF_DATA_DIR:-${HOME}/.local/share/sf}"
8
-
9
- need() {
10
- command -v "$1" >/dev/null 2>&1 || {
11
- echo "Missing required command: $1" >&2
12
- exit 1
13
- }
14
- }
15
-
16
- need git
17
- need node
18
- need yarn
19
- need sf
20
- need npx
21
-
22
- mkdir -p "${BASE_DIR}"
23
-
24
- if [[ -d "${PLUGIN_DIR}/.git" ]]; then
25
- echo "Updating existing plugin checkout: ${PLUGIN_DIR}"
26
- git -C "${PLUGIN_DIR}" pull --ff-only
27
- else
28
- echo "Cloning plugin into: ${PLUGIN_DIR}"
29
- git clone "${PLUGIN_REPO}" "${PLUGIN_DIR}"
30
- fi
31
-
32
- cd "${PLUGIN_DIR}"
33
-
34
- echo "Installing dependencies..."
35
- yarn install
36
-
37
- echo "Compiling plugin..."
38
- npx tsc
39
-
40
- echo "Generating oclif command manifest..."
41
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
42
- node "${SCRIPT_DIR}/generate-manifest.mjs" "${PLUGIN_DIR}"
43
-
44
- echo "Linking plugin into Salesforce CLI..."
45
- mkdir -p "${SF_DATA_DIR}"
46
- sf plugins link .
47
-
48
- echo "Verifying runtime..."
49
- sf data360 man >/dev/null
50
-
51
- echo "Done. Community Data Cloud runtime is linked."
52
- echo "Location: ${PLUGIN_DIR}"
53
- echo "Try: sf data360 man"