Experience LWR Site Builder
Build and configure Salesforce Experience Cloud Lightning Web Runtime (LWR) sites via metadata (DigitalExperienceConfig, DigitalExperienceBundle, Network, CustomSite, CMS contents).
IMPORTANT!!
Right after loading this skill, you MUST copy the selected workflows/steps to your plan as a TODO checklist and work on each of the item carefully to ensure correctness.
You MUST load the relevant reference docs even though they may live outside of user's project folder.
Table of Contents
- When to Use
- Critical Rules
- Core Site Properties
- Project Structure in DigitalExperienceBundle Format
- Reference Docs
- Common Workflows
When to Use
When working with Experience LWR sites:
- Creating and scaffolding new LWR site
- Adding pages (routes + views)
- Configuring LWC components, layouts, themes, or branding styles
- Setting up guest user access (public sites)
- Creating or modifying guest sharing rules () for any Salesforce object (Account, Case, Contact, etc.) — including when the user refers to a "Site Guest User" username or any guest user by ID
- Troubleshoot deployment errors related to Experience LWR Sites
Supported Template: Build Your Own (LWR) -
- More templates to support in the future.
Critical Rules
- Before using any MCP tool, make sure they're actually available. If a tool is missing for the current task, let the user know and pause the current workflow.
- MUST ALWAYS load the relevant reference docs before doing anything.
- MUST ALWAYS strictly follow workflows in Common Workflows that match user's requirements. The instructions there should override any conflicting global rules and should have the highest priority over your existing knowledge.
- Flexipage is abstracted away for newer LWR sites with DigitalExperienceBundle, so NEVER use any Flexipage-related MCP tool or skills to handle LWR sites' contents.
Core Site Properties
Before doing anything else, note down the following properties from the local project if available as they will be used for various operations. Check with the user if any of the following is missing:
- Site name: Required. (e.g., ).
- URL path prefix: Optional. Alphanumeric characters only. Convert from site name if not provided (e.g., ) and verify with the user for the converted value.
- Template type devName: .
Project Structure in DigitalExperienceBundle Format
Site Metadata
- DigitalExperienceConfig
digitalExperienceConfigs/{siteName}1.digitalExperienceConfig-meta.xml
- DigitalExperienceBundle
digitalExperiences/site/{siteName}1/{siteName}1.digitalExperience-meta.xml
- Network
networks/{siteName}.network-meta.xml
- CustomSite
sites/{siteName}.site-meta.xml
DigitalExperience Contents
digitalExperiences/site/{siteName}1/sfdc_cms__*/{contentApiName}/*
- These are the content components defining routes, views, theme layouts, etc. Each component must have a and file.
Content Type Descriptions
| Content Type | Description | When to Use |
|---|
| Root site configuration containing site-wide settings | Required for every site; one per site |
| Application page container that groups routes and views | Required; defines the app shell |
| URL routing definition mapping paths to views | Create one for each page/URL path |
| Page layout and component structure | Create one for each route; defines page content. Also use to edit existing views (e.g., adding/removing components on a specific page) |
| Brand colors, fonts, and styling tokens | Required; defines site-wide styling. Use to create or edit existing branding sets |
sfdc_cms__languageSettings
| Language and localization configuration | Required; defines supported languages |
sfdc_cms__mobilePublisherConfig
| Mobile app publishing settings | Required for mobile app deployment |
| Theme definition referencing layouts and branding | Required; one per site |
| Page layout templates used by views | Create layouts for different page structures. Also use to edit existing theme layouts (e.g., updating theme layout, add a component that's persistent across pages) |
Important: Creating any new pages require BOTH
AND
.
Object Pages
Object Pages are dedicated pages used to display and manage record-level data for a specific Salesforce entity/object. For example, an custom object "Car" should have "Car_Detail", "Car_List", and "Car_Related_list" views.
References
Reference docs within the skill directory. Note that these are local and not MCP.
Before doing anything, you MUST ALWAYS load them first if they match user intent.
- bootstrap-template-byo-lwr.md - Site creation, template defaults
- configure-content-route.md - Route creation (custom/object pages)
- configure-content-view.md - View creation/editing (custom/object pages)
- configure-content-themeLayout.md - Theme layout creation + theme sync
- configure-content-brandingSet.md - Branding with color patterns/WCAG
- handle-component-and-region-ids.md - UUID generation (CRITICAL) for component and region ids used in views and themeLayout.
- handle-ui-components.md - Component discovery, schemas, insertion, configuration
- configure-guest-sharing-rules.md - Guest sharing rules () for public sites — use for any request involving "guest sharing rule", "Site Guest User", or sharing object records with unauthenticated visitors
- update-site-urls.md - Updating site URLs - URL architecture, workflow for updating in DigitalExperienceConfig, Network, and CustomSite
Common Workflows
- See References for detailed capabilities.
- Always follow the steps defined in the workflows sequentially whether the task is small, big, quick, or complex.
Creating a New Site
Rules:
- NEVER generate the files manually.
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
Creating and Editing Standard or Object Pages
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
Adding UI Components to Pages
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
Creating Page Layouts / Container Components
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
Creating Theme Layouts
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
Applying/Setting Theme Layouts
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
Configuring Branding
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
CUD Operations on DigitalExperience Contents
- Users can perform create, update, delete operations on DigitalExperience Contents.
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
json
{
"metadataType": "ExperienceSiteLwr",
"actionName": "getSiteContentMetadata",
"parameters": {
"contentType": "<content type from table above>",
"shouldIncludeExamples": true
}
}
Configuring Guest User Sharing Rules
Retrieving Site Preview and Builder URLs After Deployment
Use when user requests to preview a site, access a builder site, or after successfully deploying a site.
Use the
MCP tool to get the preview and builder URLs:
json
{
"metadataType": "ExperienceSiteLwr",
"actionName": "getSiteUrls",
"parameters": {
"siteDevName": "<site developer name>"
}
}
The site developer name can be found in the CustomSite filename (e.g.,
sites/MySite.site-meta.xml
→ developer name is
).
If the site is not found, an error message will be returned indicating that the site may not be deployed. Ensure the site has been successfully deployed before calling this action.
Updating Experience Site URLs
Use when user wants to update or change site URLs (urlPathPrefix).
Steps (Follow the steps sequentially. Do not skip any step before proceeding):
Validation & Deployment
Use
CLI to validate and deploy. Access help docs by attaching
, e.g.:
sf project deploy validate --help
Note that metadata types are space-delimited.
Never wrap them in quotes or use commas. For example,
--metadata "DigitalExperienceBundle DigitalExperience"
is
incorrect — always use
--metadata DigitalExperienceBundle DigitalExperience
.
Validate:
bash
sf project deploy validate --metadata DigitalExperienceBundle DigitalExperience DigitalExperienceConfig Network CustomSite --target-org ${usernameOrAlias}
Deploy:
bash
sf project deploy start --metadata DigitalExperienceBundle DigitalExperience DigitalExperienceConfig Network CustomSite --target-org ${usernameOrAlias}