jpskill.com
🛠️ 開発・MCP コミュニティ

basket-create

Vara Walletを通じて、予測に関する新しい情報をブロックチェーン上に記録するためのバスケットを構築する必要がある際に活用するSkill。

📜 元の英語説明(参考)

Use when the agent needs to create a new prediction basket on-chain via vara-wallet. Do not use for betting, querying, or settlement.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Vara Walletを通じて、予測に関する新しい情報をブロックチェーン上に記録するためのバスケットを構築する必要がある際に活用するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o basket-create.zip https://jpskill.com/download/9664.zip && unzip -o basket-create.zip && rm basket-create.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9664.zip -OutFile "$d\basket-create.zip"; Expand-Archive "$d\basket-create.zip" -DestinationPath $d -Force; ri "$d\basket-create.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して basket-create.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → basket-create フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Basket Create

vara-wallet を介して PolyBaskets 上に新しい予測バスケットを作成します。

セットアップ

メインネットのみ。 他の操作を行う前に、vara-wallet config set network mainnet を実行してください。テストネットには絶対に切り替えないでください。そこにはコントラクトが存在しません。

vara-wallet config set network mainnet
BASKET_MARKET="0x1fa6fd12433accef350a68da4555a2a71acab261c4ae9eb713033023fc0775ea"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"

ウォレットとガス代用の VARA があることを確認してください。

vara-wallet wallet list
vara-wallet balance

Polymarket のマーケットの検索

Polymarket でアクティブなマーケットを検索して、バスケットのアイテムとして使用します。order=volume24hr&ascending=false を使用して最もアクティブなマーケットを取得し、end_date_max を追加して間もなく終了するマーケットを見つけます。

# 48時間以内に終了する高ボリュームのマーケットを取得します(最速の解決)
# end_date_min=now はすでに終了したマーケットを除外します(closed=false はこれらを除外しません!)
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&end_date_max=$(date -u -v+48H +%Y-%m-%dT%H:%M:%SZ)&limit=20"
# Linux の場合: date -u -d '+48 hours' +%Y-%m-%dT%H:%M:%SZ を使用

# または、ボリュームでソートされたすべてのアクティブなマーケットを取得します(終了したマーケットは引き続き除外します!)
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&limit=20"

警告: closed=false はマーケットが終了していないことを意味しません。 endDate を過ぎたマーケットも表示されます。常に現在の時刻に設定された end_date_min を使用するか、マーケットを選択する前に endDate > now を確認してください。

jq で解析します。

# マーケット ID、質問、YES/NO の価格、および残り時間を示します
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&limit=20" \
  | jq '[.[] | {id, question, yes: (.outcomePrices | fromjson | .[0]), no: (.outcomePrices | fromjson | .[1]), endDate, liquidity}]'

重要: outcomePrices は JSON エンコードされた文字列であり、配列ではありません。API は ["0.52", "0.48"] (配列) ではなく、"[\"0.52\", \"0.48\"]" (文字列) を返します。

  • jq: YES 価格の場合は .outcomePrices | fromjson | .[0]
  • Python: json.loads(m['outcomePrices'])[0]
  • Node.js: JSON.parse(m.outcomePrices)[0]
  • 間違い: m['outcomePrices'][0] は価格ではなく、[ (文字列の最初の文字) を返します!

重要: poly_market_id数値の Polymarket ID (例: "540816") であり、16進数の conditionId ではありません。API レスポンスの id フィールドを使用してください。

slug フィールドはすでにすべてのマーケットレスポンスに含まれています。 slug を検索するためにマーケットを再取得しないでください。id を取得したのと同じレスポンスから slug を使用してください。特定のマーケット ID の詳細が必要な場合は、直接取得してください。

curl -s "https://gamma-api.polymarket.com/markets/540816"

事前チェック

ほとんどのデプロイメントは CHIP のみのモードで実行されます。VARA のステータスを確認します。

vara-wallet call $BASKET_MARKET BasketMarket/IsVaraEnabled --args '[]' --idl $IDL

false (一般的) の場合、"Bet" バスケット (CHIP レーン) を作成します。

バリデーションルール

トランザクションを送信する前に、ローカルで検証します。

ルール 制約
名前 空でない、最大 48 文字
説明 最大 256 文字
アイテム 1〜10 個のアイテム
ウェイト すべての weight_bps の合計が正確に 10000 (= 100%) になる必要があります。各ウェイトはベーシスポイント単位です: 50% = 5000、30% = 3000 など
重複なし 同じ poly_market_id + selected_outcome を 2 回使用することはできません
poly_market_id 最大 128 文字
poly_slug 最大 128 文字
asset_kind "Vara" または "Bet"

バスケットの作成

引数

CreateBasket(name: str, description: str, items: vec BasketItem, asset_kind: BasketAssetKind) -> u64

BasketItem:

{
  "poly_market_id": "540816",
  "poly_slug": "will-btc-hit-100k",
  "weight_bps": 5000,
  "selected_outcome": "YES"
}
  • poly_market_id — API id フィールドからの 数値の Polymarket ID (例: "540816")。16進数の conditionId ではありません
  • weight_bps — ベーシスポイント単位のウェイト。50% = 5000、30% = 3000 など。すべてのウェイトの合計は 10000 (= 100%) になる必要があります

例: 3 アイテムのバスケット

vara-wallet --account agent call $BASKET_MARKET BasketMarket/CreateBasket --voucher $VOUCHER_ID \
  --args '[
    "AI Regulation Bundle",
    "Outcomes related to AI policy",
    [
      {
        "poly_market_id": "540816",
        "poly_slug": "ai-regulation-2025",
        "weight_bps": 4000,
        "selected_outcome": "YES"
      },
      {
        "poly_market_id": "540817",
        "poly_slug": "openai-ipo-2025",
        "weight_bps": 3500,
        "selected_outcome": "YES"
      },
      {
        "poly_market_id": "540818",
        "poly_slug": "eu-ai-act-enforcement",
        "weight_bps": 2500,
        "selected_outcome": "NO"
      }
    ],
    "Bet"
  ]' \
  --idl $IDL

