experience-lwc-base-components-integrate
forcedotcom/sf-skills
Select and wire the right Lightning Base Component for any UI task using authoritative API docs.
What is experience-lwc-base-components-integrate?
This skill helps you pick the most specific Lightning Base Component (`lightning-*`) for a given UI need, retrieve its full API documentation (properties, methods, events, slots), and integrate it into an LWC without breaking SLDS styling. Use it when you need to choose between modal, datatable, combobox, form, or other Salesforce UI components, or when editing LWC bundles to wire base components correctly.
- Scan the complete Lightning Base Component index to identify all candidates for a use case
- Narrow candidates to the most specialized component that covers each feature end-to-end
- Extract authoritative API docs (properties, methods, events, slots) for confirmed components
- Provide step-by-step integration guidance for wiring components into LWC markup
- Enforce SLDS styling rules and prevent common mistakes like overriding shadow-DOM internals
How to install experience-lwc-base-components-integrate
npx skills add https://github.com/forcedotcom/sf-skills --skill experience-lwc-base-components-integrate- Knowledge of your org's LBC namespace (typically `lightning`, but may be `lightning-community` or platform-specific)
- Access to the bundled component reference files (lightning-component-index.md and per-component API docs)
How to use experience-lwc-base-components-integrate
- 1.Open the component index (references/lightning-component-index.md) and scan all entries to compile a candidate list
- 2.For each feature in your use case, select the most specific component that covers it end-to-end
- 3.Present the shortlist to confirm before pulling full API docs
- 4.Run the extraction script with camelCase component names (e.g., `scripts/extract-component-docs.sh datatable recordForm`)
- 5.Use the returned API blocks to wire properties, events, and slots into your LWC .html, .js, and .css files
- 6.Review lbc-expert-guidance.md to ensure you are not overriding SLDS classes on component internals
Use cases
- User asks 'I need a searchable dropdown'—identify lightning-combobox or lightning-dual-listbox as the fit
- User is about to hand-roll a modal dialog—route to lightning-modal, lightning-modal-header, lightning-modal-body, lightning-modal-footer
- User needs to display and edit a Salesforce record—choose between lightning-record-form, lightning-record-edit-form, or lightning-record-view-form
- User is reviewing LWC markup and trying to restyle a base component—diagnose shadow-DOM issues and recommend CSS custom properties instead
- User needs the exact event payload and slot structure for a specific lightning-* tag
- Salesforce LWC developers building custom UI
- Developers new to Lightning Base Components who need guidance on component selection
- Teams standardizing on Salesforce's shipped components instead of custom implementations
experience-lwc-base-components-integrate FAQ
Use LBC whenever it covers your use case end-to-end. LBC is tested, accessible, and follows SLDS. Hand-rolling a button, modal, combobox, or form is almost always reinventing what LBC already provides.
Convert the lightning-* tag to camelCase without the 'lightning-' prefix: lightning-datatable → datatable, lightning-record-edit-form → recordEditForm, lightning-button-icon → buttonIcon.
No. LBC internals are behind a shadow root, so selectors either leak or get stripped. Use the component's documented CSS custom properties (--sds-c-button-*, etc.) instead.
Combine the most specific components: e.g., use lightning-record-form for the form and lightning-modal to wrap it. Avoid duplicating functionality—if lightning-record-form already renders fields, do not pair it with lightning-input-field unless overriding behavior.
The skill ships bundled references: lightning-component-index.md lists all components, and references/lightning-components.md contains the full API (properties, methods, events, slots) for each. Always read the bundled docs, not cached knowledge, because LBC evolves.
Full instructions (SKILL.md)
Source of truth, from forcedotcom/sf-skills.
name: experience-lwc-base-components-integrate
description: "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."
metadata:
version: "1.0"
domains: ["Experience"]
relatedSkills:
- design-systems-slds-apply
<!-- adk-managed-skill -->
Using Lightning Base Components
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.
When to Use This Skill
- User describes a UI need ("searchable dropdown", "record edit form",
"modal with footer") and asks which
lightning-*component fits. - User is about to build a primitive (button group, combobox, toast) and should be using LBC instead.
- User asks you to review LWC markup for LBC-related issues — specifically overriding SLDS classes or restyling LBC internals.
- User needs the authoritative props/events/slots for a specific
lightning-*tag.
Prerequisites
- Knowledge of which LBC namespace your org uses (
lightningis the default public namespace; some platforms exposelightning-communityor others — the user's meta files will clarify). - The skill ships authoritative API docs for every Lightning Base Component
in references/lightning-components.md.
Each component is a
# Component API Structureblock; 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.
Workflow
Step 1 — Read the entire component index first
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.
Step 2 — Narrow to the most specific fit per feature
Once the scan is complete:
- For each feature in the use case, select the most specific component
that covers it. Prefer a specialized compound (
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. - Avoid duplication: if
lightning-record-formalready renders fields for a record, do not pair it withlightning-input-fieldunless you're explicitly overriding behavior.
Step 3 — Share the shortlist and confirm
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.
Step 4 — Retrieve full API docs
Once confirmed, use the bundled helper to pull the exact API blocks — this avoids ad-hoc grepping across a large reference:
scripts/extract-component-docs.sh <camelCaseName> [<camelCaseName>...]
Convert lightning-<foo> tags to camelCase (no lightning- prefix):
lightning-datatable→datatablelightning-record-edit-form→recordEditFormlightning-button-icon→buttonIcon
Each 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.
Step 5 — Produce integration guidance
Using the per-component reference, walk the developer through:
- The exact
<lightning-...>tag and required attributes. - Which events to bind (
onchange,oncommit,onsuccess, …) and what the event payload contains. - Any slots to fill (headers, footers, custom content).
- Known constraints from the component docs (e.g.
lightning-record-formrequiresobject-api-nameandrecord-idfor edit/view modes).
Step 6 — Respect LBC styling rules
Do not override SLDS classes on LBC internals. See lbc-expert-guidance.md for specifics. Common issues:
- Targeting
.slds-buttonor.slds-inputin 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. - Wrapping an LBC just to mutate its internal markup. You can't — the markup is hidden behind the shadow root. If the component doesn't expose the slot/prop you need, that's a platform-level gap, not a restyling job.
Examples
Example — "I need a multi-select combobox with typeahead"
- Scan the component index end-to-end.
- Candidate list includes:
lightning-combobox,lightning-dual-listbox,lightning-record-picker. - Shortlist:
lightning-dual-listbox(the documented multi-select base component). Rule outlightning-combobox— its documented API is single-select; it has notype="multi"and no multi-select mode. Flag thatlightning-record-pickeronly fits if the values are record IDs. - Developer confirms
lightning-dual-listbox. - Run
scripts/extract-component-docs.sh dualListbox. - Return the
options,value,onchangepayload, and required label props from the block's Properties / Events sections.
Example — "I'm going to write my own modal"
- Scan finds
lightning-modal,lightning-modal-body,lightning-modal-footer,lightning-modal-header. - Shortlist is the 4 modal components.
- Confirm.
- Run
scripts/extract-component-docs.sh modal modalHeader modalBody modalFooter→ full modal API (how to extendLightningModal, the static.open()pattern, slotting the header/body/footer). - Steer the developer away from rolling their own dialog.
Verification Checklist
- The full component index was scanned before any selection (no keyword-search shortcutting).
- Candidate list included every component that touches the use case.
- Final shortlist selects the most specific component per feature.
- Developer confirmed the shortlist before the bundled component reference was opened.
- Integration guidance cites props / events / slots from the real API docs (not inferred).
- No suggestions to restyle LBC by overriding SLDS classes.
Troubleshooting
- Grep for
**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). - Proposed component doesn't have the prop you expected — trust the real API doc over memory. LBC evolves; cached knowledge lies.
- Developer resists the shortlist — don't skip Step 4. Still retrieve the docs for the developer's preferred choice so they see the actual trade-offs.
- Developer wants to restyle LBC internals — redirect to styling hooks (see the LBC Expert reference). Refusing shadow DOM penetration is the correct answer.
Related skills
More from forcedotcom/sf-skills and the wider catalog.

experience-lwc-design-generate
Orchestrate end-to-end creation of Lightning Web Components from Figma designs, PRDs, or Aura sources.

experience-lwc-generate
Lightning Web Components development with PICKLES methodology and 165-point quality scoring.

experience-lwc-rtl-validate
Review Lightning Web Components for right-to-left (RTL) internationalization compliance with code-level fixes.

experience-lwc-runtime-observe
Extract runtime DOM from Salesforce Lightning Preview for local LWC component inspection.

experience-lwc-security-validate
Specialized Lightning Web Security validator for LWC components with severity-ranked findings and SARIF reporting.

experience-lwc-typescript-migrate
Convert existing Lightning Web Components from JavaScript to TypeScript with full type annotations and public API definitions.