mcpField
D
dx-pkg-post-install-configure

dx-pkg-post-install-configure

github.com/forcedotcom云与 DevOps1.1k3.5k 次安装1 天前更新
代码仓库

关于 dx-pkg-post-install-configure

用于自动化 Salesforce 托管软件包安装后配置的技能,面向负责组织设置的管理员和开发者。它解析安装文档,将配置步骤分类为可自动执行或需手动完成,并在用户审核后执行。

主要功能

  1. 01读取并解析安装后文档
  2. 02发现 MCP 与 CLI 执行方式
  3. 03核验组织身份和软件包安装
  4. 04分类配置步骤并供用户审核
  5. 05执行获批步骤并报告结果

适用场景

  1. 01配置软件包权限集和字段权限
  2. 02通过元数据 API 修改页面布局
  3. 03识别需在 Setup 界面完成的步骤
  4. 04在 MCP 执行失败时回退到 CLI

MCP 相关

优先使用组织原生 MCP 或 Claude Code MCP 执行 Salesforce 查询和记录操作,并在 MCP 不可用或失败时回退到 sf CLI。

安装

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

$npx skills add https://github.com/forcedotcom/sf-skills --skill dx-pkg-post-install-configure

安装后在 Claude Code 中输入/dx-pkg-post-install-configure确认已加载。

详细介绍

何时使用此技能

在为任何 Salesforce 托管软件包自动执行安装后配置时使用。此技能会读取软件包的安装后文档,发现可用的执行方法,并自动执行配置步骤,包括权限集、对象/字段权限、页面布局、Visualforce 页面访问权限和选项卡设置。

输入

  • **必填:**软件包名称(例如,LMA、FMA、work.com)
  • **可选:**安装后文档路径(PDF、Markdown、URL)

如果未提供文档,请让用户提供。

工作流

按顺序执行各阶段。每个阶段都必须通过后才能继续。


阶段 1:发现可用的执行方法

优先级顺序:

  1. Org 原生平台 MCP 服务(最高优先级——通过 Headless 360 直接访问 org)
  2. Claude Code 外部 MCP 服务(sf-sobject-all、sf-sobject-all-sb 等)
  3. sf CLI 备用方案(经过身份验证后始终可用)
步骤 1A:解析 org API 版本

动态发现 org 当前的 API 版本——切勿将版本号硬编码:

sf org display --target-org <alias> --json

从 JSON 响应中读取 result.apiVersion(例如,"67.0")。保存此值,并在所有后续 REST 路径中将其用作 v<apiVersion>。如果命令失败,则回退到此技能元数据中声明的 minApiVersion(67.0)。

步骤 1B:检查 Org 原生平台 MCP 服务

查询 Tooling API,以检查 MCP 服务是否可用:

sf api request rest "/services/data/v<apiVersion>/tooling/query?q=SELECT+Id,DeveloperName,MasterLabel+FROM+McpServerAccess" --target-org <alias>
步骤 1C:确定执行方法

检查有哪些 Claude Code MCP 工具可用且已完成身份验证。

按 org 类型划分的 MCP 工具前缀:

Org 类型工具前缀
生产环境mcp__sf-sobject-all__
沙盒mcp__sf-sobject-all-sb__
Falcon Test (pc-rnd)mcp__sf-sobject-all-falcon__

如果 MCP 需要身份验证,请调用身份验证工具。如果身份验证失败,则回退到 sf CLI。


阶段 2:验证身份验证状态和 org 身份
  1. 运行轻量级测试查询(SELECT Id, Name, IsSandbox FROM Organization)
  2. 如果 MCP 身份验证失败,则自动回退到 sf CLI
  3. 显示 org 信息,并在继续之前请用户确认

阶段 3:验证软件包是否已安装
  1. 确定软件包命名空间(如果未知,请询问用户)
  2. 通过 Tooling API(InstalledSubscriberPackage)进行检查——切勿使用 PackageLicense
  3. 如果找不到软件包,则停止并告知用户

阶段 4:读取并解析安装后文档

阅读用户提供的文档,并提取独立的配置步骤。

**支持的格式:**PDF、Markdown、URL(通过 WebFetch)、粘贴的文本。

解析方法:

  1. 提取文档中的每个编号或项目符号步骤
  2. 在继续之前,将提取的步骤展示给用户验证

阶段 5:对步骤分类并交互式审核计划

将从文档中提取的每个步骤分类为自动化或手动。

自动化能力参考

通过 MCP(sobject-all)或 sf CLI CRUD:

  • 对任何标准或自定义对象执行记录 CRUD 操作(PermissionSet、ObjectPermissions、 FieldPermissions、SetupEntityAccess、PermissionSetTabSetting、PermissionSetAssignment 等)

通过 Metadata API 检索/部署(sf CLI):

  • 页面布局修改(添加相关列表、字段、分区)
  • 配置文件设置
  • 自定义元数据类型记录

通过 sf CLI Tooling API:

  • Tooling 查询(InstalledSubscriberPackage、ApexPage、ApexClass 等)
  • 任何可通过 REST 访问的 Tooling 操作

手动(无 API 路径——需要使用 Setup UI):

  • REST 未公开的系统权限
  • 已连接应用的 OAuth 配置
  • Environment Hub 关联
交互式审批

展示分类后的计划,并让用户选择:

  • “全部批准”——按计划执行所有步骤
  • “由我选择”——选择要批准或跳过的步骤
  • “我有问题”——在决定之前讨论具体步骤

阶段 6:执行已批准的步骤

对每个已批准的步骤,使用已确定的执行方法。

执行方式参考
操作通过 MCP通过 sf CLI
SOQL 查询soqlQuery 工具sf data query --query "<SOQL>" --target-org <alias> --json
创建记录createSobjectRecord 工具sf data create record --sobject <Object> --values "..." --target-org <alias> --json
更新记录updateSobjectRecord 工具sf data update record --sobject <Object> --record-id <id> --values "..." --target-org <alias> --json
描述对象getObjectSchema 工具sf api request rest "/services/data/v<apiVersion>/sobjects/<Object>/describe" --target-org <alias>
页面布局不适用Metadata API 检索/部署
通过 Metadata API 修改页面布局

使用 sf project retrieve start → 编辑布局 XML → sf project deploy start。

执行规则
  • 幂等性: 创建任何记录前,先查询以检查记录是否已存在。如果已存在,则跳过。
  • 每步后报告: 显示成功数量、跳过的项目及原因。
  • 自动回退: 如果 MCP 在执行过程中失败,则通过 sf CLI 重试。
  • 失败时: 报告错误,并询问用户是重试、跳过还是停止。

第 7 阶段:指导手动步骤(如有)

如果有任何步骤无法自动完成,请逐一提供对应的 Setup 导航说明。 等待用户确认后再继续下一步。


第 8 阶段:总结

显示最终总结,包括逐步状态、使用的方法以及所有跳过的项目。


错误处理

  • 执行过程中认证失败: 停止执行,要求用户重新认证,并提供恢复执行的选项
  • 记录重复错误: 视为“已配置”,跳过并继续
  • 权限错误: 报告缺少的权限,并建议解决方法
  • 未知步骤类型: 请用户说明情况,并提供将其标记为手动步骤的选项

备注

  • 优先级:组织原生 MCP > Claude Code MCP > sf CLI > 手动
  • 对于所有 CRUD 和 Tooling API 操作,sf CLI 始终是有效的回退方式
  • 通过 Metadata API 检索/部署自动修改页面布局
  • 修改前始终验证组织身份
  • 所有操作均遵循已认证用户的权限

评论

支持 Markdown