@salesforce/afv-skills 1.1.0 → 1.2.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 +4 -4
- package/skills/agentforce-development/SKILL.md +427 -0
- package/skills/agentforce-development/assets/README-legacy.md +89 -0
- package/skills/agentforce-development/assets/agent-spec-template.md +90 -0
- package/skills/agentforce-development/assets/agents/README.md +45 -0
- package/skills/agentforce-development/assets/agents/hello-world.agent +60 -0
- package/skills/agentforce-development/assets/agents/multi-topic.agent +105 -0
- package/skills/agentforce-development/assets/agents/production-faq.agent +101 -0
- package/skills/agentforce-development/assets/agents/production-faq.bundle-meta.xml +4 -0
- package/skills/agentforce-development/assets/agents/simple-qa.agent +72 -0
- package/skills/agentforce-development/assets/apex/models-api-queueable.cls +225 -0
- package/skills/agentforce-development/assets/bundle-meta.xml +23 -0
- package/skills/agentforce-development/assets/components/apex-action.agent +52 -0
- package/skills/agentforce-development/assets/components/error-handling.agent +58 -0
- package/skills/agentforce-development/assets/components/escalation-setup.agent +169 -0
- package/skills/agentforce-development/assets/components/flow-action.agent +66 -0
- package/skills/agentforce-development/assets/components/n-ary-conditions.agent +110 -0
- package/skills/agentforce-development/assets/components/topic-with-actions.agent +40 -0
- package/skills/agentforce-development/assets/deterministic-routing.agent +166 -0
- package/skills/agentforce-development/assets/escalation-pattern.agent +209 -0
- package/skills/agentforce-development/assets/flow-action-lookup.agent +115 -0
- package/skills/agentforce-development/assets/hub-and-spoke.agent +104 -0
- package/skills/agentforce-development/assets/invocable-apex-template.cls +187 -0
- package/skills/agentforce-development/assets/local-info-agent-annotated.agent +355 -0
- package/skills/agentforce-development/assets/metadata/basic-prompt-template.promptTemplate-meta.xml +109 -0
- package/skills/agentforce-development/assets/metadata/genai-function-apex.xml +92 -0
- package/skills/agentforce-development/assets/metadata/genai-function-flow.xml +57 -0
- package/skills/agentforce-development/assets/metadata/genai-plugin.xml +72 -0
- package/skills/agentforce-development/assets/metadata/http-callout-flow.flow-meta.xml +348 -0
- package/skills/agentforce-development/assets/metadata/record-grounded-prompt.promptTemplate-meta.xml +136 -0
- package/skills/agentforce-development/assets/minimal-starter.agent +42 -0
- package/skills/agentforce-development/assets/patterns/README.md +254 -0
- package/skills/agentforce-development/assets/patterns/action-callbacks.agent +178 -0
- package/skills/agentforce-development/assets/patterns/advanced-input-bindings.agent +141 -0
- package/skills/agentforce-development/assets/patterns/bidirectional-routing.agent +156 -0
- package/skills/agentforce-development/assets/patterns/critical-input-collection.agent +244 -0
- package/skills/agentforce-development/assets/patterns/delegation-routing.agent +89 -0
- package/skills/agentforce-development/assets/patterns/lifecycle-events.agent +127 -0
- package/skills/agentforce-development/assets/patterns/llm-controlled-actions.agent +184 -0
- package/skills/agentforce-development/assets/patterns/multi-step-workflow.agent +282 -0
- package/skills/agentforce-development/assets/patterns/open-gate-routing.agent +286 -0
- package/skills/agentforce-development/assets/patterns/procedural-instructions.agent +273 -0
- package/skills/agentforce-development/assets/patterns/prompt-template-action.agent +188 -0
- package/skills/agentforce-development/assets/patterns/system-instruction-overrides.agent +293 -0
- package/skills/agentforce-development/assets/prompt-rag-search.agent +131 -0
- package/skills/agentforce-development/assets/template-multi-topic.agent +160 -0
- package/skills/agentforce-development/assets/template-single-topic.agent +81 -0
- package/skills/agentforce-development/assets/verification-gate.agent +208 -0
- package/skills/agentforce-development/references/action-prompt-templates.md +164 -0
- package/skills/agentforce-development/references/actions-reference.md +592 -0
- package/skills/agentforce-development/references/agent-access-guide.md +72 -0
- package/skills/agentforce-development/references/agent-design-and-spec-creation.md +1010 -0
- package/skills/agentforce-development/references/agent-metadata-and-lifecycle.md +575 -0
- package/skills/agentforce-development/references/agent-script-core-language.md +1218 -0
- package/skills/agentforce-development/references/agent-topic-map-diagrams.md +323 -0
- package/skills/agentforce-development/references/agent-user-setup.md +526 -0
- package/skills/agentforce-development/references/agent-validation-and-debugging.md +803 -0
- package/skills/agentforce-development/references/known-issues.md +353 -0
- package/skills/agentforce-development/references/minimal-examples.md +67 -0
- package/skills/agentforce-development/references/production-gotchas.md +279 -0
- package/skills/agentforce-development/references/salesforce-cli-for-agents.md +393 -0
- package/skills/agentforce-development/references/version-history.md +23 -0
- package/skills/generate-permission-set/SKILL.md +174 -0
- package/skills/salesforce-custom-application/SKILL.md +1 -2
- package/skills/salesforce-custom-field/SKILL.md +0 -4
- package/skills/salesforce-custom-tab/SKILL.md +84 -8
- package/skills/salesforce-experience-lwr-site/SKILL.md +196 -0
- package/skills/salesforce-experience-lwr-site/docs/bootstrap-template-byo-lwr.md +224 -0
- package/skills/salesforce-experience-lwr-site/docs/configure-content-brandingSet.md +131 -0
- package/skills/salesforce-experience-lwr-site/docs/configure-content-route.md +232 -0
- package/skills/salesforce-experience-lwr-site/docs/configure-content-themeLayout.md +141 -0
- package/skills/salesforce-experience-lwr-site/docs/configure-content-view.md +233 -0
- package/skills/salesforce-experience-lwr-site/docs/configure-guest-sharing-rules.md +42 -0
- package/skills/salesforce-experience-lwr-site/docs/handle-component-and-region-ids.md +27 -0
- package/skills/salesforce-experience-lwr-site/docs/handle-ui-components.md +215 -0
- package/skills/salesforce-flow/SKILL.md +2 -2
- package/skills/salesforce-fragment/SKILL.md +85 -10
- package/skills/salesforce-lightning-app-build/SKILL.md +102 -10
- package/skills/apex-class/SKILL.md +0 -253
- package/skills/apex-class/examples/AccountDeduplicationBatch.cls +0 -148
- package/skills/apex-class/examples/AccountSelector.cls +0 -193
- package/skills/apex-class/examples/AccountService.cls +0 -201
- package/skills/apex-class/templates/abstract.cls +0 -128
- package/skills/apex-class/templates/batch.cls +0 -125
- package/skills/apex-class/templates/domain.cls +0 -102
- package/skills/apex-class/templates/dto.cls +0 -108
- package/skills/apex-class/templates/exception.cls +0 -51
- package/skills/apex-class/templates/interface.cls +0 -25
- package/skills/apex-class/templates/queueable.cls +0 -92
- package/skills/apex-class/templates/schedulable.cls +0 -75
- package/skills/apex-class/templates/selector.cls +0 -92
- package/skills/apex-class/templates/service.cls +0 -69
- package/skills/apex-class/templates/utility.cls +0 -97
- package/skills/apex-test-class/SKILL.md +0 -101
- package/skills/apex-test-class/references/assertion-patterns.md +0 -209
- package/skills/apex-test-class/references/async-testing.md +0 -276
- package/skills/apex-test-class/references/mocking-patterns.md +0 -219
- package/skills/apex-test-class/references/test-data-factory.md +0 -176
- package/skills/deployment-readiness-check/SKILL.md +0 -257
- package/skills/deployment-readiness-check/assets/deployment_checklist.md +0 -286
- package/skills/deployment-readiness-check/references/rollback_procedures.md +0 -308
- package/skills/deployment-readiness-check/scripts/check_metadata.sh +0 -207
- package/skills/salesforce-experience-site/SKILL.md +0 -178
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# Build Your Own (LWR) Template
|
|
2
|
+
|
|
3
|
+
**Use when** creating a new site or retrieving default values for site metadata.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- Bootstrap Options
|
|
8
|
+
- Default Values Reference
|
|
9
|
+
|
|
10
|
+
## Bootstrap Options
|
|
11
|
+
|
|
12
|
+
**IMPORTANT**: First site setup initializes services. Warn user - recommend Option 1 for first site.
|
|
13
|
+
|
|
14
|
+
Ask user to choose:
|
|
15
|
+
|
|
16
|
+
1. Create in org, then download metadata
|
|
17
|
+
2. Scaffold locally before deploying
|
|
18
|
+
|
|
19
|
+
### Option 1: Create in Org
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
sf community create --name "{siteName}" --template-name 'Build Your Own (LWR)' --url-path-prefix "{prefix}"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
After creation, retrieve metadata using sf CLI.
|
|
26
|
+
|
|
27
|
+
### Option 2: Scaffold Locally
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
sf template generate digital-experience site --name "{siteName}" --template-name 'Build Your Own (LWR)' --url-path-prefix "{prefix}"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Generates metadata with defaults: DigitalExperienceConfig, DigitalExperiences, Network, CustomSite, and content (route, view, themeLayout, etc.).
|
|
34
|
+
|
|
35
|
+
#### Post-Creation Config
|
|
36
|
+
|
|
37
|
+
After site metadata is generated, use MCP tool `execute_metadata_action` to fetch additional information about the template:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"metadataType": "ExperienceSiteLwr",
|
|
42
|
+
"actionName": "getSiteTemplateMetadata",
|
|
43
|
+
"parameters": { "templateDevName": "talon-template-byo" }
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
If result provides `disabledViews`, delete both view and route directories.
|
|
48
|
+
|
|
49
|
+
**Example**: If `disabledViews` includes "tooManyRequests":
|
|
50
|
+
|
|
51
|
+
- Delete: `digitalExperiences/site/{siteDevName}/sfdc_cms__view/tooManyRequests/`
|
|
52
|
+
- Delete: `digitalExperiences/site/{siteDevName}/sfdc_cms__route/Too_Many_Requests/`
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Default Values Reference
|
|
57
|
+
|
|
58
|
+
**Note**: CLI generates these. Listed for reference only - use CLI first.
|
|
59
|
+
|
|
60
|
+
### Metadata Defaults
|
|
61
|
+
|
|
62
|
+
**DigitalExperienceConfig**:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
label: {siteName}
|
|
66
|
+
urlPathPrefix: {siteUrlPathPrefix}
|
|
67
|
+
space: site/{siteName}1
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**DigitalExperienceBundle**:
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
label: {siteName}1
|
|
74
|
+
modules: [sfdc_cms__collection, sfdc_cms__mobilePublisherConfig]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Network**:
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
allowInternalUserLogin: false
|
|
81
|
+
allowMembersToFlag: false
|
|
82
|
+
changePasswordTemplate: unfiled$public/CommunityChangePasswordEmailTemplate
|
|
83
|
+
disableReputationRecordConversations: true
|
|
84
|
+
emailSenderAddress: {adminEmailAddress}
|
|
85
|
+
emailSenderName: {siteName}
|
|
86
|
+
embeddedLoginEnabled: false
|
|
87
|
+
enableApexCDNCaching: true
|
|
88
|
+
enableCustomVFErrorPageOverrides: false
|
|
89
|
+
enableDirectMessages: true
|
|
90
|
+
enableExpFriendlyUrlsAsDefault: false
|
|
91
|
+
enableExperienceBundleBasedSnaOverrideEnabled: true
|
|
92
|
+
enableGuestChatter: false
|
|
93
|
+
enableGuestFileAccess: false
|
|
94
|
+
enableGuestMemberVisibility: false
|
|
95
|
+
enableImageOptimizationCDN: true
|
|
96
|
+
enableInvitation: false
|
|
97
|
+
enableKnowledgeable: false
|
|
98
|
+
enableLWRExperienceConnectedApp: true
|
|
99
|
+
enableMemberVisibility: false
|
|
100
|
+
enableNicknameDisplay: true
|
|
101
|
+
enablePrivateMessages: false
|
|
102
|
+
enableReputation: false
|
|
103
|
+
enableShowAllNetworkSettings: false
|
|
104
|
+
enableSiteAsContainer: true
|
|
105
|
+
enableTalkingAboutStats: true
|
|
106
|
+
enableTopicAssignmentRules: true
|
|
107
|
+
enableTopicSuggestions: false
|
|
108
|
+
enableUpDownVote: false
|
|
109
|
+
forgotPasswordTemplate: unfiled$public/CommunityForgotPasswordEmailTemplate
|
|
110
|
+
gatherCustomerSentimentData: false
|
|
111
|
+
headlessForgotPasswordTemplate: unfiled$public/CommunityHeadlessForgotPasswordTemplate
|
|
112
|
+
headlessRegistrationTemplate: unfiled$public/CommunityHeadlessRegistrationTemplate
|
|
113
|
+
networkMemberGroups:
|
|
114
|
+
- profile: admin
|
|
115
|
+
networkPageOverrides:
|
|
116
|
+
- changePasswordPageOverrideSetting: Standard
|
|
117
|
+
- forgotPasswordPageOverrideSetting: Designer
|
|
118
|
+
- homePageOverrideSetting: Designer
|
|
119
|
+
- loginPageOverrideSetting: Designer
|
|
120
|
+
- selfRegProfilePageOverrideSetting: Designer
|
|
121
|
+
newSenderAddress: admin@company.com
|
|
122
|
+
picassoSite: {siteName}1
|
|
123
|
+
selfRegistration: false
|
|
124
|
+
sendWelcomeEmail: true
|
|
125
|
+
site: {siteName}
|
|
126
|
+
siteArchiveStatus: NotArchived
|
|
127
|
+
status: UnderConstruction
|
|
128
|
+
tabs:
|
|
129
|
+
- defaultTab: home
|
|
130
|
+
- standardTab: Chatter
|
|
131
|
+
urlPathPrefix: {siteUrlPathPrefix}vforcesite
|
|
132
|
+
welcomeTemplate: unfiled$public/CommunityWelcomeEmailTemplate
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**CustomSite**:
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
active: true
|
|
139
|
+
allowGuestPaymentsApi: false
|
|
140
|
+
allowHomePage: false
|
|
141
|
+
allowStandardAnswersPages: false
|
|
142
|
+
allowStandardIdeasPages: false
|
|
143
|
+
allowStandardLookups: false
|
|
144
|
+
allowStandardPortalPages: true
|
|
145
|
+
allowStandardSearch: false
|
|
146
|
+
authorizationRequiredPage: CommunitiesLogin
|
|
147
|
+
bandwidthExceededPage: BandwidthExceeded
|
|
148
|
+
browserXssProtection: true
|
|
149
|
+
cachePublicVisualforcePagesInProxyServers: true
|
|
150
|
+
clickjackProtectionLevel: SameOriginOnly
|
|
151
|
+
contentSniffingProtection: true
|
|
152
|
+
enableAuraRequests: true
|
|
153
|
+
fileNotFoundPage: FileNotFound
|
|
154
|
+
genericErrorPage: Exception
|
|
155
|
+
inMaintenancePage: InMaintenance
|
|
156
|
+
indexPage: CommunitiesLanding
|
|
157
|
+
masterLabel: {siteName}
|
|
158
|
+
redirectToCustomDomain: false
|
|
159
|
+
referrerPolicyOriginWhenCrossOrigin: true
|
|
160
|
+
selfRegPage: CommunitiesSelfReg
|
|
161
|
+
siteType: ChatterNetwork
|
|
162
|
+
urlPathPrefix: {siteUrlPathPrefix}vforcesite
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Content Defaults
|
|
166
|
+
|
|
167
|
+
apiNames and other metadata of site contents:
|
|
168
|
+
|
|
169
|
+
**sfdc_cms__appPage**:
|
|
170
|
+
|
|
171
|
+
- mainAppPage
|
|
172
|
+
|
|
173
|
+
**sfdc_cms__brandingSet**:
|
|
174
|
+
|
|
175
|
+
- Build_Your_Own_LWR
|
|
176
|
+
|
|
177
|
+
**sfdc_cms__languageSettings**:
|
|
178
|
+
|
|
179
|
+
- languages
|
|
180
|
+
|
|
181
|
+
**sfdc_cms__mobilePublisherConfig**:
|
|
182
|
+
|
|
183
|
+
- mobilePublisherConfig
|
|
184
|
+
|
|
185
|
+
**sfdc_cms__theme**:
|
|
186
|
+
|
|
187
|
+
- Build_Your_Own_LWR
|
|
188
|
+
|
|
189
|
+
**sfdc_cms__route**:
|
|
190
|
+
|
|
191
|
+
| Route | apiName | routeType | urlPrefix | urlName | viewId | configurationTags |
|
|
192
|
+
|-------|---------|-----------|-----------|---------|--------|-------------------|
|
|
193
|
+
| Home | Home | home | "" | home | home | |
|
|
194
|
+
| Login | Login | login-main | login | login | login | |
|
|
195
|
+
| Register | Register | self-register | SelfRegister | register | register | |
|
|
196
|
+
| Forgot_Password | Forgot_Password | forgot-password | ForgotPassword | forgot-password | forgotPassword | |
|
|
197
|
+
| Check_Password | Check_Password | check-password | CheckPasswordResetEmail | check-password | checkPasswordResetEmail | |
|
|
198
|
+
| Error | Error | error | error | error | error | |
|
|
199
|
+
| Service_Not_Available | Service_Not_Available | service-not-available | service-not-available | service-not-available | serviceNotAvailable | allow-in-static-site |
|
|
200
|
+
| Too_Many_Requests | Too_Many_Requests | too-many-requests | too-many-requests | too-many-requests | tooManyRequests | too-many-requests, allow-in-static-site |
|
|
201
|
+
| News_Detail__c | News_Detail__c | managed-content-sfdc_cms__news | news | news-detail | newsDetail | |
|
|
202
|
+
|
|
203
|
+
**sfdc_cms__view**:
|
|
204
|
+
|
|
205
|
+
| View | apiName | viewType | urlName | themeLayoutType |
|
|
206
|
+
|------|---------|----------|---------|-----------------|
|
|
207
|
+
| home | home | home | home | Inner |
|
|
208
|
+
| login | login | login-main | login | Inner |
|
|
209
|
+
| register | register | self-register | register | Inner |
|
|
210
|
+
| forgotPassword | forgotPassword | forgot-password | forgot-password | Inner |
|
|
211
|
+
| checkPasswordResetEmail | checkPasswordResetEmail | check-password | check-password | Inner |
|
|
212
|
+
| error | error | error | error | Inner |
|
|
213
|
+
| serviceNotAvailable | serviceNotAvailable | service-not-available | service-not-available | ServiceNotAvailable |
|
|
214
|
+
| tooManyRequests | tooManyRequests | too-many-requests | too-many-requests | ServiceNotAvailable |
|
|
215
|
+
| newsDetail | newsDetail | managed-content-sfdc_cms__news | news-detail | Inner |
|
|
216
|
+
|
|
217
|
+
**sfdc_cms__site**:
|
|
218
|
+
|
|
219
|
+
- {siteName}1
|
|
220
|
+
|
|
221
|
+
**sfdc_cms__themeLayout**:
|
|
222
|
+
|
|
223
|
+
- scopedHeaderAndFooter
|
|
224
|
+
- snaThemeLayout
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Content Type: sfdc_cms__brandingSet
|
|
2
|
+
|
|
3
|
+
**Use when** user explicitly requests creating/updating branding set.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- Core Principles
|
|
8
|
+
- Generation Guidelines
|
|
9
|
+
- Branding Property Patterns
|
|
10
|
+
|
|
11
|
+
## Core Principles
|
|
12
|
+
|
|
13
|
+
1. **Purpose**: Manage site-wide branding properties (colors, fonts, etc.).
|
|
14
|
+
2. **Site Association**: Branding sets are linked to the site configuration.
|
|
15
|
+
|
|
16
|
+
## Generation Guidelines
|
|
17
|
+
|
|
18
|
+
### 1. Directory Structure
|
|
19
|
+
|
|
20
|
+
1. **Location**: `digitalExperiences/site/[SITE_NAME]/sfdc_cms__brandingSet/[BRANDING_SET_NAME]/`
|
|
21
|
+
2. **Required Files**:
|
|
22
|
+
- `_meta.json` - Metadata file defining the API name and type
|
|
23
|
+
- `content.json` - Content file defining the configuration and layout
|
|
24
|
+
3. **Naming Convention**: Underscore-separated names (e.g., `Branding_Set`).
|
|
25
|
+
|
|
26
|
+
### 2. _meta.json Structure
|
|
27
|
+
|
|
28
|
+
The `_meta.json` file must contain:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"apiName": "[BRANDING_SET_NAME]",
|
|
33
|
+
"type": "sfdc_cms__brandingSet",
|
|
34
|
+
"path": "brandingSets"
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Rules**:
|
|
39
|
+
|
|
40
|
+
- `apiName`: Must match the directory name exactly (e.g., `Branding_Set`)
|
|
41
|
+
|
|
42
|
+
### 3. content.json Structure
|
|
43
|
+
|
|
44
|
+
The `content.json` file must contain:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"type": "sfdc_cms__brandingSet",
|
|
49
|
+
"title": "[DISPLAY_TITLE]",
|
|
50
|
+
"contentBody": {},
|
|
51
|
+
"urlName": "[URL_NAME]"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Field Definitions**:
|
|
56
|
+
|
|
57
|
+
- `type`: **Required**. Represents the content type. The only supported value is `"sfdc_cms__brandingSet"`.
|
|
58
|
+
- `title`: **Required**. Human-readable display title (e.g., Branding Set).
|
|
59
|
+
- Maximum length is **100 characters**.
|
|
60
|
+
- Must be **unique** within the space's brandingSet content items.
|
|
61
|
+
- `contentBody`: Include all `required` properties from `schemaDefinition`. Use `examplesOfContentType` for reference.
|
|
62
|
+
- `brandingSetType`: Represents whether the color palette is for the entire site or a specific section.
|
|
63
|
+
- `APP`: The branding set applies to the entire site. There can be only one branding set of this type.
|
|
64
|
+
- `SCOPED`: A `SCOPED` branding set can be applied only to a section component for granular overrides.
|
|
65
|
+
- `definitionName`: **Required**. Represents the name for the branding set used in the site or template’s theme.
|
|
66
|
+
- **Build Your Own (LWR)**: uses `talon-template-byo:branding`
|
|
67
|
+
- **Microsite**: uses `microsite-template-marketing:branding`
|
|
68
|
+
- `values`: **Required**. Represents a map (object) of branding values (colors, fonts, etc.) that can be applied to a site.
|
|
69
|
+
- **Format**: An object containing key-value pairs that represent branding-set values.
|
|
70
|
+
- **Patterns**: See the "Branding Property Patterns" section for details on value relationships.
|
|
71
|
+
- `urlName`: Lowercase with hyphens (e.g., `branding-set`)
|
|
72
|
+
|
|
73
|
+
**Rules**:
|
|
74
|
+
|
|
75
|
+
- Before any actions, *always* call `execute_metadata_action` to get the full schema and examples per the skill document.
|
|
76
|
+
|
|
77
|
+
### 4. Naming Conventions Summary
|
|
78
|
+
|
|
79
|
+
| Field | Format | Example |
|
|
80
|
+
|-------|--------|--------|
|
|
81
|
+
| Directory/apiName | Underscore-separated | `Branding_Set` |
|
|
82
|
+
| title | Human-readable | `Branding Set` |
|
|
83
|
+
| urlName | Lowercase-hyphens | `build-your-own-lwr` |
|
|
84
|
+
|
|
85
|
+
### 5. Generation Checklist
|
|
86
|
+
|
|
87
|
+
- [ ] Directory and `_meta.json` follow naming conventions (1, 2)
|
|
88
|
+
- [ ] `content.json` has all required fields (3)
|
|
89
|
+
- [ ] `contentBody` follows the schema provided by `execute_metadata_action`
|
|
90
|
+
|
|
91
|
+
## Branding Property Patterns
|
|
92
|
+
|
|
93
|
+
When generating or validating `contentBody.values`, follow these established patterns for consistency:
|
|
94
|
+
|
|
95
|
+
### 1. Color Scaling Patterns (The "Rule of 3")
|
|
96
|
+
|
|
97
|
+
Salesforce uses a numeric suffix system (`Color`, `Color1`, `Color2`, `Color3`) to create a tonal palette.
|
|
98
|
+
|
|
99
|
+
- **Darkening Trend**: As the suffix number increases, the color becomes progressively darker.
|
|
100
|
+
- Example: `BackgroundColor` (#ffffff) → `_BackgroundColor1` (#ebebeb) → `_BackgroundColor2` (#c2c2c2) → `_BackgroundColor3` (#858585).
|
|
101
|
+
- **Contrast/Foreground Colors**: Every base color has a corresponding `ForegroundColor` to ensure accessibility.
|
|
102
|
+
- **WCAG Compliance**: Ensure a color contrast ratio of at least **4.5:1** between the background and foreground colors for standard text.
|
|
103
|
+
- Dark base colors usually have white (#ffffff) foregrounds.
|
|
104
|
+
- Light base colors (like `_NeutralColor`) usually have black (#000000) foregrounds.
|
|
105
|
+
|
|
106
|
+
### 2. Font Size Hierarchy
|
|
107
|
+
|
|
108
|
+
- **Base vs. Small**: The `Small` variant is typically **75%** of the base size.
|
|
109
|
+
- Example: `BodyFontSize` (1rem) → `BodySmallFontSize` (0.75rem).
|
|
110
|
+
- **Heading Scale**: Headings follow a standard typographic scale:
|
|
111
|
+
- `HeadingExtraLarge`: 2.5rem
|
|
112
|
+
- `HeadingLarge`: 1.75rem (~70% of XL)
|
|
113
|
+
- `HeadingMedium`: 1.25rem (~50% of XL)
|
|
114
|
+
- `HeadingSmall`: 1.125rem
|
|
115
|
+
|
|
116
|
+
### 3. Design Token Mapping
|
|
117
|
+
|
|
118
|
+
Prefer using **DXP Design Tokens** over hardcoded values where possible:
|
|
119
|
+
|
|
120
|
+
- **Fonts**: Use `var(--dxp-s-html-font-family)` for base, body, and button fonts.
|
|
121
|
+
- **Brand Alignment**: Use `var(--dxp-g-brand)` for primary brand colors and links.
|
|
122
|
+
|
|
123
|
+
### 4. Component Consistency
|
|
124
|
+
|
|
125
|
+
- **Buttons**: Maintain consistent `BorderRadius` (e.g., 4px) across all button sizes (Small, Medium, Large).
|
|
126
|
+
- **Form Elements**: `FormElementLabelFontSize` and `FormElementTextFontSize` should match.
|
|
127
|
+
|
|
128
|
+
### 5. Spacing and Ratios
|
|
129
|
+
|
|
130
|
+
- **Device Ratios**: Desktop spacing (padding/spacers) is typically **1.33x** larger than mobile spacing.
|
|
131
|
+
- Example: `ColumnSpacerSizeDesktop` (1rem) vs `ColumnSpacerSizeMobile` (0.75rem).
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Content Type: sfdc_cms__route
|
|
2
|
+
|
|
3
|
+
**Use when** user explicitly requests creating a new page. Not for editing existing routes.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- Generation Guidelines
|
|
8
|
+
- Core Principles
|
|
9
|
+
- Directory Structure (All Routes)
|
|
10
|
+
- _meta.json Structure
|
|
11
|
+
- Part A: CUSTOM PAGES
|
|
12
|
+
- Part B: OBJECT PAGES
|
|
13
|
+
|
|
14
|
+
## Generation Guidelines
|
|
15
|
+
|
|
16
|
+
**PAGE TYPES**: These guidelines supports two types of pages:
|
|
17
|
+
|
|
18
|
+
1. **Custom Pages** - Single route pages for custom content (e.g., About Us). **Note**: Standard pages (e.g., Home, Login) come pre-built with the site and cannot be created.
|
|
19
|
+
2. **Object Pages** - Requires 3 routes: Detail, List, and Related List (e.g., Account, custom objects)
|
|
20
|
+
|
|
21
|
+
## Core Principles
|
|
22
|
+
|
|
23
|
+
1. **Purpose**: Generate new routes under the `sfdc_cms__route` directory.
|
|
24
|
+
2. **View Association**: Each route must reference a corresponding view in the `sfdc_cms__view` directory.
|
|
25
|
+
3. **CRITICAL**: The `routeType` in the route's `content.json` MUST exactly match the `viewType` in the corresponding view's `content.json`. This is a required validation rule.
|
|
26
|
+
|
|
27
|
+
## Directory Structure (All Routes)
|
|
28
|
+
|
|
29
|
+
1. **Location**: `digitalExperiences/site/[SITE_NAME]/sfdc_cms__route/[ROUTE_NAME]/`
|
|
30
|
+
2. **Required Files**:
|
|
31
|
+
- `_meta.json` - Metadata file defining the API name and type
|
|
32
|
+
- `content.json` - Content file defining the configuration and layout
|
|
33
|
+
3. **Naming Convention**: Underscore-separated names with "__c" suffix (About_Us__c, Account_Detail__c)
|
|
34
|
+
|
|
35
|
+
## _meta.json Structure (All Routes)
|
|
36
|
+
|
|
37
|
+
The `_meta.json` file must contain:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"apiName": "[ROUTE_NAME]",
|
|
42
|
+
"type": "sfdc_cms__route",
|
|
43
|
+
"path": "routes"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Rules**:
|
|
48
|
+
|
|
49
|
+
- `apiName`: Must match the route directory name exactly
|
|
50
|
+
- `type`: Always `"sfdc_cms__route"`
|
|
51
|
+
- `path`: Always `"routes"`
|
|
52
|
+
|
|
53
|
+
## Part A: CUSTOM PAGES
|
|
54
|
+
|
|
55
|
+
Use this section when creating single-route custom content pages.
|
|
56
|
+
|
|
57
|
+
### A.1. content.json Structure
|
|
58
|
+
|
|
59
|
+
The `content.json` file must contain:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"type": "sfdc_cms__route",
|
|
64
|
+
"title": "[DISPLAY_TITLE]",
|
|
65
|
+
"contentBody": {},
|
|
66
|
+
"urlName": "[URL_NAME]"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Field Definitions**:
|
|
71
|
+
|
|
72
|
+
- `type`: Always `"sfdc_cms__route"`
|
|
73
|
+
- `title`: Human-readable display title (e.g., About Us)
|
|
74
|
+
- `contentBody`: Include all `required` properties from `schemaDefinition`. Use `examplesOfContentType` for reference.
|
|
75
|
+
- `urlName`: URL identifier (lowercase with hyphens, e.g., `about-us`)
|
|
76
|
+
|
|
77
|
+
### A.2. Naming Conventions
|
|
78
|
+
|
|
79
|
+
For a page named "About Us":
|
|
80
|
+
|
|
81
|
+
| Field | Format | Example |
|
|
82
|
+
|-------|--------|--------|
|
|
83
|
+
| Directory Name | Underscore-separated + "__c" | `About_Us__c` |
|
|
84
|
+
| apiName | Same as directory | `About_Us__c` |
|
|
85
|
+
| title | Human-readable | `About Us` |
|
|
86
|
+
| contentBody.activeViewId | Underscore-separated (no __c) | `About_Us` |
|
|
87
|
+
| contentBody.routeType | "custom-" + lowercase hyphens | `custom-about-us` |
|
|
88
|
+
| contentBody.urlPrefix | Lowercase hyphens | `about-us` |
|
|
89
|
+
| urlName | Lowercase hyphens | `about-us` |
|
|
90
|
+
|
|
91
|
+
**CRITICAL**: `routeType` MUST exactly match `viewType` in the corresponding view's `content.json`.
|
|
92
|
+
|
|
93
|
+
### A.3. View Dependency
|
|
94
|
+
|
|
95
|
+
- Before creating a route, ensure the corresponding view exists in `sfdc_cms__view/[view_name]/`
|
|
96
|
+
- If the view doesn't exist, create it first following the view creation guidelines
|
|
97
|
+
|
|
98
|
+
### A.4. Generation Checklist
|
|
99
|
+
|
|
100
|
+
- [ ] Route directory and files created (see Directory Structure)
|
|
101
|
+
- [ ] `_meta.json` follows structure (see _meta.json Structure)
|
|
102
|
+
- [ ] `content.json` follows structure (see A.1)
|
|
103
|
+
- [ ] All naming conventions applied (see A.2)
|
|
104
|
+
- [ ] Corresponding view exists (see A.3)
|
|
105
|
+
|
|
106
|
+
## Part B: OBJECT PAGES
|
|
107
|
+
|
|
108
|
+
Use this section when creating object pages that require Detail, List, and Related List routes.
|
|
109
|
+
|
|
110
|
+
### B.1. Overview
|
|
111
|
+
|
|
112
|
+
Object pages require **three routes** to be created together:
|
|
113
|
+
|
|
114
|
+
1. **Detail Route** - Displays a single record
|
|
115
|
+
2. **List Route** - Displays a list of records
|
|
116
|
+
3. **Related List Route** - Displays related records for a parent record
|
|
117
|
+
|
|
118
|
+
**OBJECT TYPES**: Two types of Salesforce objects use different `routeType` formats:
|
|
119
|
+
|
|
120
|
+
| Object Type | routeType Format | Example |
|
|
121
|
+
|-------------|------------------|----------|
|
|
122
|
+
| **Standard** (Account, Contact) | `[type]-[keyPrefix]` | `detail-001`, `list-001`, `relatedlist-001` |
|
|
123
|
+
| **Custom** (Test_Object__c) | `[type]-[ObjectApiName]` | `detail-Test_Object__c`, `list-Test_Object__c` |
|
|
124
|
+
|
|
125
|
+
- **keyPrefix**: 3-character identifier unique to each standard object (Account=001, Contact=003)
|
|
126
|
+
- **ObjectApiName**: Custom object API name including the "__c" suffix
|
|
127
|
+
|
|
128
|
+
Obtain object information from the `objectList` MCP output:
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
[
|
|
132
|
+
["Label", "ApiName", "KeyPrefix", "IsCustom"]
|
|
133
|
+
]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### B.2. Required Routes
|
|
137
|
+
|
|
138
|
+
Create three directories under `sfdc_cms__route/`:
|
|
139
|
+
|
|
140
|
+
- `[OBJECT_NAME]_Detail__c/`
|
|
141
|
+
- `[OBJECT_NAME]_List__c/`
|
|
142
|
+
- `[OBJECT_NAME]_Related_List__c/`
|
|
143
|
+
|
|
144
|
+
### B.3. content.json Structure
|
|
145
|
+
|
|
146
|
+
Each route's `content.json` file must contain:
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"type": "sfdc_cms__route",
|
|
151
|
+
"title": "[OBJECT_NAME] [TYPE]",
|
|
152
|
+
"contentBody": {},
|
|
153
|
+
"urlName": "[object_name_lowercase]-[type]"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Field Definitions**:
|
|
158
|
+
|
|
159
|
+
- `type`: Always `"sfdc_cms__route"`
|
|
160
|
+
- `title`: Human-readable title (Account Detail, Account List)
|
|
161
|
+
- `contentBody`: Include all `required` properties from `schemaDefinition`. Use `examplesOfContentType` for reference.
|
|
162
|
+
- `contentBody.urlPrefix`: **CRITICAL**: Must be identical across all three object page views (Detail, List, and Related List) for the same object.
|
|
163
|
+
- `urlName`: Lowercase with hyphens (account-detail, account-list)
|
|
164
|
+
|
|
165
|
+
### B.4. Object Page Examples
|
|
166
|
+
|
|
167
|
+
Use `[ObjectName]` as the object name (Account, Test_Object) and `[IDENTIFIER]` as:
|
|
168
|
+
|
|
169
|
+
- **Standard objects**: keyPrefix (001 for Account, 003 for Contact)
|
|
170
|
+
- **Custom objects**: ObjectApiName (Test_Object__c)
|
|
171
|
+
|
|
172
|
+
#### content.json Template
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"type": "sfdc_cms__route",
|
|
177
|
+
"title": "[ObjectName] [Detail|List|Related List]",
|
|
178
|
+
"contentBody": {
|
|
179
|
+
"activeViewId": "[ObjectName]_[Detail|List|Related_List]",
|
|
180
|
+
"configurationTags": [],
|
|
181
|
+
"pageAccess": "UseParent",
|
|
182
|
+
"routeType": "[detail|list|relatedlist]-[IDENTIFIER]",
|
|
183
|
+
"urlPrefix": "[object-name-lowercase]"
|
|
184
|
+
},
|
|
185
|
+
"urlName": "[object-name-lowercase]-[detail|list|related-list]"
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Rules**:
|
|
190
|
+
|
|
191
|
+
- Before any actions, *always* call `execute_metadata_action` to get the full schema and examples per the skill document.
|
|
192
|
+
|
|
193
|
+
#### routeType Examples
|
|
194
|
+
|
|
195
|
+
| Route Type | Standard (Account) | Custom (Test_Object__c) |
|
|
196
|
+
|------------|-------------------|------------------------|
|
|
197
|
+
| Detail | `detail-001` | `detail-Test_Object__c` |
|
|
198
|
+
| List | `list-001` | `list-Test_Object__c` |
|
|
199
|
+
| Related List | `relatedlist-001` | `relatedlist-Test_Object__c` |
|
|
200
|
+
|
|
201
|
+
### B.5. Naming Conventions
|
|
202
|
+
|
|
203
|
+
For an object named "Account":
|
|
204
|
+
|
|
205
|
+
| Field | Detail | List | Related List |
|
|
206
|
+
|-------|--------|------|---------------|
|
|
207
|
+
| Directory Name | `Account_Detail__c` | `Account_List__c` | `Account_Related_List__c` |
|
|
208
|
+
| apiName | `Account_Detail__c` | `Account_List__c` | `Account_Related_List__c` |
|
|
209
|
+
| title | `Account Detail` | `Account List` | `Account Related List` |
|
|
210
|
+
| activeViewId | `Account_Detail` | `Account_List` | `Account_Related_List` |
|
|
211
|
+
| routeType (Standard) | `detail-[keyPrefix]` | `list-[keyPrefix]` | `relatedlist-[keyPrefix]` |
|
|
212
|
+
| routeType (Custom) | `detail-[ObjectApiName]` | `list-[ObjectApiName]` | `relatedlist-[ObjectApiName]` |
|
|
213
|
+
| urlPrefix | `account` | `account` | `account` |
|
|
214
|
+
| urlName | `account-detail` | `account-list` | `account-related-list` |
|
|
215
|
+
|
|
216
|
+
**CRITICAL**: `routeType` MUST exactly match `viewType` in the corresponding view's `content.json`.
|
|
217
|
+
|
|
218
|
+
### B.6. View Dependency
|
|
219
|
+
|
|
220
|
+
- Before creating routes, ensure corresponding views exist in `sfdc_cms__view/`:
|
|
221
|
+
- `[ObjectName]_Detail/`, `[ObjectName]_List/`, `[ObjectName]_Related_List/`
|
|
222
|
+
- `activeViewId` must match the view directory name exactly
|
|
223
|
+
- `routeType` must exactly match `viewType` in the corresponding view
|
|
224
|
+
- If views don't exist, create them first following the view creation guidelines
|
|
225
|
+
|
|
226
|
+
### B.7. Generation Checklist
|
|
227
|
+
|
|
228
|
+
- [ ] Object type determined (Standard or Custom) and identifier obtained (keyPrefix or ObjectApiName)
|
|
229
|
+
- [ ] All three routes created: **Detail**, **List**, and **Related List**, each with `_meta.json` and `content.json`
|
|
230
|
+
- [ ] All naming conventions applied (see B.5)
|
|
231
|
+
- [ ] Corresponding views exist (see B.6)
|
|
232
|
+
- [ ] `routeType` matches `viewType` for all three routes
|