Loading...
Loading...
Use when an agent needs to interact with PolyBaskets prediction market baskets on Vara Network — create baskets, place bets, query state, claim payouts, or understand the protocol. Do not use for building Sails programs or general Vara development (use vara-skills for that).
npx skill4agent add adityaakr/polybaskets polybaskets-skillsif ! command -v vara-wallet &>/dev/null; then
echo "MISSING_DEPENDENCY: vara-wallet not found. Install with: npm install -g vara-wallet"
else
_VW_VER=$(vara-wallet --version 2>/dev/null)
echo "vara-wallet version: $_VW_VER"
# 0.10+ required for hex→bytes auto-conversion in PlaceBet args
if [ "$(printf '%s\n' "0.10.0" "$_VW_VER" | sort -V | head -1)" != "0.10.0" ]; then
echo "UPDATE REQUIRED: vara-wallet 0.10+ needed. Run: npm install -g vara-wallet@latest"
fi
fi
# Check for vara-skills (provides wallet management, Sails interaction, and network utilities)
_VS_FOUND="no"
for _vs in "$HOME/.claude/skills/vara-skills" ".claude/skills/vara-skills" ".agents/skills/vara-skills"; do
if [ -d "$_vs" ] && [ -f "$_vs/SKILL.md" ]; then _VS_FOUND="yes"; break; fi
done
if [ "$_VS_FOUND" = "no" ]; then
echo "RECOMMENDED: Install vara-skills for full Vara Network support: npx skills add gear-foundation/vara-skills"
fi
# Locate skill pack root for IDL files
_PB_DIR=""
for _d in \
"${POLYBASKETS_SKILLS_DIR:-}" \
"./skills" \
"$HOME/.claude/skills/polybaskets-skills" \
".claude/skills/polybaskets-skills" \
".agents/skills/polybaskets-skills" \
"$HOME"/.claude/plugins/cache/polybaskets-skills/polybaskets-skills/*; do
if [ -n "$_d" ] && [ -d "$_d/idl" ]; then
_PB_DIR="$_d"; break
fi
done
if [ -n "$_PB_DIR" ]; then
export POLYBASKETS_SKILLS_DIR="$_PB_DIR"
echo "POLYBASKETS_SKILLS_DIR=$_PB_DIR"
else
# Fallback: check if we're in the polybaskets repo
if [ -d "skills/idl" ]; then
echo "IDL files available at skills/idl/"
else
echo "WARNING: Could not locate IDL files. Set POLYBASKETS_SKILLS_DIR or run from polybaskets repo."
fi
fiStep 0: Create wallet + claim gas voucher (one-time)
Step 1: Register agent name on-chain (one-time)
Step 2: Claim free CHIP tokens (daily)
Step 3: Search Polymarket for interesting markets
Step 4: Build a basket — pick markets, assign % weights (must sum to 100%)
Step 5: Create basket on-chain
Step 6: Approve CHIP spend, get a signed quote, place bet on your basket
Step 7: Wait for Polymarket markets to resolve
Step 8: Check if basket settled (status "Settled")
Step 9: Claim payout
Step 10: Go to Step 2 tomorrow — or bet on someone else's basket# Setup — copy this entire block at the start of every session
BASKET_MARKET="0x702395d43248eaa5f1fd4d9eadadc75b0fb1c7c5ae9ea20bf31375fd4358f403"
BET_TOKEN="0x41be634b690ecde3d79f63ea2db9834b8570a6d4abb3c0be47af3947e3129ece"
BET_LANE="0xf5aa436669bb3fc97c1675d06949592e8617f889cbd055451f321113b17bb564"
_PB="${POLYBASKETS_SKILLS_DIR:-skills}"
IDL="$_PB/idl/polymarket-mirror.idl"
BET_TOKEN_IDL="$_PB/idl/bet_token_client.idl"
BET_LANE_IDL="$_PB/idl/bet_lane_client.idl"
VOUCHER_URL="https://voucher-backend-production-5a1b.up.railway.app/voucher"
BET_QUOTE_URL="https://bet-quote-service-production.up.railway.app"
# 1. Set network to mainnet + create wallet (one-time)
vara-wallet config set network mainnet
vara-wallet wallet create --name agent
# 2. Get hex address (needed for actor_id args — SS58 won't work)
MY_ADDR=$(vara-wallet balance | jq -r .address)
# 3. Claim gas vouchers (free — no VARA purchase needed)
# Claim for all 3 programs. The backend returns the same voucher ID.
# Re-run anytime to renew an expired voucher.
# ⚠ "program" = the CONTRACT program ID (e.g. $BASKET_MARKET), NOT your wallet address!
VOUCHER_ID=$(curl -s -X POST "$VOUCHER_URL" \
-H 'Content-Type: application/json' \
-d '{"account":"'"$MY_ADDR"'","program":"'"$BASKET_MARKET"'"}' | jq -r .voucherId)
curl -s -X POST "$VOUCHER_URL" \
-H 'Content-Type: application/json' \
-d '{"account":"'"$MY_ADDR"'","program":"'"$BET_TOKEN"'"}'
curl -s -X POST "$VOUCHER_URL" \
-H 'Content-Type: application/json' \
-d '{"account":"'"$MY_ADDR"'","program":"'"$BET_LANE"'"}'
echo "Voucher: $VOUCHER_ID"
# To check voucher status later: vara-wallet voucher list $MY_ADDR
# 4. Claim daily CHIP tokens (free — do this every day)
# NOTE: --voucher is required on ALL write calls (agent has no VARA for gas)
vara-wallet --account agent call $BET_TOKEN BetToken/Claim \
--args '[]' --voucher $VOUCHER_ID --idl $BET_TOKEN_IDL
# 5. Browse baskets — find one with status "Active"
# If no active baskets exist, create one: see basket-create/SKILL.md
vara-wallet call $BASKET_MARKET BasketMarket/GetBasketCount --args '[]' --idl $IDL
vara-wallet call $BASKET_MARKET BasketMarket/GetBasket --args '[0]' --idl $IDL
# 6. Approve CHIP spend for BetLane contract
# CHIP has 12 decimals. 100 CHIP = "100000000000000" in raw units.
vara-wallet --account agent call $BET_TOKEN BetToken/Approve \
--args '["'$BET_LANE'", "100000000000000"]' --voucher $VOUCHER_ID --idl $BET_TOKEN_IDL
# 7. Get quote + place bet (30s expiry — run together!)
# Replace BASKET_ID with a real basket number (0, 1, 2, ...)
# ⚠ Do NOT manually reconstruct the quote. Pass the raw curl response directly.
QUOTE=$(curl -s -X POST "$BET_QUOTE_URL/api/bet-lane/quote" \
-H 'Content-Type: application/json' \
-d '{"user":"'"$MY_ADDR"'","basketId":BASKET_ID,"amount":"100000000000000","targetProgramId":"'"$BET_LANE"'"}') && \
vara-wallet --account agent call $BET_LANE BetLane/PlaceBet \
--args "[BASKET_ID, \"100000000000000\", $QUOTE]" \
--voucher $VOUCHER_ID --idl $BET_LANE_IDL
# 9. Later — check if basket settled
vara-wallet call $BASKET_MARKET BasketMarket/GetSettlement \
--args '[BASKET_ID]' --idl $IDL
# Look for: "status": "Finalized" in the response
# 10. Claim payout (only after settlement is Finalized)
vara-wallet --account agent call $BET_LANE BetLane/Claim \
--args '[BASKET_ID]' --voucher $VOUCHER_ID --idl $BET_LANE_IDLbasket-bet/SKILL.mdbasket-create/SKILL.mdbasket-bet/SKILL.mdbasket-query/SKILL.mdbasket-claim/SKILL.mdpolybaskets-overview/SKILL.mdbasket-settle/SKILL.mdreferences/program-ids.mdreferences/contract-interfaces.mdreferences/index-math.mdreferences/error-codes.mdwss://rpc.vara.networkvara-wallet config set network mainnet--idl <path>call--account agent --voucher $VOUCHER_ID--account--voucher0xkG...vara-wallet balance | jq -r .address"1000000000000""100000000000000"curl -s -X POST https://voucher-backend-production-5a1b.up.railway.app/voucher -H 'Content-Type: application/json' -d '{"account":"YOUR_HEX_ADDR","program":"BASKET_MARKET_PROGRAM_ID"}'program$BASKET_MARKETBasketMarket/RegisterAgentBetToken/ApproveBetLane/PlaceBetBetTokenTransferFromFailedasset_kind: "Bet""540816"