关于 commerce-b2b-open-code-components-integrate
面向 Salesforce B2B Commerce 项目的技能,可将开源组件和标签复制到商店站点元数据,使其出现在 Experience Builder 中。它会检查仓库与商店元数据,并说明部署步骤。
主要功能
- 01克隆或复用组件仓库
- 02解析当前软件包目录
- 03查找或检索商店元数据
- 04复制组件和标签文件
- 05提供覆盖或仅复制新增项的选项
- 06提供部署步骤
适用场景
- 01向 B2B 商店添加开源组件
- 02在 Experience Builder 中提供组件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill commerce-b2b-open-code-components-integrate安装后在 Claude Code 中输入/commerce-b2b-open-code-components-integrate确认已加载。
详细介绍
何时使用此技能
在需要执行以下操作时使用此技能:
- 将所有开源 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>/。 - 仅当没有可用的已连接组织、未找到站点包或检索失败时: 委派给 commerce-b2b-store-create 技能。
- 运行
所有检查完成后必须具备的状态:
- 软件包目录 — 在检查 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 商店元数据……”
- [done] 找到商店 My_B2B_Store1 的元数据
Agent:“我正在检查您的商店站点元数据中是否已存在开源代码组件……”
Agent: (文件已存在)
“My_B2B_Store1 中已存在组件。您希望如何继续?”
- 全部覆盖 — 用仓库中的最新组件替换所有现有组件
- 仅复制新增项 — 跳过现有组件,仅复制尚不存在的组件
用户:“1”
Agent:“我现在正在将克隆仓库中的所有开源代码 LWC 组件复制到您商店的站点元数据目录中……” Agent:“我正在复制这些组件所需的相关标签文件……”
- [done] 已复制 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
错误处理
| 错误 | 消息 | 操作 |
|---|---|---|
| 未找到商店 | "Store '{name}' not found in org." | 再次列出商店 |
| Git 克隆失败 | "Failed to clone repository. Check internet connection." | 重试或中止 |
| 仓库结构无效 | "Repository structure has changed. Expected sfdc_cms__lwc and sfdc_cms__label." | 警告用户并中止 |
| 文件复制失败 | "Failed to copy files. Check file permissions." | 显示错误详情 |
验证清单
- 启动流程已完成:仓库已克隆,商店元数据可用
- 组件已复制到正确的目标路径(
sfdc_cms__lwc/) - 标签已复制到正确的目标路径(
sfdc_cms__label/) - 复制过程中未出现文件权限错误
- 已提供部署命令,并告知用户进行测试