Skip to content
Development
Skill

/platform-custom-application-generate

Use this skill when users need to create or configure tab-based Salesforce Custom Applications with navigation, branding, and action overrides. Trigger when users mention custom apps, application metadata, app navigation, or organizing tabs into applications. Use when users want

From plugin
sf-skills
1.1k200 skills6 agents15 commands4 MCP

Claude Code

$ npx -y skills add forcedotcom/sf-skills --skill platform-custom-application-generate --agent claude-code

SKILL.md

platform-custom-application-generate.SKILL.md
name: platform-custom-application-generate
description: "Use this skill when users need to create or configure tab-based Salesforce Custom Applications with navigation, branding, and action overrides. Trigger when users mention custom apps, application metadata, app navigation, or organizing tabs into applications. Use when users want to create app containers for tabs and pages. Do NOT use when the goal is hosting a React UI bundle in the App Launcher — use experience-ui-bundle-custom-app-generate for that case."
metadata:
  version: "1.0"
  domains: ["Platform"]
  minApiVersion: "60.0"
  relatedSkills:
    - "experience-ui-bundle-custom-app-generate"

When to Use This Skill

Use this skill when you need to:

  • Create Lightning applications
  • Organize tabs and features into focused apps
  • Configure application navigation and branding
  • Set up custom page layouts for objects
  • Troubleshoot deployment errors related to custom applications

CustomApplication (Lightning App) Metadata Specification

Overview

Custom applications (Lightning Apps) that group tabs and functionality to provide a focused user experience for specific business processes. Always configured for Lightning Experience.

Required Properties

Core Application Properties

  • **fullName**: API name of the application
  • **label**: Display name of the application
  • **uiType**: Always "Lightning" for modern apps
  • **navType**: CRITICAL - Choose based on user requirements and workflow patterns
  • "Standard": DEFAULT for general business applications (e.g., sales, marketing, operations)
  • "Console": ONLY when workflow requires managing multiple records simultaneously with split-view or multi-tab workspace (e.g., customer service, call centers, support operations)
  • **formFactors**: Array of form factors (["LARGE"] for desktop, ["SMALL"] for mobile, or both)

Optional Properties

  • **description**: Brief description of the application's purpose
  • **tabs**: Array of tab names to include
  • **utilityBar**: API name of the Utility Bar configuration
  • **brand**: HIGHLY RECOMMENDED - Branding configuration object (headerColor, shouldOverrideOrgTheme, footerColor)
  • **actionOverrides**: REQUIRED when custom record pages exist - Action override configuration (actionName, content, formFactor, type, pageOrSobjectType)
  • **profileActionOverrides**: Profile-specific action overrides (actionName, content, formFactor, pageOrSobjectType, type, profile)
  • **isNavAutoTempTabsDisabled**, **isNavPersonalizationDisabled**, **isNavTabPersistenceDisabled**: automatic temporary tabs, user personalization, and tab persistence across sessions (default: false)

Asking the User

  • Ask every question as plain text in your reply, so the skill works in any client; do not depend on a picker, multi-select, or confirm UI component. Wait for the user's next message as the answer
  • Ask only what the request leaves open (navigation style, tabs, utility items, profiles), all in one message, each with a sensible default the user can accept with "yes" or "go ahead". Profiles are the exception: if the request doesn't name the profiles, always ask before saving (a group such as "my support agents" names no profile: suggest the matching ones and ask), and don't default to the admin alone
  • Finding an existing app by name: query Tooling `SELECT Id, DeveloperName, Label FROM CustomApplication WHERE Label = '<name>'` (or `LIKE`). Don't use AppDefinition for this, because it lists only the apps the running user can see, so an app shared with other profiles looks missing. If several apps match, or none does, ask in plain text with the closest labels as a numbered list
  • Before saving, restate the plan in one short list (label, API name, navigation style, tabs, utility items, profiles including the admin) and save once the user agrees. When the request already says everything (including who should see the app), say what you'll create and go ahead. If no one can answer, use the defaults and say so

Application Configuration

Navigation Type Selection (CRITICAL)

**Decision Criteria for navType:**

**Choose "Standard" (DEFAULT) for:**

  • General business applications and most workflows
  • Single-record focus or linear navigation patterns
  • Standard tab-based navigation is sufficient

**Choose "Console" ONLY when workflow requires:**

  • Managing multiple related records simultaneously in split-view
  • Multi-tab workspace for handling complex, interconnected data
  • Contextual information from multiple sources visible at once
  • Examples: customer service operations, support desks, call centers

**When in doubt:** Default to "Standard" for most general business use cases

Tab Management

  • **tabs**: Array of tab names to include in the application
  • **workspaceConfig** (Console apps only): one `<mappings><tab>TAB</tab></mappings>` entry per tab, e.g. `standard-Case`. Every tab of a Console app needs a mapping, including tabs added later; otherwise the save fails with "The standard-Account tab doesn't include a workspace mapping"
  • **formFactors**: Device-specific configurations (Large for desktop, Small for mobile)

Utility Bar

  • **utilityBar**: API name of a FlexiPage of type UtilityBar (the bar at the bottom of Lightning Experience). The page is separate metadata and must exist before the app references it, otherwise the app save fails with "In field: utilityBar - no FlexiPage named ... found". Generate it alongside the app: template `one:utilityBarTemplateDesktop`, one `utilityItems` Region for the items and one `backgroundComponents` Background region:
<FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
    <flexiPageRegions>
        <itemInstances>
            <componentInstance>
                <componentName>console:history</componentName>
                <identifier>console_history</identifier>
            </componentInstance>
        </itemInstances>
        <name>utilityItems</name>
        <type>Region</type>
    </fle
Read more
@forcedotcom
Ships withsf-skills

This repository provides Salesforce agent skills, plugins, and sample apps for building applications.

1.1k200 skills6 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.1k
Star history of forcedotcom/sf-skills on GitHub, a chart by star-history.com

Other skills on sf-skills.

agentforce-observe

agentforce-observe

Analyze production Agentforce agent behavior using session traces and Data Cloud, and manage Agent Health Monitoring (AHM)…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about platform-custom-application-generate.

Which coding agents can use platform-custom-application-generate?
platform-custom-application-generate installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.