PluginBench
Skill
Pass
Audit score 90

generating-list-view

forcedotcom/sf-skills

Create, generate, and validate Salesforce List View metadata with filtered records and custom columns.

What is generating-list-view?

This skill helps you create and manage Salesforce List Views—filtered, column-based record listings on object tabs. Use it when you need to generate list view metadata files, configure visibility and sharing, set up filters and columns, or troubleshoot List View deployment errors.

  • Generate List View XML metadata files with proper structure and field references
  • Configure filters, filter logic, and visibility scope (Everything, Mine, or Queue)
  • Define ordered column sets with standard and custom field API names
  • Set up sharing and visibility rules for different user roles and groups
  • Validate List View metadata against field types and Salesforce deployment requirements
  • Troubleshoot common deployment errors related to List Views

How to install generating-list-view

npx skills add https://github.com/forcedotcom/sf-skills --skill generating-list-view
Claude Code
Cursor
Windsurf
Cline

How to use generating-list-view

  1. 1.Identify the target object API name and gather business requirements (purpose, audience, fields, filters)
  2. 2.Examine existing list views in force-app/main/default/objects/<Object>/listViews/ for proven patterns
  3. 3.Document the specification: fullName, label, filterScope, filters with operators, booleanFilterLogic if needed, and ordered columns
  4. 4.Author the List View XML metadata file using the correct namespace and structure
  5. 5.Validate that all field names use correct API names, operators match field types, and file name aligns with fullName
  6. 6.Deploy the component and verify in the Salesforce UI that records match filters and columns render correctly

Use cases

Good for
  • Create a filtered list view showing only open records assigned to the current user
  • Generate a shared list view displaying key fields for a work queue across multiple teams
  • Set up role-based visibility for list views with different filter criteria per audience
  • Validate and fix List View XML files that fail deployment due to field name or operator mismatches
  • Build curated record listings with minimal, high-signal columns for mobile-friendly scanning
Who it's for
  • Salesforce developers building metadata-driven solutions
  • Admins creating governed, shared list views for source control
  • Teams setting up role- or task-specific record filtering
  • Organizations managing List View deployment and validation

generating-list-view FAQ

Where should I place List View files?

Place files under force-app/main/default/objects/<ObjectName>/listViews/<fullName>.listView-meta.xml unless the user specifically requests inline inclusion in the object's metadata file.

What's the difference between custom field and standard field API names?

Custom fields use exact API names with __c suffix (e.g., Status__c). Standard fields on custom objects use predefined names like NAME, OWNER.ALIAS, CREATED_DATE, and LAST_UPDATE—not the UI labels.

How do I combine multiple filters in a List View?

Use the booleanFilterLogic element with AND/OR operators and filter indices, e.g., '1 AND (2 OR 3)' to combine three filters logically.

When should I use filterScope='Mine' vs 'Everything'?

Use filterScope='Mine' to show only records owned by the current user. Use 'Everything' to show all matching records. Choose 'Queue' if filtering by a queue.

What's the most common List View deployment error?

Using field labels instead of API names (e.g., 'Status' instead of 'Status__c') or using wrong standard field names (e.g., 'Name' instead of 'NAME'). Always verify field names and operator compatibility with field types.

Full instructions (SKILL.md)

Source of truth, from forcedotcom/sf-skills.


name: generating-list-view description: "Use this skill when users need to create, generate, or validate Salesforce List View metadata. Trigger when users mention list views, filtered record lists, creating views, setting up record columns, filtering records by criteria, or ask about list view visibility. Also use when users say things like "I need a view that shows...", "filter records by...", "create a list view for...", or when they're working with ListView XML files and need validation or troubleshooting." metadata: version: "1.0"

When to Use This Skill

Use this skill when you need to:

  • Create list views for objects
  • Generate filtered, column-based record listings
  • Configure list view visibility and sharing
  • Troubleshoot deployment errors related to List Views

Specification

Salesforce List View Metadata Knowledge

📋 Overview

Salesforce List Views define filtered, column-based record listings on an object's tab.

🎯 Purpose

  • Provide curated, role- or task-specific subsets of records
  • Standardize commonly used filters and visible fields across teams

🔧 Configuration

Unless specifically requested to be generated inline, List Views are stored at:

  • force-app/main/default/objects/<ObjectName>/listViews/<fullName>.listView-meta.xml Only if the user requests are they to be included in the object's metadata file:
  • fore-app/main/default/objects/<ObjectName>/<ObjectName>.object-meta.xml

Key elements:

  • label: Human-friendly name shown in UI (must be under 40 characters in length)
  • fullName (fullName): API identifier used in metadata and file name
  • filterScope: Everything | Mine | Queue
  • filters: field/operation/value triples
  • booleanFilterLogic: Combine multiple filters logically with AND/OR (e.g., "1 AND (2 OR 3)")
  • columns: Ordered list of field API names to display

References:

  • listViews appear on the entity's tab
  • listViews can be referenced by flexipages using the "filterListCard" component

Critical Decision: Visibility Strategy

Choose how broadly the view should appear in the org.

Choose "Visible to all users" when:

  • The view is useful across profiles/roles
  • It's a governed, shared artifact to be managed via source control
  • Data contained is appropriate for broad visibility

Choose "Owner-only/Restricted" when:

  • It is experimental or niche during iteration
  • It is specifically requested to be limited to Users, Groups or Roles
  • There are governance/security reviews pending

