关于 commerce-app-review
commerce-app-review 是一项技能,可依据 Adobe Commerce 提交指南交互式审查本地 App Builder 应用。它先列出经文件和行号核实的 MUST 阻塞项,再列出 NICE 建议。
主要功能
- 01依据提交指南审查本地应用
- 02需要应用路径和可下载类型
- 03检查源文件及适用配置
- 04区分 MUST 与 NICE 问题
- 05交互式逐项讲解发现
适用场景
- 01提交前检查 App Builder 应用
- 02定位配置和源代码中的具体问题
- 03按优先级逐项处理阻塞项与建议
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ adobe/ skills --skill commerce-app-review安装后在 Claude Code 中输入/commerce-app-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonevals/files/deployment-issues-app/app.config.yamlpackage.jsonevals/files/deployment-issues-app/actions/sync/index.jsevals/files/security-issues-app/app.config.yamlenv.distpackage.jsonREADME.mdevals/files/security-issues-app/actions/get-catalog/index.jsevals/files/security-issues-app/actions/update-product/index.jsevals/files/well-formed-app/app.commerce.config.jsapp.config.yamldeploy.yamlinstall.yamlpackage-lock.jsonpackage.jsonREADME.mdevals/files/well-formed-app/actions/get-order/index.jsevals/files/well-formed-app/actions/list-orders/index.jsevals/files/well-formed-app/src/commerce-extensibility-1/ext.config.yamlevals/files/well-formed-app/src/commerce-extensibility-1/.generated/app.commerce.config.jsapp.commerce.manifest.jsonevals/files/well-formed-app/src/commerce-extensibility-1/.generated/actions/app-management/app-config.jsassociation.jsreferences/finding.mdreferences/exceptions/non-downloadable.mdrequire-adobe-auth.mdstarter-kit-info.mdreferences/patterns/accs-rest-api-dependency.mdadmin-ui-sdk.md详细介绍
自查 App Builder 应用
根据 Adobe Commerce 提交指南检查本地应用目录,并逐项引导用户审查发现的问题——先处理必须解决的阻碍项,再查看建议优化项。
输入
APP_PATH(可选) — 应用根目录的路径。默认为当前工作目录。APP_TYPE(必填) —downloadable或non-downloadable。可下载应用允许商家下载源代码包;不可下载应用可直接通过 Adobe Exchange 一键安装。
流程
1. 验证路径和应用类型
如果未提供 APP_PATH,则使用当前工作目录。确认该路径存在且为目录。否则,停止并报告:
未找到路径。请提供应用代码库根目录的路径。
如果未提供 APP_TYPE,请询问:
此应用是可下载还是不可下载?
- 可下载 — 商家下载源代码包并自行部署
- 不可下载 — 商家可直接通过 Adobe Exchange 一键安装
在确认两项信息之前,不要继续。
检查是否已安装 aio(例如,command -v aio)。这仅用于检查是否存在——此时不要尝试进行身份验证。如果未找到 aio,只需提示一次:
注意:尚未安装
aio。第 8 步的逐项审查补充内容将使用备用知识, 除非届时已安装并完成身份验证。
无论结果如何,都继续。
2. 加载本地参考资料
读取 references/finding.md 和 references/exceptions/ 下的所有文件(路径相对于此技能文件)。
按条件加载模式文件:
references/patterns/cors-storefront-actions.md— 始终加载references/patterns/accs-rest-api-dependency.md— 始终加载references/patterns/aio-commerce-sdk.md— 始终加载references/patterns/admin-ui-sdk.md— 仅当app.config.yaml或ext.config.yaml中包含commerce/backend-ui/1,或package.json中包含@adobe/uix-guest/@adobe/uix-core时加载
模式文件的优先级高于获取的指南。例外文件会抑制两者中的相关发现。
如果找不到某个文件,则跳过并继续。
3. 获取指南
使用 curl 获取以下两个页面。使用原始 GitHub URL——渲染后的 developer.adobe.com 页面不一定能可靠访问:
- 提交指南:
https://raw.githubusercontent.com/AdobeDocs/commerce-extensibility/refs/heads/main/src/pages/app-development/app-submission-guidelines.md - Admin UI SDK 检查清单:
https://raw.githubusercontent.com/AdobeDocs/commerce-extensibility/refs/heads/main/src/pages/admin-ui-sdk/app-review-checklist.md— 仅当app.config.yaml或ext.config.yaml中包含commerce/backend-ui/1,或package.json中包含@adobe/uix-guest/@adobe/uix-core时获取
如果无法访问某个页面,请说明哪个页面获取失败,继续获取另一个页面,并告知用户覆盖范围不完整。
4. 阅读应用文件
按以下顺序读取这些文件:
app.config.yaml— 扩展点、操作、输入、注释、productDependenciespackage.json— name、description、author、version、dependencies、scriptsenv.dist/env.example/ 根目录下的任何env.*— 已记录的环境变量README.md— 安装说明、事件、API 要求deploy.yaml— 应用 ID、API、工作区install.yaml— 扩展点(如果检测到 Admin UI SDK)src/和actions/下的所有*.config.yaml和ext.config.yamlactions/下的所有index.jsweb-src/src/— UI 代码、innerHTML、路由extension-manifest.json— 如果检测到 Admin UI SDK
如果文件不存在,请记录并继续。
5. 审查
根据模式文件和获取的指南,整理出完整的检查项清单。然后逐项默默检查,不要跳过任何一项。
完全排除以下内容——不要检查:
npm audit、npx npm-check或任何需要运行 npm 的检查- Exchange 列表页面 URL、仓库可见性、Exchange 列表页面中的屏幕截图
- 任何需要访问实时 Exchange 列表页面、已部署环境或外部 URL 的检查
对于每一项:
- 根据第 4 步读取的文件进行检查
- 如果确认 → 记录为 FINDING,并注明严重程度、文件和行号
- 如果
references/exceptions/中的例外适用 → 忽略该项 - 如果不适用于
APP_TYPE→ 跳过
记录任何 FINDING 之前,先在实际文件中核实。如果无法指出具体文件和行号,就不要标记。
标记缺失的软件包之前,请确认源文件中直接导入了该软件包,而不只是将其作为传递依赖。
完成所有项目的检查后,收集所有 FINDING,并分配代码:MUST-<n> 和 NICE-<n>。分配代码前,合并密切相关的 FINDING。
对于每个 finding,记录:
SEVERITY—MUST或NICEDESCRIPTION— 一句话说明具体且可执行的建议FILE_PATH— 相关文件的绝对路径;一般性问题则留空。渲染为 Markdown 链接:[relative/path](file:///absolute/path)LINE_NUMBER— 具体行号;一般性问题填 0CATEGORY— 以下类别中的一个或多个:security·documentation·code·dependencies·other
6. 展示原始 findings 列表
打印简洁的 findings 列表——暂不补充细节。格式:
Found N MUST-have issue(s) and M NICE-to-have recommendation(s).
**MUST — blockers**
- MUST-1: <one-line description> (`<FILE_PATH>`, line <LINE_NUMBER>)
- MUST-2: …
**NICE — recommendations**
- NICE-1: <one-line description> (`<FILE_PATH>`, line <LINE_NUMBER>)
- NICE-2: …
如果某个分组为空,则省略该组标题。若 FILE_PATH 为空,则省略文件引用。
列表后显示:
输入 walkthrough 逐项查看 · 输入 MUST-n 或 NICE-n 深入了解某一项 · 或提出任何问题。
然后等待用户回复。
7. 回复用户
- “walkthrough”(或含义相同的请求)→ 转到第 8 步
- finding 代码(例如 “MUST-2”、“NICE-1”)→ 补充该 finding 的细节并展示;再次显示操作提示行,然后等待
- 其他内容 → 回答用户;再次显示操作提示行,然后等待
重复此流程,直到用户结束会话或所有 findings 均已逐项查看。
8. 逐项查看模式
按顺序逐项查看所有 findings——先 MUST,再 NICE。开始前,获取 IMS 令牌(见下文)。
- 如果某个分组为空,请说明并继续。
- 对于每个 finding,按代码顺序执行:
- 显示带编号的标题(例如
--- MUST issue [n/N] ---) - 补充该 finding 的细节并打印
- 显示:回复
**"resolve it"**与你一起处理此项 · 回复**"next"**继续 · 或提出任何问题 - 等待用户回复
- 显示带编号的标题(例如
查看完最后一项后,以简短的鼓励语收尾,说明已解决的 findings 数量(例如“已解决 X 项,共 N+M 项 findings”),并祝开发者好运。
获取 IMS 令牌
在本次会话中,首次需要补充细节时运行一次:
IMS_TOKEN=$(aio auth login --bare 2>/dev/null)
- 如果
$IMS_TOKEN不为空 → 使用文档 Agent 补充细节。 - 如果为空 → 警告用户;请其运行
aio login并重启,以获得最佳体验;询问是否要在不补充细节的情况下继续,或停止。
补充 finding 的细节
- 如果 IMS 令牌可用,查询文档 Agent:
curl -s -X POST https://commerce-docs-prod-endpoint-d0ctgyebe7bec8e6.a02.azurefd.net/api/query \
-H "Authorization: Bearer $IMS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query": "<topic derived from the finding>", "count": 5}'
根据类别选择 index:
security、deployment、code→app-builder-docsdocumentation、dependencies→commerce-extensibility-docs- 默认 → 省略
index
-
在
FILE_PATH和LINE_NUMBER指定的位置读取实际文件。针对开发者的代码生成具体的修改前/修改后修复方案,而非通用示例。 -
使用
references/finding.md中的格式编写补充细节后的 finding。
如果 Agent 未返回结果,则使用 App Builder / Commerce 知识作为后备,并继续。
失败模式
- 未找到路径 → 停止并报告;不要继续
- 无法访问指南页面 → 说明哪个页面访问失败;继续使用另一个页面;提醒用户覆盖范围不完整
- 未安装
aio或未通过身份验证 → 警告用户,指导他们运行aio login,并询问是继续(不进行信息补充)还是停止 - 文档 Agent 未返回结果 → 回退到 App Builder / Commerce 知识;不要停止