diff --git a/skills/generating-experience-lwr-site/SKILL.md b/skills/generating-experience-lwr-site/SKILL.md index 6149676..b2e8bc9 100644 --- a/skills/generating-experience-lwr-site/SKILL.md +++ b/skills/generating-experience-lwr-site/SKILL.md @@ -102,6 +102,7 @@ Before doing anything, you **MUST ALWAYS** load them first if they match user in - [handle-component-and-region-ids.md](docs/handle-component-and-region-ids.md) - **UUID generation (CRITICAL)** for component and region ids used in views and themeLayout. - [handle-ui-components.md](docs/handle-ui-components.md) - Component discovery, schemas, insertion, configuration - [configure-guest-sharing-rules.md](docs/configure-guest-sharing-rules.md) - **Guest sharing rules** (`sharingGuestRules`) 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](docs/update-site-urls.md) - **Updating site URLs** - URL architecture, workflow for updating `urlPathPrefix` in DigitalExperienceConfig, Network, and CustomSite ## Common Workflows @@ -213,93 +214,12 @@ If the site is not found, an error message will be returned indicating that the ### Updating Experience Site URLs -Experience sites have a three-component architecture with two distinct URL patterns. Understanding this structure is critical when updating site URLs. +**Use when** user wants to update or change site URLs (urlPathPrefix). -#### Architecture Overview +**Steps** (Follow the steps sequentially. Do not skip any step before proceeding): -Every Salesforce Experience Site consists of three components: - -1. **Network** (metadata: `Network`) - Network configuration -2. **ChatterNetwork Site** (metadata: `CustomSite`) - Authentication endpoints and core site services -3. **ChatterNetworkPicasso Site** (metadata: `DigitalExperienceConfig` + `DigitalExperienceBundle`) - Customer-facing pages and content - -#### URL Pattern - -These three components use **two different URLs**: - -- **Primary URL** (ChatterNetworkPicasso): Used for customer-facing pages - - Defined in: `DigitalExperienceConfig` → `` - - Example: `mysite` - -- **Secondary URL** (Network + CustomSite): Used for authentication endpoints and other services - - Defined in: `Network` → `` AND `CustomSite` → `` - - Example: `mysitevforcesite` - - **Must be synchronized** - both files must have identical values - -By default, Salesforce differentiates these URLs by appending `vforcesite` suffix to the Network/CustomSite URL. - -#### URL Update Workflow - -When updating site URLs, follow this workflow: - -**Step 1: Discover All URL References** - -Use `search_files` to find all occurrences of `urlPathPrefix` in the project: - -```bash -search_files --path force-app/main/default --regex "urlPathPrefix" --file-pattern "*.xml" -``` - -**Step 2: Identify URL Groups** - -Determine which files belong to which URL group: - -- **Primary URL Group**: `DigitalExperienceConfig` -- **Secondary URL Group**: `Network` AND `CustomSite` - -**Step 3: Update URLs Consistently** - -Update the `` value in each file: - -- **DigitalExperienceConfig**: Update to new primary URL -- **Network**: Update to new secondary URL (typically primary URL + `vforcesite`) -- **CustomSite**: Update to **same value as Network** (must be synchronized) - -**Step 4: Validate Naming Convention** - -Ensure URL values follow best practices: -- Use lowercase letters only -- Avoid special characters except hyphens where appropriate -- Keep URLs concise and meaningful - -**Step 5: Verify Consistency** - -Before deploying, confirm: -- [ ] Primary URL in `DigitalExperienceConfig` is set correctly -- [ ] Secondary URL in `Network` matches `CustomSite` exactly -- [ ] URLs are properly differentiated (typically via suffix) -- [ ] All URL values follow naming conventions - -#### Example URL Configuration - -``` -ChatterNetworkPicasso Site (Primary): - DigitalExperienceConfig: bestsupport - -Network + ChatterNetwork Site (Secondary): - Network: bestsupportvforcesite - CustomSite: bestsupportvforcesite -``` - -#### Common Pitfalls to Avoid - -❌ **Don't** update only one or two files - all three must be updated -❌ **Don't** use different values in Network and CustomSite -❌ **Don't** use the same URL for both Primary and Secondary groups -❌ **Don't** skip the discovery step with `search_files` -✅ **Do** use `search_files` to find all occurrences first -✅ **Do** maintain URL differentiation between the two groups -✅ **Do** follow lowercase naming conventions +- [ ] MUST read [update-site-urls.md](docs/update-site-urls.md) to understand the three-component architecture and URL update workflow +- [ ] Follow the step-by-step workflow in the doc to update URLs consistently across all three components (DigitalExperienceConfig, Network, CustomSite) ### Validation & Deployment diff --git a/skills/generating-experience-lwr-site/docs/update-site-urls.md b/skills/generating-experience-lwr-site/docs/update-site-urls.md new file mode 100644 index 0000000..9a93f38 --- /dev/null +++ b/skills/generating-experience-lwr-site/docs/update-site-urls.md @@ -0,0 +1,89 @@ +# Updating Experience Site URLs + +Experience sites have a three-component architecture with two distinct URL patterns. Understanding this structure is critical when updating site URLs. + +## Architecture Overview + +Every Salesforce Experience Site consists of three components: + +1. **Network** (metadata: `Network`) - Network configuration +2. **ChatterNetwork Site** (metadata: `CustomSite`) - Authentication endpoints and core site services +3. **ChatterNetworkPicasso Site** (metadata: `DigitalExperienceConfig` + `DigitalExperienceBundle`) - Customer-facing pages and content + +## URL Pattern + +These three components use **two different URLs**: + +- **Primary URL** (ChatterNetworkPicasso): Used for customer-facing pages + - Defined in: `DigitalExperienceConfig` → `` + - Example: `mysite` + +- **Secondary URL** (Network + CustomSite): Used for authentication endpoints and other services + - Defined in: `Network` → `` AND `CustomSite` → `` + - Example: `mysitevforcesite` + - **Must be synchronized** - both files must have identical values + +By default, Salesforce differentiates these URLs by appending `vforcesite` suffix to the Network/CustomSite URL. + +## URL Update Workflow + +When updating site URLs, follow this workflow: + +### Step 1: Discover All URL References + +Use `search_files` to find all occurrences of `urlPathPrefix` in the project: + +```bash +search_files --path force-app/main/default --regex "urlPathPrefix" --file-pattern "*.xml" +``` + +### Step 2: Identify URL Groups + +Determine which files belong to which URL group: + +- **Primary URL Group**: `DigitalExperienceConfig` +- **Secondary URL Group**: `Network` AND `CustomSite` + +### Step 3: Update URLs Consistently + +Update the `` value in each file: + +- **DigitalExperienceConfig**: Update to new primary URL +- **Network**: Update to new secondary URL (typically primary URL + `vforcesite`) +- **CustomSite**: Update to **same value as Network** (must be synchronized) + +### Step 4: Validate Naming Convention + +Ensure URL values follow best practices: +- Use lowercase letters only +- Avoid special characters except hyphens where appropriate +- Keep URLs concise and meaningful + +### Step 5: Verify Consistency + +Before deploying, confirm: +- [ ] Primary URL in `DigitalExperienceConfig` is set correctly +- [ ] Secondary URL in `Network` matches `CustomSite` exactly +- [ ] URLs are properly differentiated (typically via suffix) +- [ ] All URL values follow naming conventions + +## Example URL Configuration + +``` +ChatterNetworkPicasso Site (Primary): + DigitalExperienceConfig: bestsupport + +Network + ChatterNetwork Site (Secondary): + Network: bestsupportvforcesite + CustomSite: bestsupportvforcesite +``` + +## Common Pitfalls to Avoid + +❌ **Don't** update only one or two files - all three must be updated +❌ **Don't** use different values in Network and CustomSite +❌ **Don't** use the same URL for both Primary and Secondary groups +❌ **Don't** skip the discovery step with `search_files` +✅ **Do** use `search_files` to find all occurrences first +✅ **Do** maintain URL differentiation between the two groups +✅ **Do** follow lowercase naming conventions \ No newline at end of file diff --git a/skills/generating-ui-bundle-site/SKILL.md b/skills/generating-ui-bundle-site/SKILL.md index db4507d..f2d0a2a 100644 --- a/skills/generating-ui-bundle-site/SKILL.md +++ b/skills/generating-ui-bundle-site/SKILL.md @@ -51,6 +51,8 @@ Use the default templates in the docs below. Values in `{braces}` are resolved p | DigitalExperienceBundle | [configure-metadata-digital-experience-bundle.md](docs/configure-metadata-digital-experience-bundle.md) | | DigitalExperience (sfdc_cms__site) | [configure-metadata-digital-experience.md](docs/configure-metadata-digital-experience.md) | +For URL updates, see [update-site-urls.md](docs/update-site-urls.md). + ### Execution Note for Step 3: Load and use the docs - Agents MUST read the full contents of each docs/*.md file referenced in Step 3 before attempting to populate metadata fields. - Use your platform's file-read tool (for example, `read_file`) to load these files in full, then perform placeholder substitution for values in `{braces}` using the resolved properties from Step 1. @@ -81,90 +83,8 @@ sf project deploy validate --metadata Network CustomSite DigitalExperienceConfig ### Updating Experience Site URLs -Experience sites have a three-component architecture with two distinct URL patterns. Understanding this structure is critical when updating site URLs. +**Use when** user wants to update or change site URLs (urlPathPrefix). -#### Architecture Overview - -Every Salesforce Experience Site consists of three components: - -1. **Network** (metadata: `Network`) - Network configuration -2. **ChatterNetwork Site** (metadata: `CustomSite`) - Legacy site and proxy core site services -3. **ChatterNetworkPicasso Site** (metadata: `DigitalExperienceConfig` + `DigitalExperienceBundle`) - Customer-facing pages and content - -#### URL Pattern - -These three components use **two different URLs**: - -- **Primary URL** (ChatterNetworkPicasso): Used for customer-facing pages - - Defined in: `DigitalExperienceConfig` → `` - - Example: `mysite` - -- **Secondary URL** (Network + CustomSite): Used for legacy authentication endpoints and other services - - Defined in: `Network` → `` AND `CustomSite` → `` - - Example: `mysitevforcesite` - - **Must be synchronized** - both files must have identical values - -By default, Salesforce differentiates these URLs by appending `vforcesite` suffix to the Network/CustomSite URL. - -#### URL Update Workflow - -When updating site URLs, follow this workflow: - -**Step 1: Discover All URL References** - -Use `search_files` to find all occurrences of `urlPathPrefix` in the project: - -```bash -search_files --path force-app/main/default --regex "urlPathPrefix" --file-pattern "*.xml" -``` - -**Step 2: Identify URL Groups** - -Determine which files belong to which URL group: - -- **Primary URL Group**: `DigitalExperienceConfig` -- **Secondary URL Group**: `Network` AND `CustomSite` - -**Step 3: Update URLs Consistently** - -Update the `` value in each file: - -- **DigitalExperienceConfig**: Update to new primary URL -- **Network**: Update to new secondary URL (typically primary URL + `vforcesite`) -- **CustomSite**: Update to **same value as Network** (must be synchronized) - -**Step 4: Validate Naming Convention** - -Ensure URL values follow best practices: -- Use lowercase letters only -- Avoid special characters except hyphens where appropriate -- Keep URLs concise and meaningful - -**Step 5: Verify Consistency** - -Before deploying, confirm: -- [ ] Primary URL in `DigitalExperienceConfig` is set correctly -- [ ] Secondary URL in `Network` matches `CustomSite` exactly -- [ ] URLs are properly differentiated (typically via suffix) -- [ ] All URL values follow naming conventions - -#### Example URL Configuration - -``` -ChatterNetworkPicasso Site (Primary): - DigitalExperienceConfig: bestsupport - -Network + ChatterNetwork Site (Secondary): - Network: bestsupportvforcesite - CustomSite: bestsupportvforcesite -``` - -#### Common Pitfalls to Avoid - -❌ **Don't** update only one or two files - all three must be updated -❌ **Don't** use different values in Network and CustomSite -❌ **Don't** use the same URL for both Primary and Secondary groups -❌ **Don't** skip the discovery step with `search_files` -✅ **Do** use `search_files` to find all occurrences first -✅ **Do** maintain URL differentiation between the two groups -✅ **Do** follow lowercase naming conventions \ No newline at end of file +**Steps**: +- [ ] Read [update-site-urls.md](docs/update-site-urls.md) to understand the three-component architecture and URL update workflow +- [ ] Follow the step-by-step workflow in the doc to update URLs consistently across all three components (DigitalExperienceConfig, Network, CustomSite) diff --git a/skills/generating-ui-bundle-site/docs/update-site-urls.md b/skills/generating-ui-bundle-site/docs/update-site-urls.md new file mode 100644 index 0000000..36d82ba --- /dev/null +++ b/skills/generating-ui-bundle-site/docs/update-site-urls.md @@ -0,0 +1,89 @@ +# Updating Experience Site URLs + +Experience sites have a three-component architecture with two distinct URL patterns. Understanding this structure is critical when updating site URLs. + +## Architecture Overview + +Every Salesforce Experience Site consists of three components: + +1. **Network** (metadata: `Network`) - Network configuration +2. **ChatterNetwork Site** (metadata: `CustomSite`) - Legacy site and proxy core site services +3. **ChatterNetworkPicasso Site** (metadata: `DigitalExperienceConfig` + `DigitalExperienceBundle`) - Customer-facing pages and content + +## URL Pattern + +These three components use **two different URLs**: + +- **Primary URL** (ChatterNetworkPicasso): Used for customer-facing pages + - Defined in: `DigitalExperienceConfig` → `` + - Example: `mysite` + +- **Secondary URL** (Network + CustomSite): Used for legacy authentication endpoints and other services + - Defined in: `Network` → `` AND `CustomSite` → `` + - Example: `mysitevforcesite` + - **Must be synchronized** - both files must have identical values + +By default, Salesforce differentiates these URLs by appending `vforcesite` suffix to the Network/CustomSite URL. + +## URL Update Workflow + +When updating site URLs, follow this workflow: + +### Step 1: Discover All URL References + +Use `search_files` to find all occurrences of `urlPathPrefix` in the project: + +```bash +search_files --path force-app/main/default --regex "urlPathPrefix" --file-pattern "*.xml" +``` + +### Step 2: Identify URL Groups + +Determine which files belong to which URL group: + +- **Primary URL Group**: `DigitalExperienceConfig` +- **Secondary URL Group**: `Network` AND `CustomSite` + +### Step 3: Update URLs Consistently + +Update the `` value in each file: + +- **DigitalExperienceConfig**: Update to new primary URL +- **Network**: Update to new secondary URL (typically primary URL + `vforcesite`) +- **CustomSite**: Update to **same value as Network** (must be synchronized) + +### Step 4: Validate Naming Convention + +Ensure URL values follow best practices: +- Use lowercase letters only +- Avoid special characters except hyphens where appropriate +- Keep URLs concise and meaningful + +### Step 5: Verify Consistency + +Before deploying, confirm: +- [ ] Primary URL in `DigitalExperienceConfig` is set correctly +- [ ] Secondary URL in `Network` matches `CustomSite` exactly +- [ ] URLs are properly differentiated (typically via suffix) +- [ ] All URL values follow naming conventions + +## Example URL Configuration + +``` +ChatterNetworkPicasso Site (Primary): + DigitalExperienceConfig: bestsupport + +Network + ChatterNetwork Site (Secondary): + Network: bestsupportvforcesite + CustomSite: bestsupportvforcesite +``` + +## Common Pitfalls to Avoid + +❌ **Don't** update only one or two files - all three must be updated +❌ **Don't** use different values in Network and CustomSite +❌ **Don't** use the same URL for both Primary and Secondary groups +❌ **Don't** skip the discovery step with `search_files` +✅ **Do** use `search_files` to find all occurrences first +✅ **Do** maintain URL differentiation between the two groups +✅ **Do** follow lowercase naming conventions \ No newline at end of file