mcpField
S
salla-app-functions-release

salla-app-functions-release

github.com/sallaapp云与 DevOps279 次安装2 周前更新
代码仓库

关于 salla-app-functions-release

用于保存、测试和发布 Salla App Functions 的工作流技能,面向 Salla 应用开发者。它涵盖演示店部署、预览检查、安全审查,以及公开或私有应用的发布步骤。

主要功能

  1. 01按触发器保存或更新函数
  2. 02跟踪演示店异步部署
  3. 03在演示店预览函数
  4. 04准备公开或私有应用发布
  5. 05检查源码中的秘密信息和不安全调用

适用场景

  1. 01将更新后的触发器函数部署到演示店
  2. 02发布前测试函数
  3. 03准备供合作伙伴提交的公开应用草稿
  4. 04经合作伙伴确认后发布私有应用

安装

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

$npx skills add https://github.com/sallaapp/salla-partners-agent-kit --skill salla-app-functions-release

安装后在 Claude Code 中输入/salla-app-functions-release确认已加载。

详细介绍

应用函数 — 保存、测试与发布

只有通过干净的验证后才能保存(salla-app-functions-validate)。

保存(创建或更新)

一个应用只有一个函数,以其触发器为键,因此 get / save / delete 都需要 app_id 和 trigger。save 会对该触发器的函数执行插入或更新。

  • 保存: salla_functions action=save、app_id、trigger、content(整个函数 作为字符串)、name。模板的第一行必须保持原样。会返回部署 job,并触发向应用演示商店异步部署 —— 轮询 salla_functions action=deploy_status、job(由 action=save 返回),直到状态为 COMPLETED,然后测试 (salla-app-functions-test)。一次保存即完成部署;没有单独的部署操作 或版本管理。
  • 读取: salla_functions action=get、app_id、trigger → template + types(.d.ts URLs)+ 应用已保存的 content(或 null)。
  • 移除: salla_functions action=delete、app_id、trigger。

上面的参数名称和 job 结构仅供参考——使用前请通过 salla_functions 确认准确字段。

注意:如果之后更改了发布快照中捕获的应用配置,请重新打开发布流程以刷新快照——参见 salla-publication-consistency。函数部署本身无需重新保存。

发布前测试

使用 salla_functions action=preview 在演示商店上运行——参见 salla-app-functions-test。(手动替代方式:Portal 预览面板 → 选择一个演示商店,输入一个真实记录 ID,点击保存并预览。)预览日志可见,因此不要将机密信息写入日志——下方的发布前扫描会检查这一点。

发布(生产环境)

已保存的函数只有在应用发布后才会到达真实商家商店——重新运行 save 不会发布函数。对于公开应用,Agent 准备发布内容,合作伙伴提交;对于私有应用,Agent 在合作伙伴确认后发布。

  • 公开应用: Agent 通过 app_publish action=validate 验证发布内容,该操作会验证每个部分并保存为草稿(不会由管理员提交)。验证通过后,将真实的 Portal /publish 链接 (替换为真实 ID 的 https://portal.salla.partners/apps/{app_id}/publish)交给合作伙伴,让他们审核草稿并点击一次提交。Agent 绝不会由管理员提交——完整的逐步流程 (open → 对每个部分执行 set → validate)由 salla-publication-consistency 负责。
  • 私有应用: 使用 salla_private_apps action=publish 发布(confirm: true,仅在合作伙伴确认后执行——商家合作伙伴的应用通常会立即上线;无需入驻或上架)→ salla-app-builder → 私有应用。

发布前安全检查。 在提交或发布任何内容之前,扫描已保存的 content (salla_functions action=get):不得包含硬编码的令牌、机密信息或 API 密钥;不得将 context 或商家个人身份信息(PII)的调试转储写入预览日志;不得进行范围过宽的出站 fetch 调用。令牌/OAuth 处理应放在后端,而非函数中——参见 salla-app-auth;Webhook 签名验证 → salla-webhooks。

检查清单

  • 已确认 payload.data(salla-app-functions-design)· 严格模式下 tsc 检查通过(salla-app-functions-validate)。
  • 同步主体在 5 s 总时限内(每次内部异步调用 < 2 s);每个 fetch 都有时限。
  • 所有路径都调用 Resp.success().setData(...)——为空时传入 {}。
  • 不使用 npm/不受支持的核心模块;使用 globalThis.crypto;不硬编码密钥/令牌,不记录任何 PII。
  • 已使用真实记录 ID 在演示商店中进行预览测试(salla-app-functions-test)。
  • 已保存(action=save);对于公开应用,发布验证已通过 (app_publish action=validate → draft),且合作伙伴已获得 Portal /publish 链接; 对于私有应用,合作伙伴已确认 salla_private_apps 发布。

关卡:“预览中的执行状态为 success,未超出时限,安全扫描无问题,并且发布验证已通过且合作伙伴已提交(公开应用),或合作伙伴已确认且 salla_private_apps action=publish confirm:true 返回了发布结果(私有应用)?”

警示

容易产生的想法错误原因
“预览通过了,所以我要发布私有应用。”只有在合作伙伴明确确认且安全扫描无问题后才能发布——商户合作伙伴的私有应用通常会立即上线。
“save 成功了,所以商户已经有了新功能。”保存的代码只有在应用发布后才会到达真实商店(公开应用:合作伙伴提交;私有应用:salla_private_apps action=publish)。
“我来提交公开应用的发布申请。”Agent 会验证草稿;合作伙伴会在 Portal 中一键提交,或明确确认 send_publish_request。

评论

支持 Markdown