Salesforce Component Standards
github/awesome-copilot
Quality standards for Salesforce Lightning Web Components (LWC), Aura components, and Visualforce pages.
A skill your agent uses when reviewing or implementing Lightning Data Service best practices in an LWC (.js, .html, .js-meta.xml) — UIAPI vs Apex, refreshApex / notifyRecordUpdateAvailable…
$ npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills experience-lds-best-practices-apply --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/experience-lds-best-practices-apply .claude/skills/experience-lds-best-practices-apply && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "experience-lds-best-practices-apply" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-lds-best-practices-apply into .claude/skills/experience-lds-best-practices-apply/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-lds-best-practices-apply", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-lds-best-practices-applyType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills experience-lds-best-practices-apply --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/experience-lds-best-practices-apply .agents/skills/experience-lds-best-practices-apply && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "experience-lds-best-practices-apply" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-lds-best-practices-apply into .agents/skills/experience-lds-best-practices-apply/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-lds-best-practices-apply", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills experience-lds-best-practices-apply --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/experience-lds-best-practices-apply .cursor/skills/experience-lds-best-practices-apply && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "experience-lds-best-practices-apply" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-lds-best-practices-apply into .cursor/skills/experience-lds-best-practices-apply/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-lds-best-practices-apply", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/forcedotcom/sf-skills.git --path skills/experience-lds-best-practices-apply--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills experience-lds-best-practices-apply --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/experience-lds-best-practices-apply .gemini/skills/experience-lds-best-practices-apply && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "experience-lds-best-practices-apply" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-lds-best-practices-apply into .gemini/skills/experience-lds-best-practices-apply/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-lds-best-practices-apply", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install forcedotcom/sf-skills experience-lds-best-practices-applyInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/experience-lds-best-practices-apply .github/skills/experience-lds-best-practices-apply && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "experience-lds-best-practices-apply" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-lds-best-practices-apply into .github/skills/experience-lds-best-practices-apply/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-lds-best-practices-apply", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install forcedotcom/sf-skills experience-lds-best-practices-apply --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/experience-lds-best-practices-apply .opencode/skills/experience-lds-best-practices-apply && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "experience-lds-best-practices-apply" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/experience-lds-best-practices-apply into .opencode/skills/experience-lds-best-practices-apply/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "experience-lds-best-practices-apply", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
experience-lds-best-practices-applyA skill your agent uses when reviewing or implementing Lightning Data Service best practices in an LWC (.js, .html, .js-meta.xml) — UIAPI vs Apex, refreshApex / notifyRecordUpdateAvailable…
Experience Lds Best Practices Apply is an agent skill from forcedotcom/sf-skills. Use when reviewing or implementing Lightning Data Service best practices in an LWC (.js, .html, .js-meta.xml) — UIAPI vs Apex, refreshApex / notifyRecordUpdateAvailable, @salesforce/schema imports, LDS record-form data patterns. TRIGGER on "apply LDS best practices to this LWC", "review this LWC for LDS best-practice issues", "review this component for Lightning Data Service issues", "UIAPI or Apex for this data?", "fix stale data after record save", "sync LDS cache", "use @salesforce/schema for field names"…
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/adapter-apis.md`, `references/lds-data-consistency.md` and `references/lds-expert.md`).
It sits in Frontend & Design, covering CRM management, Design systems and Design tokens. It works with Salesforce and GraphQL. The repository describes itself as: Salesforce's curated collection of agent skills for building applications. Optimized for Agentforce Vibes, compatible with all AI tools. The licence is Apache-2.0.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5164d9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript, markdown and html).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Experience Lds Best Practices Apply loads about 3.4k tokens when it runs, and up to ~31k if it reads all its reference files. Until then it costs about 254 tokens; SKILL.md has 1,171 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from forcedotcom/sf-skills at commit e5164d9, republished under its Apache-2.0 licence (© forcedotcom). 1,171 words, ~3,391 tokens.
.claude/skills/experience-lds-best-practices-apply/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.<!-- adk-managed-skill -->
Apply the Lightning Data Service guidelines to a Lightning Web Component. Three pillars: data consistency, referential integrity, and UIAPI vs Apex. Focused on the UI API path — GraphQL and upstream data-requirements analysis are handled out-of-band.
getRecord, getRecords, createRecord, updateRecord, deleteRecord, base record form components, or Apex.@salesforce/schema/...) to replace hard-coded field/object names.Do NOT use this skill for:
design-systems-slds-apply).@salesforce/schema imports (Setup → Object Manager → <Object> → Details → API Name; or, when GraphQL serves the read, an SDL pulled from the target org).refreshApex, notifyRecordUpdateAvailable, wire result propagation.@salesforce/schema imports, field constants, object-name resolution, and their propagation through refactors.Per-adapter API reference — references/adapter-apis.md holds Syntax / Parameters / Returns / Usage for every UI API adapter, grouped by family (uiRecordApis, uiListsApis, uiRelatedListApis, uiObjectInfoApis). Each adapter is a # `<name>` block; grep for the backticked name (e.g. # `getRecord`) to jump to its entry. Read this before wiring an adapter; do not paraphrase from memory.
Type catalog — references/wire-adapter-types.md holds every type the adapters return (Record, ObjectInfo, FieldValue, etc.), grouped by category and rendered with the same formatter the legacy MCP tool used. Grep for ## <TypeName> to jump to a specific entry.
Read the applicable reference before editing code.
refreshApex(wiredResult) or notifyRecordUpdateAvailable([{ recordId }]) after any mutation.@salesforce/schema — not string literals. This protects the component against metadata renames.lightning-record-form, lightning-record-edit-form, lightning-record-view-form) for single-record UIs. They ship with validation, SLDS styling, accessibility, and field-level security.Answer Yes / No to each. Any Yes triggers a refactor.
lightning-record-form, lightning-record-edit-form, or lightning-record-view-form would suffice?record.data.fields.Name.value without schema imports?@salesforce/schema import even though it interacts with Salesforce fields?getRecord, updateRecord, or a base record form could handle?List every data operation in the component:
@wire(getRecord, …), @wire(getRecords, …), @wire(someApexMethod, …)).updateRecord, createRecord, deleteRecord, Apex imperative).Walk sections §1–§4 in order. For each section, decide whether it applies to the component under review and record the result in the report. Use the shape below — every section must appear exactly once, either as an issue (violation) under ## LDS Best Practices, or as a compliant entry under ## Sections checked (no issue). Finish with a ## Summary line listing counts and a one-paragraph narrative.
Report shape:
## LDS Best Practices
- §<N> <section title> — <file>:<lines>
Issue: <what is wrong, specifically citing the pattern in the code>
Fix: <the corrective change, naming the exact import / API to use>
Applied: <yes | no>
## Sections checked (no issue)
- §<N> <section title> — <file>:<lines>
Status: Compliant (no action).
Evidence: <what in the code makes this section compliant — cite lines, imports, and the base component or schema token being used>
## Summary
- <X> issue(s) found; <Y> fixed; <Z> deferred.
- <one-paragraph narrative of the review — what the component does, why the flagged issues matter, and why the compliant sections are compliant.>Rules for producing this report:
## Sections checked (no issue).## LDS Best Practices, only list actual violations. If there are no violations, write "No best-practice issues found." as the first line, then move every section to the compliant block.For every hard-coded API name:
import ACCOUNT_OBJECT from '@salesforce/schema/Account';
import NAME_FIELD from '@salesforce/schema/Account.Name';
import INDUSTRY_FIELD from '@salesforce/schema/Account.Industry';Use these constants everywhere the object or field is referenced — wire configs, @wire field arrays, getFieldValue(record, NAME_FIELD) calls, and base-component object-api-name / fields attributes.
Full rules: references/lds-referential-integrity.md.
updateRecord, createRecord, deleteRecord), dispatch a refresh:import { updateRecord, getRecord } from 'lightning/uiRecordApi';
import { refreshApex } from '@salesforce/apex';
async handleSave() {
await updateRecord({ fields: { Id: this.recordId, Name: this.name } });
await refreshApex(this.wiredRecord);
}import { notifyRecordUpdateAvailable } from 'lightning/uiRecordApi';
await notifyRecordUpdateAvailable([{ recordId: this.recordId }]);this.wiredRecord = result; return result.data;) so refreshApex can target them.Full rules: references/lds-data-consistency.md.
getRecord (with fields + schema imports).updateRecord or lightning-record-edit-form.createRecord or lightning-record-form with mode="edit".getRelatedListRecords.getPicklistValues.getObjectInfo / getObjectInfos.When in doubt about adapter shape, grep references/adapter-apis.md for the backticked adapter name (e.g. # `getRecord`) — it has the authoritative parameters, returns, and usage. For @salesforce/schema/<Object>.<Field> paths, confirm the exact API name in Setup → Object Manager → <Object> → Details → API Name. For unfamiliar return types, grep references/wire-adapter-types.md for the type name.
refreshApex called exactly once per mutation).experience-lwc-generate — when the review surfaces the need to regenerate rather than patch the component.design-systems-slds-apply — for SLDS class / design-token cleanup surfaced by the LDS review.Base-component first (preferred)
<template>
<lightning-record-form
record-id={recordId}
object-api-name="Account"
fields={fields}
mode="edit"
onsuccess={handleSuccess}>
</lightning-record-form>
</template>import { LightningElement, api } from 'lwc';
import NAME_FIELD from '@salesforce/schema/Account.Name';
import INDUSTRY_FIELD from '@salesforce/schema/Account.Industry';
export default class AccountEditor extends LightningElement {
@api recordId;
fields = [NAME_FIELD, INDUSTRY_FIELD];
handleSuccess() {
this.dispatchEvent(new CustomEvent('saved'));
}
}Imperative update with refresh
import { LightningElement, api, wire } from 'lwc';
import { getRecord, updateRecord } from 'lightning/uiRecordApi';
import { refreshApex } from '@salesforce/apex';
import ACCOUNT_NAME from '@salesforce/schema/Account.Name';
export default class RenameAccount extends LightningElement {
@api recordId;
wiredRecord;
@wire(getRecord, { recordId: '$recordId', fields: [ACCOUNT_NAME] })
wired(result) {
this.wiredRecord = result;
}
async handleRename(event) {
await updateRecord({ fields: { Id: this.recordId, Name: event.detail } });
await refreshApex(this.wiredRecord);
}
}@salesforce/schema/ imports — they should cover every field/object the component references.'Account', 'Name') — none should appear in wire configs or field arrays.refreshApex, notifyRecordUpdateAvailable, or a base form handling it internally).© forcedotcom, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in skills/experience-lds-best-practices-apply of forcedotcom/sf-skills.
Open the folder on GitHubat commit e5164d9
Experience Lds Best Practices Apply next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Experience Lds Best Practices Apply this skillforcedotcom/sf-skills | 1.1k | — | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Salesforce Component Standardsgithub/awesome-copilot | 40k | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Extract DesignManavarya09/design-extract | 4.2k | — | ~786 | Automated safety check: Notes | MIT | |
| Material Design 3 UI/UX Guideskydashnet/material-design-3-ui-skill | 135 | — | ~3k | Automated safety check: Pass | MIT | |
| UI Component Spec Designerplugin87/ux-ui-agent-skills | 1.6k | — | ~2.8k | Automated safety check: Pass | MIT | |
| UI Design Systemtry-works/role-model | 118 | — | ~5k | Automated safety check: Pass | MIT |
github/awesome-copilot
Quality standards for Salesforce Lightning Web Components (LWC), Aura components, and Visualforce pages.
Manavarya09/design-extract
Extract the full design language from any website URL. An agent skill from Manavarya09/design-extract.
skydashnet/material-design-3-ui-skill
Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.
plugin87/ux-ui-agent-skills
Writes a complete UI component spec with anatomy, variants, sizes, eight interaction states, design-token mapping and accessibility notes before or alongside code.
try-works/role-model
React UI component systems with TailwindCSS + Radix + shadcn/ui.
Jakeschincariol/replica-skill
Rebuilds an app's design system for a clone: colour roles, type scale, spacing, radius, shadows and every component with its states, as design tokens plus component specs, with original assets…
forcedotcom/sf-skills
Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA plugins.
forcedotcom/sf-skills
Data Cloud 360° view of a single Agentforce session. An agent skill from forcedotcom/sf-skills.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply SLDS-compliant UI using the correct blueprints, styling hooks, utility classes, and icons.
forcedotcom/sf-skills
Lightning Web Components with PICKLES methodology and 165-point scoring.
Works with
Categories
A skill your agent uses when reviewing or implementing Lightning Data Service best practices in an LWC (.js, .html, .js-meta.xml) — UIAPI vs Apex, refreshApex / notifyRecordUpdateAvailable…. Experience Lds Best Practices Apply is an agent skill from forcedotcom/sf-skills.xml) — UIAPI vs Apex, refreshApex / notifyRecordUpdateAvailable, @salesforce/schema imports, LDS record-form data patterns.
Experience Lds Best Practices Apply fits situations like: implementing Lightning Data Service best practices in an LWC (.js; .js-meta.xml) — UIAPI vs Apex; refreshApex / notifyRecordUpdateAvailable; @salesforce/schema imports.
Run `npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a claude-code`. Or copy the skill folder (skills/experience-lds-best-practices-apply in forcedotcom/sf-skills) into .claude/skills/experience-lds-best-practices-apply in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a codex`. Or copy the skill folder (skills/experience-lds-best-practices-apply in forcedotcom/sf-skills) into .agents/skills/experience-lds-best-practices-apply in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forcedotcom/sf-skills --skill experience-lds-best-practices-apply -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/experience-lds-best-practices-apply, .gemini/skills/experience-lds-best-practices-apply, .github/skills/experience-lds-best-practices-apply and .opencode/skills/experience-lds-best-practices-apply in your project.
SKILL.md names no scripts, command-line tools or credentials: Experience Lds Best Practices Apply is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Experience Lds Best Practices Apply is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 28k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Experience Lds Best Practices Apply: Salesforce Component Standards (github/awesome-copilot, 40k stars), Extract Design (Manavarya09/design-extract, 4.2k stars), Material Design 3 UI/UX Guide (skydashnet/material-design-3-ui-skill, 135 stars) and UI Component Spec Designer (plugin87/ux-ui-agent-skills, 1.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
forcedotcom (a GitHub organization) maintains it in forcedotcom/sf-skills, which has 1,065 GitHub stars. The repository holds 251 skills in this directory. The repository was last updated on October 7, 2026.
Source: forcedotcom/sf-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.