CtrlK
BlogDocsLog inGet started
Tessl Logo

pubnub-live-auctions

Build real-time auction platforms with PubNub bidding and countdowns

52

Quality

57%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./pubnub-live-auctions/SKILL.md
SKILL.md
Quality
Evals
Security

Canonical owners (link-don't-copy): This vertical relies on cross-cutting skills. Always link to the canonical owner instead of duplicating. Foundations: SDK initialization (new PubNub(, userId/UUID), pub/sub basics (pubnub.publish(, pubnub.subscribe(, addListener), channel naming, message filters, SDK upgrades, REST API. Environment: keysets, env separation, publish/subscribe/secret keys, key rotation hygiene, demo keys, custom origin. Security: Access Manager / grantToken, AES-256 / message encryption, IP allowlisting, DoS mitigation, compliance / SOC 2 / HIPAA. Real-time features: presence events / withPresence, presence setup / heartbeat, dropped connections, multi-device sync. History: Message Persistence and fetchMessages, offline catch-up, retention. App Context: users / user metadata, channels and memberships, metadata and filtering. Functions: Before/After Publish, request.ok()/request.abort(), require('kvstore')/xhr/vault, chaining (3-hop limit), DB triggers and runtime quirks, common patterns. Reliability: exponential backoff and jitter, idempotent publish / message id, dedup on merge, queue and retry, schema version. Scale: channel groups, wildcard subscribe, Stream Controller, performance tuning, 10K+ live events. Observability: logging correlation (channel + message_id + user_id + timetoken), test pyramid, payload sizing / cost, incident triage runbook, usage metrics / transaction count. Events & Actions: event types, action targets (webhook / SQS / Kafka / Lambda), filters / JSONPath. Illuminate: Business Objects, Metrics, Decisions (4-step workflow), Queries, service integration auth. Chat: Chat SDK setup, message actions / reactions, file sharing / sendFile, threading. Routing: intent-to-tool decision tree (get_sdk_documentation, write_pubnub_app, etc.).

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.

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)
  • create_pubnub_function — scaffold the Before-Publish bid validator
  • 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. Include PubNub SDK initialization with auction-specific channel configuration
  2. Show PubNub Functions code for server-side bid validation
  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
Repository
pubnub/skills
Last updated
First committed

Also appears in

pubnub/pubnub-live-auctions
Stale

last in sync Feb 8, 2026

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.