关于 pubnub-live-auctions
pubnub-live-auctions 是面向使用 PubNub 构建实时拍卖平台的开发者技能,涵盖竞价验证、倒计时同步和拍卖状态管理。还涉及保留价、自动延时和超价通知等功能。
主要功能
- 01拍卖频道设计
- 02服务端竞价验证
- 03实时广播竞价更新
- 04权威倒计时同步
- 05拍卖生命周期管理
- 06保留价与自动延时
适用场景
- 01构建实时竞价平台
- 02在多个客户端间同步拍卖倒计时
- 03阻止无效或重复出价
- 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.jsonevals/instructions.jsonsummary_infeasible.jsonsummary.jsonevals/scenario-0/capability.txtcriteria.jsontask.mdevals/scenario-1/capability.txtcriteria.jsontask.mdevals/scenario-2/capability.txtcriteria.jsontask.mdevals/scenario-3/capability.txtcriteria.jsontask.mdevals/scenario-4/capability.txtcriteria.jsontask.mdreferences/auction-bidding.mdauction-patterns.mdauction-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 实现服务端竞价验证
- 创建被超价通知和竞价动态
- 管理拍卖生命周期(已安排、进行中、即将结束、已完成)
- 实现保留价、自动延时计时器或代理竞价
核心工作流
- 设计拍卖频道:设置单场拍卖频道、目录频道和管理频道,并采用恰当的命名约定
- 配置拍卖生命周期:定义拍卖状态(已安排、进行中、即将结束、已完成),并使用服务端权威计时器进行同步
- 实现竞价验证:使用 PubNub Functions(发布前)在服务端验证竞价、执行最低加价幅度并防止竞态条件
- 广播竞价更新:将已验证的竞价发布到拍卖频道,让所有参与者实时查看价格更新和竞价历史
- 同步倒计时:使用 PubNub 时间 API 和服务端发布的计时事件,在所有客户端之间保持倒计时一致
- 处理拍卖完成:处理中标竞价、发送通知、更新目录状态并归档拍卖数据
参考指南
| 参考文档 | 用途 |
|---|---|
| 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 附加组件
另请参阅
- pubnub-functions — 在 Before Publish 中进行服务器端出价验证,并使用
require('kvstore')实现原子计数器 - pubnub-security — 使用 Access Manager 配置出价者和管理员的授权
- pubnub-reliability — 使用 idempotent publish 和 dedup-on-merge,避免重试导致重复出价;出价风暴期间使用 backoff and jitter
- pubnub-history — 使用 Message Persistence 记录出价审计轨迹并解决争议
- pubnub-scale — 高流量拍卖适用的 channel groups, wildcards, large-event playbook
- pubnub-presence — active bidder tracking
- pubnub-app-context — bidder profiles
- pubnub-observability — 为每次出价配置 logging correlation;在拍卖高峰期间查看 usage metrics 和 incident runbook
- pubnub-events-and-actions — 通过 action targets 将中标事件路由到计费/履约流程
- pubnub-choose-docs-path — 用于路由其他 PubNub 问题
输出格式
提供实现时:
- 出价验证: 链接到 functions-patterns;将拍卖规则(最低出价、锁/CAS、被超价)保留为表格——除非用户要求可部署代码,否则不要提供完整的
export default - 包含 PubNub SDK 初始化,并配置拍卖专用频道
- 包含使用服务器权威时间的倒计时同步逻辑
- 为出价拒绝、网络故障和拍卖状态转换添加错误处理
- 说明如何配置 Access Manager,以区分出价者和管理员权限