Platform Value Set Generate

作者 forcedotcom3c15867bdb9d無授權條款1K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫昨天更新

Use to create, generate, or validate a Salesforce GlobalValueSet (reusable picklist shared across fields) or customize a StandardValueSet (built-in picklists like Industry, Lead Source, Opportunity Stage). Trigger on global/standard value set, reusable picklist, .globalValueSet-meta.xml or .standardValueSet-meta.xml, or deploy errors adding values to a standard picklist. DO NOT TRIGGER for a one-off inline picklist on a single field with no reuse — use platform-custom-field-generate.

AI 產生的概覽

產生並驗證 Salesforce GlobalValueSet 與 StandardValueSet 中繼資料 XML,用於可重用的選項清單。

功能
此技能提供產生 Salesforce 值集中繼資料的說明:用於跨欄位共用之可重用選項清單的 GlobalValueSet 檔案,以及用於自訂 Industry、Lead Source 等內建選項清單的 StandardValueSet 檔案。它規定了必要的 XML 元素、正確的檔名與資料夾、CustomField 如何透過 valueSetName 參照值集、部署順序,以及常見的部署錯誤。它也定義了驗證規則,用來拒絕無效的要求,例如對標準值集新增值。
適用情境
在建立、產生或驗證 Salesforce GlobalValueSet 或 StandardValueSet,或將選項清單欄位連結到可重用值集時使用。它也適用於診斷關於對標準選項清單新增值的部署錯誤。不適用於單一欄位上無需重用的一次性內嵌選項清單。
執行需求
僅為說明文件,不隨附指令碼。需要處理 Salesforce 中繼資料,可選用 sf CLI(2.0.0 或更新版本)執行 Tooling API 查詢,並可選用提供 query_metadata 與 search_metadata 工具的中繼資料 grounding MCP 伺服器。目標組織需 API 版本 60.0 或更新版本。

Overview

Generates and validates the two reusable picklist value-set metadata types — GlobalValueSet (a new reusable set shared across fields) and StandardValueSet (customizing a built-in catalog picklist like Industry or Lead Source) — and wires a CustomField to one via <valueSetName>.

Scope

  • In scope: creating a GlobalValueSet, customizing a StandardValueSet, referencing either from a field, and the related deployment errors.
  • Out of scope: a one-off inline picklist on a single field with no reuse → use platform-custom-field-generate (inline <valueSetDefinition>). Generating the field that references a value set is also platform-custom-field-generate's job; this skill produces the value set itself.

Two different metadata types — do not confuse them:

ConcernGlobalValueSetStandardValueSet
FolderglobalValueSets/standardValueSets/
File suffix.globalValueSet-meta.xml.standardValueSet-meta.xml
Root element<GlobalValueSet><StandardValueSet>
Name sourcefilename (dev name)<fullName> = fixed catalog name
Value element<customValue><standardValue>
Can add NEW values?YesNo — modify existing only
Can create a new NAME?YesNo — only the fixed catalog
* wildcard in package.xmlSupportedNot supported

Specification

1. Purpose

This document defines the mandatory constraints for generating value-set metadata XML. The agent must verify these constraints before outputting XML to prevent Metadata API deployment errors.

  • GlobalValueSet — a reusable, named set of picklist values defined once and referenced by any number of picklist/multi-select fields. Use when the same value list is shared across multiple fields.
  • StandardValueSet — the value list behind a Salesforce-defined standard picklist (Industry, Lead Source, etc.). You can only modify the values in a fixed catalog of named sets; you cannot invent a new set or add brand-new values.

2. GlobalValueSet — Syntactic Essentials

File: globalValueSets/<DeveloperName>.globalValueSet-meta.xml

The developer name comes from the filename, not a <fullName> tag.

