@salesforce/afv-skills 1.23.0 → 1.25.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 (61) hide show
  1. package/package.json +1 -1
  2. package/skills/commerce-b2b-open-code-components-replace/SKILL.md +244 -0
  3. package/skills/commerce-b2b-open-code-components-replace/assets/ootb-to-open-code-mapping.json +66 -0
  4. package/skills/{developing-datacloud-code-extension → data360-code-extension-generate}/SKILL.md +7 -7
  5. package/skills/{developing-datacloud-code-extension → data360-code-extension-generate}/references/README.md +7 -7
  6. package/skills/{developing-datacloud-code-extension → data360-code-extension-generate}/references/quick-reference.md +2 -2
  7. package/skills/{getting-datacloud-schema → data360-schema-get}/SKILL.md +26 -26
  8. package/skills/{getting-datacloud-schema → data360-schema-get}/references/README.md +9 -9
  9. package/skills/dx-org-manage/SKILL.md +192 -0
  10. package/skills/dx-org-manage/examples/README.md +45 -0
  11. package/skills/dx-org-manage/examples/scratch-orgs/error_no_devhub.json +9 -0
  12. package/skills/dx-org-manage/examples/scratch-orgs/error_timeout.json +13 -0
  13. package/skills/dx-org-manage/examples/scratch-orgs/success_definition_file.json +28 -0
  14. package/skills/dx-org-manage/examples/scratch-orgs/success_edition.json +26 -0
  15. package/skills/dx-org-manage/examples/scratch-orgs/success_snapshot.json +27 -0
  16. package/skills/dx-org-manage/examples/snapshots/error_output.json +9 -0
  17. package/skills/dx-org-manage/examples/snapshots/success_output.json +15 -0
  18. package/skills/dx-org-manage/references/cli_flags.md +67 -0
  19. package/skills/dx-org-manage/references/creating-scratch-org.md +164 -0
  20. package/skills/dx-org-manage/references/creating-snapshot.md +103 -0
  21. package/skills/dx-org-manage/references/definition_file_options.md +224 -0
  22. package/skills/dx-org-manage/references/edition_types.md +78 -0
  23. package/skills/dx-org-manage/references/opening-org.md +160 -0
  24. package/skills/dx-org-manage/references/snapshot_usage.md +74 -0
  25. package/skills/dx-org-permission-set-assign/SKILL.md +98 -0
  26. package/skills/dx-org-permission-set-assign/examples/error_output.json +19 -0
  27. package/skills/dx-org-permission-set-assign/examples/success_output.json +16 -0
  28. package/skills/dx-org-permission-set-assign/references/cli_flags.md +68 -0
  29. package/skills/experience-cms-brand-apply/SKILL.md +1 -1
  30. package/skills/experience-ui-bundle-app-coordinate/SKILL.md +31 -19
  31. package/skills/experience-ui-bundle-file-upload-generate/SKILL.md +1 -1
  32. package/skills/experience-ui-bundle-frontend-generate/implementation/header-footer.md +1 -1
  33. package/skills/experience-ui-bundle-salesforce-data-access/SKILL.md +336 -581
  34. package/skills/experience-ui-bundle-salesforce-data-access/references/caching.md +172 -0
  35. package/skills/experience-ui-bundle-salesforce-data-access/references/graphiti-cli.md +373 -0
  36. package/skills/experience-ui-bundle-salesforce-data-access/references/graphql-hand-authoring.md +376 -0
  37. package/skills/experience-ui-bundle-salesforce-data-access/references/migration.md +119 -0
  38. package/skills/experience-ui-bundle-salesforce-data-access/references/rest-and-integration.md +152 -0
  39. package/skills/experience-ui-bundle-salesforce-data-access/references/sdk-api.md +217 -0
  40. package/skills/experience-ui-bundle-salesforce-data-access/scripts/graphql-search.sh +36 -9
  41. package/skills/platform-agentsetup-categories-fetch/SKILL.md +109 -0
  42. package/skills/platform-agentsetup-categories-fetch/references/api-response-schema.md +121 -0
  43. package/skills/platform-custom-object-generate/SKILL.md +62 -7
  44. package/skills/platform-custom-object-generate/references/description-enrichment.md +125 -0
  45. package/skills/platform-metadata-retrieve/SKILL.md +121 -0
  46. package/skills/platform-metadata-retrieve/examples/error_output.json +10 -0
  47. package/skills/platform-metadata-retrieve/examples/success_output.json +27 -0
  48. package/skills/platform-metadata-retrieve/references/cli_flags.md +138 -0
  49. package/skills/platform-metadata-retrieve/references/retrieval_modes.md +181 -0
  50. package/skills/platform-sharing-rules-generate/SKILL.md +165 -0
  51. package/skills/platform-sharing-rules-generate/references/rule-types.md +199 -0
  52. package/skills/platform-tracing-agentforce-configure/SKILL.md +118 -0
  53. package/skills/platform-tracing-agentforce-configure/assets/AgentforcePlatformTracing-template.xml +4 -0
  54. package/skills/platform-tracing-configure/SKILL.md +118 -0
  55. package/skills/platform-tracing-configure/assets/EventSettings-template.xml +4 -0
  56. package/skills/platform-trust-archive-manage/SKILL.md +25 -11
  57. package/skills/platform-trust-archive-manage/examples/monitor-failed-jobs.md +2 -2
  58. package/skills/platform-trust-archive-manage/references/archive-activity-entity.md +1 -1
  59. package/skills/platform-trust-archive-manage/references/connect-api-operations.md +51 -12
  60. /package/skills/{getting-datacloud-schema → data360-schema-get}/scripts/get_dlo_schema.py +0 -0
  61. /package/skills/{getting-datacloud-schema → data360-schema-get}/scripts/get_dmo_schema.py +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/afv-skills",
