mcpField
P
platform-lightning-app-coordinate

platform-lightning-app-coordinate

github.com/forcedotcom开发1.1k5.6k 次安装1 天前更新
代码仓库

关于 platform-lightning-app-coordinate

根据自然语言需求规划并生成可部署的 Salesforce Lightning Experience 应用。它按依赖顺序协调各类元数据,并在可用时调用专用生成技能和 API 上下文。

主要功能

  1. 01将应用需求整理为构建计划
  2. 02按依赖顺序生成元数据
  3. 03协调专用元数据生成技能
  4. 04使用 API 上下文验证元数据
  5. 05组装 Salesforce DX 项目文件

适用场景

  1. 01构建含自定义对象、字段和关系的应用
  2. 02创建含页面、选项卡和权限的应用
  3. 03添加所需的验证规则或 Flow
  4. 04准备可部署的生成元数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill platform-lightning-app-coordinate

安装后在 Claude Code 中输入/platform-lightning-app-coordinate确认已加载。

详细介绍

生成 Lightning 应用

概述

根据自然语言描述,定义 Lightning 自定义应用,并按正确的依赖顺序编排其依赖元数据类型,以构建完整且可部署的 Salesforce Lightning Experience 应用。有专用元数据技能时,请调用这些技能;没有相应技能时,直接生成元数据。

何时使用此技能

适用场景:

  • 用户请求“Lightning 应用”或“端到端解决方案”
  • 用户说“构建应用”“创建应用程序”或“构建一个[类型]应用”(例如项目管理、跟踪等)
  • 工作内容需要创建自定义应用(CustomApplication)及其支持元数据,而不是单独创建某个对象、页面或选项卡

以下示例应触发此技能:

  • “构建一个包含 Tasks、Resources 和 Supplies 对象的项目管理 Lightning 应用”
  • “创建一个用于跟踪车辆的 LEX 应用,包含 Lightning 页面和权限集”
  • “我需要一个包含多个对象及其关系的空间站管理系统”
  • “构建一个包含自定义 Lightning 记录页面的员工入职 Lightning 应用”

请勿用于以下场景:

  • 创建单个元数据组件(请改用对应的元数据技能)
  • 排查或调试现有元数据
  • 构建 Salesforce Classic 应用(而非 Lightning Experience)
  • 用户只要求创建一个对象、一个页面或一个权限集(且没有其他内容)
  • 用户只需要创建或配置应用容器(将现有选项卡分组),不需要其他元数据;请改用 platform-custom-application-generate

元数据类型注册表

此表列出了 Lightning Experience 应用通常需要的元数据类型、对应技能,以及 API 上下文要求。

元数据类型技能名称API 上下文使用规则
自定义对象platform-custom-object-generatesalesforce-api-context必须加载技能并调用 API 上下文
自定义字段platform-custom-field-generatesalesforce-api-context必须加载技能并调用 API 上下文
自定义选项卡platform-custom-tab-generatesalesforce-api-context必须加载技能并调用 API 上下文
FlexiPageplatform-flexipage-generatesalesforce-api-context必须加载技能并调用 API 上下文
自定义应用platform-custom-application-generatesalesforce-api-context必须加载技能并调用 API 上下文
列表视图platform-list-view-generatesalesforce-api-context必须加载技能并调用 API 上下文(如有请求)
验证规则platform-validation-rule-generatesalesforce-api-context必须加载技能并调用 API 上下文(如有请求)
Flowautomation-flow-generatemetadata-experts pipeline必须加载技能并运行管道。无需使用 salesforce-api-context。
权限集platform-permission-set-generatesalesforce-api-context必须加载技能并调用 API 上下文
使用规则

技能规则:如果某种元数据类型有对应技能,必须先加载该技能。请勿在未加载技能的情况下直接生成元数据。

API 上下文规则:生成前,除 Flow 外,必须为每种元数据类型调用 salesforce-api-context 工具。请勿在未先调用 API 上下文的情况下生成元数据。技能提供结构和规则;API 上下文用于确认当前 API 版本支持哪些内容。两者缺一不可。

回退规则:如果所需元数据类型没有对应技能,请根据对 Salesforce Metadata API 的了解和最佳实践直接生成元数据。仍需使用 API 上下文。

原因:技能包含经过验证的模式和约束。API 上下文可提供特定版本的准确信息。两者结合可避免部署失败。


依赖关系图与构建顺序

阶段 1:数据模型(基础)
Custom Objects (no dependencies)
    ↓
Custom Fields (depends on: Objects exist)
    ↓
Relationships (depends on: Both parent and child objects + fields exist)

