{
  "schemaVersion": "1.0",
  "item": {
    "slug": "31third-safe-rebalancer-simple",
    "name": "31Third Safe Rebalancer (Simple)",
    "source": "tencent",
    "type": "skill",
    "category": "金融交易",
    "sourceUrl": "https://clawhub.ai/Phips0812/31third-safe-rebalancer-simple",
    "canonicalUrl": "https://clawhub.ai/Phips0812/31third-safe-rebalancer-simple",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/31third-safe-rebalancer-simple",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=31third-safe-rebalancer-simple",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "abi/AssetUniversePolicy.json",
      "abi/ExecutorModule.json",
      "abi/SlippagePolicy.json",
      "abi/StaticAllocationPolicy.json",
      "dist/abi/AssetUniversePolicy.json"
    ],
    "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",
      "slug": "31third-safe-rebalancer-simple",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-22T14:04:16.787Z",
      "expiresAt": "2026-04-29T14:04:16.787Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=31third-safe-rebalancer-simple",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=31third-safe-rebalancer-simple",
        "contentDisposition": "attachment; filename=\"31third-safe-rebalancer-simple-0.2.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "31third-safe-rebalancer-simple"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/31third-safe-rebalancer-simple"
    },
    "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/31third-safe-rebalancer-simple",
    "agentPageUrl": "https://openagent3.xyz/skills/31third-safe-rebalancer-simple/agent",
    "manifestUrl": "https://openagent3.xyz/skills/31third-safe-rebalancer-simple/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/31third-safe-rebalancer-simple/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": "31Third Safe Rebalancer Simple",
        "body": "This skill is intentionally minimal for non-technical users.\n\nBest practice: use only one command / one tool:\n\nrebalance_now\nverify_deployment_config (post-deploy troubleshooting)\n\nIf you are unsure, use the help command first:\n\nnpm run cli -- help"
      },
      {
        "title": "Prerequisites",
        "body": "Node.js 22+\nnpm"
      },
      {
        "title": "Local Setup",
        "body": "npm install\nnpm run build"
      },
      {
        "title": "Setup",
        "body": "Deploy your Safe + policies using the 31Third policy wizard:\nhttps://app.31third.com/safe-policy-deployer\nYou need at least two wallets:\n\nSafe owner wallet: never share this private key.\nExecutor wallet: configured in the wizard on ExecutorModule; this private key is used by this skill.\n\n\nCopy env vars from the final wizard overview.\n\nRequired env vars:\n\nSAFE_ADDRESS=0xYourSafe\nEXECUTOR_MODULE_ADDRESS=0xYourExecutorModule\nEXECUTOR_WALLET_PRIVATE_KEY=0x...\nTOT_API_KEY=your_31third_api_key\nRPC_URL=https://mainnet.base.org\nCHAIN_ID=8453\n\nTOT_API_KEY can be requested via https://31third.com/contact or by emailing dev@31third.com."
      },
      {
        "title": "What rebalance_now does",
        "body": "Reads AssetUniverse and StaticAllocation policy state from ExecutorModule.\nBuilds baseEntries from current Safe balances for AssetUniverse tokens.\nBuilds targetEntries from on-chain StaticAllocation targets.\nCalls SDK calculateRebalancing(...).\nExecutes via SDK executeRebalancing(...) using ethers wallet signer.\nWaits for confirmation and returns tx hash.\n\nSafety checks:\n\nFails if scheduler != registry.\nFails if executor wallet is not equal to registry.\nFails if required policies are missing.\nLoads driftThresholdBps from StaticAllocation and skips execution when drift is below threshold.\nLoads maxSlippageBps from SlippagePolicy and uses:\n\nmaxSlippage = policySlippage - 0.1%\nmaxPriceImpact = policySlippage - 0.1%\n\n\nUses default minTradeValue = 0.1.\n\nPartial policy deployment behavior:\n\nIf AssetUniverse is not deployed, base entries default to [].\nIf SlippagePolicy is not deployed, configured/default slippage values are used.\nIf StaticAllocation is not deployed, auto target fetch is not possible.\nThis is the only fallback case where you should pass manual targetEntries.\nDo this only when StaticAllocation policy is intentionally not deployed.\nCLI fallback example:\nnpm run cli -- rebalance-now --target-entries '[{\"tokenAddress\":\"0x...\",\"allocation\":0.5},{\"tokenAddress\":\"0x...\",\"allocation\":0.5}]'"
      },
      {
        "title": "CLI",
        "body": "npm run cli -- help\nnpm run cli -- rebalance-now\nnpm run cli -- rebalance-now --target-entries '[{\"tokenAddress\":\"0x...\",\"allocation\":0.5},{\"tokenAddress\":\"0x...\",\"allocation\":0.5}]'\nnpm run cli -- verify-deployment --troubleshooting-file ./summary.txt\nnpm run cli -- verify-deployment --troubleshooting-summary \"Safe=0x...\""
      },
      {
        "title": "Troubleshooting & Best Practices",
        "body": "If your rebalance fails, check these common issues:"
      },
      {
        "title": "1. Verify the deployed contracts vs your environment",
        "body": "Use the verify-deployment tool to verify the deployed contracts against your environment.\nCopy the troubleshooting info from the Safe Policy Deployer (Step 4 or Step 5). It has the following schema:\n\nSafe=0x123...456\nExecutorModule=0x123...456 | Deployed\nScheduler=0x123...456\nRegistry=0x123...456\nBatchTrade=0xD20c024560ccA40288C05BAB650ac087ae9b0f6e\nFeedRegistry=0x1d4999242A24C8588c4f5dB7dFF1D74Df6bC746A\nCooldownSec=3600\n\nAssetUniversePolicy=0x123...456 | Deployed\nAssetUniverseAssets:\n- USDC | 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\n- WETH | 0x4200000000000000000000000000000000000006\n\nStaticAllocationPolicy=0x123...456 | Deployed\nStaticAllocationDriftThresholdPercent=0.50%\nStaticAllocationToleranceThresholdPercent=0.50%\nStaticAllocationTargets:\n- USDC | 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 | AllocationPercent=10.00%\n- WETH | 0x4200000000000000000000000000000000000006 | AllocationPercent=90.00%\n\nSlippagePolicy=0x123...456 | Deployed\nMaxSlippagePercent=0.50%\n\nIMPORTANT: The framework is deployed with a Safe batch transaction. It might happen that an internal transaction runs\nout of gas and fails. The batch transaction itself still succeeds, but not all policies might be deployed. In this case,\nexecution of rebalancings might fail."
      },
      {
        "title": "2. \"Policy failed: to token not allowed\"",
        "body": "Your AssetUniverse policy is blocking the trade.\n\nFix: Just use tokens that are allowed by the policy for rebalancing."
      },
      {
        "title": "3. \"Policy failed: minToReceive below...\"",
        "body": "The trade slippage is too high.\n\nCause: Low liquidity for the token pair (common with Aave aTokens or wrapped assets on new chains).\nFix: Try setting maxSlippage and maxPriceImpact lower on the rebalancing calculation call."
      },
      {
        "title": "4. \"Missing StaticAllocation policy\"",
        "body": "The script can't find a target allocation on-chain.\n\nFix: Run verify-deployment and if policy not deployed on purpose you can rebalance into any allocation within the AssetUniverse."
      }
    ],
    "body": "31Third Safe Rebalancer Simple\n\nThis skill is intentionally minimal for non-technical users.\n\nBest practice: use only one command / one tool:\n\nrebalance_now\nverify_deployment_config (post-deploy troubleshooting)\n\nIf you are unsure, use the help command first:\n\nnpm run cli -- help\nPrerequisites\nNode.js 22+\nnpm\nLocal Setup\nnpm install\nnpm run build\n\nSetup\nDeploy your Safe + policies using the 31Third policy wizard: https://app.31third.com/safe-policy-deployer\nYou need at least two wallets:\nSafe owner wallet: never share this private key.\nExecutor wallet: configured in the wizard on ExecutorModule; this private key is used by this skill.\nCopy env vars from the final wizard overview.\n\nRequired env vars:\n\nSAFE_ADDRESS=0xYourSafe\nEXECUTOR_MODULE_ADDRESS=0xYourExecutorModule\nEXECUTOR_WALLET_PRIVATE_KEY=0x...\nTOT_API_KEY=your_31third_api_key\nRPC_URL=https://mainnet.base.org\nCHAIN_ID=8453\n\n\nTOT_API_KEY can be requested via https://31third.com/contact or by emailing dev@31third.com.\n\nWhat rebalance_now does\nReads AssetUniverse and StaticAllocation policy state from ExecutorModule.\nBuilds baseEntries from current Safe balances for AssetUniverse tokens.\nBuilds targetEntries from on-chain StaticAllocation targets.\nCalls SDK calculateRebalancing(...).\nExecutes via SDK executeRebalancing(...) using ethers wallet signer.\nWaits for confirmation and returns tx hash.\n\nSafety checks:\n\nFails if scheduler != registry.\nFails if executor wallet is not equal to registry.\nFails if required policies are missing.\nLoads driftThresholdBps from StaticAllocation and skips execution when drift is below threshold.\nLoads maxSlippageBps from SlippagePolicy and uses:\nmaxSlippage = policySlippage - 0.1%\nmaxPriceImpact = policySlippage - 0.1%\nUses default minTradeValue = 0.1.\n\nPartial policy deployment behavior:\n\nIf AssetUniverse is not deployed, base entries default to [].\nIf SlippagePolicy is not deployed, configured/default slippage values are used.\nIf StaticAllocation is not deployed, auto target fetch is not possible. This is the only fallback case where you should pass manual targetEntries. Do this only when StaticAllocation policy is intentionally not deployed. CLI fallback example: npm run cli -- rebalance-now --target-entries '[{\"tokenAddress\":\"0x...\",\"allocation\":0.5},{\"tokenAddress\":\"0x...\",\"allocation\":0.5}]'\nCLI\nnpm run cli -- help\nnpm run cli -- rebalance-now\nnpm run cli -- rebalance-now --target-entries '[{\"tokenAddress\":\"0x...\",\"allocation\":0.5},{\"tokenAddress\":\"0x...\",\"allocation\":0.5}]'\nnpm run cli -- verify-deployment --troubleshooting-file ./summary.txt\nnpm run cli -- verify-deployment --troubleshooting-summary \"Safe=0x...\"\n\nTroubleshooting & Best Practices\n\nIf your rebalance fails, check these common issues:\n\n1. Verify the deployed contracts vs your environment\n\nUse the verify-deployment tool to verify the deployed contracts against your environment. Copy the troubleshooting info from the Safe Policy Deployer (Step 4 or Step 5). It has the following schema:\n\nSafe=0x123...456\nExecutorModule=0x123...456 | Deployed\nScheduler=0x123...456\nRegistry=0x123...456\nBatchTrade=0xD20c024560ccA40288C05BAB650ac087ae9b0f6e\nFeedRegistry=0x1d4999242A24C8588c4f5dB7dFF1D74Df6bC746A\nCooldownSec=3600\n\nAssetUniversePolicy=0x123...456 | Deployed\nAssetUniverseAssets:\n- USDC | 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\n- WETH | 0x4200000000000000000000000000000000000006\n\nStaticAllocationPolicy=0x123...456 | Deployed\nStaticAllocationDriftThresholdPercent=0.50%\nStaticAllocationToleranceThresholdPercent=0.50%\nStaticAllocationTargets:\n- USDC | 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 | AllocationPercent=10.00%\n- WETH | 0x4200000000000000000000000000000000000006 | AllocationPercent=90.00%\n\nSlippagePolicy=0x123...456 | Deployed\nMaxSlippagePercent=0.50%\n\n\nIMPORTANT: The framework is deployed with a Safe batch transaction. It might happen that an internal transaction runs out of gas and fails. The batch transaction itself still succeeds, but not all policies might be deployed. In this case, execution of rebalancings might fail.\n\n2. \"Policy failed: to token not allowed\"\n\nYour AssetUniverse policy is blocking the trade.\n\nFix: Just use tokens that are allowed by the policy for rebalancing.\n3. \"Policy failed: minToReceive below...\"\n\nThe trade slippage is too high.\n\nCause: Low liquidity for the token pair (common with Aave aTokens or wrapped assets on new chains).\nFix: Try setting maxSlippage and maxPriceImpact lower on the rebalancing calculation call.\n4. \"Missing StaticAllocation policy\"\n\nThe script can't find a target allocation on-chain.\n\nFix: Run verify-deployment and if policy not deployed on purpose you can rebalance into any allocation within the AssetUniverse."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Phips0812/31third-safe-rebalancer-simple",
    "publisherUrl": "https://clawhub.ai/Phips0812/31third-safe-rebalancer-simple",
    "owner": "Phips0812",
    "version": "0.1.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/31third-safe-rebalancer-simple",
    "downloadUrl": "https://openagent3.xyz/downloads/31third-safe-rebalancer-simple",
    "agentUrl": "https://openagent3.xyz/skills/31third-safe-rebalancer-simple/agent",
    "manifestUrl": "https://openagent3.xyz/skills/31third-safe-rebalancer-simple/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/31third-safe-rebalancer-simple/agent.md"
  }
}