pubnub-live-auctions について
pubnub-live-auctionsは、PubNubでリアルタイムオークションを構築する開発者向けのスキルです。入札検証、カウントダウン同期、状態管理に加え、最低落札価格や延長タイマー、競り負け通知も扱います。
主な機能
- 01オークションチャンネル設計
- 02サーバー側での入札検証
- 03入札更新のリアルタイム配信
- 04サーバー基準のカウントダウン同期
- 05オークションのライフサイクル管理
- 06最低落札価格と自動延長タイマー
活用シーン
- 01ライブ入札プラットフォームの構築
- 02複数クライアント間でのカウントダウン同期
- 03無効または重複した入札の防止
- 04オークション終了と入札通知の管理
MCP 対応
このスキルでは、SDKドキュメントの取得、検証関数の作成、スコープ付きアクセストークンの発行、アプリ設定の確認に使うPubNub MCPツールを紹介しています。これらのツールは、オークションの実装資料と運用操作を提供します。
インストール
コマンドをコピーしてターミナルで実行します。
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 が有効になるまで事実に依存する部分の回答を保留してください。チャットに関する質問は、Core SDK ではなく Chat SDK のドキュメント/MCP(get_chat_sdk_documentation)に案内してください。
共通パターンの案内
S1 Before-Publishを再実装しないでください。管理元へのリンクを示し、オークション固有の差分のみを扱ってください(auction-bidding.md — 入札ルール、ロック、通知)。shared-pattern-routing.md
このスキルを使用する場面
次の場合にこのスキルを使用します。
- ライブ入札ができるリアルタイムオークションプラットフォームを構築する
- すべての参加者間で同期するカウントダウンタイマーを実装する
- PubNub Functions でサーバーサイドの入札検証を追加する
- 上回り通知と入札アクティビティフィードを作成する
- オークションのライフサイクル(予定、開催中、終了処理中、完了)を管理する
- 最低落札価格、延長タイマー、代理入札を実装する
基本的なワークフロー
- オークションチャンネルを設計する:適切な命名規則を使って、オークションごとのチャンネル、カタログチャンネル、管理者用チャンネルを設定します
- オークションのライフサイクルを設定する:サーバーを正とするタイマー同期を使って、オークションの状態(予定、開催中、終了処理中、完了)を定義します
- 入札検証を実装する:PubNub Functions(Before Publish)を使ってサーバーサイドで入札を検証し、最低入札増分を適用して競合状態を防ぎます
- 入札の更新をブロードキャストする:検証済みの入札をオークションチャンネルに公開し、すべての参加者に価格の更新と入札履歴をリアルタイムで表示します
- カウントダウンを同期する:PubNub time API とサーバーから公開する tick イベントを使って、すべてのクライアントでカウントダウンタイマーを一致させます
- オークションの完了を処理する:落札した入札を処理し、通知を送り、カタログの状態を更新して、オークションデータをアーカイブします
リファレンスガイド
| リファレンス | 目的 |
|---|---|
| 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 固有の publish/subscribe/listener 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 — 再試行による二重入札を防ぐには、冪等な publish と dedup-on-merge を使用します。入札が集中した場合は バックオフとジッター を使用します
- pubnub-history — 入札の監査証跡と異議申し立てへの対応には Message Persistence を使用します
- pubnub-scale — トラフィックの多いオークションには、チャンネルグループ、ワイルドカード、大規模イベント向けプレイブック を使用します
- pubnub-presence — アクティブな入札者の追跡
- pubnub-app-context — 入札者プロフィール
- pubnub-observability — すべての入札について ログの相関 を行い、オークションのピーク時には 使用状況メトリクス と インシデント対応ランブック を使用します
- pubnub-events-and-actions — 落札イベントを アクションターゲット 経由で請求/フルフィルメントに振り分けます
- pubnub-choose-docs-path — その他の PubNub に関する質問の振り分けに使用します
出力形式
実装を提示する場合:
- 入札の検証: functions-patterns へのリンクを記載します。オークションルール(最低入札額、ロック/CAS、上回る入札)は表で示します。デプロイ可能なコードを求められていない限り、
export default全体は記載しません。 - オークション固有のチャンネル設定を含む PubNub SDK の初期化を記載します
- サーバーが権威を持つタイミングを使ったカウントダウン同期ロジックを記載します
- 入札の拒否、ネットワーク障害、オークション状態の遷移に対するエラー処理を追加します
- 入札者と管理者の権限を分離するための Access Manager 設定に触れます