ウェイト: 40% + 35% + 25% = 100% (4000 + 3500 + 2500 = 10000 bps)。

結果の解析

この呼び出しは u64 バスケット ID を返します。

RESULT=$(vara-wallet --account agent call $BASKET_MARKET BasketMarket/CreateBasket --voucher $VOUCHER_ID \
  --args '[...]' --idl $IDL)
BASKET_ID=$(echo $RESULT | jq -r '.result // .ok // .')
echo "Created basket: $BASKET_ID"

作成後

  • 検証: vara-wallet call $BASKET_MARKET BasketMarket/GetBasket --args "[$BASKET_ID]" --idl $IDL
  • ベットを置く: ../basket-bet/SKILL.md を参照
  • 他の人がベットできるようにバスケット ID を共有する

よくあるエラー

エラー 原因 修正
InvalidWeights ウェイトの合計が 100% になりません weight_bps を調整して、合計が 10000 (= 100%) になるようにします
NoItems 空のアイテム配列 少なくとも 1 つのアイテムを追加します
TooManyItems 10 個を超えるアイテム アイテムを削除します
DuplicateBasketItem 同じマーケット + アウトカムが 2 回使用されています 重複を削除します
VaraDisabled VARA モードがオフ 代わりに "Bet" asset_kind を使用します
NameTooLong 名前が 48 文字を超えています 名前を短くします

すべてのエラーバリアントについては、../references/error-codes.md を参照してください。

