mcpField
C
commerce-b2b-open-code-components-integrate

commerce-b2b-open-code-components-integrate

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

关于 commerce-b2b-open-code-components-integrate

面向 Salesforce B2B Commerce 项目的技能,可将开源组件和标签复制到商店站点元数据,使其出现在 Experience Builder 中。它会检查仓库与商店元数据,并说明部署步骤。

主要功能

  1. 01克隆或复用组件仓库
  2. 02解析当前软件包目录
  3. 03查找或检索商店元数据
  4. 04复制组件和标签文件
  5. 05提供覆盖或仅复制新增项的选项
  6. 06提供部署步骤

适用场景

  1. 01向 B2B 商店添加开源组件
  2. 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 中提供开放代码组件

规则

  1. 执行前务必先说明。 运行任何命令之前,必须告知用户该命令的作用以及运行原因。切勿只展示原始命令并征求许可。用户应能先阅读说明、了解目的,再决定是否批准。

概述

此技能会将 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:

  1. 如果目录不存在: 告知用户:"我正在将官方 B2B Commerce 开源组件仓库从 GitHub 克隆到本地 .tmp/ 文件夹。这样我们就能访问所有开放代码组件。" 然后运行:git clone https://github.com/forcedotcom/b2b-commerce-open-source-components .tmp/b2b-commerce-open-source-components
  2. 如果目录存在,且包含 force-app/main/default/sfdc_cms__lwc 和 sfdc_cms__label,请提供以下选项:

    "开源仓库已克隆。你想如何继续?"

    1. 重用现有仓库 — 使用已克隆的仓库
    2. 重新克隆 — 删除现有仓库并从 GitHub 重新克隆
  3. 如果目录存在但结构无效: 告知用户:"克隆的仓库结构不符合预期。我将删除它并重新克隆一份。" 然后删除并重新克隆。
  4. 如果克隆失败: 告知用户并中止
检查 2:商店和站点元数据

验证是否已选择商店,并且本地有站点元数据:

  1. 告知用户:"我正在检查你的项目是否已有本地 B2B 商店元数据。" 检查 <package-dir>/main/default/digitalExperiences/site/ 中是否包含任何商店目录。
  2. 如果存在商店元数据: 使用该元数据。如果找到多个商店,请让用户选择一个。
  3. 如果未找到商店元数据: 在委派之前,尝试从已连接的组织检索:
    1. 运行 sf org list(或检查 sf config get target-org)以查找已连接的组织。如果有多个组织,请用户确认或选择一个。
    2. 使用 sf org list metadata --metadata-type DigitalExperienceBundle --target-org <alias> 列出该组织中的 DigitalExperienceBundle 站点包。筛选出 site/* 条目。
    3. 如果至少有一个站点包,请询问用户要使用哪个,然后运行: sf project retrieve start --metadata "DigitalExperienceBundle:site/<storeName>" --target-org <alias> 该包将保存到 <package-dir>/main/default/digitalExperiences/site/<storeName>/。
    4. 仅当没有可用的已连接组织、未找到站点包或检索失败时: 委派给 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>)

步骤:

  1. 告诉用户:“我正在检查您的商店站点元数据中是否已存在开源代码组件。” 检查目标目录中是否已有文件。
  2. 如果存在文件,显示以下选项:

    “{store-name} 中已存在组件。您希望如何继续?”

    1. 全部覆盖 — 用仓库中的最新组件替换所有现有组件
    2. 仅复制新增项 — 跳过现有组件,仅复制尚不存在的组件
  3. 告诉用户:“我现在正在将克隆仓库中的所有开源代码 LWC 组件复制到您商店的站点元数据目录中。” 将所有组件目录从源复制到目标。
  4. 告诉用户:“我正在复制这些组件所需的相关标签文件。” 将所有标签目录从源复制到目标。
  5. 报告:“已复制 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: (仓库已存在)

“开源仓库已克隆。您希望如何继续?”

  1. 重用现有仓库 — 使用已克隆的仓库
  2. 重新克隆 — 删除现有仓库,并从 GitHub 重新克隆

用户:“1”

Agent:“我正在检查您的项目是否已在本地包含 B2B 商店元数据……”

  • [done] 找到商店 My_B2B_Store1 的元数据

Agent:“我正在检查您的商店站点元数据中是否已存在开源代码组件……”

Agent: (文件已存在)

“My_B2B_Store1 中已存在组件。您希望如何继续?”

  1. 全部覆盖 — 用仓库中的最新组件替换所有现有组件
  2. 仅复制新增项 — 跳过现有组件,仅复制尚不存在的组件

用户:“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/)
  • 复制过程中未出现文件权限错误
  • 已提供部署命令,并告知用户进行测试

评论

支持 Markdown