Required Elements
ElementRequirementNotes
<masterLabel>RequiredUI label for the value set
<sorted>Requiredtrue = alphabetize values in the UI; false = preserve listed order
<customValue>Required (≥1)One per value (see below)
<customValue> Sub-Elements
Sub-elementRequirementNotes
<fullName>RequiredThe value's API name. Use the value text as the user spelled it — spaces are allowed and must be preserved (e.g. Closed Won, not Closed_Won). Must start with a letter. This is a value name, NOT a field API name, so do not append __c or replace spaces with underscores.
<default>OptionalAt most one value true. Omit it (or use false) on the rest — it is not required on every value.
<label>RequiredUI label for the value
<color>OptionalHex color, e.g. #FF0000
<isActive>OptionalOmit (active) or false to deactivate
<description>OptionalPer-value description
The __gvs Suffix — do NOT use it in metadata

Rule: reference a GlobalValueSet by its bare developer name. Never add __gvs.

In API 57.0+ orgs the platform stores/displays a GlobalValueSet's developer name with a __gvs suffix internally, but the Metadata API (deploy and retrieve) always uses the bare name — <valueSetName>Priority_Levels</valueSetName>, not Priority_Levels__gvs. The suffix was briefly emitted by a Winter '23 change that caused deploy failures and was patched out. So:

  • The file is globalValueSets/Priority_Levels.globalValueSet-meta.xml — no __gvs in the filename.
  • A field references it as <valueSetName>Priority_Levels</valueSetName> — no __gvs.
  • If a retrieve shows Priority_Levels__gvs in the org or you see a "returned from org but not found in local project" warning, that's the expected org-storage display — keep your local metadata on the bare name.
CORRECT — GlobalValueSet
xml
<?xml version="1.0" encoding="UTF-8"?><GlobalValueSet xmlns="http://soap.sforce.com/2006/04/metadata">    <masterLabel>Priority Levels</masterLabel>    <sorted>false</sorted>    <customValue>        <fullName>Critical</fullName>        <default>false</default>        <label>Critical</label>    </customValue>    <customValue>        <fullName>High</fullName>        <default>false</default>        <label>High</label>    </customValue>    <customValue>        <fullName>Medium</fullName>        <default>true</default>        <label>Medium</label>    </customValue>    <customValue>        <fullName>Low</fullName>        <default>false</default>        <label>Low</label>    </customValue></GlobalValueSet>
INCORRECT — GlobalValueSet
xml
<GlobalValueSet xmlns="http://soap.sforce.com/2006/04/metadata">    <fullName>Priority_Levels</fullName>      <!-- WRONG: name comes from the filename -->    <masterLabel>Priority Levels</masterLabel>    <!-- WRONG: <sorted> is required and missing -->    <standardValue>                            <!-- WRONG: GVS uses <customValue>, not <standardValue> -->        <fullName>Critical</fullName>    </standardValue></GlobalValueSet>

Errors: missing required sorted; unknown element standardValue; root fullName is rejected because the name is derived from the filename.


3. StandardValueSet — Syntactic Essentials CRITICAL

File: standardValueSets/<Name>.standardValueSet-meta.xml

HARD CONSTRAINTS — read before generating
  1. You can ONLY modify values inside the fixed catalog of named standard value sets. You cannot add a brand-new value, and you cannot create a new StandardValueSet name. The Metadata API will reject both.
  2. The root carries a <fullName> whose value is the fixed enum name (e.g. Industry), NOT a masterLabel. The filename must match this name.
  3. Values are <standardValue> entries — not <customValue>.
  4. Emit ONLY the values the request explicitly names — a surgical, minimal change. Include a <standardValue> block for each value the user asks you to activate, deactivate, relabel, or reorder, and nothing else. Do not enumerate the full picklist or emit <standardValue> entries for values the request did not mention. A StandardValueSet deployment is a partial update: unlisted values keep their current org state untouched. Reproducing every value (e.g. all 30+ Industry entries) is noise and risks clobbering org state — it is wrong even when the request says "keep only X active," which means "set the named ones; leave the rest as-is," not "enumerate and deactivate everything else." If you use the grounding MCP to discover existing values, use it only to confirm the named values exist and to get their exact <fullName>/<label> — not as a list to reproduce in full.
<standardValue> — Modifiable Sub-Elements
Sub-elementModifiable?Notes
<fullName>Identifies the value (must already exist)Cannot introduce a new one
<label>YesRelabel the value's UI text
<isActive>Yesfalse deactivates; omit or true keeps active
<default>YesAt most one value true
<groupingString>YesCategory grouping (used by some standard picklists)
Canonical StandardValueSet Names (partial)

