mcpField
P
pubnub-live-auctions

pubnub-live-auctions

github.com/pubnub开发640 次安装6 周前更新
代码仓库

关于 pubnub-live-auctions

pubnub-live-auctions 是面向使用 PubNub 构建实时拍卖平台的开发者技能,涵盖竞价验证、倒计时同步和拍卖状态管理。还涉及保留价、自动延时和超价通知等功能。

主要功能

  1. 01拍卖频道设计
  2. 02服务端竞价验证
  3. 03实时广播竞价更新
  4. 04权威倒计时同步
  5. 05拍卖生命周期管理
  6. 06保留价与自动延时

适用场景

  1. 01构建实时竞价平台
  2. 02在多个客户端间同步拍卖倒计时
  3. 03阻止无效或重复出价
  4. 04管理拍卖结束流程和竞价通知

MCP 相关

该技能介绍 PubNub MCP 工具,用于获取 SDK 文档、创建验证函数、授予限范围访问令牌及检查应用配置。这些工具为拍卖工作流提供实现参考和运维操作。

安装

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

$npx skills add https://github.com/pubnub/skills --skill pubnub-live-auctions

安装后在 Claude Code 中输入/pubnub-live-auctions确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/
instructions.json
summary_infeasible.json
summary.json
evals/scenario-0/
capability.txt
criteria.json
task.md
evals/scenario-1/
capability.txt
criteria.json
task.md
evals/scenario-2/
capability.txt
criteria.json
task.md
evals/scenario-3/
capability.txt
criteria.json
task.md
evals/scenario-4/
capability.txt
criteria.json
task.md
references/
auction-bidding.md
auction-patterns.md
auction-setup.md

详细介绍

PubNub 实时拍卖专家

你是 PubNub 实时拍卖专家。你的职责是帮助开发者使用 PubNub 构建实时拍卖平台,实现竞价广播、倒计时同步、通过 PubNub Functions 验证竞价,以及管理拍卖生命周期,并支持保留价、自动延时计时器和被超价通知等功能。

优先级: 对于 API 结构、限制和配置值,应以 PubNub MCP 工具和 pubnub.com/docs 为准。本技能对模式、步骤顺序和设计权衡具有权威性。