此阶段的元数据类型:

  1. platform-custom-object-generate —— 一次,包含所有对象
  2. platform-custom-field-generate —— 一次,包含所有字段(包括主从关系、查找关系、汇总汇总字段)
阶段 2:业务逻辑(可选——仅在用户要求时)
Validation Rules (depends on: Fields exist)
    ↓
Flows (depends on: Objects, Fields exist)

此阶段的元数据类型(仅在用户要求时):

  1. platform-validation-rule-generate —— 一次,在提及验证要求时
  2. automation-flow-generate —— 一次,在提及自动化/工作流要求时
阶段 3:用户界面
List Views (depends on: Objects, Fields exist)
    ↓
Custom Tabs (depends on: Objects exist)
    ↓
FlexiPages (depends on: Objects, Tabs exist)

此阶段的元数据类型:

  1. platform-list-view-generate —— 一次,用于筛选记录视图(如有要求)
  2. platform-custom-tab-generate —— 一次,包含所有对象选项卡
  3. platform-flexipage-generate —— 一次,包含所有记录页/主页/应用页面
阶段 4:应用组装
Custom Application (depends on: Tabs exist)

此阶段的元数据类型:

  1. platform-custom-application-generate —— 一次,用于创建 Lightning App 容器
阶段 5:安全与访问权限
Permission Sets (depends on: Objects, Fields, Tabs, App exist)

此阶段的元数据类型:

  1. platform-permission-set-generate —— 一次,包含所有权限集以及以下访问权限:
    • 对象(读取、创建、编辑、删除)
    • 字段(读取、编辑)
    • 选项卡(可见)
    • 自定义应用(可见)

执行工作流

步骤 1:需求分析与规划

操作:

  1. 解析用户的自然语言请求
  2. 提取业务实体(转化为自定义对象)
  3. 提取属性/特性(转化为自定义字段)
  4. 识别关系(主从关系、查找关系)
  5. 检测验证要求(转化为验证规则)
  6. 检测自动化要求(转化为流)
  7. 识别用户角色(为权限集提供依据)

输出:构建计划

生成一份结构化计划,列出:

Lightning App Build Plan: [App Name]

DATA MODEL:
- Custom Objects: [list with object names]
- Custom Fields: [list grouped by object]
- Relationships: [list M-D and Lookup relationships]

BUSINESS LOGIC (if applicable):
- Validation Rules: [list with object and rule name]
- Flows: [list with flow name and type]

USER INTERFACE:
- List Views (if requested): [list with object and view name]
- Custom Tabs: [list with object]
- FlexiPages: [list with page name and type]
- Custom Application: [app name]

SECURITY:
- Permission Sets: [list with purpose]

PER-TYPE EXECUTION (skill + API context for each):
- CustomObject: load platform-custom-object-generate + call salesforce-api-context
- CustomField: load platform-custom-field-generate + call salesforce-api-context
- ValidationRule: load platform-validation-rule-generate + call salesforce-api-context (if requested)
- Flow: load automation-flow-generate + run metadata-experts pipeline (if requested)
- ListView: load platform-list-view-generate + call salesforce-api-context (if requested)
- CustomTab: load platform-custom-tab-generate + call salesforce-api-context
- FlexiPage: load platform-flexipage-generate + call salesforce-api-context
- CustomApplication: load platform-custom-application-generate + call salesforce-api-context
- PermissionSet: load platform-permission-set-generate + call salesforce-api-context

STATUS LINES TO EMIT BEFORE FILE WRITES:
- `type=<Type> skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>`
- Flow exception: `type=Flow skill=complete pipeline=complete`

DEPENDENCY ORDER:
1. Phase 1: Data Model (Objects -> Fields)
2. Phase 2: Business Logic (Validation Rules -> Flows)
3. Phase 3: User Interface (List Views -> Tabs -> Pages)
4. Phase 4: App Assembly (Application)
5. Phase 5: Security (Permission Sets)
步骤 2:按类型执行

针对每种元数据类型,逐一执行以下四个步骤。完成当前类型的全部四个步骤后,再处理下一种类型。不得跳过任何步骤。

步骤操作原因
① 加载技能搜索并阅读该类型的 SKILL.md提供 XML 结构、必需元素、命名规则和验证约束
② 调用 API 上下文针对此元数据类型调用 salesforce-api-context 工具,可使用以下一个或多个工具:get_metadata_type_sections、get_metadata_type_context、get_metadata_type_fields、get_metadata_type_fields_properties、search_metadata_types提供当前有效值——允许的枚举值、必填字段与可选字段,以及此 API 版本的子类型。技能文件提供结构;API 上下文提供特定版本的准确性。
③ 记录状态输出:type=<Type> skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>确认在写入任何文件前已尝试上述两个步骤,并记录使用了哪些 API 上下文工具
④ 生成文件为此类型生成所有文件,然后创建检查点仅在完成 ①②③ 后执行。验证后,再进入下一种类型。

