npx skills add ...
npx skills add forcedotcom/sf-skills --skill experience-lwc-base-components-integrate
Pick the right Lightning Base Component (`lightning-*`) for a given UI task, retrieve its full API (props, methods, events, slots) from the bundled per-component reference, and wire it into an LWC (LWC `.html`, `.js`, and `.css` files) without breaking SLDS. Use this skill when users say \"I need a Lightning modal / datatable / combobox / record form\", ask which `lightning-*` component fits a use case, want a shortlist of LBC candidates, are about to hand-roll a UI that a base component already provides, or are editing an LWC bundle's `.html` / `.js` / `.css` and need to select or wire a base component. Also triggers on \"Lightning base component\", \"LBC\", \"lightning-combobox\", \"lightning-datatable\", \"use `lightning-` tag\". DO NOT TRIGGER for applying SLDS design tokens, blueprints, or styling guidance in general — that is `design-systems-slds-apply`; this skill only selects and wires `lightning-*` base components.
npx skills add forcedotcom/sf-skills --skill experience-lwc-base-components-integrate
Lightning Base Components (LBC) are the lightning-* web components shipped
by Salesforce. This skill routes an agent through the right decision sequence
so the final component choice is as specific as possible and backed by
real API docs — not a hand-rolled reimplementation of something that already
exists.
lightning-* component fits.lightning-* tag.lightning is the default
public namespace; some platforms expose lightning-community or others —
the user's meta files will clarify).# Component API Structure block; grep for
**Name:** <camelCaseName> (e.g. **Name:** datatable) to jump to its
Properties / Methods / Events / Slots. Read this rather than relying on
cached knowledge — LBC evolves and the reference is the source of truth.Open lightning-component-index.md and scan all entries before making any selection. This is non-negotiable: LBC's value comes from picking the most specialized component, and skipping the scan leads to reinventing compound widgets out of primitives.
As you scan, compile a candidate list — every component whose description touches any aspect of the use case. Do not filter or rank yet.
Once the scan is complete:
lightning-record-form,
lightning-tabset, lightning-datatable) over a generic primitive
(lightning-input, lightning-button) when the specialized one covers
the scenario end-to-end.lightning-record-form already renders fields for a
record, do not pair it with lightning-input-field unless you're
explicitly overriding behavior.Present the final shortlist to the developer with a one-line rationale per component. Wait for explicit confirmation before pulling full API docs. This prevents the agent from burning context on components the developer has already mentally ruled out.
Once confirmed, use the bundled helper to pull the exact API blocks — this avoids ad-hoc grepping across a large reference:
Convert lightning-<foo> tags to camelCase (no lightning- prefix):
lightning-datatable → datatablelightning-record-edit-form → recordEditFormlightning-button-icon → buttonIconEach returned block has the same shape: Basic Information (tag, namespace, type), Properties (name, type, default, description), Methods, Events, Slots, and (where applicable) usage notes. This skill is about picking the components; the bundled reference is about wiring them.
Using the per-component reference, walk the developer through:
<lightning-...> tag and required attributes.onchange, oncommit, onsuccess, …) and what
the event payload contains.lightning-record-form
requires object-api-name and record-id for edit/view modes).Do not override SLDS classes on LBC internals. See lbc-expert-guidance.md for specifics. Common issues:
.slds-button or .slds-input in the host component's CSS to
restyle an LBC — LBC ships inside a shadow root, so these selectors
either leak into sibling components or get stripped entirely. Use the
component's documented styling hooks (--sds-c-button-*, etc.) instead.lightning-combobox, lightning-dual-listbox,
lightning-record-picker.lightning-dual-listbox (the documented multi-select base
component). Rule out lightning-combobox — its documented API is
single-select; it has no type="multi" and no multi-select mode.
Flag that lightning-record-picker only fits if the values are record IDs.lightning-dual-listbox.scripts/extract-component-docs.sh dualListbox.options, value, onchange payload, and required label
props from the block's Properties / Events sections.lightning-modal, lightning-modal-body,
lightning-modal-footer, lightning-modal-header.scripts/extract-component-docs.sh modal modalHeader modalBody modalFooter
→ full modal API (how to extend LightningModal, the static .open()
pattern, slotting the header/body/footer).**Name:** <name> returns no match — name is wrong, or the
reference uses a different camelCase. Double-check against the component
index (lightning-record-form → recordForm,
lightning-record-view-form → recordViewForm,
lightning-button-icon → buttonIcon).