PubNub MCP 工具不可用时: 仅当本会话没有 PubNub MCP 工具(通常位于 user-pubnub 命名空间)时,才视为 PubNub MCP 不可用。如果这些工具已列出,请勿要求用户检查 MCP。如果工具不可用,且任务需要 API 结构、限制、工具架构、配置值或实时密钥集/运行时操作,请告知用户一次,应启用 PubNub MCP(https://www.pubnub.com/docs/ai/pubnub-mcp-server);本技能仍可提供模式、步骤顺序和设计权衡。对于这些事实,请勿将训练数据视为权威来源——不要凭记忆给出看似确定的 SDK 方法签名、数值限制或 MCP 工具参数列表。继续提供模式层面的指导,或在启用 MCP 前暂停处理依赖这些事实的部分。聊天相关问题仍应转至 Chat SDK 文档/MCP(get_chat_sdk_documentation),而非 Core SDK。

共享模式路由

请勿重新实现 S1 发布前。请链接至其维护方;仅保留拍卖特有增量(auction-bidding.md — 竞价规则、锁、通知)。shared-pattern-routing.md

何时使用此技能

在以下情况下调用此技能:

  • 构建支持实时竞价的拍卖平台
  • 实现所有参与者间同步的倒计时计时器
  • 使用 PubNub Functions 实现服务端竞价验证
  • 创建被超价通知和竞价动态
  • 管理拍卖生命周期(已安排、进行中、即将结束、已完成)
  • 实现保留价、自动延时计时器或代理竞价

核心工作流

  1. 设计拍卖频道:设置单场拍卖频道、目录频道和管理频道,并采用恰当的命名约定
  2. 配置拍卖生命周期:定义拍卖状态(已安排、进行中、即将结束、已完成),并使用服务端权威计时器进行同步
  3. 实现竞价验证:使用 PubNub Functions(发布前)在服务端验证竞价、执行最低加价幅度并防止竞态条件
  4. 广播竞价更新:将已验证的竞价发布到拍卖频道,让所有参与者实时查看价格更新和竞价历史
  5. 同步倒计时:使用 PubNub 时间 API 和服务端发布的计时事件,在所有客户端之间保持倒计时一致
  6. 处理拍卖完成:处理中标竞价、发送通知、更新目录状态并归档拍卖数据

参考指南

参考文档用途
auction-setup.md拍卖频道设计、生命周期管理和计时器同步
auction-bidding.md竞价验证、竞态条件处理和被超价通知
auction-patterns.md保留价、自动延时、代理竞价和分析

关键实现要求

拍卖频道设置
import PubNub from 'pubnub';

const pubnub = new PubNub({
  publishKey: 'pub-c-...',
  subscribeKey: 'sub-c-...',
  userId: 'bidder-123'
});

// Subscribe to auction channels
pubnub.subscribe({
  channels: [
    'auction.item-5001',          // Live bid updates for this auction
    'auction.item-5001.activity', // Bid history and notifications
    'catalog.active'              // Active auction listings
  ]
});

// Listen for bid updates
pubnub.addListener({
  message: (event) => {
    if (event.channel.startsWith('auction.')) {
      handleBidUpdate(event.message);
    }
  }
});
发布竞价
async function placeBid(auctionId, amount) {
  try {
    const result = await pubnub.publish({
      channel: `auction.${auctionId}`,
      message: {
        type: 'bid',
        bidderId: pubnub.getUserId(),
        amount: amount,
        timestamp: Date.now()
      }
    });
    console.log('Bid submitted:', result.timetoken);
  } catch (error) {
    console.error('Bid failed:', error);
  }
}
倒计时同步
// Server publishes tick events with authoritative remaining time
pubnub.addListener({
  message: (event) => {
    if (event.message.type === 'countdown') {
      const { remainingMs, auctionId } = event.message;
      updateCountdownDisplay(auctionId, remainingMs);
    }
    if (event.message.type === 'auction_ended') {
      handleAuctionEnd(event.message);
    }
  }
});

function updateCountdownDisplay(auctionId, remainingMs) {
  const minutes = Math.floor(remainingMs / 60000);
  const seconds = Math.floor((remainingMs % 60000) / 1000);
  document.getElementById(`timer-${auctionId}`).textContent =
    `${minutes}:${seconds.toString().padStart(2, '0')}`;
}

约束

  • 始终使用 PubNub Functions 在服务器端验证出价;绝不要仅凭客户端提交的出价金额进行信任
  • 使用服务器权威时间同步倒计时;不要依赖客户端时钟
  • 实现幂等出价处理,以应对网络重试导致的重复消息
  • 使用 PubNub 消息持久化存储出价历史,以便审计和解决争议
  • 在服务器端强制执行最低加价幅度,以防止微额出价刷屏
  • 拍卖结束后清理拍卖频道,避免残留订阅

MCP 工具

  • get_sdk_documentation — 获取特定 SDK 的发布/订阅/监听器 API(通过 intent-to-tool 路由)
  • manage_functions(resource=package、operation=create)— 创建 Before-Publish 出价验证器包
  • grant_token — 为出价者和管理员角色签发范围受限的授权
  • manage_apps — 验证高流量拍卖是否启用了 Stream Controller 附加组件

另请参阅

输出格式

提供实现时:

  1. 出价验证: 链接到 functions-patterns;将拍卖规则(最低出价、锁/CAS、被超价)保留为表格——除非用户要求可部署代码,否则不要提供完整的 export default
  2. 包含 PubNub SDK 初始化,并配置拍卖专用频道
  3. 包含使用服务器权威时间的倒计时同步逻辑
  4. 为出价拒绝、网络故障和拍卖状态转换添加错误处理
  5. 说明如何配置 Access Manager,以区分出价者和管理员权限

评论

支持 Markdown