/experience-ui-bundle-mfa-configure
Configure Multi-Factor Authentication (MFA) for Salesforce Experience Site users. TRIGGER when: user wants to enable MFA on a community, enforce two-factor authentication for portal users, add MFA to a React Experience Site / Web App, configure ForceTwoFactor permission, create
$ npx -y skills add forcedotcom/sf-skills --skill experience-ui-bundle-mfa-configure --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/experience-ui-bundle-mfa-configure
Context preview
The summary Claude sees to decide when to auto-load this skill.
Configure Multi-Factor Authentication (MFA) for Salesforce Experience Site users. TRIGGER when: user wants to enable MFA on a community, enforce two-factor authentication for portal users, add MFA to a React Experience Site / Web App, configure ForceTwoFactor permission, create
SKILL.md
experience-ui-bundle-mfa-configure.SKILL.mdname: experience-ui-bundle-mfa-configure
description: "Configure Multi-Factor Authentication (MFA) for Salesforce Experience Site users. TRIGGER when: user wants to enable MFA on a community, enforce two-factor authentication for portal users, add MFA to a React Experience Site / Web App, configure ForceTwoFactor permission, create MFA permission sets for external users, or troubleshoot MFA not appearing on login. Also triggers on: MFA community, two-factor portal, ForceTwoFactor permission set, MFA Experience Cloud, MFA React site, identity verification community, MFA experience site, ForceTwoFactor permissionset-meta.xml, MFA permissionset-meta.xml. DO NOT TRIGGER when: configuring org-wide MFA for internal users (that's Setup > Identity Verification), building custom login UI components (use experience-ui-bundle-frontend-generate), or generating generic permission sets without MFA context (use platform-permission-set-generate)."
metadata:
version: "1.0"
minApiVersion: "47.0"
cliTools:
- tool: ["sf"]
semver: ">=2.0.0"
- tool: ["jq"]
semver: ">=1.6"
accessCheck:
- type: "license"
value: "Experience Cloud (Customer Community / Customer Community Login)"
relatedSkills:
- "platform-permission-set-generate"
- "dx-org-permission-set-assign"
- "experience-ui-bundle-frontend-generate"
- "platform-metadata-deploy"Enabling MFA on Experience Sites
Enable Multi-Factor Authentication for Experience Site (Community) users by deploying the correct permission sets and verifying the platform-handled MFA challenge flow.
Scope
**In scope:**
- Deploying `ForceTwoFactor` permission set for community users
- Deploying `ApiEnabled` permission set (required for post-login API calls)
- Assigning permission sets to community users
- Troubleshooting MFA not appearing on login
- Customizing MFA/login page branding via NetworkBranding metadata
**Out of scope — delegate elsewhere:**
- Building custom login UI → `experience-ui-bundle-frontend-generate`
- Creating generic permission sets → `platform-permission-set-generate`
- Assigning permission sets (if already deployed) → `dx-org-permission-set-assign`
- Deploying metadata to org → `platform-metadata-deploy`
- Org-wide MFA for internal Salesforce users → Setup > Identity Verification (not a skill)
---
Prerequisites
Before using this skill, ensure the following are already in place:
| Prerequisite | Why | |-------------|-----| | **Experience Cloud site deployed and active** | MFA applies to community login — no site means no login flow to protect | | **Community users exist** (or will self-register) | Permission sets are assigned to community users; the site must have a community-enabled profile | | **Customer Community or Customer Community Login license enabled** | Required for community user profiles — without it, user creation and profile deployment will fail | | **Network/Site published at least once** | The site must be reachable at its URL for login + MFA challenge to appear |
> **Note:** This skill does NOT handle org setup, license provisioning, or Experience Cloud site creation. If these prerequisites are missing, set them up first via Setup > Digital Experiences > All Sites > New, or deploy your site's base app bundle.
---
Required Inputs
Gather before acting:
| Input | How to determine | |-------|-----------------| | **Target org** | Org alias for `sf` CLI commands | | **Site name** | Experience Site (Network) name — resolve via `SELECT Id, Name FROM Network` (see Step 1); this is the site/Network name, NOT the `uiBundles/` app name | | **Community users** | Which users or profiles to assign MFA to |
---
Critical Domain Knowledge
These facts are non-obvious and frequently cause confusion:
| Fact | Detail | |------|--------| | **No custom UI needed** | Platform renders the MFA challenge page — no React/LWC component required | | **ForceTwoFactor permission** | The ONLY way to enforce MFA for community users at login | | **Org Identity Verification checkbox** | Does NOT enforce MFA for community/portal users — only for internal users | | **vforcesite domain** | MFA challenge page is always served from the underlying Force.com Site domain — this is expected | | **Always deploy ApiEnabled** | React Experience Sites make post-login REST/Connect API calls (`sdk.graphql`, `sdk.fetch`); without `ApiEnabled` they fail with `API_DISABLED_FOR_ORG` | | **Social Login / SSO is separate from MFA** | React sites render configured Auth Providers via the built-in Social Login component (shipped in 264) — driven by Auth Provider setup, not by the MFA permission sets. See `references/social-login.md`. | | **Login-page branding works for React sites** | Since 264, the NetworkBranding "Login & Registration" section is shown in Setup for Site Containers, so logo/color/footer can be customized in the UI — Metadata API still works too. |
---
Workflow
Step 1: Resolve the target site (Network)
These are React Experience Sites, so **both** permission sets are always deployed — `ForceTwoFactor` (enforces MFA) and `ApiEnabled` (React sites make post-login API calls).
Resolve the Experience Site's real name and Id from the org — do **not** assume the `uiBundles/` app folder name is the site name. They are frequently different, and the site name must come from the org (the deploy target), not the local project. `<site-name>` and `<NETWORK_ID>` below come from here:
sf data query --target-org <org-alias> \
--query "SELECT Id, Name FROM Network" --json
- One site → use its `Name` as `<site-name>` and `Id` as `<NETWORK_ID>`.
- Multiple sites → ask the user which one (show the names).
- Zero sites → the site isn't deployed yet; stop and tell the user (see Prerequisites).
Step 2: Generate permission set files
First, detect the project's source directory:
jq -r '.packageDirectories[0].path + "/main/default"' sfdx-project.json
Use the result as `<s
Read more
name: experience-ui-bundle-mfa-configure
description: "Configure Multi-Factor Authentication (MFA) for Salesforce Experience Site users. TRIGGER when: user wants to enable MFA on a community, enforce two-factor authentication for portal users, add MFA to a React Experience Site / Web App, configure ForceTwoFactor permission, create MFA permission sets for external users, or troubleshoot MFA not appearing on login. Also triggers on: MFA community, two-factor portal, ForceTwoFactor permission set, MFA Experience Cloud, MFA React site, identity verification community, MFA experience site, ForceTwoFactor permissionset-meta.xml, MFA permissionset-meta.xml. DO NOT TRIGGER when: configuring org-wide MFA for internal users (that's Setup > Identity Verification), building custom login UI components (use experience-ui-bundle-frontend-generate), or generating generic permission sets without MFA context (use platform-permission-set-generate)."
metadata:
version: "1.0"
minApiVersion: "47.0"
cliTools:
- tool: ["sf"]
semver: ">=2.0.0"
- tool: ["jq"]
semver: ">=1.6"
accessCheck:
- type: "license"
value: "Experience Cloud (Customer Community / Customer Community Login)"
relatedSkills:
- "platform-permission-set-generate"
- "dx-org-permission-set-assign"
- "experience-ui-bundle-frontend-generate"
- "platform-metadata-deploy"Enabling MFA on Experience Sites
Enable Multi-Factor Authentication for Experience Site (Community) users by deploying the correct permission sets and verifying the platform-handled MFA challenge flow.
Scope
**In scope:**
- Deploying `ForceTwoFactor` permission set for community users
- Deploying `ApiEnabled` permission set (required for post-login API calls)
- Assigning permission sets to community users
- Troubleshooting MFA not appearing on login
- Customizing MFA/login page branding via NetworkBranding metadata
**Out of scope — delegate elsewhere:**
- Building custom login UI → `experience-ui-bundle-frontend-generate`
- Creating generic permission sets → `platform-permission-set-generate`
- Assigning permission sets (if already deployed) → `dx-org-permission-set-assign`
- Deploying metadata to org → `platform-metadata-deploy`
- Org-wide MFA for internal Salesforce users → Setup > Identity Verification (not a skill)
---
Prerequisites
Before using this skill, ensure the following are already in place:
| Prerequisite | Why | |-------------|-----| | **Experience Cloud site deployed and active** | MFA applies to community login — no site means no login flow to protect | | **Community users exist** (or will self-register) | Permission sets are assigned to community users; the site must have a community-enabled profile | | **Customer Community or Customer Community Login license enabled** | Required for community user profiles — without it, user creation and profile deployment will fail | | **Network/Site published at least once** | The site must be reachable at its URL for login + MFA challenge to appear |
> **Note:** This skill does NOT handle org setup, license provisioning, or Experience Cloud site creation. If these prerequisites are missing, set them up first via Setup > Digital Experiences > All Sites > New, or deploy your site's base app bundle.
---
Required Inputs
Gather before acting:
| Input | How to determine | |-------|-----------------| | **Target org** | Org alias for `sf` CLI commands | | **Site name** | Experience Site (Network) name — resolve via `SELECT Id, Name FROM Network` (see Step 1); this is the site/Network name, NOT the `uiBundles/` app name | | **Community users** | Which users or profiles to assign MFA to |
---
Critical Domain Knowledge
These facts are non-obvious and frequently cause confusion:
| Fact | Detail | |------|--------| | **No custom UI needed** | Platform renders the MFA challenge page — no React/LWC component required | | **ForceTwoFactor permission** | The ONLY way to enforce MFA for community users at login | | **Org Identity Verification checkbox** | Does NOT enforce MFA for community/portal users — only for internal users | | **vforcesite domain** | MFA challenge page is always served from the underlying Force.com Site domain — this is expected | | **Always deploy ApiEnabled** | React Experience Sites make post-login REST/Connect API calls (`sdk.graphql`, `sdk.fetch`); without `ApiEnabled` they fail with `API_DISABLED_FOR_ORG` | | **Social Login / SSO is separate from MFA** | React sites render configured Auth Providers via the built-in Social Login component (shipped in 264) — driven by Auth Provider setup, not by the MFA permission sets. See `references/social-login.md`. | | **Login-page branding works for React sites** | Since 264, the NetworkBranding "Login & Registration" section is shown in Setup for Site Containers, so logo/color/footer can be customized in the UI — Metadata API still works too. |
---
Workflow
Step 1: Resolve the target site (Network)
These are React Experience Sites, so **both** permission sets are always deployed — `ForceTwoFactor` (enforces MFA) and `ApiEnabled` (React sites make post-login API calls).
Resolve the Experience Site's real name and Id from the org — do **not** assume the `uiBundles/` app folder name is the site name. They are frequently different, and the site name must come from the org (the deploy target), not the local project. `<site-name>` and `<NETWORK_ID>` below come from here:
sf data query --target-org <org-alias> \ --query "SELECT Id, Name FROM Network" --json
- One site → use its `Name` as `<site-name>` and `Id` as `<NETWORK_ID>`.
- Multiple sites → ask the user which one (show the names).
- Zero sites → the site isn't deployed yet; stop and tell the user (see Prerequisites).
Step 2: Generate permission set files
First, detect the project's source directory:
jq -r '.packageDirectories[0].path + "/main/default"' sfdx-project.json
Use the result as `<s
This repository provides a curated collection of Salesforce agent skills for building applications.
Repo: forcedotcom/sf-skills
Other skills on sf-skills.
- /agentforce-generate
Build, modify, optimize, debug, and deploy agents with Agentforce Agent Script. TRIGGER when: user creates, modifies, optimizes, or asks about .agent files or aiAuthoringBundle metadata; changes agent behavior, responses, or conversation logic; designs agent actions, tools,
Open skill - /agentforce-observe
Analyze production Agentforce agent behavior using session traces and Data Cloud. TRIGGER when: user queries STDM session data or Data Cloud trace records; investigates production agent failures, regressions, or performance issues; asks about session traces, conversation logs,
Open skill - /agentforce-test
Write, run, and analyze structured test suites for Agentforce agents — functional AND security. TRIGGER when: user writes or modifies test spec YAML (AiEvaluationDefinition); runs sf agent test create, run, run-eval, or results commands; asks about test coverage strategy, metric
Open skill - /automation-flow-generate
Generate Salesforce Flows using the MCP tool execute_metadata_action. Use when the user asks to create, build, or generate a flow — including Screen, Autolaunched, Record-Triggered (before/after-save), Scheduled. Also trigger for flow-like requests such as \"when a record is
Open skill - /dx-code-analyzer-configure
Set up, configure, and troubleshoot Salesforce Code Analyzer for any project. Handles installation, prerequisite checks, diagnosing broken setups, creating and editing code-analyzer.yml overrides, engine-specific settings, ignore patterns, severity overrides, and CI/CD pipeline
Open skill - /dx-code-analyzer-custom-rule-create
Create custom Code Analyzer rules for Regex (pattern matching), PMD (XPath/AST for Apex and metadata XML), and ESLint (LWC/JavaScript/TypeScript). Use when users want to enforce coding standards, ban patterns, detect hardcoded values, govern metadata, or add rules not in the
Open skill