3
- "version": "1.23.0",
3
+ "version": "1.25.0",
4
4
  "description": "Salesforce skills for Agentforce Vibes",
5
5
  "license": "CC-BY-NC-4.0",
6
6
  "files": [
@@ -0,0 +1,244 @@
1
+ ---
2
+ name: commerce-b2b-open-code-components-replace
3
+ description: "Replace OOTB (out-of-the-box) B2B Commerce components with open source equivalents in site metadata content.json files, or look up the equivalent open code `site:` component for OOTB definitions. Use when users mention \"replace OOTB components\", \"replace commerce components with open code\", \"swap OOTB for open source\", \"replace commerce_builder:\", \"replace OOTB in site\", \"replace component in site metadata\", \"replace component definition\", \"find open code equivalent\", \"equivalent open code component\", \"OOTB to open code mapping\", \"what is the site component for\", components \"in this view\" or \"for a given view\", or a specific list of component names — and want to update or only discover mappings in their store metadata."
4
+ allowed-tools: Bash(grep:*) Bash(ls:*) Read Write
5
+ metadata:
6
+ version: "1.0"
7
+ ---
8
+
9
+ # Replacing OOTB B2B Commerce Components with Open Code
10
+
11
+ This skill replaces OOTB (out-of-the-box) B2B Commerce component definitions in site metadata `content.json` files with their open source `site:` equivalents, or looks up the equivalent open code component for given OOTB definitions without making changes. It uses an authoritative mapping loaded from `assets/ootb-to-open-code-mapping.json`.
12
+
13
+ ## Scope
14
+
15
+ **Modes:** **Full replace** runs the scan (Step 1), user selection if needed, then `content.json` updates (Step 2–3). **Lookup only** (user asks for equivalents but not to change files): apply the mapping-authority rule and report OOTB → `site:` for the named components or for definitions found in the scoped `content.json` — **do not** call Write unless the user confirms replacement. **View-scoped** work: limit file discovery and reads to `sfdc_cms__view/<ViewName>/` (or the path the user gives) instead of all views.
16
+
17
+ ---
18
+
19
+ ## Prerequisites
20
+
21
+ ### Resolve `<package-dir>`
22
+
23
+ Read `sfdx-project.json` and pick the active package directory. Extract `packageDirectories[]` and use the entry with `"default": true`; if no entry is flagged default, use the first entry. Use this value as `<package-dir>` everywhere below. If `sfdx-project.json` is missing or has no `packageDirectories`, tell the user and abort.
24
+
25
+ ### Delegate setup
26
+
27
+ Before replacing components, delegate to the **commerce-b2b-open-code-components-integrate** skill to ensure:
28
+
29
+ 1. Open source repository is cloned at `.tmp/b2b-commerce-open-source-components`
30
+ 2. Store is selected and site metadata is retrieved locally
31
+ 3. Open code components are copied to the store's site metadata
32
+
33
+ The integrating skill owns the `.tmp/` clone lifecycle (it prompts the user to reuse or re-clone an existing checkout); this skill assumes the clone is already present.
34
+
35
+ Send a plain-text chat reply to the user (per Rule 1): "Before replacing components, I need to verify that the open code components are set up in your store. Let me check..."
36
+
37
+ If any prerequisite is not met, the integrating skill will handle it. Once all checks pass, proceed to the replacement workflow.
38
+
39
+ **Required state** after prerequisites:
40
+ - **Package dir** — the value resolved above (e.g., `force-app`)
41
+ - **Store name** — e.g., `My_B2B_Store1`
42
+ - **Site metadata path** — `<package-dir>/main/default/digitalExperiences/site/<store-name>/`
43
+
44
+ ---
45
+
46
+ ## Replacement Workflow
47
+
48
+ ### Step 1: Scan Site and Cross-Reference Mapping
49
+
50
+ **This step is MANDATORY.** Always scan the site first before attempting any replacements.
51
+
52
+ Send a plain-text chat reply to the user (per Rule 1): "I'm scanning your store's site metadata to find all OOTB commerce components currently in use and checking which have open code equivalents."
53
+
54
+ **Step 1a — Find affected files** (one command, simple literal match):
55
+
56
+ ```bash
57
+ grep -rl '"commerce' \
58
+ <package-dir>/main/default/digitalExperiences/site/<store-name>/sfdc_cms__view/ \
59
+ <package-dir>/main/default/digitalExperiences/site/<store-name>/sfdc_cms__themeLayout/ \
60
+ --include="content.json"
61
+ ```
62
+
63
+ **Step 1b — Read the mapping and parse the matched files.** Read `assets/ootb-to-open-code-mapping.json` once into memory. Then, using the **Read** tool, parse each matched file and extract all `"definition"` values that start with `commerce` (e.g., `commerce_builder:cartBadge`). Collect a deduplicated list of OOTB components across all files.
64
+
65
+ **Step 1c — List repo components** (one command):
66
+
67
+ ```bash
68
+ ls .tmp/b2b-commerce-open-source-components/force-app/main/default/sfdc_cms__lwc/
69
+ ```
70
+
71
+ Using the parsed definitions, the `ls` output, and the mapping table, categorize every discovered OOTB component into three groups:
72
+
73
+ **Show the user a breakdown and a selectable list:**
74
+
75
+ First, inform the user about skipped and unmapped components:
76
+ ```text
77
+ Found X OOTB components in your site:
78
+
79
+ In mapping table but NOT in repo (skipping):
80
+ - commerce_builder:quoteSummary → site:quoteSummary (not found in repo)
81
+
82
+ No mapping available (not in mapping table):
83
+ - commerce_builder:actionButtons
84
+ - commerce_builder:layoutHeaderOne
85
+ - commerce_builder:searchInputContainer
86
+ - commerce_builder:myAccountMegaMenu
87
+ ```
88
+
89
+ Then present the replaceable components as a **multi-select list** so the user can pick from checkboxes instead of typing. Include an "All of the above" option:
90
+
91
+ ```text
92
+ Which components would you like to replace?
93
+
94
+ ☐ commerce_builder:heading → site:productHeading
95
+ ☐ commerce_builder:cartBadge → site:cartBadge
96
+ ☐ commerce_builder:searchInput → site:searchInput
97
+ ☐ All of the above
98
+ ```
99
+
100
+ If user provided specific component name(s) in the original request, pre-filter to those and skip the selection prompt.
101
+
102
+ ### Step 2: Replace in content.json
103
+
104
+ Send a plain-text chat reply to the user (per Rule 1): "I'm now replacing the selected OOTB component definitions with their open code equivalents in your site's content.json files."
105
+
106
+ The affected files are already known from Step 1. For each file that contains selected components:
107
+ 1. Use the **Read** tool to read the file
108
+ 2. For each selected OOTB component, confirm again that the mapped **`site:`** target exists in the open code repo. Only proceed with replacements that pass this check.
109
+ 3. Replace all matching `"definition"` values with their mapped open code equivalents — **always** use the exact `site:<name>` string from the mapping table
110
+ - Example: `"definition": "commerce_builder:heading"` → `"definition": "site:productHeading"`
111
+ 4. Use the **Write** tool to save the updated file
112
+ 5. Preserve all other JSON properties — only `"definition"` values change
113
+
114
+ **Batch efficiently:** if a file contains multiple OOTB components, apply ALL replacements in a single Read → modify → Write pass. Do NOT read and write the same file multiple times.
115
+
116
+ ### Step 3: Report
117
+
118
+ ```text
119
+ ✅ Replacement Complete!
120
+
121
+ Replaced X components across Y files:
122
+ - commerce_builder:heading → site:productHeading (3 files)
123
+ - commerce_builder:cartBadge → site:cartBadge (2 files)
124
+ - commerce_builder:searchInput → site:searchInput (4 files)
125
+
126
+ Skipped (not in repo):
127
+ - commerce_builder:quoteSummary
128
+
129
+ No mapping available (left unchanged):
130
+ - commerce_builder:actionButtons
131
+ - commerce_builder:layoutHeaderOne
132
+ - commerce_builder:searchInputContainer
133
+
134
+ Modified files:
135
+ - sfdc_cms__view/Home/content.json
136
+ - sfdc_cms__view/Product_Detail/content.json
137
+ - sfdc_cms__themeLayout/DefaultTheme/content.json
138
+
139
+ Next Steps:
140
+ 1. Deploy: sf project deploy start -d <package-dir>/main/default/digitalExperiences/site/<store-name>
141
+ 2. Test the store thoroughly in Experience Builder
142
+ 3. Publish your site when ready
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Example Interaction
148
+
149
+ **User:** "Replace OOTB components with open code versions"
150
+
151
+ **Agent:** "Before replacing components, I need to verify that the open code components are set up in your store. Let me check..."
152
+ - ✓ Open source repo cloned
153
+ - ✓ Store metadata available for My_B2B_Store1
154
+ - ✓ Open code components are integrated
155
+
156
+ **Agent:** "I'm scanning your store's site metadata to find all OOTB commerce components and checking which have open code equivalents."
157
+
158
+ _(Runs grep -rl to find files with commerce definitions, Reads those files to extract component names, runs ls to list repo components, then cross-references with mapping table)_
159
+
160
+ ```text
161
+ Found 8 OOTB components in your site:
162
+
163
+ No mapping available (not in mapping table):
164
+ - commerce_builder:searchInputContainer
165
+ - commerce_builder:layoutHeaderOne
166
+ - commerce_builder:myAccountMegaMenu
167
+ - commerce_builder:actionButtons
168
+ ```
169
+
170
+ **Agent** _(asks the user via a multi-select prompt):_
171
+ ```text
172
+ Which components would you like to replace?
173
+
174
+ ☐ commerce_builder:heading → site:productHeading
175
+ ☐ commerce_builder:cartBadge → site:cartBadge
176
+ ☐ commerce_builder:searchInput → site:searchInput
177
+ ☐ commerce_builder:cartSummary → site:cartSummary
178
+ ☐ All of the above
179
+ ```
180
+
181
+ **User:** _(selects heading and cartBadge)_
182
+
183
+ **Agent:** "I'm now replacing the selected OOTB component definitions with their open code equivalents in your site's content.json files."
184
+
185
+ _(Files already known from scan — one Read/Write pass per affected file, all replacements batched)_
186
+
187
+ ```text
188
+ ✅ Replacement Complete!
189
+
190
+ Replaced 2 components across 5 files:
191
+ - commerce_builder:heading → site:productHeading (3 files)
192
+ - commerce_builder:cartBadge → site:cartBadge (2 files)
193
+
194
+ No mapping available (left unchanged):
195
+ - commerce_builder:searchInputContainer
196
+ - commerce_builder:layoutHeaderOne
197
+ - commerce_builder:myAccountMegaMenu
198
+ - commerce_builder:actionButtons
199
+
200
+ Modified files:
201
+ - sfdc_cms__view/Home/content.json
202
+ - sfdc_cms__view/Product_Detail/content.json
203
+ - sfdc_cms__themeLayout/DefaultTheme/content.json
204
+
205
+ Next Steps:
206
+ 1. Deploy: sf project deploy start -d force-app/main/default/digitalExperiences/site/My_B2B_Store1
207
+ 2. Test the store thoroughly in Experience Builder
208
+ ```
209
+
210
+ ---
211
+
212
+ ## Rules
213
+
214
+ 1. **Always explain in chat before executing.** Before every Bash or Write tool call, send a plain-text reply in the conversation that says what the command will do and why. The explanation MUST appear as a normal chat message preceding the tool call. Do NOT embed it inside the command itself (no `echo` lines, no `#` comments), do NOT prefix it to the command, and do NOT rely solely on the tool's `description` parameter — that field is not guaranteed to be visible to the user. After the explanation, issue the tool call and wait for the user to approve it before continuing.
215
+ 2. **`assets/ootb-to-open-code-mapping.json` is the only source of truth.** Every OOTB → open-code mapping comes from that file; never guess, infer, or hallucinate component names. Each replacement's new `"definition"` MUST be the exact mapped value from the file, which always uses the `site:` namespace (e.g. `site:productHeading`). Before writing, verify the mapped target exists in the cloned open code components repo (under `.tmp/b2b-commerce-open-source-components/force-app/main/default/sfdc_cms__lwc/`); if it is not present, skip the replacement and report it under "not in repo".
216
+ 3. **Use Read and Write tools for JSON files.** Use the Read tool to parse `content.json` files and the Write tool to update them. Do NOT use bash to parse or edit JSON — no sed, awk, perl, or regex on JSON content. Bash is only for **simple file discovery** (`grep -rl`, `find`, `ls`) — never for extracting or modifying JSON values.
217
+ 4. **Minimize commands.** Batch work into as few commands as possible. Use a single grep to scan all files, a single ls to verify the repo, and one Read/Write pass per file. Do NOT run a separate command for every component or every directory.
218
+
219
+ ---
220
+
221
+ ## Error Handling
222
+
223
+ | Error | Message | Action |
224
+ |-------|---------|--------|
225
+ | Prerequisites not met | "Open code components are not integrated yet." | Run integrating skill first |
226
+ | No mapping found | "No mapping found for '{component}'." | Show available mappings, report as unmapped |
227
+ | Component not in repo | "Open code component '{name}' not found in cloned repo." | Skip and inform user |
228
+ | No OOTB components in site | "No OOTB commerce components found in site metadata." | Inform user, nothing to replace |
229
+ | No replaceable components | "All OOTB components found are unmapped — none can be replaced." | Show the unmapped list, suggest checking for updated mappings |
230
+ | content.json parse error | "Failed to parse content.json: {file}" | Show error, skip file, continue with remaining files |
231
+
232
+ ---
233
+
234
+ ## Verification Checklist
235
+
236
+ - [ ] Prerequisites verified via integrating skill (repo, store, components)
237
+ - [ ] Site scanned + repo verified + mapping cross-referenced in minimal commands (Step 1)
238
+ - [ ] Each replacement uses the exact mapped `site:` definition and was verified present in the open code repo before write
239
+ - [ ] Breakdown shown to user with three categories before proceeding
240
+ - [ ] User selected components to replace (or provided names)
241
+ - [ ] Each `content.json` file updated in a single Read → modify → Write pass
242
+ - [ ] JSON structure preserved, no syntax errors introduced
243
+ - [ ] User informed of skipped and unmapped components
244
+ - [ ] Deployment command provided
@@ -0,0 +1,66 @@
1
+ {
2
+ "commerce_builder:actionButton": "site:commonButton",
3
+ "commerce_builder:b2bCartContents": "site:cartB2bCartContents",
4
+ "commerce_builder:cartAppliedPromotion": "site:cartPromotionApplied",
5
+ "commerce_builder:cartApplyCoupon": "site:cartApplyCoupon",
6
+ "commerce_builder:cartBadge": "site:cartBadge",
7
+ "commerce_builder:cartPromotions": "site:cartPromotions",
8
+ "commerce_builder:cartSummary": "site:cartSummary",
9
+ "commerce_builder:checkoutButton": "site:checkoutButton",
10
+ "commerce_builder:checkoutDeliveryAddress": "site:checkoutDeliveryAddress",
11
+ "commerce_builder:checkoutDeliveryMethod": "site:checkoutDeliverymethod",
12
+ "commerce_builder:checkoutGiftOptions": "site:checkoutGiftOptions",
13
+ "commerce_builder:checkoutNotification": "site:checkoutNotification",
14
+ "commerce_builder:checkoutPurchaseOrder": "site:checkoutPurchaseOrder",
15
+ "commerce_builder:checkoutShippingInstructions": "site:checkoutShippingInstructions",
16
+ "commerce_builder:checkoutSubscriptionPolicyDisclaimer": "site:checkoutSubscriptionPolicyDisclaimer",
17
+ "commerce_builder:consentBlanket": "site:legalConsentBlanket",
18
+ "commerce_builder:countryPickerV2": "site:commonCountryPicker",
19
+ "commerce_builder:drilldownNavigation": "site:commonDrilldownNavigation",
20
+ "commerce_builder:formattedCurrency": "site:commonFormattedCurrency",
21
+ "commerce_builder:heading": "site:productHeading",
22
+ "commerce_builder:layoutFooter": "site:layoutFooter",
23
+ "commerce_builder:layoutHeaderSimple": "site:layoutHeaderSimple",
24
+ "commerce_builder:linkList": "site:commonLinksList",
25
+ "commerce_builder:myAccountAddressContainer": "site:myaccountAddress",
26
+ "commerce_builder:navigationMenuItemList": "site:myaccountNavigationMenuItems",
27
+ "commerce_builder:orderConfirmationBillingDetails": "site:orderConfirmationDetailsBilling",
28
+ "commerce_builder:orderConfirmationDeliveryGroup": "site:orderConfirmationDeliverygroup",
29
+ "commerce_builder:orderConfirmationErrorMessage": "site:orderConfirmationMessageError",
30
+ "commerce_builder:orderConfirmationSuccessMessage": "site:orderConfirmationMessageSuccess",
31
+ "commerce_builder:orderDetails": "site:orderDetails",
32
+ "commerce_builder:orderList": "site:orderList",
33
+ "commerce_builder:orderListDateFilter": "site:orderListDateFilter",
34
+ "commerce_builder:orderProductsInfo": "site:orderProducts",
35
+ "commerce_builder:orderPromotionsSummary": "site:orderPromotions",
36
+ "commerce_builder:orderShipmentTracker": "site:orderShipmentTracker",
37
+ "commerce_builder:paymentByExpress": "site:paymentByExpress",
38
+ "commerce_builder:productAttachments": "site:productAttachments",
39
+ "commerce_builder:productBundle": "site:productBundle",
40
+ "commerce_builder:productBundleItem": "site:productBundleItem",
41
+ "commerce_builder:productFieldsTable": "site:productFieldsTable",
42
+ "commerce_builder:productFrequentlyBoughtTogether": "site:productFrequentlyBoughtTogether",
43
+ "commerce_builder:productMediaGallery": "site:productMediaGallery",
44
+ "commerce_builder:productPricingDetails": "site:productPricingDetails",
45
+ "commerce_builder:productSellingModelSelector": "site:productSellingmodelSelector",
46
+ "commerce_builder:productSet": "site:productSet",
47
+ "commerce_builder:promotionDiscountsApproaching": "site:promotionDiscountsApproaching",
48
+ "commerce_builder:purchaseOptions": "site:productPurchaseOptions",
49
+ "commerce_builder:purchasedProducts": "site:productListPurchased",
50
+ "commerce_builder:quickOrder": "site:orderQuickOrder",
51
+ "commerce_builder:quoteSummary": "site:quoteSummary",
52
+ "commerce_builder:searchFilters": "site:searchFilters",
53
+ "commerce_builder:searchInput": "site:searchInput",
54
+ "commerce_builder:searchNoResultsLayout": "site:searchResultsLayoutEmpty",
55
+ "commerce_builder:searchResults": "site:searchResults",
56
+ "commerce_builder:searchResultsLayout": "site:searchResultsLayout",
57
+ "commerce_builder:searchSortMenu": "site:searchSortMenu",
58
+ "commerce_builder:socialLinks": "site:commonLinksSocial",
59
+ "commerce_builder:splitShipmentHeader": "site:cartSplitshipmentHeader",
60
+ "commerce_builder:stickyContainer": "site:commonContainerSticky",
61
+ "commerce_builder:subscriptions": "site:productSubscriptions",
62
+ "commerce_builder:userProfileMenu": "site:myAccountUserProfileMenu",
63
+ "commerce_builder:variantSelector": "site:productVariantSelector",
64
+ "commerce_builder:wishlist": "site:productWishlist",
65
+ "commerce_builder:wishlistShortcut": "site:productWishlistShortcut"
66
+ }
@@ -1,11 +1,11 @@
1
1
  ---
2
- name: developing-datacloud-code-extension
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
- # developing-datacloud-code-extension Skill
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 `getting-datacloud-schema` skill to verify DLOs exist and check field names.**
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 getting-datacloud-schema skill), check spelling and `__dll` suffix |
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 getting-datacloud-schema skill (CRITICAL for validation):**
288
+ **Use with data360-schema-get skill (CRITICAL for validation):**
289
289
 
290
- The `getting-datacloud-schema` skill is **required** for validating DLOs before testing code extensions.
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
- # developing-datacloud-code-extension Skill
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 getting-datacloud-schema skill |
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 getting-datacloud-schema skill |
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: getting-datacloud-schema
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
- # getting-datacloud-schema Skill
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. 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.
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 <skill_dir>/scripts/get_dlo_schema.py <org_alias>
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 <skill_dir>/scripts/get_dlo_schema.py <org_alias> <dlo_name>
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 <skill_dir>/scripts/get_dmo_schema.py <org_alias>
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 <skill_dir>/scripts/get_dmo_schema.py <org_alias> <dmo_name>
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 <skill_dir>/scripts/get_dlo_schema.py afvibe
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 <skill_dir>/scripts/get_dlo_schema.py afvibe Employee__dll
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 <skill_dir>/scripts/get_dmo_schema.py afvibe
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 <skill_dir>/scripts/get_dmo_schema.py afvibe Individual__dlm
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