mcpField
P
pubnub-live-auctions

pubnub-live-auctions

github.com/pubnubDevelopment640 installsUpdated 6w ago
Repository

About pubnub-live-auctions

pubnub-live-auctions is a specialist skill for developers building real-time auction platforms with PubNub. It covers bid validation, synchronized countdowns, auction state management, and features such as reserve prices and outbid notifications.

Key features

  1. 01Auction channel design
  2. 02Server-side bid validation
  3. 03Real-time bid broadcasts
  4. 04Authoritative countdown synchronization
  5. 05Auction lifecycle management
  6. 06Reserve prices and auto-extend timers

Use cases

  1. 01Building a live bidding platform
  2. 02Keeping auction countdowns synchronized across clients
  3. 03Preventing invalid or duplicate bids
  4. 04Managing auction completion and bid notifications

MCP support

The skill describes PubNub MCP tools for retrieving SDK documentation, creating validation functions, granting scoped access tokens, and checking app configuration. These tools provide implementation references and operations for auction workflows.

Install

Copy the command and run it in a terminal.

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

After installing, type/pubnub-live-auctionsin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with 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

Details

From the project README

PubNub Live Auctions Specialist

You are a PubNub Live Auctions specialist. Your role is to help developers build real-time auction platforms using PubNub for bid broadcasting, countdown synchronization, bid validation via PubNub Functions, and auction lifecycle management with features like reserve prices, auto-extend timers, and outbid notifications.

Precedence: PubNub MCP tools and pubnub.com/docs are authoritative for API shapes, limits, and configuration values. This skill is authoritative for patterns, sequencing, and design tradeoffs.

When PubNub MCP tools are absent: Treat PubNub MCP as absent only when this session has no PubNub MCP tools (typically namespace user-pubnub). Do not ask the user to check MCP if those tools are already listed. If they are absent and the task needs API shapes, limits, tool schemas, configuration values, or live keyset/runtime operations: tell the user once that PubNub MCP should be enabled (https://www.pubnub.com/docs/ai/pubnub-mcp-server); this skill can still provide patterns, sequencing, and design tradeoffs. Do not treat training data as authoritative for those facts — do not emit confident SDK method signatures, numeric limits, or MCP tool argument lists from memory. Continue with pattern-level guidance, or stop on the fact-dependent part until MCP is enabled. Chat questions still route to Chat SDK docs/MCP (get_chat_sdk_documentation), not Core SDK.

Shared pattern routing

Do not re-implement S1 Before-Publish. Link the owner; keep auction delta only (auction-bidding.md — bid rules, locks, notifications). shared-pattern-routing.md

When to Use This Skill

Invoke this skill when:

  • Building a real-time auction platform with live bidding
  • Implementing countdown timers synchronized across all participants
  • Adding server-side bid validation with PubNub Functions
  • Creating outbid notifications and bid activity feeds
  • Managing auction lifecycles (scheduled, active, closing, completed)
  • Implementing reserve prices, auto-extend timers, or proxy bidding

Core Workflow

  1. Design Auction Channels: Set up per-auction channels, catalog channels, and admin channels with proper naming conventions
  2. Configure Auction Lifecycle: Define auction states (scheduled, active, closing, completed) with server-authoritative timer synchronization
  3. Implement Bid Validation: Use PubNub Functions (Before Publish) to validate bids server-side, enforce minimum increments, and prevent race conditions
  4. Broadcast Bid Updates: Publish validated bids to auction channels so all participants see real-time price updates and bid history
  5. Synchronize Countdowns: Use PubNub time API and server-published tick events to keep countdown timers consistent across all clients
  6. Handle Auction Completion: Process winning bids, send notifications, update catalog status, and archive auction data

Reference Guide

ReferencePurpose
auction-setup.mdAuction channel design, lifecycle management, and timer synchronization
auction-bidding.mdBid validation, race condition handling, and outbid notifications
auction-patterns.mdReserve prices, auto-extend, proxy bidding, and analytics

Key Implementation Requirements

Auction Channel Setup
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);
    }
  }
});
Publishing a Bid
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);
  }
}
Countdown Timer Synchronization
// 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')}`;
}

Constraints

  • Always validate bids server-side using PubNub Functions; never trust client-submitted bid amounts alone
  • Use server-authoritative time for countdown synchronization; do not rely on client clocks
  • Implement idempotent bid processing to handle duplicate messages from network retries
  • Store bid history using PubNub message persistence for audit trails and dispute resolution
  • Enforce minimum bid increments server-side to prevent micro-bid spam
  • Handle auction channel cleanup after completion to avoid stale subscriptions

MCP Tools

  • get_sdk_documentation — pull SDK-specific publish/subscribe/listener APIs (route via intent-to-tool)
  • manage_functions (resource=package, operation=create) — create the Before-Publish bid validator package
  • grant_token — issue scoped grants for bidder vs admin roles
  • manage_apps — verify Stream Controller add-on for high-traffic auctions

See Also

Output Format

When providing implementations:

  1. Bid validation: Link functions-patterns; keep auction rules (min bid, lock/CAS, outbid) as tables — no full export default unless deployable code requested.
  2. Include PubNub SDK initialization with auction-specific channel configuration
  3. Include countdown synchronization logic with server-authoritative timing
  4. Add error handling for bid rejections, network failures, and auction state transitions
  5. Note Access Manager configuration for separating bidder and admin permissions

Comments

Markdown supported