关于 integrating-b2b-commerce-open-code-components
此技能将 Salesforce 官方开源 B2B Commerce 组件和标签复制到商店站点元数据,使其可在 Experience Builder 的组件面板中使用。它适用于新建或现有商店,并包含仓库、站点元数据检查及复制步骤。
主要功能
- 01复制 B2B Commerce 开源组件
- 02复制组件所需的标签文件
- 03检查并选择商店站点元数据
- 04支持覆盖现有文件或仅复制新增项
- 05提供部署与验证后续步骤
适用场景
- 01向现有 B2B Commerce 商店添加组件
- 02为新商店集成开源组件
- 03让组件出现在 Experience Builder 面板
- 04更新已集成的组件和标签
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill integrating-b2b-commerce-open-code-components安装后在 Claude Code 中输入/integrating-b2b-commerce-open-code-components确认已加载。
详细介绍
适用场景
在以下情况下使用此技能:
- 将所有开源 B2B Commerce 组件集成到商店中
- 向新的或现有的 B2B Commerce 商店添加开源组件
- 在 Experience Builder 中提供开源代码组件
规则
- 始终先说明,再执行。 运行任何命令之前,必须先告诉用户该命令的作用以及运行它的原因。切勿只显示原始命令并请求许可。用户应能先阅读说明,了解目的,然后再批准。
概述
此技能会将官方 Salesforce 仓库(https://github.com/forcedotcom/b2b-commerce-open-source-components)中的所有开源 B2B Commerce 组件复制到 B2B Commerce 商店的站点元数据中。集成后,这些组件会显示在 Experience Builder 组件面板中。
启动流程
触发此技能时,在复制之前自动执行以下检查。
检查 0:确定软件包目录
读取 sfdx-project.json 并选定活动软件包目录。提取 packageDirectories[],并使用 "default": true 的条目;如果没有条目标记为默认,则使用第一个条目。在下文所有位置都将此值用作 <package-dir>。如果缺少 sfdx-project.json 或其中没有 packageDirectories,请告知用户并中止。
检查 1:开源仓库
确认仓库已克隆到 .tmp/b2b-commerce-open-source-components:
- 如果目录不存在: 告诉用户:“我正在将官方 B2B Commerce 开源组件仓库从 GitHub 克隆到本地
.tmp/文件夹,以便访问所有开源代码组件。” 然后运行:git clone https://github.com/forcedotcom/b2b-commerce-open-source-components .tmp/b2b-commerce-open-source-components - 如果目录存在且包含
force-app/main/default/sfdc_cms__lwc和sfdc_cms__label,请提供以下选项:“开源仓库已克隆。你想如何继续?”
- 复用现有仓库 — 使用已克隆的仓库
- 重新克隆 — 删除现有仓库并从 GitHub 重新克隆
- 如果目录存在但结构无效: 告诉用户:“克隆的仓库结构异常。我将删除它并重新克隆一份。” 然后删除并重新克隆。
- 如果克隆失败: 告知用户并中止
检查 2:商店和站点元数据
确认已选定商店,并且站点元数据在本地可用:
- 告诉用户:“我正在检查你的项目是否已在本地包含 B2B 商店元数据。”
检查
<package-dir>/main/default/digitalExperiences/site/中是否包含任何商店目录。 - 如果存在商店元数据: 使用该元数据。如果找到多个商店,请用户选择一个。
- 如果未找到商店元数据: 在委派之前,先尝试从已连接的组织中检索:
- 运行
sf org list(或检查sf config get target-org)以查找已连接的组织。如果有多个组织,请用户确认或选择一个。 - 使用
sf org list metadata --metadata-type DigitalExperienceBundle --target-org <alias>列出该组织中的DigitalExperienceBundle站点包。筛选出site/*条目。 - 如果至少存在一个站点包,请询问用户要使用哪个,然后运行:
sf project retrieve start --metadata "DigitalExperienceBundle:site/<storeName>" --target-org <alias>该包会保存到<package-dir>/main/default/digitalExperiences/site/<storeName>/。 - 仅当没有可用的已连接组织、找不到站点包或检索失败时: 委派给 creating-b2b-commerce-store 技能。
- 运行
所有检查完成后的必需状态:
- 软件包目录 — 检查 0 中确定的值(例如
force-app) - 商店名称 — 所选的
fullName值(例如My_B2B_Store1) - 站点元数据路径 —
<package-dir>/main/default/digitalExperiences/site/<store-name>/ - 仓库路径 —
.tmp/b2b-commerce-open-source-components/
集成任务
将克隆仓库中的所有组件和标签复制到站点目录:
- 源目录:
.tmp/b2b-commerce-open-source-components/force-app/main/default/sfdc_cms__lwc/*和sfdc_cms__label/*(开源仓库自身的目录结构——始终为force-app) - 目标目录:
<package-dir>/main/default/digitalExperiences/site/<store-name>/sfdc_cms__lwc/和sfdc_cms__label/(在 Check 0 中解析<package-dir>)
步骤:
- 告诉用户:“我正在检查您的商店站点元数据中是否已存在开源代码组件。” 检查目标目录是否已包含文件。
- 如果存在文件,提供选项:
“{store-name} 中已存在组件。您希望如何继续?”
- 全部覆盖 — 将所有现有组件替换为仓库中的最新版本
- 仅复制新增项 — 跳过现有组件,仅复制尚不存在的组件
- 告诉用户:“我现在正在将克隆仓库中的所有开源代码 LWC 组件复制到您商店的站点元数据目录中。” 将所有组件目录从源目录复制到目标目录。
- 告诉用户:“我正在复制这些组件所需的相关标签文件。” 将所有标签目录从源目录复制到目标目录。
- 报告:“已复制 X 个组件和 Y 组标签”
输出:
✅ Integration Complete!
Copied: X components and Y label sets to <store-name>
Next Steps:
1. Deploy: sf project deploy start -d <package-dir>/main/default/digitalExperiences/site/<store-name>
2. Open Experience Builder and use new components from the palette
3. Publish your site when ready
交互示例
用户:“将开源代码组件集成到我的商店”
Agent:“我正在检查开源组件仓库是否已克隆到本地……”
Agent: (仓库已存在)
“开源仓库已克隆。您希望如何继续?”
- 重用现有仓库 — 使用已克隆的仓库
- 重新克隆 — 删除现有仓库并从 GitHub 重新克隆
用户:“1”
Agent:“我正在检查您的项目是否已有本地 B2B 商店元数据……”
- ✓ 找到 My_B2B_Store1 的商店元数据
Agent:“我正在检查您的商店站点元数据中是否已存在开源代码组件……”
Agent: (文件已存在)
“My_B2B_Store1 中已存在组件。您希望如何继续?”
- 全部覆盖 — 将所有现有组件替换为仓库中的最新版本
- 仅复制新增项 — 跳过现有组件,仅复制尚不存在的组件
用户:“1”
Agent:“我现在正在将克隆仓库中的所有开源代码 LWC 组件复制到您商店的站点元数据目录中……” Agent:“我正在复制这些组件所需的相关标签文件……”
- ✓ 已复制 45 个组件和 38 组标签
✅ Integration Complete!
Copied: 45 components and 38 label sets to My_B2B_Store1
Next Steps:
1. Deploy: sf project deploy start -d force-app/main/default/digitalExperiences/site/My_B2B_Store1
2. Open Experience Builder and use new components from the palette
3. Publish your site when ready
错误处理
| 错误 | 消息 | 操作 |
|---|---|---|
| 未找到商店 | “在组织中找不到商店 ‘{name}’。” | 再次列出商店 |
| Git 克隆失败 | “克隆仓库失败。请检查互联网连接。” | 重试或中止 |
| 仓库结构无效 | “仓库结构已更改。预期包含 sfdc_cms__lwc 和 sfdc_cms__label。” | 提醒用户并中止 |
| 文件复制失败 | “复制文件失败。请检查文件权限。” | 显示错误详情 |
验证清单
- 启动流程已完成:仓库已克隆,商店元数据可用
- 组件已复制到正确的目标路径(
sfdc_cms__lwc/) - 标签已复制到正确的目标路径(
sfdc_cms__label/) - 复制过程中没有文件权限错误
- 已提供部署命令,并告知用户进行测试