@salesforce/afv-skills 1.7.4 → 1.8.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 (39) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/skills/building-ui-bundle-frontend/SKILL.md +2 -0
  4. package/skills/deploying-ui-bundle/SKILL.md +2 -0
  5. package/skills/developing-agentforce/SKILL.md +1 -1
  6. package/skills/developing-datacloud-code-extension/SKILL.md +321 -0
  7. package/skills/developing-datacloud-code-extension/references/README.md +193 -0
  8. package/skills/developing-datacloud-code-extension/references/quick-reference.md +269 -0
  9. package/skills/generating-apex/SKILL.md +4 -2
  10. package/skills/generating-apex-test/SKILL.md +3 -1
  11. package/skills/generating-custom-application/SKILL.md +2 -0
  12. package/skills/generating-custom-field/SKILL.md +3 -1
  13. package/skills/generating-custom-lightning-type/SKILL.md +2 -0
  14. package/skills/generating-custom-object/SKILL.md +3 -1
  15. package/skills/generating-custom-tab/SKILL.md +3 -1
  16. package/skills/generating-flexipage/SKILL.md +2 -0
  17. package/skills/generating-flow/SKILL.md +2 -0
  18. package/skills/generating-lightning-app/SKILL.md +1 -1
  19. package/skills/generating-list-view/SKILL.md +2 -0
  20. package/skills/generating-permission-set/SKILL.md +1 -1
  21. package/skills/generating-ui-bundle-features/SKILL.md +2 -0
  22. package/skills/generating-ui-bundle-metadata/SKILL.md +2 -0
  23. package/skills/generating-ui-bundle-site/SKILL.md +2 -0
  24. package/skills/generating-validation-rule/SKILL.md +2 -0
  25. package/skills/getting-datacloud-schema/SKILL.md +380 -0
  26. package/skills/getting-datacloud-schema/references/README.md +191 -0
  27. package/skills/getting-datacloud-schema/scripts/get_dlo_schema.py +244 -0
  28. package/skills/getting-datacloud-schema/scripts/get_dmo_schema.py +233 -0
  29. package/skills/implementing-ui-bundle-agentforce-conversation-client/SKILL.md +1 -1
  30. package/skills/implementing-ui-bundle-file-upload/SKILL.md +2 -0
  31. package/skills/observing-agentforce/SKILL.md +1 -1
  32. package/skills/switching-org/SKILL.md +1 -1
  33. package/skills/testing-agentforce/SKILL.md +1 -1
  34. package/skills/uplifting-components-to-slds2/SKILL.md +3 -1
  35. package/skills/using-ui-bundle-salesforce-data/SKILL.md +2 -0
  36. package/skills/trigger-refactor-pipeline/SKILL.md +0 -191
  37. package/skills/trigger-refactor-pipeline/assets/test_template.apex +0 -321
  38. package/skills/trigger-refactor-pipeline/references/handler_patterns.md +0 -442
  39. package/skills/trigger-refactor-pipeline/scripts/analyze_trigger.py +0 -258
