Salesforce metadata best practices and naming conventions. Use when creating fields, objects, flows, validation rules, or reviewing metadata quality. Provides standards for API names, formulas, and deployment validation.
From opspal-salesforcenpx claudepluginhub revpalsfdc/opspal-commercial --plugin opspal-salesforceThis skill is limited to using the following tools:
deployment-checklist.mdflow-standards.mdnaming-conventions.mdvalidation-rules.mdProvides process, architecture, review, hiring, and testing guidelines for engineering teams relying on AI code generation.
Delivers DB-free sandbox API regression tests for Next.js/Vitest to catch AI blind spots in self-reviewed code changes like API routes and backend logic.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Activate this skill when the user:
| Type | Pattern | Example |
|---|---|---|
| Standard Extension | {Standard}__{Extension}__c | Account__Extension__c |
| Custom Object | {BusinessName}__c | Billing_Schedule__c |
| Junction Object | {Parent1}_{Parent2}__c | Account_Contact__c |
Rules:
| Type | Pattern | Example |
|---|---|---|
| Standard Fields | {DescriptiveName}__c | Annual_Revenue__c |
| Lookup | {RelatedObject}__c | Primary_Contact__c |
| Formula | {Output}_Formula__c | Days_Open_Formula__c |
| Rollup Summary | {Calculation}_{Child}__c | Total_Line_Items__c |
Rules:
Account_Account_Name__c)| Type | Pattern | Example |
|---|---|---|
| Record-Triggered | {Object}_{Action}_{Trigger} | Account_Enrich_AfterInsert |
| Screen Flow | {Process}_{Purpose} | Case_Escalation_Request |
| Autolaunched | {Integration}_{Action} | ERP_Sync_Orders |
| Scheduled | {Frequency}_{Process} | Daily_Lead_Cleanup |
| Pattern | Example |
|---|---|
{Object}_{Field}_{Condition} | Opportunity_Amount_Required |
{Object}_{Process}_{Rule} | Case_Escalation_ManagerRequired |
// ❌ WRONG - NEVER use these on picklists
ISBLANK(Picklist_Field__c)
ISNULL(Picklist_Field__c)
// ✅ CORRECT
TEXT(Picklist_Field__c) = ""
LEN(TEXT(Picklist_Field__c)) = 0
ISPICKVAL(Picklist_Field__c, "")
// Check for null on text fields
IF(ISBLANK(Text_Field__c), "Default", Text_Field__c)
// Check for null on numbers
IF(ISNULL(Number_Field__c), 0, Number_Field__c)
// Safe division
IF(Denominator__c = 0, 0, Numerator__c / Denominator__c)
// Safe cross-object reference
IF(ISBLANK(Account__r.Industry), "Unknown", Account__r.Industry)
// Max 10 unique relationships per formula
// Max 5 levels deep (A.B.C.D.E)
| Issue | Detection | Resolution |
|---|---|---|
| Field History Limit | Query FieldDefinition | Remove tracking from less critical fields |
| Picklist Formula Error | Syntax check | Use TEXT() wrapper |
| Missing Dependencies | Deploy validation | Add dependencies to package |
| FLS Restrictions | Profile check | Update permissions first |
For detailed standards, see:
naming-conventions.md - Complete naming guidevalidation-rules.md - Validation rule best practicesflow-standards.md - Flow design patternsdeployment-checklist.md - Pre-deployment validation