When in doubt: Default to "Visible to all users".

Critical Decision: Columns Density

Choose minimal, high-signal columns when:

  • Users need at-a-glance scanning
  • Mobile/responsive performance matters

Choose richer column sets when:

  • Desktop heavy workflows need more context without opening records
  • It serves as a work queue and extra fields reduce clicks

When in doubt: Start with 4–6 columns that directly support the primary task.

Critical Rules (Read First)

Rule 1: Custom Field API Names

For custom fields, use exact API names (e.g., Status__c), not labels.

Wrong:

  • Status (label)

Right:

  • Status__c (API name)

Rule 2: Standard Field Names

For standard fields on Custom Objects, use already defined names:

Wrong:

  • Name (API Name)

Right:

  • NAME

The standard fields on Custom Objects are:

  • NAME
  • RECORDTYPE
  • OWNER.ALIAS
  • OWNER.FIRST_NAME
  • OWNER.LAST_NAME
  • CREATEDBY_USER.ALIAS
  • CREATEDBY_USER
  • CREATED_DATE
  • UPDATEDBY_USER.ALIAS
  • UPDATEDBY_USER
  • LAST_UPDATE
  • LAST_ACTIVITY

Rule 3: Operations Must Match Field Types

Picklists require equals/notEqual; date fields require date operators; boolean values are 0 and 1; do not mix text-only operators with non-text fields.

Wrong:

  • operation="contains" on a picklist
  • value=True on a boolean

Right:

  • operation="equals" with a valid picklist value
  • value=1 on a boolean

Rule 4: Name and Path Alignment

File name, fullName (also sometimes referred to as DeveloperName), and uniqueness must align.

Wrong:

  • File: My_List.listView-meta.xml
  • fullName: MyList

Right:

  • File: MyList.listView-meta.xml
  • fullName: MyList

Rule 5: Folder Placement

Place files under the object's listViews directory or deployments will fail to resolve components. Only if a user requests it, may the listView may be included inline in force-app/main/default/objects/<ObjectName>/<ObjectName>.object-meta.xml

Path:

  • force-app/main/default/objects/<ObjectName>/listViews/<fullName>.listView-meta.xml

Generation Workflow

Step 1: Get Metadata Information

  • Identify the target object API name (e.g., Object__c).
  • Gather business requirements: purpose, audience, fields, filters.
  • Validate values and operator compatibility with field types.

Step 2: Examine Existing Examples

  • Repo: force-app/main/default/objects/<Object>/listViews/ (unless otherwise required by end user)
  • Org: retrieve existing list views for proven patterns (filters, logic, columns).
  • Note what passed review/deployment and delivered expected UX.

Step 3: Create Specification

Document before implementation:

  • Name: fullName and Label
  • Audience: Visibility scope ("all users" vs. shared)
  • Filter scope: Everything | Mine | Queue
  • Filter items: filter, operator, value; plus booleanFilterLogic if multiple
  • Columns: Ordered list of field API names
  • Acceptance criteria: Which records appear, paging behavior, key scenarios

Step 4: Author Metadata File

Use a Lightning-compatible template and ensure valid XML:

<?xml version="1.0" encoding="UTF-8"?>
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>OpenMine</fullName>
    <label>Open - My Records</label>
    <filterScope>Mine</filterScope>
    <columns>NAME</columns>
    <columns>Status__c</columns>
    <columns>OWNER.ALIAS</columns>
    <columns>LAST_UPDATE</columns>
    <filters>
        <field>Status__c</field>
        <operation>equals</operation>
        <value>Open</value>
    </filters>
    <sharedTo>
        <role>CEO</role>
        <roleAndSubordinatesInternal>COO</roleAndSubordinatesInternal>
    </sharedTo>
</ListView>

Notes:

  • For "My" views, use filterScope="Mine".
  • Keep columns tight and purposeful.
  • If intended for all users, omit the "sharedTo" section.

Step 5: Validate Locally

  • Well-formed XML; correct namespace
  • Field names exist on the object; operators and values match field types
  • Path and fullName alignment
  • If multiple filters: set booleanFilterLogic correctly (e.g., "1 AND (2 OR 3)")

Step 6: Deploy and Verify in Org

  • Deploy the component path or the whole object.
  • In the UI, open the object tab and:
    • Confirm records match filters
    • Confirm columns render correctly
    • Confirm visibility matches audience

Common Deployment Errors

ErrorCauseFix
"Invalid field Status"Used label instead of API name, or used API Name instead of defined name for Standard FieldUse Status__c (or correct API name), or NAME instead of Name (for Standard Fields)
"Invalid filter operator"Operator not valid for field typeChoose operation compatible with field type (e.g., equals for picklist)
"Component not found at path"Wrong folder or file namePlace in objects/<Object>/listViews and align file name with fullName
"Malformed booleanFilterLogic"Syntax or index mismatchUse "1 AND 2" style, ensure filters index order matches

Verification Checklist

  • All required fields populated (fullName, label, filterScope, columns)
  • Property values are XML-encoded where needed
  • Custom Field references use API names (e.g., Status__c)
  • Standard Field references use defined names (e.g., NAME)
  • Operations match field types; picklist values are valid
  • booleanFilterLogic (if used) matches filters ordering and count
  • File path and fullName/developerName are aligned
  • No deprecated or Classic-only properties included
  • Deployed successfully and visible as intended
  • Records, columns, and filtering behave as specified