(原文がここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Basket Create

Create a new prediction basket on PolyBaskets via vara-wallet.

Setup

MAINNET ONLY. Run vara-wallet config set network mainnet before anything else. NEVER switch to testnet — there are no contracts there.

vara-wallet config set network mainnet
BASKET_MARKET="0x1fa6fd12433accef350a68da4555a2a71acab261c4ae9eb713033023fc0775ea"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"

Ensure you have a wallet and VARA for gas:

vara-wallet wallet list
vara-wallet balance

Finding Polymarket Markets

Search for active markets on Polymarket to use as basket items. Use order=volume24hr&ascending=false to get the most active markets, and add end_date_max to find markets ending soon:

# Fetch high-volume markets ending within 48 hours (fastest resolution)
# end_date_min=now filters out markets that already ended (closed=false does NOT filter these!)
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&end_date_max=$(date -u -v+48H +%Y-%m-%dT%H:%M:%SZ)&limit=20"
# On Linux use: date -u -d '+48 hours' +%Y-%m-%dT%H:%M:%SZ

# Or fetch all active markets sorted by volume (still filter out ended ones!)
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&limit=20"

WARNING: closed=false does NOT mean the market hasn't ended. Markets past their endDate still appear. Always use end_date_min set to the current time, or check endDate > now before selecting a market.

Parse with jq:

# Show market id, question, YES/NO prices, and hours remaining
curl -s "https://gamma-api.polymarket.com/markets?closed=false&order=volume24hr&ascending=false&end_date_min=$(date -u +%Y-%m-%dT%H:%M:%SZ)&limit=20" \
  | jq '[.[] | {id, question, yes: (.outcomePrices | fromjson | .[0]), no: (.outcomePrices | fromjson | .[1]), endDate, liquidity}]'

CRITICAL: outcomePrices is a JSON-encoded string, not an array. The API returns "[\"0.52\", \"0.48\"]" (a string), not ["0.52", "0.48"] (an array).

  • jq: .outcomePrices | fromjson | .[0] for YES price
  • Python: json.loads(m['outcomePrices'])[0]
  • Node.js: JSON.parse(m.outcomePrices)[0]
  • Wrong: m['outcomePrices'][0] gives [ (first character of the string), NOT the price!

Important: poly_market_id is the numeric Polymarket ID (e.g. "540816"), not the hex conditionId. Use the id field from the API response.

The slug field is already included in every market response. Do NOT re-fetch markets to look up slugs — use the slug from the same response where you got the id. If you need details for a specific market ID, fetch it directly:

curl -s "https://gamma-api.polymarket.com/markets/540816"

Pre-Check

Most deployments run in CHIP-only mode. Check VARA status:

vara-wallet call $BASKET_MARKET BasketMarket/IsVaraEnabled --args '[]' --idl $IDL

If false (typical), create a "Bet" basket (CHIP lane).

Validation Rules

Before sending the transaction, validate locally:

Rule Constraint
Name Non-empty, max 48 characters
Description Max 256 characters
Items 1 to 10 items
Weights All weight_bps must sum to exactly 10000 (= 100%). Each weight is in basis points: 50% = 5000, 30% = 3000, etc.
No duplicates Same poly_market_id + selected_outcome cannot appear twice
poly_market_id Max 128 characters
poly_slug Max 128 characters
asset_kind "Vara" or "Bet"

Create Basket

Arguments

CreateBasket(name: str, description: str, items: vec BasketItem, asset_kind: BasketAssetKind) -> u64

Each BasketItem:

{
  "poly_market_id": "540816",
  "poly_slug": "will-btc-hit-100k",
  "weight_bps": 5000,
  "selected_outcome": "YES"
}
  • poly_market_id — the numeric Polymarket ID from the API id field (e.g. "540816"), NOT the hex conditionId
  • weight_bps — weight in basis points. 50% = 5000, 30% = 3000, etc. All weights must sum to 10000 (= 100%)

Example: 3-item basket

vara-wallet --account agent call $BASKET_MARKET BasketMarket/CreateBasket --voucher $VOUCHER_ID \
  --args '[
    "AI Regulation Bundle",
    "Outcomes related to AI policy",
    [
      {
        "poly_market_id": "540816",
        "poly_slug": "ai-regulation-2025",
        "weight_bps": 4000,
        "selected_outcome": "YES"
      },
      {
        "poly_market_id": "540817",
        "poly_slug": "openai-ipo-2025",
        "weight_bps": 3500,
        "selected_outcome": "YES"
      },
      {
        "poly_market_id": "540818",
        "poly_slug": "eu-ai-act-enforcement",
        "weight_bps": 2500,
        "selected_outcome": "NO"
      }
    ],
    "Bet"
  ]' \
  --idl $IDL

Weights: 40% + 35% + 25% = 100% (4000 + 3500 + 2500 = 10000 bps).

Parse Result

The call returns a u64 basket ID:

RESULT=$(vara-wallet --account agent call $BASKET_MARKET BasketMarket/CreateBasket --voucher $VOUCHER_ID \
  --args '[...]' --idl $IDL)
BASKET_ID=$(echo $RESULT | jq -r '.result // .ok // .')
echo "Created basket: $BASKET_ID"

After Creation

  • Verify: vara-wallet call $BASKET_MARKET BasketMarket/GetBasket --args "[$BASKET_ID]" --idl $IDL
  • Place a bet: see ../basket-bet/SKILL.md
  • Share the basket ID for others to bet on

Common Errors

Error Cause Fix
InvalidWeights Weights don't sum to 100% Adjust weight_bps so they sum to 10000 (= 100%)
NoItems Empty items array Add at least 1 item
TooManyItems More than 10 items Remove items
DuplicateBasketItem Same market+outcome twice Remove duplicate
VaraDisabled VARA mode off Use "Bet" asset_kind instead
NameTooLong Name > 48 chars Shorten name

See ../references/error-codes.md for all error variants.