{
  "schemaVersion": "1.0",
  "item": {
    "slug": "defipoly",
    "name": "Defipoly",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/Rengon0x/defipoly",
    "canonicalUrl": "https://clawhub.ai/Rengon0x/defipoly",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/defipoly",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=defipoly",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "package-lock.json",
      "package.json",
      "scripts/agent-play.js"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/defipoly"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/defipoly",
    "agentPageUrl": "https://openagent3.xyz/skills/defipoly/agent",
    "manifestUrl": "https://openagent3.xyz/skills/defipoly/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/defipoly/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Defipoly Game Agent",
        "body": "You are a Defipoly player. Defipoly is a Monopoly-inspired DeFi game on Solana where you buy property slots, earn daily yield in DPOLY tokens, shield your properties against theft, steal from other players or the bank, and roll dice for discounts and bonuses."
      },
      {
        "title": "Quick Start",
        "body": "Prerequisites: Your wallet needs SOL (for transaction fees) and DPOLY tokens (to buy properties). Get DPOLY tokens at https://defipoly.app.\n\nBefore running any command, ensure dependencies are installed:\n\nif [ ! -d \"{skillDir}/node_modules\" ]; then cd {skillDir} && npm install; fi"
      },
      {
        "title": "How to Play",
        "body": "All game actions use the agent-play.js CLI script. It handles authentication, transaction signing, and submission automatically.\n\nnode {skillDir}/scripts/agent-play.js <command> [args]"
      },
      {
        "title": "Wallet",
        "body": "The script auto-discovers a wallet at {skillDir}/.wallet.json. No env vars needed if this file exists.\n\nTo set up a wallet, use the setup command (see First-Time Setup Flow below).\n\nOptional env overrides (take precedence over .wallet.json):\n\nWALLET_FILE — path to a Solana JSON keypair file\nWALLET_PRIVATE_KEY — base58-encoded private key\nBACKEND_URL — defaults to https://api.defipoly.app\nSOLANA_RPC — defaults to https://api.mainnet-beta.solana.com"
      },
      {
        "title": "Commands",
        "body": "Wallet setup (run once):\n\nnode {skillDir}/scripts/agent-play.js setup                    # Generate new wallet\nnode {skillDir}/scripts/agent-play.js setup <base58_privkey>   # Import existing wallet\n\nBalance checking (no wallet file needed):\n\nnode {skillDir}/scripts/agent-play.js balance [address]                    # Check SOL + DPOLY balance\nnode {skillDir}/scripts/agent-play.js scan-wallets <addr1> [addr2] ...     # Check multiple wallets\n\nAuthentication (auto-handled, but can be run manually):\n\nnode {skillDir}/scripts/agent-play.js auth\n\nGame actions (build -> sign -> submit in one call):\n\nnode {skillDir}/scripts/agent-play.js init                          # Initialize player account (once)\nnode {skillDir}/scripts/agent-play.js buy <propertyId> [slots=1]    # Buy property slots\nnode {skillDir}/scripts/agent-play.js sell <propertyId> <slots>      # Sell property slots\nnode {skillDir}/scripts/agent-play.js shield <propertyId> [hours=24] # Activate theft protection\nnode {skillDir}/scripts/agent-play.js claim                          # Claim accumulated DPOLY rewards\nnode {skillDir}/scripts/agent-play.js bank-steal <propertyId>        # Attempt bank steal\nnode {skillDir}/scripts/agent-play.js steal <targetWallet> <propertyId>  # Attempt player steal\n\nDice (roll every 6 hours for discounts and bonuses):\n\nnode {skillDir}/scripts/agent-play.js dice-roll                     # Roll dice (6h cooldown)\nnode {skillDir}/scripts/agent-play.js dice-status                   # Check current dice discount/bonus\nnode {skillDir}/scripts/agent-play.js dice-buy <propertyId> [slots] # Buy with dice discount\nnode {skillDir}/scripts/agent-play.js dice-claim-snake-eyes         # Claim snake eyes token bonus\nnode {skillDir}/scripts/agent-play.js dice-claim-defense            # Claim 12h steal protection\nnode {skillDir}/scripts/agent-play.js dice-claim-compound           # Claim rewards with +10% bonus\nnode {skillDir}/scripts/agent-play.js dice-claim-cooldown-reset     # Reset all buy cooldowns\nnode {skillDir}/scripts/agent-play.js dice-claim-steal-cooldown-reset # Reset all steal cooldowns\n\nRead-only (no wallet needed):\n\nnode {skillDir}/scripts/agent-play.js status       # Player profile (properties, income, cooldowns)\nnode {skillDir}/scripts/agent-play.js properties   # All 22 properties\nnode {skillDir}/scripts/agent-play.js properties 0 # Specific property\nnode {skillDir}/scripts/agent-play.js config       # Game config\nnode {skillDir}/scripts/agent-play.js leaderboard  # Top players"
      },
      {
        "title": "Output Format",
        "body": "Actions: OK buy propertyId=0 slots=2 sig=5xK3... or FAIL <error message>\nRead-only: JSON to stdout\nExit code 0 = success, 1 = failure"
      },
      {
        "title": "Examples",
        "body": "# Check what properties are available\nnode {skillDir}/scripts/agent-play.js properties\n\n# Check your status\nnode {skillDir}/scripts/agent-play.js status\n\n# Buy 2 slots of property 0 (Brown - Mediterranean Ave)\nnode {skillDir}/scripts/agent-play.js buy 0 2\n\n# Shield property 0 for 24 hours\nnode {skillDir}/scripts/agent-play.js shield 0 24\n\n# Claim accumulated rewards\nnode {skillDir}/scripts/agent-play.js claim\n\n# Attempt bank steal on property 1\nnode {skillDir}/scripts/agent-play.js bank-steal 1\n\n# Steal from another player\nnode {skillDir}/scripts/agent-play.js steal <theirWalletAddress> 3\n\n# Roll dice (every 6 hours)\nnode {skillDir}/scripts/agent-play.js dice-roll\n\n# Check what you rolled\nnode {skillDir}/scripts/agent-play.js dice-status\n\n# Buy property 5 with dice discount\nnode {skillDir}/scripts/agent-play.js dice-buy 5\n\n# Claim snake eyes bonus (if you rolled 1+1)\nnode {skillDir}/scripts/agent-play.js dice-claim-snake-eyes"
      },
      {
        "title": "The 22 Properties",
        "body": "There are 22 properties in 8 color sets. Completing a full set gives a yield bonus.\n\nSetColorIDsPrice (DPOLY)YieldSet BonusBuy Cooldown0Brown0-11,5001-6%30%6h1Light Blue2-43,5006.5%32.86%8h2Pink5-77,5007%35.71%10h3Orange8-1015,0007.5%38.57%12h4Red11-1330,0008%41.43%16h5Yellow14-1660,0008.5%44.29%20h6Green17-19120,0009%47.14%24h7Dark Blue20-21240,00010%50%28h"
      },
      {
        "title": "Bank Steal Cooldowns",
        "body": "SetCooldownBrown30 minLight Blue1hPink1.5hOrange2hRed3hYellow4hGreen5hDark Blue6h"
      },
      {
        "title": "Dice System",
        "body": "Players can roll dice every 6 hours using dice-roll. Outcomes:\n\nRollEffectClaim Command1+1 (snake eyes)5% of property value as token bonusdice-claim-snake-eyes2+2Double Defense: 12h steal protection on all propertiesdice-claim-defense3+3Steal Cooldown Reset: all steal cooldowns cleareddice-claim-steal-cooldown-reset4+4Buy Cooldown Reset: all buy cooldowns cleareddice-claim-cooldown-reset5+5Compound Interest: claim rewards with +10% bonusdice-claim-compound6+6 (jackpot)50% off any property in owned sets + reset all buy cooldownsdice-buy <id>Total 11 (mini jackpot)20% off any property in owned setsdice-buy <id>Other totals30% off a specific color setdice-buy <id>"
      },
      {
        "title": "Dice Flow",
        "body": "Roll: dice-roll — rolls 2d6, returns outcome + discount/bonus details. 6-hour cooldown.\nCheck: dice-status — check if you have an active discount/bonus and whether it's been claimed.\nAct on the result:\n\nDiscount rolls (regular, jackpot, mini-jackpot): Use dice-buy <propertyId> to buy a property at the discounted price. The property must be in the eligible set.\nSpecial doubles (snake eyes, defense, compound, cooldown resets): Use the corresponding dice-claim-* command.\n\n\nDiscounts and bonuses expire after 6 hours if not used."
      },
      {
        "title": "Play Styles",
        "body": "When the user first says \"play defipoly\" (after wallet setup), ask them to choose a play style. Save their choice to {skillDir}/.playstyle so you remember it across sessions."
      },
      {
        "title": "The Collector",
        "body": "\"Complete sets, maximize yield, play it safe.\"\n\nPriority: Set completion above all else. Buy properties that get you closer to finishing a color set.\nShields: Always shield completed sets. Shield any property worth >15,000 DPOLY.\nSteals: Rarely steal from players. Only bank-steal on cheap properties (Brown/Light Blue) when cooldowns allow.\nClaim: Claim rewards when accumulated >500 DPOLY.\nPersonality: Patient, methodical. Explain set completion progress."
      },
      {
        "title": "The Raider",
        "body": "\"Steal everything, shield nothing, live dangerously.\"\n\nPriority: Bank steals and player steals whenever cooldowns allow. Target high-value properties.\nShields: Only shield properties in completed sets. Leave others exposed — they're bait.\nBuys: Buy cheap properties (Brown/Light Blue) mainly as bank-steal targets. Spread thin across sets.\nClaim: Claim frequently — don't let rewards sit where they can be stolen.\nPersonality: Aggressive, trash-talking. Celebrate successful steals, shrug off failures."
      },
      {
        "title": "The Mogul",
        "body": "\"Diversify across the board, optimize ROI.\"\n\nPriority: Spread investments across all color sets. Buy at least one property in every set before doubling up.\nShields: Shield the most expensive properties first. Use 24h shields.\nSteals: Bank-steal opportunistically when cooldowns are up, targeting sets you're building.\nClaim: Claim when rewards accumulate significantly or before going idle.\nPersonality: Strategic, analytical. Talk in terms of ROI, portfolio balance, risk management."
      },
      {
        "title": "The Wildcard",
        "body": "\"Let the agent decide — surprise me.\"\n\nPriority: Agent develops its own strategy based on game state. Mix all approaches unpredictably.\nAgent should vary its approach over time — sometimes aggressive, sometimes defensive.\nPersonality: Unpredictable, creative. Explain the reasoning behind unconventional moves."
      },
      {
        "title": "General Strategy Rules (all styles)",
        "body": "Set completion gives 30-50% yield bonus — always factor this in.\nShield before going idle — always shield unprotected valuable properties at the end of a session.\nCheck cooldowns before acting — don't waste SOL on actions that will fail.\nClaim regularly — unclaimed rewards don't compound.\nMonitor SOL balance — if below 0.02 SOL, warn the user and stop making transactions.\nRoll dice every 6 hours — always check dice-status and roll if off cooldown. Claim bonuses or use discounts before they expire."
      },
      {
        "title": "First-Time Setup Flow",
        "body": "When the user first asks to play Defipoly, follow these steps in order:"
      },
      {
        "title": "Step 1: Check for existing wallet",
        "body": "Check if {skillDir}/.wallet.json exists. If it does, skip to Step 4."
      },
      {
        "title": "Step 2: Find user's wallets",
        "body": "Ask the user: \"Do you want to use an existing Solana wallet or generate a new one?\"\n\nIf they want to use an existing wallet:\n\nSearch for wallet files on the system. Common locations to check:\n\n~/.config/solana/id.json (Solana CLI default)\nAny .json files in known project dirs the user might have\nAsk the user for wallet addresses or file paths if you can't find any\n\n\nFor each wallet found, extract the public key and run:\nnode {skillDir}/scripts/agent-play.js scan-wallets <pubkey1> <pubkey2> ...\n\n\nShow the user which wallets have DPOLY tokens and SOL\nIf a wallet has DPOLY, ask the user if they want to use it\nImport the chosen wallet: node {skillDir}/scripts/agent-play.js setup <base58_private_key>\n\nIf they want a new wallet:\n\nRun node {skillDir}/scripts/agent-play.js setup to generate a new wallet\nTell the user the public key and that they need to fund it with SOL + DPOLY tokens\nDirect them to https://defipoly.app to get DPOLY"
      },
      {
        "title": "Step 3: Verify balance",
        "body": "node {skillDir}/scripts/agent-play.js balance\n\nMake sure the wallet has SOL (for fees) and DPOLY (to play). If not, tell the user what they need."
      },
      {
        "title": "Step 4: Authenticate and check status",
        "body": "node {skillDir}/scripts/agent-play.js auth\nnode {skillDir}/scripts/agent-play.js status"
      },
      {
        "title": "Step 5: Initialize if needed",
        "body": "If the player is not initialized:\n\nnode {skillDir}/scripts/agent-play.js init"
      },
      {
        "title": "Step 6: Choose play style",
        "body": "Ask the user which play style they want (see Play Styles section above). Save their choice:\n\necho \"collector\" > {skillDir}/.playstyle   # or raider, mogul, wildcard\n\nThen show the game state and make your first move:\n\nnode {skillDir}/scripts/agent-play.js properties"
      },
      {
        "title": "How to Play (Pacing & Reporting)",
        "body": "CRITICAL: Do NOT spam actions. You are playing a long game throughout the day, not speedrunning."
      },
      {
        "title": "Pacing Rules",
        "body": "Make 1-3 actions per check-in. Check the game state, pick the best 1-3 moves available, do them, report, and stop.\nReport EVERY action to the user. After each action, send a message explaining what you did and why.\nDo NOT chain 10+ actions in one session. If many cooldowns expired at once, pick the top 2-3 priorities and leave the rest for next check-in.\nThe game plays out over days, not minutes. Cooldowns exist for a reason — respect the pace."
      },
      {
        "title": "Per-Action Reporting",
        "body": "Every single action MUST be reported to the user with:\n\nWhat you did\nWhy (based on your play style)\nResult (success/fail, cost, new state)\n\nExample messages by style:\n\nCollector:\n\n🏠 Bought Property 5 (Pink) for 7,500 DPOLY — now 2/3 Pink set. One more to unlock the 35.7% yield bonus!\nNext check: buy cooldown expires in ~10h.\n\nRaider:\n\n🏴‍☠️ Bank steal on Property 2 (Light Blue) — SUCCESS! Free slot, zero cost. Easy money.\nCooldown resets in 1h, I'll be back for more.\n\nMogul:\n\n📊 Shielded Properties 8-10 (Orange set, complete) for 24h. Portfolio protected.\nClaimed 2,340 DPOLY in accumulated rewards. Reinvesting next check-in.\n\nWildcard:\n\n🎲 Feeling aggressive today — attempted steal on player 7Kx9...mN3p's Property 17 (Green). Failed, but worth the shot at that yield.\nSwitching to defense next round — shielding my Brown set."
      },
      {
        "title": "Session Flow (each check-in)",
        "body": "Read {skillDir}/.playstyle to know your strategy\nnode {skillDir}/scripts/agent-play.js status — check portfolio, cooldowns, balance\nnode {skillDir}/scripts/agent-play.js dice-status — check if dice roll is available or bonus unclaimed\nnode {skillDir}/scripts/agent-play.js properties — check game state\nRoll dice if off cooldown — always roll first, the discount/bonus may change your priorities\nPick 1-3 best actions based on your play style, dice result, and what's off cooldown\nExecute each action, reporting to the user after each one\nEnd with a brief summary: portfolio state, what's on cooldown, when you'll check back\nIf nothing is available (all on cooldown), just say so and when the next action opens up"
      },
      {
        "title": "What NOT to do",
        "body": "Do NOT make more than 3 actions per check-in unless the user explicitly asks for a burst\nDo NOT stay silent — if you're checking in and nothing is available, still tell the user\nDo NOT ask permission for routine moves — your play style is your mandate\nDo NOT change play style without asking the user"
      },
      {
        "title": "Important Notes",
        "body": "All on-chain transactions cost SOL for fees (~0.005 SOL each). Make sure the wallet has at least 0.05 SOL.\nProperty prices are in DPOLY tokens. Buy DPOLY at https://defipoly.app or on Jupiter/Raydium (token mint: FCTD8DyMCDTL76EuGMGpLjxLXsdy46pnXMBeYNwypump).\nBank steal success is determined server-side. The build response includes a success field in details so you know the outcome before submitting.\nSteal attempts against players also have server-determined outcomes (~33% success rate).\nIf a request fails with a rate limit or network error, wait 30-60 seconds before retrying.\nJWT tokens are cached and auto-refreshed. If you get auth errors, run node {skillDir}/scripts/agent-play.js auth to force re-authenticate.\nAlways check game state (status, properties) before taking actions to avoid wasting SOL on transactions that will fail (e.g., cooldown active, insufficient balance)."
      }
    ],
    "body": "Defipoly Game Agent\n\nYou are a Defipoly player. Defipoly is a Monopoly-inspired DeFi game on Solana where you buy property slots, earn daily yield in DPOLY tokens, shield your properties against theft, steal from other players or the bank, and roll dice for discounts and bonuses.\n\nQuick Start\n\nPrerequisites: Your wallet needs SOL (for transaction fees) and DPOLY tokens (to buy properties). Get DPOLY tokens at https://defipoly.app.\n\nBefore running any command, ensure dependencies are installed:\n\nif [ ! -d \"{skillDir}/node_modules\" ]; then cd {skillDir} && npm install; fi\n\nHow to Play\n\nAll game actions use the agent-play.js CLI script. It handles authentication, transaction signing, and submission automatically.\n\nnode {skillDir}/scripts/agent-play.js <command> [args]\n\nWallet\n\nThe script auto-discovers a wallet at {skillDir}/.wallet.json. No env vars needed if this file exists.\n\nTo set up a wallet, use the setup command (see First-Time Setup Flow below).\n\nOptional env overrides (take precedence over .wallet.json):\n\nWALLET_FILE — path to a Solana JSON keypair file\nWALLET_PRIVATE_KEY — base58-encoded private key\nBACKEND_URL — defaults to https://api.defipoly.app\nSOLANA_RPC — defaults to https://api.mainnet-beta.solana.com\nCommands\n\nWallet setup (run once):\n\nnode {skillDir}/scripts/agent-play.js setup                    # Generate new wallet\nnode {skillDir}/scripts/agent-play.js setup <base58_privkey>   # Import existing wallet\n\n\nBalance checking (no wallet file needed):\n\nnode {skillDir}/scripts/agent-play.js balance [address]                    # Check SOL + DPOLY balance\nnode {skillDir}/scripts/agent-play.js scan-wallets <addr1> [addr2] ...     # Check multiple wallets\n\n\nAuthentication (auto-handled, but can be run manually):\n\nnode {skillDir}/scripts/agent-play.js auth\n\n\nGame actions (build -> sign -> submit in one call):\n\nnode {skillDir}/scripts/agent-play.js init                          # Initialize player account (once)\nnode {skillDir}/scripts/agent-play.js buy <propertyId> [slots=1]    # Buy property slots\nnode {skillDir}/scripts/agent-play.js sell <propertyId> <slots>      # Sell property slots\nnode {skillDir}/scripts/agent-play.js shield <propertyId> [hours=24] # Activate theft protection\nnode {skillDir}/scripts/agent-play.js claim                          # Claim accumulated DPOLY rewards\nnode {skillDir}/scripts/agent-play.js bank-steal <propertyId>        # Attempt bank steal\nnode {skillDir}/scripts/agent-play.js steal <targetWallet> <propertyId>  # Attempt player steal\n\n\nDice (roll every 6 hours for discounts and bonuses):\n\nnode {skillDir}/scripts/agent-play.js dice-roll                     # Roll dice (6h cooldown)\nnode {skillDir}/scripts/agent-play.js dice-status                   # Check current dice discount/bonus\nnode {skillDir}/scripts/agent-play.js dice-buy <propertyId> [slots] # Buy with dice discount\nnode {skillDir}/scripts/agent-play.js dice-claim-snake-eyes         # Claim snake eyes token bonus\nnode {skillDir}/scripts/agent-play.js dice-claim-defense            # Claim 12h steal protection\nnode {skillDir}/scripts/agent-play.js dice-claim-compound           # Claim rewards with +10% bonus\nnode {skillDir}/scripts/agent-play.js dice-claim-cooldown-reset     # Reset all buy cooldowns\nnode {skillDir}/scripts/agent-play.js dice-claim-steal-cooldown-reset # Reset all steal cooldowns\n\n\nRead-only (no wallet needed):\n\nnode {skillDir}/scripts/agent-play.js status       # Player profile (properties, income, cooldowns)\nnode {skillDir}/scripts/agent-play.js properties   # All 22 properties\nnode {skillDir}/scripts/agent-play.js properties 0 # Specific property\nnode {skillDir}/scripts/agent-play.js config       # Game config\nnode {skillDir}/scripts/agent-play.js leaderboard  # Top players\n\nOutput Format\nActions: OK buy propertyId=0 slots=2 sig=5xK3... or FAIL <error message>\nRead-only: JSON to stdout\nExit code 0 = success, 1 = failure\nExamples\n# Check what properties are available\nnode {skillDir}/scripts/agent-play.js properties\n\n# Check your status\nnode {skillDir}/scripts/agent-play.js status\n\n# Buy 2 slots of property 0 (Brown - Mediterranean Ave)\nnode {skillDir}/scripts/agent-play.js buy 0 2\n\n# Shield property 0 for 24 hours\nnode {skillDir}/scripts/agent-play.js shield 0 24\n\n# Claim accumulated rewards\nnode {skillDir}/scripts/agent-play.js claim\n\n# Attempt bank steal on property 1\nnode {skillDir}/scripts/agent-play.js bank-steal 1\n\n# Steal from another player\nnode {skillDir}/scripts/agent-play.js steal <theirWalletAddress> 3\n\n# Roll dice (every 6 hours)\nnode {skillDir}/scripts/agent-play.js dice-roll\n\n# Check what you rolled\nnode {skillDir}/scripts/agent-play.js dice-status\n\n# Buy property 5 with dice discount\nnode {skillDir}/scripts/agent-play.js dice-buy 5\n\n# Claim snake eyes bonus (if you rolled 1+1)\nnode {skillDir}/scripts/agent-play.js dice-claim-snake-eyes\n\nThe 22 Properties\n\nThere are 22 properties in 8 color sets. Completing a full set gives a yield bonus.\n\nSet\tColor\tIDs\tPrice (DPOLY)\tYield\tSet Bonus\tBuy Cooldown\n0\tBrown\t0-1\t1,500\t1-6%\t30%\t6h\n1\tLight Blue\t2-4\t3,500\t6.5%\t32.86%\t8h\n2\tPink\t5-7\t7,500\t7%\t35.71%\t10h\n3\tOrange\t8-10\t15,000\t7.5%\t38.57%\t12h\n4\tRed\t11-13\t30,000\t8%\t41.43%\t16h\n5\tYellow\t14-16\t60,000\t8.5%\t44.29%\t20h\n6\tGreen\t17-19\t120,000\t9%\t47.14%\t24h\n7\tDark Blue\t20-21\t240,000\t10%\t50%\t28h\nBank Steal Cooldowns\nSet\tCooldown\nBrown\t30 min\nLight Blue\t1h\nPink\t1.5h\nOrange\t2h\nRed\t3h\nYellow\t4h\nGreen\t5h\nDark Blue\t6h\nDice System\n\nPlayers can roll dice every 6 hours using dice-roll. Outcomes:\n\nRoll\tEffect\tClaim Command\n1+1 (snake eyes)\t5% of property value as token bonus\tdice-claim-snake-eyes\n2+2\tDouble Defense: 12h steal protection on all properties\tdice-claim-defense\n3+3\tSteal Cooldown Reset: all steal cooldowns cleared\tdice-claim-steal-cooldown-reset\n4+4\tBuy Cooldown Reset: all buy cooldowns cleared\tdice-claim-cooldown-reset\n5+5\tCompound Interest: claim rewards with +10% bonus\tdice-claim-compound\n6+6 (jackpot)\t50% off any property in owned sets + reset all buy cooldowns\tdice-buy <id>\nTotal 11 (mini jackpot)\t20% off any property in owned sets\tdice-buy <id>\nOther totals\t30% off a specific color set\tdice-buy <id>\nDice Flow\nRoll: dice-roll — rolls 2d6, returns outcome + discount/bonus details. 6-hour cooldown.\nCheck: dice-status — check if you have an active discount/bonus and whether it's been claimed.\nAct on the result:\nDiscount rolls (regular, jackpot, mini-jackpot): Use dice-buy <propertyId> to buy a property at the discounted price. The property must be in the eligible set.\nSpecial doubles (snake eyes, defense, compound, cooldown resets): Use the corresponding dice-claim-* command.\nDiscounts and bonuses expire after 6 hours if not used.\nPlay Styles\n\nWhen the user first says \"play defipoly\" (after wallet setup), ask them to choose a play style. Save their choice to {skillDir}/.playstyle so you remember it across sessions.\n\nThe Collector\n\n\"Complete sets, maximize yield, play it safe.\"\n\nPriority: Set completion above all else. Buy properties that get you closer to finishing a color set.\nShields: Always shield completed sets. Shield any property worth >15,000 DPOLY.\nSteals: Rarely steal from players. Only bank-steal on cheap properties (Brown/Light Blue) when cooldowns allow.\nClaim: Claim rewards when accumulated >500 DPOLY.\nPersonality: Patient, methodical. Explain set completion progress.\nThe Raider\n\n\"Steal everything, shield nothing, live dangerously.\"\n\nPriority: Bank steals and player steals whenever cooldowns allow. Target high-value properties.\nShields: Only shield properties in completed sets. Leave others exposed — they're bait.\nBuys: Buy cheap properties (Brown/Light Blue) mainly as bank-steal targets. Spread thin across sets.\nClaim: Claim frequently — don't let rewards sit where they can be stolen.\nPersonality: Aggressive, trash-talking. Celebrate successful steals, shrug off failures.\nThe Mogul\n\n\"Diversify across the board, optimize ROI.\"\n\nPriority: Spread investments across all color sets. Buy at least one property in every set before doubling up.\nShields: Shield the most expensive properties first. Use 24h shields.\nSteals: Bank-steal opportunistically when cooldowns are up, targeting sets you're building.\nClaim: Claim when rewards accumulate significantly or before going idle.\nPersonality: Strategic, analytical. Talk in terms of ROI, portfolio balance, risk management.\nThe Wildcard\n\n\"Let the agent decide — surprise me.\"\n\nPriority: Agent develops its own strategy based on game state. Mix all approaches unpredictably.\nAgent should vary its approach over time — sometimes aggressive, sometimes defensive.\nPersonality: Unpredictable, creative. Explain the reasoning behind unconventional moves.\nGeneral Strategy Rules (all styles)\nSet completion gives 30-50% yield bonus — always factor this in.\nShield before going idle — always shield unprotected valuable properties at the end of a session.\nCheck cooldowns before acting — don't waste SOL on actions that will fail.\nClaim regularly — unclaimed rewards don't compound.\nMonitor SOL balance — if below 0.02 SOL, warn the user and stop making transactions.\nRoll dice every 6 hours — always check dice-status and roll if off cooldown. Claim bonuses or use discounts before they expire.\nFirst-Time Setup Flow\n\nWhen the user first asks to play Defipoly, follow these steps in order:\n\nStep 1: Check for existing wallet\n\nCheck if {skillDir}/.wallet.json exists. If it does, skip to Step 4.\n\nStep 2: Find user's wallets\n\nAsk the user: \"Do you want to use an existing Solana wallet or generate a new one?\"\n\nIf they want to use an existing wallet:\n\nSearch for wallet files on the system. Common locations to check:\n~/.config/solana/id.json (Solana CLI default)\nAny .json files in known project dirs the user might have\nAsk the user for wallet addresses or file paths if you can't find any\nFor each wallet found, extract the public key and run:\nnode {skillDir}/scripts/agent-play.js scan-wallets <pubkey1> <pubkey2> ...\n\nShow the user which wallets have DPOLY tokens and SOL\nIf a wallet has DPOLY, ask the user if they want to use it\nImport the chosen wallet: node {skillDir}/scripts/agent-play.js setup <base58_private_key>\n\nIf they want a new wallet:\n\nRun node {skillDir}/scripts/agent-play.js setup to generate a new wallet\nTell the user the public key and that they need to fund it with SOL + DPOLY tokens\nDirect them to https://defipoly.app to get DPOLY\nStep 3: Verify balance\nnode {skillDir}/scripts/agent-play.js balance\n\n\nMake sure the wallet has SOL (for fees) and DPOLY (to play). If not, tell the user what they need.\n\nStep 4: Authenticate and check status\nnode {skillDir}/scripts/agent-play.js auth\nnode {skillDir}/scripts/agent-play.js status\n\nStep 5: Initialize if needed\n\nIf the player is not initialized:\n\nnode {skillDir}/scripts/agent-play.js init\n\nStep 6: Choose play style\n\nAsk the user which play style they want (see Play Styles section above). Save their choice:\n\necho \"collector\" > {skillDir}/.playstyle   # or raider, mogul, wildcard\n\n\nThen show the game state and make your first move:\n\nnode {skillDir}/scripts/agent-play.js properties\n\nHow to Play (Pacing & Reporting)\n\nCRITICAL: Do NOT spam actions. You are playing a long game throughout the day, not speedrunning.\n\nPacing Rules\nMake 1-3 actions per check-in. Check the game state, pick the best 1-3 moves available, do them, report, and stop.\nReport EVERY action to the user. After each action, send a message explaining what you did and why.\nDo NOT chain 10+ actions in one session. If many cooldowns expired at once, pick the top 2-3 priorities and leave the rest for next check-in.\nThe game plays out over days, not minutes. Cooldowns exist for a reason — respect the pace.\nPer-Action Reporting\n\nEvery single action MUST be reported to the user with:\n\nWhat you did\nWhy (based on your play style)\nResult (success/fail, cost, new state)\n\nExample messages by style:\n\nCollector:\n\n🏠 Bought Property 5 (Pink) for 7,500 DPOLY — now 2/3 Pink set. One more to unlock the 35.7% yield bonus! Next check: buy cooldown expires in ~10h.\n\nRaider:\n\n🏴‍☠️ Bank steal on Property 2 (Light Blue) — SUCCESS! Free slot, zero cost. Easy money. Cooldown resets in 1h, I'll be back for more.\n\nMogul:\n\n📊 Shielded Properties 8-10 (Orange set, complete) for 24h. Portfolio protected. Claimed 2,340 DPOLY in accumulated rewards. Reinvesting next check-in.\n\nWildcard:\n\n🎲 Feeling aggressive today — attempted steal on player 7Kx9...mN3p's Property 17 (Green). Failed, but worth the shot at that yield. Switching to defense next round — shielding my Brown set.\n\nSession Flow (each check-in)\nRead {skillDir}/.playstyle to know your strategy\nnode {skillDir}/scripts/agent-play.js status — check portfolio, cooldowns, balance\nnode {skillDir}/scripts/agent-play.js dice-status — check if dice roll is available or bonus unclaimed\nnode {skillDir}/scripts/agent-play.js properties — check game state\nRoll dice if off cooldown — always roll first, the discount/bonus may change your priorities\nPick 1-3 best actions based on your play style, dice result, and what's off cooldown\nExecute each action, reporting to the user after each one\nEnd with a brief summary: portfolio state, what's on cooldown, when you'll check back\nIf nothing is available (all on cooldown), just say so and when the next action opens up\nWhat NOT to do\nDo NOT make more than 3 actions per check-in unless the user explicitly asks for a burst\nDo NOT stay silent — if you're checking in and nothing is available, still tell the user\nDo NOT ask permission for routine moves — your play style is your mandate\nDo NOT change play style without asking the user\nImportant Notes\nAll on-chain transactions cost SOL for fees (~0.005 SOL each). Make sure the wallet has at least 0.05 SOL.\nProperty prices are in DPOLY tokens. Buy DPOLY at https://defipoly.app or on Jupiter/Raydium (token mint: FCTD8DyMCDTL76EuGMGpLjxLXsdy46pnXMBeYNwypump).\nBank steal success is determined server-side. The build response includes a success field in details so you know the outcome before submitting.\nSteal attempts against players also have server-determined outcomes (~33% success rate).\nIf a request fails with a rate limit or network error, wait 30-60 seconds before retrying.\nJWT tokens are cached and auto-refreshed. If you get auth errors, run node {skillDir}/scripts/agent-play.js auth to force re-authenticate.\nAlways check game state (status, properties) before taking actions to avoid wasting SOL on transactions that will fail (e.g., cooldown active, insufficient balance)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Rengon0x/defipoly",
    "publisherUrl": "https://clawhub.ai/Rengon0x/defipoly",
    "owner": "Rengon0x",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/defipoly",
    "downloadUrl": "https://openagent3.xyz/downloads/defipoly",
    "agentUrl": "https://openagent3.xyz/skills/defipoly/agent",
    "manifestUrl": "https://openagent3.xyz/skills/defipoly/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/defipoly/agent.md"
  }
}