Agent Skills
返回列表
为微信小游戏添加周排行

为微信小游戏添加周排行

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_c830ad09/wechat-weekly-leaderboard。

技能介绍

要解决什么问题

微信小游戏的好友排行榜必须走开放数据域:主域不能直接读好友的云存储,只能把 sharedCanvas 交给开放数据域去拉关系链并绘制。周榜还要按自然周隔离分数,只上报当周最好成绩,并避免异步回调乱序导致「好友列表闪一下只剩自己」这类体验问题。

技能如何工作

技能按微信官方分工落地一套可对照实现的流程:

  • 主域:维护按 weekId 键控的本地周最佳;通过 wx.setUserCloudStorage 只提交当周最优分(JSON 含 wxgame.score、wxgame.update_time、weekId 等);在现有面板矩形内缩放绘制 sharedCanvas,并向开放数据域发送 showWeeklyLeaderboard(含尺寸、像素比、key、周 id、本地/本人分数等)。
  • 开放数据域:用 wx.getFriendCloudStorage / wx.getUserCloudStorage 读榜;兼容微信排行 JSON 与纯数字;过滤非当周记录;排序、去重本人行后画到 sharedCanvas。
  • 稳定性:单调递增的 request id 丢弃过期回调;缓存当前 key + weekId 下最后一次有效的含好友行;开放数据不可用时主域提供短 loading 兜底。

实现前应先阅读技能附带的 references/wechat-open-data-weekly.md(消息约定、异步渲染约束与验收清单)。

适用边界

  • 不把主游戏逻辑放进 open-data/;未使用后端/云数据库/第三方引擎的项目也不强行引入。
  • 已有本地周最佳上传后,不必每次改分都上报;面板坐标优先用渲染器已有的 content 矩形,而非写死坐标。
  • Canvas 兼容:除非项目已有封装,避免直接依赖 ctx.roundRect,改用手动路径辅助函数。

使用场景

  • 已有原生微信小游戏计分逻辑,需要在游戏内面板里接入按自然周隔离的好友周榜展示
  • 主域已能提交分数,但缺少 open-data 目录与 game.json 的 openDataContext,要从零补齐周榜双域结构
  • 周榜面板偶发先显示好友再只剩自己,需要用 request id 与缓存策略排查异步渲染竞态
  • 本地已记录当周最高分,需改为仅通过 wx.setUserCloudStorage 上报 JSON 周最佳而非每次改分都写云

适合人员

  • 用原生 JavaScript 维护微信小游戏、负责 game.js 与计分存储的客户端工程师
  • 要在不引入后端或第三方引擎的前提下,为现有项目补齐 sharedCanvas 周榜与关系链绘制的独立开发者
  • 负责排查开放数据域 wx.getFriendCloudStorage 与主域 showWeeklyLeaderboard 消息联调的前端维护者
  • 需要按 weekId 过滤云存储分数、避免跨周脏数据展示的小游戏玩法与数值策划协作实现同学