@@ -0,0 +1,380 @@
1
+ ---
2
+ name: getting-datacloud-schema
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
+ metadata:
5
+ version: "1.0"
6
+ ---
7
+
8
+ # getting-datacloud-schema Skill
9
+
10
+
11
+ ## Overview
12
+
13
+ This skill retrieves Data Lake Object (DLO) and Data Model Object (DMO) schema information from Salesforce Data Cloud using the SSOT REST API. It can list all DLOs or DMOs in an org, or retrieve detailed schema for a specific DLO or DMO.
14
+
15
+ ## When to Use
16
+
17
+ - User wants to see all DLOs or DMOs in a Data Cloud org
18
+ - User needs field schema for a specific DLO or DMO
19
+ - User is exploring Data Cloud data structures
20
+ - User needs to understand DLO or DMO field types and metadata
21
+
22
+ ## Prerequisites
23
+
24
+ - SF CLI installed and authenticated to target org
25
+ - Org has Data Cloud enabled
26
+ - User has appropriate Data Cloud permissions
27
+
28
+ ## Skill Execution
29
+
30
+ ### Parameters
31
+
32
+ 1. **org_alias** (required): The SF CLI org alias (e.g., 'afvibe', 'myorg')
33
+ 2. **dlo_name** (optional): Specific DLO developer name (e.g., 'Employee__dll')
34
+ 3. **dmo_name** (optional): Specific DMO developer name (e.g., 'Individual__dlm')
35
+
36
+ ### Step 1: Discover Connected Org
37
+
38
+ First, run `sf org list` to find out which org is connected and extract the alias to use for all subsequent calls:
39
+
40
+ ```bash
41
+ sf org list
42
+ ```
43
+
44
+ Example output:
45
+ ```
46
+ ┌────┬───────┬──────────────────────────┬────────────────────┬───────────┐
47
+ │ │ Alias │ Username │ Org Id │ Status │
48
+ ├────┼───────┼──────────────────────────┼────────────────────┼───────────┤
49
+ │ 🍁 │ myorg │ chandresh@afvidedemo.org │ 00DKZ00000b80NT2AY │ Connected │
50
+ └────┴───────┴──────────────────────────┴────────────────────┴───────────┘
51
+ ```
52
+
53
+ Extract the **Alias** value (e.g., `myorg`) from the output and use it as the `<org_alias>` for all subsequent calls. Use `--all` to see expired and deleted scratch orgs as well.
54
+
55
+ ### Step 2: Validate SF CLI Authentication
56
+
57
+ Before making API calls, verify the org is connected:
58
+
59
+ ```bash
60
+ sf org display --target-org <org_alias> --json
61
+ ```
62
+
63
+ If not connected, inform user to run:
64
+ ```bash
65
+ sf org login web --alias <org_alias>
66
+ ```
67
+
68
+ ### Step 3a: Execute DLO Schema Script
69
+
70
+ The Python scripts are bundled with this skill. They live in the `scripts/` subdirectory of the same directory that contains this SKILL.md file. Use the absolute path to that directory — do NOT use `./scripts/` as that resolves relative to the current working directory, not the skill directory.
71
+
72
+ **To list all DLOs:**
73
+ ```bash
74
+ python3 <skill_dir>/scripts/get_dlo_schema.py <org_alias>
75
+ ```
76
+
77
+ **To get specific DLO schema:**
78
+ ```bash
79
+ python3 <skill_dir>/scripts/get_dlo_schema.py <org_alias> <dlo_name>
80
+ ```
81
+
82
+ ### Step 3b: Execute DMO Schema Script
83
+
84
+ **To list all DMOs:**
85
+ ```bash
86
+ python3 <skill_dir>/scripts/get_dmo_schema.py <org_alias>
87
+ ```
88
+
89
+ **To get specific DMO schema:**
90
+ ```bash
91
+ python3 <skill_dir>/scripts/get_dmo_schema.py <org_alias> <dmo_name>
92
+ ```
93
+
94
+ ### Step 4: Present Results
95
+
96
+ Parse and present the results in a user-friendly format:
97
+
98
+ **For DLO List:**
99
+ - Show DLO name, label, category, and ID
100
+ - Indicate total count
101
+ - Highlight DLOs with data (totalRecords > 0)
102
+
103
+ **For DLO Schema:**
104
+ - Show basic info (name, label, category, status)
105
+ - List all fields with:
106
+ - Field name
107
+ - Data type
108
+ - Primary key indicator
109
+ - Nullable status
110
+ - Highlight custom fields (exclude system fields like DataSource__c, cdp_sys_*)
111
+ - Show record count if available
112
+
113
+ **For DMO List:**
114
+ - Show DMO name, label, category, and ID
115
+ - Indicate total count
116
+
117
+ **For DMO Schema:**
118
+ - Show basic info (name, label, category, description)
119
+ - List all fields with:
120
+ - Field name
121
+ - Data type
122
+ - Primary key indicator
123
+ - Nullable status
124
+ - Show dataspace information if available
125
+
126
+ ### Step 5: Offer Next Steps
127
+
128
+ After displaying results, suggest relevant follow-up actions:
129
+ - Query data from the DLO
130
+ - Create calculated insights
131
+ - Build segments
132
+ - Set up data streams
133
+ - Create DMO mappings
134
+
135
+ ## API Endpoints Used
136
+
137
+ ### List All DLOs
138
+ ```
139
+ GET /services/data/v64.0/ssot/data-lake-objects
140
+ ```
141
+
142
+ Response structure:
143
+ ```json
144
+ {
145
+ "dataLakeObjects": [
146
+ {
147
+ "name": "Employee__dll",
148
+ "label": "Employee",
149
+ "category": "Profile",
150
+ "id": "1dlXXXXXXXXXXXXXXX",
151
+ "status": "ACTIVE",
152
+ "totalRecords": 12,
153
+ "fields": [...]
154
+ }
155
+ ],
156
+ "totalSize": 5
157
+ }
158
+ ```
159
+
160
+ ### Get DLO Schema
161
+ ```
162
+ GET /services/data/v64.0/ssot/data-lake-objects/{dlo_name}
163
+ ```
164
+
165
+ Response structure (same as individual object in list response, but wrapped in paginated format).
166
+
167
+ ### List All DMOs
168
+ ```
169
+ GET /services/data/v64.0/ssot/data-model-objects
170
+ ```
171
+
172
+ Response structure:
173
+ ```json
174
+ {
175
+ "dataModelObjects": [
176
+ {
177
+ "name": "Individual__dlm",
178
+ "label": "Individual",
179
+ "category": "Profile",
180
+ "id": "0dmXXXXXXXXXXXXXXX",
181
+ "fields": [...]
182
+ }
183
+ ],
184
+ "totalSize": 10
185
+ }
186
+ ```
187
+
188
+ ### Get DMO Schema
189
+ ```
190
+ GET /services/data/v64.0/ssot/data-model-objects/{dmo_name}
191
+ ```
192
+
193
+ Response structure (same as individual object in list response, but wrapped in paginated format).
194
+
195
+ ## Error Handling
196
+
197
+ **Common Issues:**
198
+
199
+ 1. **Org not connected**
200
+ - Message: "Org not connected"
201
+ - Solution: Ask user to authenticate via SF CLI
202
+
203
+ 2. **DLO not found**
204
+ - Message: "DLO 'XYZ__dll' not found"
205
+ - Solution: List all DLOs first to verify name
206
+
207
+ 5. **DMO not found**
208
+ - Message: "DMO 'XYZ__dlm' not found"
209
+ - Solution: List all DMOs first to verify name
210
+
211
+ 3. **Permission issues**
212
+ - Message: HTTP 403 errors
213
+ - Solution: Verify user has Data Cloud permissions
214
+
215
+ 4. **API version mismatch**
216
+ - Current: v64.0
217
+ - Solution: Script can be updated for newer API versions
218
+
219
+ ## Example Usage
220
+
221
+ **Example 1: List all DLOs**
222
+ ```
223
+ User: "Show me all DLOs in afvibe org"
224
+
225
+ Response:
226
+ 1. Run sf org list to discover connected org alias
227
+ 2. Authenticate to afvibe
228
+ 3. Run: python3 <skill_dir>/scripts/get_dlo_schema.py afvibe
229
+ 4. Display formatted list of DLOs
230
+ ```
231
+
232
+ **Example 2: Get specific DLO schema**
233
+ ```
234
+ User: "Get the schema for Employee__dll in afvibe"
235
+
236
+ Response:
237
+ 1. Run sf org list to discover connected org alias
238
+ 2. Authenticate to afvibe
239
+ 3. Run: python3 <skill_dir>/scripts/get_dlo_schema.py afvibe Employee__dll
240
+ 4. Display field schema with types and metadata
241
+ ```
242
+
243
+ **Example 3: Explore DLOs then get schema**
244
+ ```
245
+ User: "What DLOs exist in myorg and show me the schema for the Employee one"
246
+
247
+ Response:
248
+ 1. Run sf org list to discover connected org alias
249
+ 2. List all DLOs in myorg
250
+ 3. Identify Employee__dll
251
+ 4. Get detailed schema for Employee__dll
252
+ 5. Present both results
253
+ ```
254
+
255
+ **Example 4: List all DMOs**
256
+ ```
257
+ User: "Show me all DMOs in afvibe org"
258
+
259
+ Response:
260
+ 1. Run sf org list to discover connected org alias
261
+ 2. Authenticate to afvibe
262
+ 3. Run: python3 <skill_dir>/scripts/get_dmo_schema.py afvibe
263
+ 4. Display formatted list of DMOs
264
+ ```
265
+
266
+ **Example 5: Get specific DMO schema**
267
+ ```
268
+ User: "Get the schema for Individual__dlm in afvibe"
269
+
270
+ Response:
271
+ 1. Run sf org list to discover connected org alias
272
+ 2. Authenticate to afvibe
273
+ 3. Run: python3 <skill_dir>/scripts/get_dmo_schema.py afvibe Individual__dlm
274
+ 4. Display field schema with types and metadata
275
+ ```
276
+
277
+ **Example 6: Explore DMOs then get schema**
278
+ ```
279
+ User: "What DMOs exist in myorg and show me the schema for the Individual one"
280
+
281
+ Response:
282
+ 1. Run sf org list to discover connected org alias
283
+ 2. List all DMOs in myorg
284
+ 3. Identify Individual__dlm
285
+ 4. Get detailed schema for Individual__dlm
286
+ 5. Present both results
287
+ ```
288
+
289
+ ## Output Format
290
+
291
+ ### DLO List Output
292
+ ```
293
+ Found 5 DLOs in org 'afvibe':
294
+
295
+ 1. DataCustomCodeLogs__dll
296
+ Label: DataCustomCodeLogs
297
+ Category: Engagement
298
+ Records: 233
299
+
300
+ 2. Employee__dll
301
+ Label: Employee
302
+ Category: Profile
303
+ Records: 12
304
+
305
+ [...]
306
+ ```
307
+
308
+ ### DLO Schema Output
309
+ ```
310
+ DLO: Employee__dll
311
+ Label: Employee
312
+ Category: Profile
313
+ Status: ACTIVE
314
+ Records: 12
315
+
316
+ Custom Fields:
317
+ • id__c (Text) - Primary Key
318
+ • name__c (Text)
319
+ • position__c (Text)
320
+ • manager_id__c (Number)
321
+
322
+ System Fields:
323
+ • DataSource__c (Text)
324
+ • InternalOrganization__c (Text)
325
+ • cdp_sys_SourceVersion__c (Text)
326
+
327
+ Next steps:
328
+ - Query data: SELECT * FROM Employee__dll LIMIT 10
329
+ - Create segment based on position field
330
+ - Set up data stream for real-time updates
331
+ ```
332
+
333
+ ### DMO List Output
334
+ ```
335
+ Found 10 DMOs in org 'afvibe':
336
+
337
+ 1. Individual__dlm
338
+ Label: Individual
339
+ Category: Profile
340
+
341
+ 2. ContactPointEmail__dlm
342
+ Label: Contact Point Email
343
+ Category: Profile
344
+
345
+ [...]
346
+ ```
347
+
348
+ ### DMO Schema Output
349
+ ```
350
+ DMO: Individual__dlm
351
+ Label: Individual
352
+ Category: Profile
353
+ Description: Represents an individual person
354
+
355
+ Fields:
356
+ • Id__c (Text) - Primary Key
357
+ • FirstName__c (Text)
358
+ • LastName__c (Text)
359
+ • BirthDate__c (DateTime)
360
+
361
+ Next steps:
362
+ - Query data: SELECT * FROM Individual__dlm LIMIT 10
363
+ - View DLO mappings to this DMO
364
+ - Create calculated insights
365
+ ```
366
+
367
+ ## Notes
368
+
369
+ - DLO names always end with `__dll` suffix
370
+ - DMO names always end with `__dlm` suffix
371
+ - Field names always end with `__c` suffix
372
+ - System fields (DataSource__c, KQ_*, cdp_sys_*) are automatically added
373
+ - Primary key fields are required for DLO and DMO queries
374
+ - API supports pagination (limit/offset) for large result sets
375
+
376
+ ## Related Skills
377
+
378
+ - **datakit_workflow**: For DMO mapping operations
379
+ - **datakit_validation**: For validating datakit configurations
380
+ - Use this skill before creating DMO mappings to understand source DLO structure
@@ -0,0 +1,191 @@
1
+ # getting-datacloud-schema Skill
2
+
3
+ ## Overview
4
+
5
+ A skill that retrieves Data Lake Object (DLO) and Data Model Object (DMO) schema information from Salesforce Data Cloud using REST APIs.
6
+
7
+ ## Usage
8
+
9
+ **List all DLOs:**
10
+ ```
11
+ "Show me all DLOs in afvibe org"
12
+ "List Data Lake Objects in myorg"
13
+ ```
14
+
15
+ **Get specific DLO schema:**
16
+ ```
17
+ "Get the schema for Employee__dll in afvibe"
18
+ "What fields does the Employee__dll DLO have in myorg?"
19
+ ```
20
+
21
+ **List all DMOs:**
22
+ ```
23
+ "Show me all DMOs in afvibe org"
24
+ "List Data Model Objects in myorg"
25
+ ```
26
+
27
+ **Get specific DMO schema:**
28
+ ```
29
+ "Get the schema for Individual__dlm in afvibe"
30
+ "What fields does the Individual__dlm DMO have in myorg?"
31
+ ```
32
+
33
+ ### Direct Script Usage
34
+
35
+ You can also run the scripts directly:
36
+
37
+ ```bash
38
+ # List all DLOs
39
+ python3 scripts/get_dlo_schema.py <org_alias>
40
+
41
+ # Get specific DLO schema
42
+ python3 scripts/get_dlo_schema.py <org_alias> <dlo_name>
43
+
44
+ # List all DMOs
45
+ python3 scripts/get_dmo_schema.py <org_alias>
46
+
47
+ # Get specific DMO schema
48
+ python3 scripts/get_dmo_schema.py <org_alias> <dmo_name>
49
+ ```
50
+
51
+ **Examples:**
52
+ ```bash
53
+ # List all DLOs in afvibe org
54
+ python3 scripts/get_dlo_schema.py afvibe
55
+
56
+ # Get Employee__dll schema from afvibe
57
+ python3 scripts/get_dlo_schema.py afvibe Employee__dll
58
+
59
+ # List all DMOs in afvibe org
60
+ python3 scripts/get_dmo_schema.py afvibe
61
+
62
+ # Get Individual__dlm schema from afvibe
63
+ python3 scripts/get_dmo_schema.py afvibe Individual__dlm
64
+ ```
65
+
66
+ ## Prerequisites
67
+
68
+ 1. **SF CLI Installed**
69
+ ```bash
70
+ sf --version
71
+ ```
72
+
73
+ 2. **Authenticated to Target Org**
74
+ ```bash
75
+ sf org login web --alias <org_alias>
76
+ ```
77
+
78
+ 3. **Python 3 and Dependencies**
79
+ ```bash
80
+ pip install requests pyyaml
81
+ ```
82
+
83
+ 4. **Data Cloud Enabled**
84
+ - Org must have Data Cloud provisioned
85
+ - User must have Data Cloud permissions
86
+
87
+ ## What It Does
88
+
89
+ ### List All DLOs
90
+ - Calls: `GET /services/data/v64.0/ssot/data-lake-objects`
91
+ - Returns: All DLOs with name, label, category, ID, record count
92
+ - Shows paginated results
93
+
94
+ ### Get DLO Schema
95
+ - Calls: `GET /services/data/v64.0/ssot/data-lake-objects/{dlo_name}`
96
+ - Returns: Detailed field schema including field names, data types, primary key indicators, nullable status
97
+
98
+ ### List All DMOs
99
+ - Calls: `GET /services/data/v64.0/ssot/data-model-objects`
100
+ - Returns: All DMOs with name, label, category, ID
101
+ - Shows paginated results
102
+
103
+ ### Get DMO Schema
104
+ - Calls: `GET /services/data/v64.0/ssot/data-model-objects/{dmo_name}`
105
+ - Returns: Detailed field schema including field names, data types, primary key indicators, nullable status
106
+
107
+ ## API Endpoints
108
+
109
+ | Endpoint | Method | Purpose |
110
+ |----------|--------|---------|
111
+ | `/services/data/v64.0/ssot/data-lake-objects` | GET | List all DLOs |
112
+ | `/services/data/v64.0/ssot/data-lake-objects/{name}` | GET | Get DLO schema |
113
+ | `/services/data/v64.0/ssot/data-model-objects` | GET | List all DMOs |
114
+ | `/services/data/v64.0/ssot/data-model-objects/{name}` | GET | Get DMO schema |
115
+
116
+ ## Output Format
117
+
118
+ ### DLO List
119
+ ```
120
+ Found 5 DLOs in org 'afvibe':
121
+
122
+ 1. DataCustomCodeLogs__dll
123
+ Label: DataCustomCodeLogs
124
+ Category: Engagement
125
+ Records: 233
126
+
127
+ 2. Employee__dll
128
+ Label: Employee
129
+ Category: Profile
130
+ Records: 12
131
+ ```
132
+
133
+ ### DLO Schema
134
+ ```
135
+ DLO: Employee__dll
136
+ Label: Employee
137
+ Category: Profile
138
+ Status: ACTIVE
139
+ Records: 12
140
+
141
+ Fields (9 total):
142
+ - id__c (Text) - Primary Key
143
+ - name__c (Text)
144
+ - position__c (Text)
145
+ - manager_id__c (Number)
146
+ - DataSource__c (Text)
147
+ [...]
148
+ ```
149
+
150
+ ### DMO List
151
+ ```
152
+ Found 10 DMOs in org 'afvibe':
153
+
154
+ 1. Individual__dlm
155
+ Label: Individual
156
+ Category: Profile
157
+
158
+ 2. ContactPointEmail__dlm
159
+ Label: Contact Point Email
160
+ Category: Profile
161
+ ```
162
+
163
+ ### DMO Schema
164
+ ```
165
+ DMO: Individual__dlm
166
+ Label: Individual
167
+ Category: Profile
168
+
169
+ Fields (8 total):
170
+ - Id__c (Text) - Primary Key
171
+ - FirstName__c (Text)
172
+ - LastName__c (Text)
173
+ - BirthDate__c (DateTime)
174
+ [...]
175
+ ```
176
+
177
+ ## Troubleshooting
178
+
179
+ | Issue | Fix |
180
+ |-------|-----|
181
+ | Org not connected | `sf org login web --alias <org_alias>` |
182
+ | Module not found: requests | `pip install requests pyyaml` |
183
+ | DLO not found | Verify name ends with `__dll`, list all DLOs first |
184
+ | DMO not found | Verify name ends with `__dlm`, list all DMOs first |
185
+ | Permission denied | Verify user has Data Cloud permissions |
186
+
187
+ ## Related Skills
188
+
189
+ - **datakit workflow**: For DMO mapping operations
190
+ - **datakit validation**: For validating datakit configurations
191
+ - Use this skill before creating DMO mappings to understand source DLO structure