Salesforce Deploy Integration
jeremylongshore/tons-of-skills-marketplace
Deploy a Salesforce-connected application through immutable artifacts, environment binding, canary traffic, reconciliation, and rollback.
A skill your agent uses when users create, generate, modify, or validate Salesforce Lightning pages (FlexiPages).
$ npx skills add forcedotcom/sf-skills --skill platform-flexipage-generate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills platform-flexipage-generate --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/platform-flexipage-generate .claude/skills/platform-flexipage-generate && 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 "platform-flexipage-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-flexipage-generate into .claude/skills/platform-flexipage-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-flexipage-generate", 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/platform-flexipage-generateType 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 platform-flexipage-generate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills platform-flexipage-generate --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/platform-flexipage-generate .agents/skills/platform-flexipage-generate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "platform-flexipage-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-flexipage-generate into .agents/skills/platform-flexipage-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-flexipage-generate", 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 platform-flexipage-generate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills platform-flexipage-generate --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/platform-flexipage-generate .cursor/skills/platform-flexipage-generate && 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 "platform-flexipage-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-flexipage-generate into .cursor/skills/platform-flexipage-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-flexipage-generate", 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/platform-flexipage-generate--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 platform-flexipage-generate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills platform-flexipage-generate --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/platform-flexipage-generate .gemini/skills/platform-flexipage-generate && 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 "platform-flexipage-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-flexipage-generate into .gemini/skills/platform-flexipage-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-flexipage-generate", 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 platform-flexipage-generateInstalls 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 platform-flexipage-generate -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/platform-flexipage-generate .github/skills/platform-flexipage-generate && 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 "platform-flexipage-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-flexipage-generate into .github/skills/platform-flexipage-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-flexipage-generate", 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 platform-flexipage-generate -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 platform-flexipage-generate --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/platform-flexipage-generate .opencode/skills/platform-flexipage-generate && 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 "platform-flexipage-generate" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-flexipage-generate into .opencode/skills/platform-flexipage-generate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "platform-flexipage-generate", 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.
platform-flexipage-generateA skill your agent uses when users create, generate, modify, or validate Salesforce Lightning pages (FlexiPages).
Platform Flexipage Generate is an agent skill from forcedotcom/sf-skills. Use when users create, generate, modify, or validate Salesforce Lightning pages (FlexiPages). Trigger on RecordPage, AppPage, HomePage, Lightning pages, adding components to a page, page customization (e.g. 'customize the record page'), or .flexipage-meta.xml files (regions, components, deployment errors). DO NOT TRIGGER for Visualforce pages, page layout assignments in the UI, UI Bundle/Experience Cloud site pages, or Aura/Lightning Web Component development without FlexiPage context.
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts and reference files (for example `references/cli_commands.md`, `references/flexipage_fieldSection.md` and `references/flexipage_richText.md`).
It sits in Sales & Support, covering CRM management and Deployment. It works with Salesforce. 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.
11 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 these tools, so the agent can use them without asking each time:
BashReadWriteFrom allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
sfFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
soap.sforce.comFrom 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.
Platform Flexipage Generate loads about 5.1k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 130 tokens; SKILL.md has 2,197 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, WriteAutomated 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); the scripts in this folder are not scanned.
The full file from forcedotcom/sf-skills at commit e5164d9, republished under its Apache-2.0 licence (© forcedotcom). 2,197 words, ~5,052 tokens.
.claude/skills/platform-flexipage-generate/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.Use this skill when you need to:
CRITICAL: When creating NEW FlexiPages, you MUST ALWAYS start with the CLI template command. Never create FlexiPage XML from scratch - the CLI provides valid structure, proper regions, and correct component configuration that prevents deployment errors.
Generate Lightning pages (RecordPage, AppPage, HomePage) using CLI bootstrapping for component discovery and configuration.
MANDATORY FOR NEW PAGES: This step is NOT optional. Always use the CLI template command when creating a new FlexiPage. The CLI generates valid XML structure, proper regions, and correct metadata that prevents common deployment errors. Only skip this step if you're editing an existing FlexiPage file.
<packageDirectory> = the path value from sfdx-project.json → packageDirectories[0] (e.g., force-app). Read it from the project file before running commands.
sf template generate flexipage \
--name <PageName> \
--template <RecordPage|AppPage|HomePage> \
--sobject <SObject> \
--primary-field <Field1> \
--secondary-fields <Field2,Field3> \
--detail-fields <Field4,Field5,Field6,Field7> \
--output-dir <packageDirectory>/main/default/flexipagesCRITICAL: If the sf template generate flexipage command fails, STOP.
sf plugins install templatessf template generate flexipage commandDo NOT continue to Step 2 until the template command succeeds. The generated XML is required for the entire workflow.
RecordPage:
--sobject (e.g., Account, Custom_Object__c)--primary-field: Most important identifying field (e.g., Name)--secondary-fields: Record summary (recommended 4-6, max 12)--detail-fields: Full record details, including required fields (e.g., Name)AppPage:
HomePage:
Name (not FirstName/LastName), BillingAddress (not BillingStreet/BillingCity/BillingState), MailingAddress, etc. when availableName) in the --detail-fields parameter, even if they're also used in --primary-field or --secondary-fieldsRun a dry-run deployment to validate the page and dependencies (use the default package directory from sfdx-project.json):
sf project deploy start --dry-run -d "<packageDirectory>/main/default" --test-level NoTestRun --wait 10 --jsonCritical: Fix any deployment errors before proceeding. The page must validate successfully.
After the base page deploys successfully, if the user wants additional components, follow the Adding Components Dynamically workflow below. All component additions MUST go through the discovery and inference pipeline — never write component XML from memory alone.
Read references/xml_rules.md for all XML encoding rules, field reference format, region/facet types, fieldInstance structure, unique identifier requirements, and common deployment error resolutions.
Key rules (quick reminder):
<value> tags: & first, then <, >, ", 'Record.{FieldApiName} (never Object.Field)<identifier> and region <name> must be unique across the file<itemInstances>Read references/identifiers_and_regions.md for the identifier generation algorithm, facet naming patterns (named vs UUID), region selection rules, and container component facet structure.
Location: header region only. See references/record_flexipage_dynamicHighlights.md for full structure.
CLI generates Facets automatically from --primary-field and --secondary-fields.
Use for: Displaying fields in columns. Three-level nesting: Region → Column Facets → Field Facets.
See references/flexipage_fieldSection.md for full structure and XML example.
Critical: The columns property value is a Facet name, not a number.
See references/flexipage_richText.md for encoding rules and XML structure.
Identifier: flexipage_richText or flexipage_richText_{N}
<FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
<flexiPageRegions>
<!-- Regions and components here -->
</flexiPageRegions>
<masterLabel>Page Label</masterLabel>
<template>
<name>flexipage:recordHomeTemplateDesktop</name>
</template>
<type>RecordPage</type>
<sobjectType>Object__c</sobjectType> <!-- RecordPage only -->
</FlexiPage>Page Types:
RecordPage - requires <sobjectType>AppPage - no sobjectTypeHomePage - no sobjectType<identifier> values unique across entire file<name> values unique across entire file<itemInstances>Record.{Field} formatfieldInstanceProperties with uiBehavior<itemInstances> wrapper<type>Region</type>; component facets use <type>Facet</type><mode> tags (only where component patterns require them)__c suffix in page namesRead references/cli_commands.md for full CLI examples (RecordPage, AppPage, HomePage) and available options.
MANDATORY WORKFLOW: ALL component additions to a FlexiPage MUST follow this workflow. Do not write component XML from memory or skip discovery. This applies to standard OOTB components, custom LWC components, and any other component type.
When the user requests components (e.g., "add a related list of contacts and a report"), follow this pipeline:
1. Parse Intent → identify ALL requested components
2. Discover ALL → batch components through 3-tier discovery
3. Infer Properties → run 3-step inference for EACH discovered component
4. Generate XML → produce valid XML for all components together
5. Validate → check identifiers, regions, property completenessKey rule: Discover ALL components as a batch first (one scan, one MCP call), THEN infer properties for each. Do not invoke discovery steps per-component or interleave discovery and inference.
Extract every component request from the user's utterance. Examples:
Complete each tier for ALL components before moving to the next tier — do NOT run Tier 1→2→3 per component:
| Tier | Source | When | Calls |
|---|---|---|---|
| 1 | Local workspace scan | Always first — run for ALL components | 0 (local only) |
| 2 | discoverUiComponents MCP action | Single call for all components unresolved after Tier 1 | 1 |
| 3 | Generate new LWC bundle | Only for components still unresolved after Tier 2 + user confirms | 0 |
After Tier 1 completes for all components, collect only the unresolved ones and pass them to Tier 2 in a single MCP call. Only components still unresolved after Tier 2 proceed to Tier 3.
See Local Workspace Scanner and MCP Action Integration sections below for details.
For EACH discovered component, infer properties using the 3-step strategy:
getUiComponentSchemas; for Tier 1 (local), extract @api props from sourcereferences/<name>.md exists, read and follow its inference rulesSee Hybrid Property Inference Strategy below for full details.
What you CANNOT do:
Read references/xml_rules.md before writing any XML. Follow all element naming and structure rules defined there.
Produce <itemInstances> XML for all resolved components:
<componentInstanceProperties> for every property (NOT <properties>)Check the complete FlexiPage for:
Deploy with dry-run (use default package directory from sfdx-project.json):
sf project deploy start --dry-run -d "<packageDirectory>/main/default" --test-level NoTestRun --wait 10 --jsonRead references/mcp_action_examples.md for full input/output examples and parameter tables.
Two MCP actions via execute_metadata_action:
| Action | Purpose | When |
|---|---|---|
DISCOVER_UI_COMPONENTS | Find components for a page type | Tier 2 discovery — single call for all unresolved components |
GET_UI_COMPONENT_SCHEMAS | Get property schemas | Property inference Step 1 (Tier 2 org components only) |
Key conventions:
namespace/blockName (forward-slash) in MCP calls, namespace:blockName (colon) in XMLpageContext with entityName is required for RECORD_PAGEgetUiComponentSchemas supports partial failures — check each component's success booleanScans the local SFDX project for custom LWC components before making any MCP calls (Tier 1 discovery).
Run the scanner for each component query (local scan — no network calls):
scripts/scan-lwc-components.sh "<query>" [packageDirectory]The script scans <packageDirectory>/**/lwc/*/, tokenizes camelCase component names, scores them against user intent keywords, and returns a JSON array of matches with confidence tiers:
Run Tier 1 for ALL components before moving any to Tier 2. Collect all unresolved components from Tier 1, then pass them to Tier 2 in a single MCP call.
For medium-confidence matches (40-69%) or multiple high-confidence matches:
.js-meta.xml for <description> and <targetConfigs>Skip local scan when:
<packageDirectory> directory exists in the workspaceFor EACH discovered component, populate its properties using this 3-step strategy in order:
Call getUiComponentSchemas only when the component does not exist on the local machine (i.e., Tier 2 org-discovered components). For local components (Tier 1), extract @api properties directly from the source code instead.
When to call:
@api properties from the component's .js source fileRun scripts/resolve-component-instructions.sh <namespace:component> — it returns the instructions file path if it exists, or empty string.
Examples:
record_flexipage:dynamicHighlights → references/record_flexipage_dynamicHighlights.mdflexipage:fieldSection → references/flexipage_fieldSection.mdc:expenseTracker → (empty — no file)If a file is returned: read and follow its inference rules, XML patterns, and defaults. If empty: skip directly to Step 3.
Instructions files augment the schema — they provide how to derive values from user intent. Any properties in the schema not covered by the instructions file are resolved in Step 3.
For any properties not yet resolved, apply in this priority order:
3a. Smart Default Heuristics:
| Property Pattern | Default Value |
|---|---|
recordId | {!recordId} |
objectApiName / sObjectName | Page's <sobjectType> value |
show* / visible* / display* | true |
hide* / hidden* / disabled* | false |
| Boolean without prefix | false |
Schema specifies "default" | Use schema default |
3b. LLM Inference:
Use the component schema + user intent + page context to infer reasonable values. Example: user says "report showing top opportunities" → infer reportName should reference an opportunities report.
3c. User Prompts (last resort): Only prompt the user for critical required properties that cannot be inferred. If user says "skip", omit the component entirely.
| Tier | Extra Step | Schema Call | Instructions |
|---|---|---|---|
| Tier 1 (local) | Extract @api props from source | No (use source) | If exists |
| Tier 2 (org) | — | Yes | If exists |
| Tier 3 (generated) | Extract @api from just-generated source | No (just created) | No |
When no component is found locally (Tier 1) or in the org (Tier 2), offer to generate a new LWC.
Always confirm before creating. Explain: component name. If user declines: skip, continue with other components.
After creating the LWC bundle:
@api properties from the generated sourcerecordId and objectApiNamec:{componentName} as the componentNamecustomerHealthScorecustomerHealthScore/| File | When to read |
|---|---|
references/xml_rules.md | Before writing or editing any FlexiPage XML — encoding, field refs, identifiers, deployment errors |
references/identifiers_and_regions.md | When adding components — identifier algorithm, facet naming, region selection, container pattern |
references/cli_commands.md | When bootstrapping new pages — full CLI examples for RecordPage, AppPage, HomePage |
references/mcp_action_examples.md | When calling MCP actions — full input/output JSON for discoverUiComponents and getUiComponentSchemas |
references/flexipage_fieldSection.md | When adding a Field Section with columns |
references/record_flexipage_dynamicHighlights.md | When adding a Dynamic Highlights panel |
references/flexipage_richText.md | When adding a Rich Text component |
scripts/scan-lwc-components.sh | Tier 1 local workspace scan — tokenizes and scores LWC component names against user query |
scripts/resolve-component-instructions.sh | Property inference Step 2 — resolves component definition to instructions file path |
To add a new component pattern: Create references/<namespace>_<componentName>.md following the structure in existing files. The skill automatically checks for the file during Step 2 of property inference.
After generating XML for dynamically added components, verify ALL of the following before deployment:
<identifier> values from the entire FlexiPage file_2, _3, etc.)record_flexipage:dynamicHighlights → header onlyflexipage:fieldSection → main or tab facetsflexipage:richText → any region<value> tags (must be entity-encoded)<flexiPageRegions> block<flexiPageRegions> block with multiple <itemInstances>© 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 9 other files (scripts, references) in skills/platform-flexipage-generate of forcedotcom/sf-skills.
Open the folder on GitHubat commit e5164d9
Platform Flexipage Generate 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 |
|---|---|---|---|---|---|---|
| Platform Flexipage Generate this skillforcedotcom/sf-skills | 1.1k | — | ~5.1k | Automated safety check: Notes | Apache-2.0 | |
| Salesforce Deploy Integrationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Salesforce Prod Checklistjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Soql Lib Query Builderbeyond-the-cloud-dev/soql-lib | 154 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Sf DatacloudJaganpro/sf-skills | 424 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Soql Lib Selectorbeyond-the-cloud-dev/soql-lib | 154 | — | ~2k | Automated safety check: Pass | MIT |
jeremylongshore/tons-of-skills-marketplace
Deploy a Salesforce-connected application through immutable artifacts, environment binding, canary traffic, reconciliation, and rollback.
jeremylongshore/tons-of-skills-marketplace
Gate a Salesforce integration or metadata change for production with contract, security, capacity, validation, canary, reconciliation, and rollback evidence.
beyond-the-cloud-dev/soql-lib
Builds Salesforce SOQL queries using the SOQL Lib fluent builder API (SOQL.cls).
Jaganpro/sf-skills
Salesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows.
beyond-the-cloud-dev/soql-lib
Creates Salesforce Apex selector classes using the SOQL Lib selector pattern.
Portwood-Global-Solutions/Portwood
Get from a fresh clone of Portwood to a working, fully-tested Salesforce org.
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 users create, generate, modify, or validate Salesforce Lightning pages (FlexiPages). Platform Flexipage Generate is an agent skill from forcedotcom/sf-skills. Use when users create, generate, modify, or validate Salesforce Lightning pages (FlexiPages).
Platform Flexipage Generate fits situations like: validate Salesforce Lightning pages (FlexiPages); lightning pages; adding components to a page; page customization (e.g.
Run `npx skills add forcedotcom/sf-skills --skill platform-flexipage-generate -a claude-code`. Or copy the skill folder (skills/platform-flexipage-generate in forcedotcom/sf-skills) into .claude/skills/platform-flexipage-generate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill platform-flexipage-generate -a codex`. Or copy the skill folder (skills/platform-flexipage-generate in forcedotcom/sf-skills) into .agents/skills/platform-flexipage-generate 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 platform-flexipage-generate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/platform-flexipage-generate, .gemini/skills/platform-flexipage-generate, .github/skills/platform-flexipage-generate and .opencode/skills/platform-flexipage-generate in your project.
Going by SKILL.md and its folder, Platform Flexipage Generate needs a shell for the scripts in its folder and the command-line tools its instructions call (sf). Our summary lists: A Bash shell. Its frontmatter pre-approves these tools: Bash, Read, Write.
SKILL.md names 1 domain. In commands or code: soap.sforce.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Platform Flexipage Generate 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 5.1k tokens (SKILL.md is roughly 20k 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 9.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Platform Flexipage Generate: Salesforce Deploy Integration (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Salesforce Prod Checklist (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Soql Lib Query Builder (beyond-the-cloud-dev/soql-lib, 154 stars) and Sf Datacloud (Jaganpro/sf-skills, 424 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,060 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.