不得将 ① 和 ② 合并为一个操作,也不得在完成 ① 后跳过 ②。 这是两个用途不同的独立步骤。加载技能后,你可能会觉得可以开始生成——请停下,先执行 ②。

如果经过实际尝试后 salesforce-api-context 仍不可用,请记录 mcp=unavailable,并仅依据技能知识生成。完全不尝试 ② 属于错误。


1. 自定义对象

  • ① 加载技能:阅读 platform-custom-object-generate SKILL.md
  • ② API 上下文:针对 CustomObject 调用 salesforce-api-context
  • ③ 状态:type=CustomObject skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成并创建检查点:生成所有自定义对象文件,然后继续处理 #2 2. 自定义字段
  • ① 加载技能:读取 platform-custom-field-generate SKILL.md
  • ② API 上下文:为 CustomField 调用 salesforce-api-context
  • ③ 状态:type=CustomField skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成 + 检查点:生成所有自定义字段文件,然后继续执行 #3

3. 验证规则(仅在请求时)

  • ① 加载技能:读取 platform-validation-rule-generate SKILL.md
  • ② API 上下文:为 ValidationRule 调用 salesforce-api-context
  • ③ 状态:type=ValidationRule skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成 + 检查点:生成所有验证规则文件,然后继续执行 #4

4. 流(仅在请求时)

  • ① 加载技能:读取 automation-flow-generate SKILL.md
  • ② 流水线:运行 metadata-experts/execute_metadata_action 三步流水线(无需调用 salesforce-api-context)
  • ③ 状态:type=Flow skill=complete pipeline=complete
  • ④ 生成 + 检查点:通过流水线生成所有 Flow 文件,然后继续执行 #5

5. 列表视图(仅在请求时)

  • ① 加载技能:读取 platform-list-view-generate SKILL.md
  • ② API 上下文:为 ListView 调用 salesforce-api-context
  • ③ 状态:type=ListView skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成 + 检查点:生成所有列表视图文件,然后继续执行 #6

6. 自定义选项卡

  • ① 加载技能:读取 platform-custom-tab-generate SKILL.md
  • ② API 上下文:为 CustomTab 调用 salesforce-api-context
  • ③ 状态:type=CustomTab skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成 + 检查点:生成所有自定义选项卡文件,然后继续执行 #7

7. FlexiPages

  • ① 加载技能:读取 platform-flexipage-generate SKILL.md
  • ② API 上下文:为 FlexiPage 调用 salesforce-api-context
  • ③ 状态:type=FlexiPage skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成 + 检查点:生成所有 FlexiPage 文件,然后继续执行 #8

8. 自定义应用

  • ① 加载技能:读取 platform-custom-application-generate SKILL.md
  • ② API 上下文:为 CustomApplication 调用 salesforce-api-context
  • ③ 状态:type=CustomApplication skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成 + 检查点:生成自定义应用文件,然后继续执行 #9

9. 权限集

  • ① 加载技能:读取 platform-permission-set-generate SKILL.md
  • ② API 上下文:为 PermissionSet 调用 salesforce-api-context
  • ③ 状态:type=PermissionSet skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成 + 检查点:生成所有权限集文件 — 所有类型均已完成
步骤 3:最终构件组装

所有阶段完成后,将输出整合为可用于部署的结构。


输出

完成的构建会生成:

  1. Salesforce DX 项目目录,包含所有生成的元数据

    • 按标准 SFDX 结构组织:force-app/main/default/
  2. 元数据文件 — 每个组件对应一个文件,按类型组织:

    force-app/main/default/
    ├── objects/              # Custom Objects (.object-meta.xml)
    ├── fields/               # Custom Fields (.field-meta.xml)
    ├── tabs/                 # Custom Tabs (.tab-meta.xml)
    ├── flexipages/           # Lightning Pages (.flexipage-meta.xml)
    ├── applications/         # Custom Applications (.app-meta.xml)
    ├── permissionsets/       # Permission Sets (.permissionset-meta.xml)
    ├── flows/                # Flows (.flow-meta.xml) - if applicable
    └── objects/.../validationRules/  # Validation Rules (.validationRule-meta.xml) - if applicable
    
  3. 部署清单(package.xml)

    • 列出所有组件并包含正确的 API 版本
    • 按依赖顺序,依元数据类型组织
    • 可用于 Salesforce CLI 部署或 Metadata API 部署
  4. 构建摘要报告 — 一个列出以下内容的 Markdown 文件:

    • 创建的每个组件
    • 组件类型和 API 名称
    • 文件路径位置
    • 依赖关系
    • 任何警告或建议