Industry, LeadSource, OpportunityStage, OpportunityType, AccountType, AccountRating, LeadStatus, CaseStatus, CaseOrigin, CasePriority, CaseReason, TaskStatus, TaskPriority, QuoteStatus, Product2Family, Salutation, AccountOwnership, ContractStatus, OrderStatus, PartnerRole.

Full appendix: the complete list of valid standard value set names is at https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/standardvalueset_names.htm. If the name is not in that appendix, it is not a StandardValueSet — it is either a GlobalValueSet or an inline CustomField picklist.

CORRECT — StandardValueSet (modify existing values only)
xml
<?xml version="1.0" encoding="UTF-8"?><StandardValueSet xmlns="http://soap.sforce.com/2006/04/metadata">    <fullName>Industry</fullName>    <standardValue>        <fullName>Technology</fullName>        <default>false</default>        <label>Technology</label>        <isActive>true</isActive>    </standardValue>    <standardValue>        <fullName>Agriculture</fullName>        <default>false</default>        <label>Agriculture</label>        <isActive>false</isActive>   <!-- deactivated, but kept in the set -->    </standardValue></StandardValueSet>
INCORRECT — StandardValueSet
xml
<StandardValueSet xmlns="http://soap.sforce.com/2006/04/metadata">    <masterLabel>Industry</masterLabel>     <!-- WRONG: StandardValueSet uses <fullName>, not masterLabel -->    <customValue>                           <!-- WRONG: uses <standardValue>, not customValue -->        <fullName>Renewable Energy</fullName> <!-- WRONG: cannot ADD a new value to a standard set -->        <label>Renewable Energy</label>    </customValue></StandardValueSet>

Errors: unknown element masterLabel/customValue; adding a value not already in the standard catalog fails deployment.


4. Never Invent Values — Verify, Don't Hallucinate CRITICAL

When customizing a StandardValueSet (or extending a shared GlobalValueSet), only modify values that already exist — never invent the value list of a standard picklist. The hard rule is about what you EMIT: a <standardValue> whose <fullName> is not a real catalog value will fail deployment.

For well-known standard picklists you already know the canonical values (e.g. Industry, LeadSource, OpportunityStage). When you are unsure a named value exists, you can confirm it against the live org — but treat lookup as a confirmation step, not a required first call:

  • Grounding MCP (if available) exposes search_metadata and query_metadata to look up live metadata. Use them only to confirm a named value's exact <fullName>/<label> — not to pull the full list to reproduce.
  • CLI fallback — query the Tooling API directly:
bash
sf data query --use-tooling-api \  --query "SELECT MasterLabel, Metadata FROM StandardValueSet WHERE MasterLabel = '<name>'"

