@salesforce/afv-skills 1.23.0 → 1.24.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/{developing-datacloud-code-extension → data360-code-extension-generate}/SKILL.md +7 -7
- package/skills/{developing-datacloud-code-extension → data360-code-extension-generate}/references/README.md +7 -7
- package/skills/{developing-datacloud-code-extension → data360-code-extension-generate}/references/quick-reference.md +2 -2
- package/skills/{getting-datacloud-schema → data360-schema-get}/SKILL.md +26 -26
- package/skills/{getting-datacloud-schema → data360-schema-get}/references/README.md +9 -9
- /package/skills/{getting-datacloud-schema → data360-schema-get}/scripts/get_dlo_schema.py +0 -0
- /package/skills/{getting-datacloud-schema → data360-schema-get}/scripts/get_dmo_schema.py +0 -0
package/package.json
CHANGED
package/skills/{developing-datacloud-code-extension → data360-code-extension-generate}/SKILL.md
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: data360-code-extension-generate
|
|
3
3
|
description: "Develop and deploy Data Cloud Code Extensions using SF CLI plugin. Use this skill when creating custom Python transformations for Data Cloud, deploying code extensions, or testing data transformations. Supports init, run, scan, and deploy operations."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
# data360-code-extension-generate Skill
|
|
9
9
|
|
|
10
10
|
## Overview
|
|
11
11
|
|
|
@@ -79,7 +79,7 @@ sf data-code-extension function init --package-dir <directory>
|
|
|
79
79
|
- `--package-dir, -p` - Directory path where the package will be created
|
|
80
80
|
|
|
81
81
|
**What it creates:**
|
|
82
|
-
```
|
|
82
|
+
```text
|
|
83
83
|
my-transform/ # Project root
|
|
84
84
|
├── payload/ # CRITICAL: This is what --package-dir must point to for deploy
|
|
85
85
|
│ ├── entrypoint.py # Main transformation code
|
|
@@ -172,7 +172,7 @@ cat payload/config.json
|
|
|
172
172
|
|
|
173
173
|
#### Step 4b: Validate Each DLO Schema
|
|
174
174
|
|
|
175
|
-
**Use the `
|
|
175
|
+
**Use the `data360-schema-get` skill to verify DLOs exist and check field names.**
|
|
176
176
|
|
|
177
177
|
For each DLO referenced in your code:
|
|
178
178
|
|
|
@@ -260,7 +260,7 @@ sf data-code-extension script deploy --target-org <org_alias> --name <name> --pa
|
|
|
260
260
|
| `Cannot connect to Docker daemon` | Start Docker Desktop |
|
|
261
261
|
| `No org found for alias` | `sf org login web --alias <org_alias>` |
|
|
262
262
|
| `config.json not found` | `sf data-code-extension script scan --entrypoint ./payload/entrypoint.py` |
|
|
263
|
-
| `DLO not found` | Verify DLO exists (use
|
|
263
|
+
| `DLO not found` | Verify DLO exists (use data360-schema-get skill), check spelling and `__dll` suffix |
|
|
264
264
|
| `Permission denied writing` | Re-run scan, verify target DLO exists and is writable |
|
|
265
265
|
| `Deploy fails - wrong directory` | Ensure `--package-dir` points to `payload/` directory, not project root |
|
|
266
266
|
|
|
@@ -285,9 +285,9 @@ sf data-code-extension script deploy --target-org <org_alias> --name <name> --pa
|
|
|
285
285
|
|
|
286
286
|
## Integration with Other Skills
|
|
287
287
|
|
|
288
|
-
**Use with
|
|
288
|
+
**Use with data360-schema-get skill (CRITICAL for validation):**
|
|
289
289
|
|
|
290
|
-
The `
|
|
290
|
+
The `data360-schema-get` skill is **required** for validating DLOs before testing code extensions.
|
|
291
291
|
|
|
292
292
|
**Use with Datakit Workflow:**
|
|
293
293
|
1. Create DLO via code extension
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# data360-code-extension-generate Skill
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
@@ -17,25 +17,25 @@ This skill helps you create Data Cloud Code Extensions through a complete workfl
|
|
|
17
17
|
## Usage
|
|
18
18
|
|
|
19
19
|
**Initialize a project:**
|
|
20
|
-
```
|
|
20
|
+
```text
|
|
21
21
|
"Create a new Data Cloud code extension project called employee-transform"
|
|
22
22
|
"Initialize a code extension to transform employee data"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
**Test locally:**
|
|
26
|
-
```
|
|
26
|
+
```text
|
|
27
27
|
"Run the code extension in my-transform directory against afvibe org"
|
|
28
28
|
"Test the entrypoint.py file locally"
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
**Scan for permissions:**
|
|
32
|
-
```
|
|
32
|
+
```text
|
|
33
33
|
"Scan the entrypoint.py to generate config"
|
|
34
34
|
"Update permissions in config.json"
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
**Deploy:**
|
|
38
|
-
```
|
|
38
|
+
```text
|
|
39
39
|
"Deploy Employee_Upper code extension to afvibe"
|
|
40
40
|
"Deploy this transform with package-version 1.0.0"
|
|
41
41
|
```
|
|
@@ -135,7 +135,7 @@ print(f"Processed {len(output)} employee records")
|
|
|
135
135
|
|
|
136
136
|
After `init`, you'll have:
|
|
137
137
|
|
|
138
|
-
```
|
|
138
|
+
```text
|
|
139
139
|
my-transform/
|
|
140
140
|
├── payload/
|
|
141
141
|
│ ├── entrypoint.py # Your transformation code
|
|
@@ -173,7 +173,7 @@ client.write_to_dmo('EmployeeDMO', df, 'upsert')
|
|
|
173
173
|
| Wrong Python version | Use pyenv to install 3.11.0 |
|
|
174
174
|
| Org not connected | `sf org login web --alias <alias>` |
|
|
175
175
|
| Config missing | Run scan command |
|
|
176
|
-
| DLO not found | Check DLO name, use
|
|
176
|
+
| DLO not found | Check DLO name, use data360-schema-get skill |
|
|
177
177
|
| Docker error | Start Docker Desktop |
|
|
178
178
|
|
|
179
179
|
## CPU Size Selection
|
|
@@ -215,7 +215,7 @@ sf data-code-extension script scan --entrypoint ./payload/entrypoint.py
|
|
|
215
215
|
|
|
216
216
|
## File Structure
|
|
217
217
|
|
|
218
|
-
```
|
|
218
|
+
```text
|
|
219
219
|
my-project/
|
|
220
220
|
├── payload/
|
|
221
221
|
│ ├── entrypoint.py # Main code
|
|
@@ -248,7 +248,7 @@ my-project/
|
|
|
248
248
|
| Wrong Python version | Use pyenv to install 3.11.0 |
|
|
249
249
|
| Org not connected | `sf org login web --alias <alias>` |
|
|
250
250
|
| Config missing | Run scan command |
|
|
251
|
-
| DLO not found | Check DLO name, use
|
|
251
|
+
| DLO not found | Check DLO name, use data360-schema-get skill |
|
|
252
252
|
| Docker error | Start Docker Desktop |
|
|
253
253
|
|
|
254
254
|
## Deployment Checklist
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: data360-schema-get
|
|
3
3
|
description: "Retrieve Data Lake Object (DLO) and Data Model Object (DMO) schema information from Salesforce Data Cloud using REST APIs. Use this skill when you need to inspect DLO or DMO field definitions, data types, or metadata. Takes org alias and optional DLO/DMO name as parameters."
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
# data360-schema-get Skill
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
## Overview
|
|
@@ -42,7 +42,7 @@ sf org list
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Example output:
|
|
45
|
-
```
|
|
45
|
+
```text
|
|
46
46
|
┌────┬───────┬──────────────────────────┬────────────────────┬───────────┐
|
|
47
47
|
│ │ Alias │ Username │ Org Id │ Status │
|
|
48
48
|
├────┼───────┼──────────────────────────┼────────────────────┼───────────┤
|
|
@@ -67,28 +67,28 @@ sf org login web --alias <org_alias>
|
|
|
67
67
|
|
|
68
68
|
### Step 3a: Execute DLO Schema Script
|
|
69
69
|
|
|
70
|
-
The Python scripts are bundled with this skill
|
|
70
|
+
The Python scripts are bundled with this skill in the `scripts/` subdirectory.
|
|
71
71
|
|
|
72
72
|
**To list all DLOs:**
|
|
73
73
|
```bash
|
|
74
|
-
python3
|
|
74
|
+
python3 ./scripts/get_dlo_schema.py <org_alias>
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
**To get specific DLO schema:**
|
|
78
78
|
```bash
|
|
79
|
-
python3
|
|
79
|
+
python3 ./scripts/get_dlo_schema.py <org_alias> <dlo_name>
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
### Step 3b: Execute DMO Schema Script
|
|
83
83
|
|
|
84
84
|
**To list all DMOs:**
|
|
85
85
|
```bash
|
|
86
|
-
python3
|
|
86
|
+
python3 ./scripts/get_dmo_schema.py <org_alias>
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
**To get specific DMO schema:**
|
|
90
90
|
```bash
|
|
91
|
-
python3
|
|
91
|
+
python3 ./scripts/get_dmo_schema.py <org_alias> <dmo_name>
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
### Step 4: Present Results
|
|
@@ -135,7 +135,7 @@ After displaying results, suggest relevant follow-up actions:
|
|
|
135
135
|
## API Endpoints Used
|
|
136
136
|
|
|
137
137
|
### List All DLOs
|
|
138
|
-
```
|
|
138
|
+
```text
|
|
139
139
|
GET /services/data/v64.0/ssot/data-lake-objects
|
|
140
140
|
```
|
|
141
141
|
|
|
@@ -158,14 +158,14 @@ Response structure:
|
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
### Get DLO Schema
|
|
161
|
-
```
|
|
161
|
+
```text
|
|
162
162
|
GET /services/data/v64.0/ssot/data-lake-objects/{dlo_name}
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
Response structure (same as individual object in list response, but wrapped in paginated format).
|
|
166
166
|
|
|
167
167
|
### List All DMOs
|
|
168
|
-
```
|
|
168
|
+
```text
|
|
169
169
|
GET /services/data/v64.0/ssot/data-model-objects
|
|
170
170
|
```
|
|
171
171
|
|
|
@@ -186,7 +186,7 @@ Response structure:
|
|
|
186
186
|
```
|
|
187
187
|
|
|
188
188
|
### Get DMO Schema
|
|
189
|
-
```
|
|
189
|
+
```text
|
|
190
190
|
GET /services/data/v64.0/ssot/data-model-objects/{dmo_name}
|
|
191
191
|
```
|
|
192
192
|
|
|
@@ -219,29 +219,29 @@ Response structure (same as individual object in list response, but wrapped in p
|
|
|
219
219
|
## Example Usage
|
|
220
220
|
|
|
221
221
|
**Example 1: List all DLOs**
|
|
222
|
-
```
|
|
222
|
+
```text
|
|
223
223
|
User: "Show me all DLOs in afvibe org"
|
|
224
224
|
|
|
225
225
|
Response:
|
|
226
226
|
1. Run sf org list to discover connected org alias
|
|
227
227
|
2. Authenticate to afvibe
|
|
228
|
-
3. Run: python3
|
|
228
|
+
3. Run: python3 ./scripts/get_dlo_schema.py afvibe
|
|
229
229
|
4. Display formatted list of DLOs
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
**Example 2: Get specific DLO schema**
|
|
233
|
-
```
|
|
233
|
+
```text
|
|
234
234
|
User: "Get the schema for Employee__dll in afvibe"
|
|
235
235
|
|
|
236
236
|
Response:
|
|
237
237
|
1. Run sf org list to discover connected org alias
|
|
238
238
|
2. Authenticate to afvibe
|
|
239
|
-
3. Run: python3
|
|
239
|
+
3. Run: python3 ./scripts/get_dlo_schema.py afvibe Employee__dll
|
|
240
240
|
4. Display field schema with types and metadata
|
|
241
241
|
```
|
|
242
242
|
|
|
243
243
|
**Example 3: Explore DLOs then get schema**
|
|
244
|
-
```
|
|
244
|
+
```text
|
|
245
245
|
User: "What DLOs exist in myorg and show me the schema for the Employee one"
|
|
246
246
|
|
|
247
247
|
Response:
|
|
@@ -253,29 +253,29 @@ Response:
|
|
|
253
253
|
```
|
|
254
254
|
|
|
255
255
|
**Example 4: List all DMOs**
|
|
256
|
-
```
|
|
256
|
+
```text
|
|
257
257
|
User: "Show me all DMOs in afvibe org"
|
|
258
258
|
|
|
259
259
|
Response:
|
|
260
260
|
1. Run sf org list to discover connected org alias
|
|
261
261
|
2. Authenticate to afvibe
|
|
262
|
-
3. Run: python3
|
|
262
|
+
3. Run: python3 ./scripts/get_dmo_schema.py afvibe
|
|
263
263
|
4. Display formatted list of DMOs
|
|
264
264
|
```
|
|
265
265
|
|
|
266
266
|
**Example 5: Get specific DMO schema**
|
|
267
|
-
```
|
|
267
|
+
```text
|
|
268
268
|
User: "Get the schema for Individual__dlm in afvibe"
|
|
269
269
|
|
|
270
270
|
Response:
|
|
271
271
|
1. Run sf org list to discover connected org alias
|
|
272
272
|
2. Authenticate to afvibe
|
|
273
|
-
3. Run: python3
|
|
273
|
+
3. Run: python3 ./scripts/get_dmo_schema.py afvibe Individual__dlm
|
|
274
274
|
4. Display field schema with types and metadata
|
|
275
275
|
```
|
|
276
276
|
|
|
277
277
|
**Example 6: Explore DMOs then get schema**
|
|
278
|
-
```
|
|
278
|
+
```text
|
|
279
279
|
User: "What DMOs exist in myorg and show me the schema for the Individual one"
|
|
280
280
|
|
|
281
281
|
Response:
|
|
@@ -289,7 +289,7 @@ Response:
|
|
|
289
289
|
## Output Format
|
|
290
290
|
|
|
291
291
|
### DLO List Output
|
|
292
|
-
```
|
|
292
|
+
```text
|
|
293
293
|
Found 5 DLOs in org 'afvibe':
|
|
294
294
|
|
|
295
295
|
1. DataCustomCodeLogs__dll
|
|
@@ -306,7 +306,7 @@ Found 5 DLOs in org 'afvibe':
|
|
|
306
306
|
```
|
|
307
307
|
|
|
308
308
|
### DLO Schema Output
|
|
309
|
-
```
|
|
309
|
+
```yaml
|
|
310
310
|
DLO: Employee__dll
|
|
311
311
|
Label: Employee
|
|
312
312
|
Category: Profile
|
|
@@ -331,7 +331,7 @@ Next steps:
|
|
|
331
331
|
```
|
|
332
332
|
|
|
333
333
|
### DMO List Output
|
|
334
|
-
```
|
|
334
|
+
```text
|
|
335
335
|
Found 10 DMOs in org 'afvibe':
|
|
336
336
|
|
|
337
337
|
1. Individual__dlm
|
|
@@ -346,7 +346,7 @@ Found 10 DMOs in org 'afvibe':
|
|
|
346
346
|
```
|
|
347
347
|
|
|
348
348
|
### DMO Schema Output
|
|
349
|
-
```
|
|
349
|
+
```yaml
|
|
350
350
|
DMO: Individual__dlm
|
|
351
351
|
Label: Individual
|
|
352
352
|
Category: Profile
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# data360-schema-get Skill
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
@@ -7,25 +7,25 @@ A skill that retrieves Data Lake Object (DLO) and Data Model Object (DMO) schema
|
|
|
7
7
|
## Usage
|
|
8
8
|
|
|
9
9
|
**List all DLOs:**
|
|
10
|
-
```
|
|
10
|
+
```text
|
|
11
11
|
"Show me all DLOs in afvibe org"
|
|
12
12
|
"List Data Lake Objects in myorg"
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
**Get specific DLO schema:**
|
|
16
|
-
```
|
|
16
|
+
```text
|
|
17
17
|
"Get the schema for Employee__dll in afvibe"
|
|
18
18
|
"What fields does the Employee__dll DLO have in myorg?"
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
**List all DMOs:**
|
|
22
|
-
```
|
|
22
|
+
```text
|
|
23
23
|
"Show me all DMOs in afvibe org"
|
|
24
24
|
"List Data Model Objects in myorg"
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Get specific DMO schema:**
|
|
28
|
-
```
|
|
28
|
+
```text
|
|
29
29
|
"Get the schema for Individual__dlm in afvibe"
|
|
30
30
|
"What fields does the Individual__dlm DMO have in myorg?"
|
|
31
31
|
```
|
|
@@ -116,7 +116,7 @@ python3 scripts/get_dmo_schema.py afvibe Individual__dlm
|
|
|
116
116
|
## Output Format
|
|
117
117
|
|
|
118
118
|
### DLO List
|
|
119
|
-
```
|
|
119
|
+
```text
|
|
120
120
|
Found 5 DLOs in org 'afvibe':
|
|
121
121
|
|
|
122
122
|
1. DataCustomCodeLogs__dll
|
|
@@ -131,7 +131,7 @@ Found 5 DLOs in org 'afvibe':
|
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
### DLO Schema
|
|
134
|
-
```
|
|
134
|
+
```text
|
|
135
135
|
DLO: Employee__dll
|
|
136
136
|
Label: Employee
|
|
137
137
|
Category: Profile
|
|
@@ -148,7 +148,7 @@ Fields (9 total):
|
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
### DMO List
|
|
151
|
-
```
|
|
151
|
+
```text
|
|
152
152
|
Found 10 DMOs in org 'afvibe':
|
|
153
153
|
|
|
154
154
|
1. Individual__dlm
|
|
@@ -161,7 +161,7 @@ Found 10 DMOs in org 'afvibe':
|
|
|
161
161
|
```
|
|
162
162
|
|
|
163
163
|
### DMO Schema
|
|
164
|
-
```
|
|
164
|
+
```text
|
|
165
165
|
DMO: Individual__dlm
|
|
166
166
|
Label: Individual
|
|
167
167
|
Category: Profile
|
|
File without changes
|
|
File without changes
|