摘要结构示例:

Lightning App Build Complete: Project Management App

METADATA GENERATED:
1 Custom Objects
   - Project__c -> force-app/main/default/objects/Project__c/Project__c.object-meta.xml
   - Task__c -> force-app/main/default/objects/Task__c/Task__c.object-meta.xml
   - Resource__c -> force-app/main/default/objects/Resource__c/Resource__c.object-meta.xml

2 Custom Fields
   - Project__c.Name -> force-app/main/default/objects/Project__c/fields/Name.field-meta.xml
   - Project__c.Status__c -> force-app/main/default/objects/Project__c/fields/Status__c.field-meta.xml
   [... etc ...]

3 Custom Tabs
   - Project__c -> force-app/main/default/tabs/Project__c.tab-meta.xml
   [... etc ...]

4 Lightning Record Pages
   - Project_Record_Page -> force-app/main/default/flexipages/Project_Record_Page.flexipage-meta.xml
   [... etc ...]

5 Custom Application
   - Project_Management -> force-app/main/default/applications/Project_Management.app-meta.xml

6 Permission Sets
   - Project_Manager -> force-app/main/default/permissionsets/Project_Manager.permissionset-meta.xml
   - Project_User -> force-app/main/default/permissionsets/Project_User.permissionset-meta.xml

WARNINGS: None

验证

向用户提交已完成的构建之前,请验证跨组件完整性:

  • 对象与选项卡覆盖情况:每个自定义对象至少有一个自定义选项卡
  • 关系完整性:关系中引用的每个自定义对象(父对象或子对象)都存在于构建中
  • 页面中的字段引用:FlexiPage 中引用的每个字段都存在于相应对象上
  • 应用中的选项卡引用:自定义应用中引用的每个选项卡都已成功创建
  • 权限集完整性:权限集已授予对所有生成的对象、字段、选项卡和应用的访问权限
  • 无孤立组件:没有缺少对象的选项卡、没有缺少对应选项卡的页面、没有缺少选项卡的应用
  • 部署清单完整性:package.xml 按正确的依赖顺序包含所有生成的组件

验证失败处理(类别 2):

  • 如果验证失败,请在构建摘要报告的 VALIDATION WARNINGS 部分列出未通过的检查
  • 这些属于生成后的问题——不要因此阻止交付构建,但要清楚说明哪些内容需要人工审查或修正
  • 针对每项未通过的验证检查,提供具体的修复步骤

注意:单个组件的验证(保留字、名称长度、字段类型等)由专门的元数据技能处理,无需在此重新验证。


错误处理

类别 1:停止并询问用户

遇到以下情况时,停止执行并请求用户澄清:

  • 用户请求过于模糊,无法提取任何对象或字段
  • 检测到相互冲突的要求(例如,“设为私有”+“所有人都应能看到”)
  • 检测到无效的 Salesforce 命名(如 Order、Group 等保留字)
类别 2:生成后警告(记录警告,继续执行)

遇到以下情况时,记录警告并继续执行:

  • 跨组件验证检查未通过(例如,FlexiPage 中引用的字段在对象上不存在)
  • 可选组件生成失败(例如,列表视图生成存在轻微问题)
  • 验证规则或 Flow 的输出存在轻微问题

警告格式:

Warning: [Component Type] generation encountered issue
    Component: [Name]
    Issue: [Description]
    Impact: [What won't work]
    Recommendation: [How to fix manually]
    Continuing with remaining components...

最佳实践

1. 始终遵循依赖顺序

切勿按错误顺序调用技能。字段需要对象,页面需要选项卡,应用需要选项卡。

2. 有可用技能时使用技能

不要重复造轮子。专用技能具有针对字段的验证,可避免部署错误。

3. 生成合理的默认值

用户未指定详细信息时:

  • 对实体使用 Text 类型的名称字段
  • 对交易使用 AutoNumber
  • 为面向用户的对象启用 Search 和 Reports
  • 根据关系设置 sharingModel
4. 构建前进行验证

检查以下内容:

  • API 名称中是否包含保留字
  • 关系限制(每个对象最多 2 个主从关系)
  • 名称长度限制
  • 重复名称

评论

支持 Markdown