The point is the output, not the lookup: emit modifications ONLY to values you know exist. A generated StandardValueSet that introduces unseen values is a hallucination and will fail deployment. (This pairs with the minimal-scope rule in §3: confirm the named values; don't enumerate the whole set.)


5. Referencing a Value Set from a CustomField

A picklist/multi-select CustomField references a value set via <valueSetName> inside <valueSet> (instead of an inline <valueSetDefinition>).

xml
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">    <fullName>Priority__c</fullName>    <label>Priority</label>    <type>Picklist</type>    <valueSet>        <restricted>true</restricted>        <valueSetName>Priority_Levels</valueSetName>  <!-- bare developer name, NO __gvs; see §2 -->    </valueSet></CustomField>
  • For a GlobalValueSet, <valueSetName> is the bare developer name (e.g. Priority_Levels) — never add __gvs. The suffix is an org-storage display artifact; the Metadata API uses the bare name for both deploy and retrieve (see §2).
  • A field bound to a value set must not also declare an inline <valueSetDefinition> — choose one or the other.

6. Validation Rules

The agent must reject and explain — not silently "fix" by inventing metadata — the following:

ViolationAction / Message
Add a NEW value to a StandardValueSetReject. "Standard value sets cannot accept new values. Create a GlobalValueSet (reusable) or an inline picklist on a CustomField instead."
Create a NEW StandardValueSet nameReject. The name must be in the standard catalog appendix. Otherwise it is a GlobalValueSet.
Value set developer name with spaces / invalid charsConvert spaces to underscores; must start with a letter; alphanumeric + underscore only. Priority Levels → Priority_Levels. (This applies to the value SET name and the field API name — NOT to individual <customValue><fullName> values, which keep spaces as written.)
Duplicate value fullName within one setReject. Each fullName must be unique within the value set.
More than one <default>true</default>Reject. At most one default value per set.
INCORRECT — adding a value to a standard set

"Add a Cryptocurrency value to the Industry picklist."

Do not emit a <standardValue> with fullName Cryptocurrency. Respond that standard value sets are a fixed catalog and propose a GlobalValueSet (if reused across fields) or an inline restricted picklist on a single CustomField.


7. Deployment Ordering

A value set must deploy before any CustomField that references it.

  • Deploy the GlobalValueSet / StandardValueSet first, then the CustomField whose <valueSetName> points at it.
  • A field referencing a value set that does not yet exist fails with valueSetName ... does not exist (or a "not found" error).
  • In package.xml: GlobalValueSet supports the * wildcard; StandardValueSet does not — list each standard set member explicitly.

8. Common Deployment Errors

Error / SymptomCauseFix
Value not added to standard picklistTried to ADD a value to a StandardValueSetStandard sets are fixed; use GlobalValueSet or inline CustomField picklist
Required field missing: sortedGlobalValueSet missing <sorted>Add <sorted>true</sorted> or <sorted>false</sorted>
Unknown element masterLabel (StandardValueSet)Used masterLabel instead of fullNameStandardValueSet root uses <fullName> = catalog name
Unknown element customValue (StandardValueSet)Used customValue instead of standardValueUse <standardValue> in standard sets
valueSetName ... does not existField deployed before its value set, or __gvs wrongly added to the referenceDeploy the value set first; reference it by the bare developer name with NO __gvs (§2)
Duplicate value nameTwo <customValue> entries share a fullNameMake each fullName unique within the set (spaces in a value name are allowed — do NOT underscore them)

Verification Checklist

Before generating value-set XML, verify:

Type Selection

  • Is this a reusable set shared across fields (GlobalValueSet) or a built-in standard picklist (StandardValueSet)?
  • If StandardValueSet: is the name in the standard catalog appendix? If not, it must be a GlobalValueSet or inline picklist.

GlobalValueSet Checks

  • Is the root <GlobalValueSet> with namespace http://soap.sforce.com/2006/04/metadata?
  • Is <masterLabel> present?
  • Is <sorted> present (true or false)?
  • Is there at least one <customValue>, each with <fullName> and <label> (at most one carrying <default>true</default>)?
  • Is there NO root <fullName> (name comes from the filename)?
  • When referencing from a field, is <valueSetName> the bare developer name with NO __gvs suffix?

StandardValueSet Checks CRITICAL

  • Are you emitting modifications ONLY to values you know exist (confirmed from known standard catalogs, or via grounding search_metadata/query_metadata / Tooling API if unsure) — never invented values?
  • Is the root <StandardValueSet> with the correct namespace?
  • Does the root use <fullName> set to the fixed catalog name (NOT masterLabel)?
  • Are values <standardValue> entries (NOT customValue)?
  • Are you ONLY modifying values that already exist (no new fullName)?
  • Did you avoid adding a brand-new value or a new set name?

Shared Checks

  • At most one value has <default>true</default>?
  • Are all value fullNames unique within the set? (Spaces in a value name are fine — preserve them as written; only the value-SET developer name and field API name use underscores.)
  • Does the value set deploy BEFORE any CustomField that references it?
  • Does the filename match the intended name?

來源與署名

來源:forcedotcom/sf-skills位於plugins/builder/salesforce-development/skills/platform-value-set-generate提交3c15867

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架

更多來自 forcedotcom/sf-skills 的技能

Service Itsm Teams Itservice Configure

forcedotcom

Configure the "Set Up Salesforce IT Service" checklist for Microsoft Teams Employee Service (ITSM) — the employee side, covering app enablement, marketplace install guidance, user access assignment, and Digital Experience Site selection. Use this for: 'turn on Salesforce IT Service', 'set up IT Service on Teams', 'assign Teams for Employee permission set', 'give employees access to Teams for Employee Service', 'manage user access for Teams ITSM', 'grant users the permission sets needed for Teams Employee Service', 'select a digital experience site for Teams', 'install Salesforce IT Service app on Teams', or any request to complete the IT Service half of the Teams ITSM Go page checklist (including the Manage User Access step). DO NOT TRIGGER for the base Teams Salesforce Go page toggle or Azure/Entra app setup (service-itsm-teams-configure) or for the IT Desk/fulfiller half of the checklist (service-itsm-teams-itdesk-configure).

待分類1K昨天更新

Service Itsm Teams Coordinate

forcedotcom

End-to-end autopilot orchestrator for setting up Microsoft Teams integration in Salesforce Service Cloud ITSM — runs the whole flow (enable the Teams for Employee Service Go feature, register the Microsoft Entra app, populate Named Credentials, configure the IT Desk and IT Service checklists, turn on Swarming, and optionally embed the Agentforce agent) in one continuous pass, stopping only at the points a human must act. Use when the user asks to set up Microsoft Teams for ITSM end to end, 'set up teams for it service', 'do the whole teams itsm setup', 'configure microsoft teams for employee service', or wants a guided Teams ITSM walkthrough. Delegates each stage to a specialized child skill while driving the sequence itself. DO NOT TRIGGER when the user asks to enable Teams alone, configure just the IT Desk or IT Service checklist alone, or enable Swarming alone — delegate directly to the specific child skill in those cases.

待分類1K昨天更新

Service Itsm Teams Itdesk Configure

forcedotcom

Configure the "Set Up Salesforce IT Desk" checklist for Microsoft Teams Employee Service (ITSM) — the fulfiller/agent side, covering app enablement, marketplace install guidance, user access assignment, and Swarming collaboration-tool setup. Use this for: 'turn on Salesforce IT Desk', 'set up IT Desk on Teams', 'assign Teams for IT Desk permission set', 'set Teams as collaboration tool for swarming', 'install Salesforce IT Desk app on Teams', or any request to complete the IT Desk half of the Teams ITSM Go page checklist. DO NOT TRIGGER for the base Teams Salesforce Go page toggle or Azure/Entra app setup (service-itsm-teams-configure) or for the IT Service/employee half of the checklist (service-itsm-teams-itservice-configure).

待分類1K昨天更新

Service Itsm Teams Debug

forcedotcom

透過對 Salesforce 組織執行通過/失敗設定檢查清單,診斷 Microsoft Teams 員工服務(ITSM)設定失敗問題。

DevOps & Cloud1K昨天更新

Service Itsm Teams Employee Agent Configure

forcedotcom

Configure the embedded Agentforce Employee Agent so it replies inside the Microsoft Teams ITSM custom client ('Salesforce Employee Assist' / 'Ask AI Agent'). Use this for: 'set up employee agent in Teams', 'embed Agentforce agent in Teams', 'make the IT Service Employee Agent reply in Teams', 'Teams Ask AI Agent not responding', 'agent joins then leaves without replying', 'configure MIAW deployment for Teams employee agent', 'Teams embedded messaging agent setup'. Builds the whole stack headlessly (zero Setup-UI clicks): the Web messaging channel with User Verification ON, the Enhanced Chat User Verification Key Set (JWKS_URL) it requires, the Teams_AgentForce custom-client deployment, the routing flow to the agent, and the Agent Access permission set that lets the portal user reach the agent. DO NOT TRIGGER for enabling the Teams feature Salesforce Go page toggle (service-itsm-teams-configure) or for configuring notification preferences.

待分類1K昨天更新

Service Itsm Swarming Configure

forcedotcom

透過 Connect API 呼叫啟用 Salesforce Swarming ITSM 功能,並將協作工具設為 Teams。

DevOps & Cloud1K昨天更新