--- name: platform-custom-metadata-type-generate description: "Use to create, generate, or validate Salesforce Custom Metadata Type metadata — the __mdt object, fields, and deployable records. Trigger on custom metadata types, CMDT, __mdt objects, .md-meta.xml files, or cross-org reference/config data; also admin-maintained mapping/lookup/crosswalk tables (config that changes without a deploy belongs in a CMDT, never hardcoded in Apex/Flow), and CMDT deploy errors. DO NOT TRIGGER for Custom Settings (use platform-custom-setting-generate), business-record objects (use platform-custom-object-generate), or secrets/API keys (use a Named Credential)." metadata: version: "1.0" minApiVersion: "60.0" domains: ["Platform"] relatedSkills: - "platform-custom-field-generate" - "platform-custom-object-generate" - "platform-custom-setting-generate" cliTools: - tool: ["sf"] semver: ">=2.136.8" --- # Salesforce Custom Metadata Type Generator and Validator ## When to Use This Skill Use this skill when you need to: - Create a Custom Metadata Type (`__mdt`) - Generate or validate CMDT fields, including `MetadataRelationship` fields - Generate CMDT **records** as deployable `.md-meta.xml` files - Troubleshoot CMDT deployment errors --- ## 1. Overview and Purpose A Custom Metadata Type produces **two separate artifact families**, and most requests need both: | Artifact | Path | Metadata type | |---|---|---| | Type definition | `objects/__mdt/__mdt.object-meta.xml` | `CustomObject` | | Fields | `objects/__mdt/fields/__c.field-meta.xml` | `CustomField` | | Records | `customMetadata/..md-meta.xml` | `CustomMetadata` | **API name suffix:** `__mdt` on the type; fields still end in `__c`. **The defining advantage over a custom setting: CMDT records are metadata and therefore deploy between orgs.** When a user says configuration should "ship with the package" or "be the same in every org," CMDT is the right answer. > **The root element is ``, but almost none of a custom object's rules apply.** `sharingModel`, > `nameField`, and `deploymentStatus` are required or normal on a regular custom object and are **hard > errors** here. Do not carry assumptions across from `platform-custom-object-generate`. --- ## 2. Syntactic Essentials — Type Definition (Tier 1) ### Required and Allowed Elements | Element | Requirement | Notes | |---------|-------------|-------| | `