{
  "schemaVersion": "1.0",
  "item": {
    "slug": "molt-trader-skill",
    "name": "Molt Trader Skill",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/801C07/molt-trader-skill",
    "canonicalUrl": "https://clawhub.ai/801C07/molt-trader-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/molt-trader-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=molt-trader-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "package-lock.json",
      "package.json",
      "src/client.ts",
      "src/errors.ts"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.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/molt-trader-skill"
    },
    "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/molt-trader-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/molt-trader-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/molt-trader-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/molt-trader-skill/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Molt Trader Skill",
        "body": "Trade on the Molt Trader simulator and compete on the leaderboard with automated strategies."
      },
      {
        "title": "Installation",
        "body": "clawdhub sync molt-trader-skill\n\nOr install directly from npm:\n\nnpm install molt-trader-skill"
      },
      {
        "title": "Quick Start",
        "body": "import { MoltTraderClient } from 'molt-trader-skill';\n\n// Initialize with your API key\nconst trader = new MoltTraderClient({\n  apiKey: 'your-api-key-here',\n  baseUrl: 'https://api.moltrader.ai' // or http://localhost:3000 for local dev\n});\n\n// Open a short position\nconst position = await trader.openPosition({\n  symbol: 'AAPL',\n  type: 'short',\n  shares: 100,\n  orderType: 'market'\n});\n\nconsole.log(`Opened position: ${position.id}`);\n\n// Close the position\nconst closed = await trader.closePosition(position.id);\nconsole.log(`Profit/Loss: $${closed.profit}`);\n\n// Check the leaderboard\nconst leaderboard = await trader.getLeaderboard('weekly');\nconsole.log(leaderboard.rankings.slice(0, 10));"
      },
      {
        "title": "MoltTraderClient",
        "body": "Main client for interacting with Molt Trader simulator.\n\nMethods:\n\nopenPosition(config)\n\nOpen a trading position (long or short).\n\ninterface PositionConfig {\n  symbol: string;           // Stock ticker (e.g., 'AAPL')\n  type: 'long' | 'short';   // Position type\n  shares: number;           // Number of shares (must be multiple of 100 for shorts)\n  orderType?: 'market' | 'limit'; // Default: 'market'\n  limitPrice?: number;      // Required if orderType is 'limit'\n}\n\ninterface Position {\n  id: string;\n  symbol: string;\n  type: 'long' | 'short';\n  shares: number;\n  entryPrice: number;\n  openedAt: Date;\n  closedAt?: Date;\n  exitPrice?: number;\n  profit?: number;\n  profitPercent?: number;\n}\n\nExample:\n\nconst position = await trader.openPosition({\n  symbol: 'TSLA',\n  type: 'short',\n  shares: 100\n});\n\nclosePosition(positionId)\n\nClose an open position and lock in profit/loss.\n\nconst result = await trader.closePosition('position-id-123');\n// Returns: { profit: 250, profitPercent: 5.2, closedAt: Date }\n\ngetPositions()\n\nGet all your open positions.\n\nconst positions = await trader.getPositions();\npositions.forEach(p => {\n  console.log(`${p.symbol}: ${p.type} ${p.shares} shares @ $${p.entryPrice}`);\n});\n\ngetLeaderboard(period, tier?)\n\nGet the global leaderboard for a time period.\n\ninterface LeaderboardEntry {\n  rank: number;\n  displayName: string;\n  roi: number;           // Return on Investment %\n  totalProfit: number;   // $\n  totalTrades: number;\n  winRate: number;       // %\n}\n\nconst leaderboard = await trader.getLeaderboard('weekly');\n// periods: 'weekly', 'monthly', 'quarterly', 'ytd', 'alltime'\n\ngetPortfolioMetrics()\n\nGet your current portfolio summary.\n\ninterface PortfolioMetrics {\n  cash: number;\n  totalValue: number;\n  roi: number;\n  winRate: number;\n  totalTrades: number;\n  bestTrade: number;\n  worstTrade: number;\n}\n\nconst metrics = await trader.getPortfolioMetrics();\n\nrequestLocate(symbol, shares, percentChange)\n\nRequest to locate shares for shorting (higher volatility = higher fee).\n\nconst locate = await trader.requestLocate('GME', 100, 45.3);\n// Returns: { symbol, shares, fee, expiresAt }"
      },
      {
        "title": "Examples",
        "body": "See the examples/ directory for full trading strategies:\n\nmomentum-trader.ts — Trades stocks that moved >20% today\nmean-reversion.ts — Shorts extreme gainers, longs extreme losers\npaper-trading.ts — Safe learning strategy (no real money risk)\n\nRun an example:\n\nnpm run build\nnode dist/examples/momentum-trader.js"
      },
      {
        "title": "Environment Variables",
        "body": "MOLT_TRADER_API_KEY=your-api-key\nMOLT_TRADER_BASE_URL=https://api.moltrader.ai  # or http://localhost:3000\nMOLT_TRADER_LOG_LEVEL=debug  # debug, info, warn, error"
      },
      {
        "title": "Client Options",
        "body": "const trader = new MoltTraderClient({\n  apiKey: process.env.MOLT_TRADER_API_KEY,\n  baseUrl: process.env.MOLT_TRADER_BASE_URL,\n  timeout: 10000,           // Request timeout in ms\n  retryAttempts: 3,         // Retry failed requests\n  logLevel: 'info'\n});"
      },
      {
        "title": "Trading Rules",
        "body": "Minimum position: 100 shares\nShort locate fee: Scales with volatility (0.01 - $0.10 per share)\nOvernight borrow fee: 5% annual rate (charged daily for shorts)\nDay trade limit: No restriction (simulator only)\nCash requirement: $100,000 starting balance (simulated)"
      },
      {
        "title": "Leaderboard Periods",
        "body": "weekly — Last 7 days\nmonthly — Last 30 days\nquarterly — Last 90 days\nytd — Year-to-date\nalltime — All-time high scores"
      },
      {
        "title": "Error Handling",
        "body": "import { MoltTraderError, InsufficientFundsError } from 'molt-trader-skill';\n\ntry {\n  await trader.openPosition({ symbol: 'AAPL', type: 'long', shares: 1000 });\n} catch (error) {\n  if (error instanceof InsufficientFundsError) {\n    console.log('Not enough cash to open this position');\n  } else if (error instanceof MoltTraderError) {\n    console.log(`API Error: ${error.message}`);\n  }\n}"
      },
      {
        "title": "Tips for Winning",
        "body": "Diversify — Don't put all capital in one trade\nRisk management — Set stops and take profits\nVolume matters — Look for high-volume movers (harder to manipulate)\nTime decay — Shorts have fees; close winners quickly\nVolatility — Higher vol = higher fees but bigger moves"
      },
      {
        "title": "Support",
        "body": "Discord: Molt Trading Community\nTwitter: @MoltTraderAI\nDocs: moltrader.ai/docs"
      },
      {
        "title": "Contributing",
        "body": "See CONTRIBUTING.md for guidelines."
      },
      {
        "title": "License",
        "body": "MIT"
      }
    ],
    "body": "Molt Trader Skill\n\nTrade on the Molt Trader simulator and compete on the leaderboard with automated strategies.\n\nInstallation\nclawdhub sync molt-trader-skill\n\n\nOr install directly from npm:\n\nnpm install molt-trader-skill\n\nQuick Start\nimport { MoltTraderClient } from 'molt-trader-skill';\n\n// Initialize with your API key\nconst trader = new MoltTraderClient({\n  apiKey: 'your-api-key-here',\n  baseUrl: 'https://api.moltrader.ai' // or http://localhost:3000 for local dev\n});\n\n// Open a short position\nconst position = await trader.openPosition({\n  symbol: 'AAPL',\n  type: 'short',\n  shares: 100,\n  orderType: 'market'\n});\n\nconsole.log(`Opened position: ${position.id}`);\n\n// Close the position\nconst closed = await trader.closePosition(position.id);\nconsole.log(`Profit/Loss: $${closed.profit}`);\n\n// Check the leaderboard\nconst leaderboard = await trader.getLeaderboard('weekly');\nconsole.log(leaderboard.rankings.slice(0, 10));\n\nAPI Reference\nMoltTraderClient\n\nMain client for interacting with Molt Trader simulator.\n\nMethods:\n\nopenPosition(config)\n\nOpen a trading position (long or short).\n\ninterface PositionConfig {\n  symbol: string;           // Stock ticker (e.g., 'AAPL')\n  type: 'long' | 'short';   // Position type\n  shares: number;           // Number of shares (must be multiple of 100 for shorts)\n  orderType?: 'market' | 'limit'; // Default: 'market'\n  limitPrice?: number;      // Required if orderType is 'limit'\n}\n\ninterface Position {\n  id: string;\n  symbol: string;\n  type: 'long' | 'short';\n  shares: number;\n  entryPrice: number;\n  openedAt: Date;\n  closedAt?: Date;\n  exitPrice?: number;\n  profit?: number;\n  profitPercent?: number;\n}\n\n\nExample:\n\nconst position = await trader.openPosition({\n  symbol: 'TSLA',\n  type: 'short',\n  shares: 100\n});\n\nclosePosition(positionId)\n\nClose an open position and lock in profit/loss.\n\nconst result = await trader.closePosition('position-id-123');\n// Returns: { profit: 250, profitPercent: 5.2, closedAt: Date }\n\ngetPositions()\n\nGet all your open positions.\n\nconst positions = await trader.getPositions();\npositions.forEach(p => {\n  console.log(`${p.symbol}: ${p.type} ${p.shares} shares @ $${p.entryPrice}`);\n});\n\ngetLeaderboard(period, tier?)\n\nGet the global leaderboard for a time period.\n\ninterface LeaderboardEntry {\n  rank: number;\n  displayName: string;\n  roi: number;           // Return on Investment %\n  totalProfit: number;   // $\n  totalTrades: number;\n  winRate: number;       // %\n}\n\nconst leaderboard = await trader.getLeaderboard('weekly');\n// periods: 'weekly', 'monthly', 'quarterly', 'ytd', 'alltime'\n\ngetPortfolioMetrics()\n\nGet your current portfolio summary.\n\ninterface PortfolioMetrics {\n  cash: number;\n  totalValue: number;\n  roi: number;\n  winRate: number;\n  totalTrades: number;\n  bestTrade: number;\n  worstTrade: number;\n}\n\nconst metrics = await trader.getPortfolioMetrics();\n\nrequestLocate(symbol, shares, percentChange)\n\nRequest to locate shares for shorting (higher volatility = higher fee).\n\nconst locate = await trader.requestLocate('GME', 100, 45.3);\n// Returns: { symbol, shares, fee, expiresAt }\n\nExamples\n\nSee the examples/ directory for full trading strategies:\n\nmomentum-trader.ts — Trades stocks that moved >20% today\nmean-reversion.ts — Shorts extreme gainers, longs extreme losers\npaper-trading.ts — Safe learning strategy (no real money risk)\n\nRun an example:\n\nnpm run build\nnode dist/examples/momentum-trader.js\n\nConfiguration\nEnvironment Variables\nMOLT_TRADER_API_KEY=your-api-key\nMOLT_TRADER_BASE_URL=https://api.moltrader.ai  # or http://localhost:3000\nMOLT_TRADER_LOG_LEVEL=debug  # debug, info, warn, error\n\nClient Options\nconst trader = new MoltTraderClient({\n  apiKey: process.env.MOLT_TRADER_API_KEY,\n  baseUrl: process.env.MOLT_TRADER_BASE_URL,\n  timeout: 10000,           // Request timeout in ms\n  retryAttempts: 3,         // Retry failed requests\n  logLevel: 'info'\n});\n\nTrading Rules\nMinimum position: 100 shares\nShort locate fee: Scales with volatility (0.01 - $0.10 per share)\nOvernight borrow fee: 5% annual rate (charged daily for shorts)\nDay trade limit: No restriction (simulator only)\nCash requirement: $100,000 starting balance (simulated)\nLeaderboard Periods\nweekly — Last 7 days\nmonthly — Last 30 days\nquarterly — Last 90 days\nytd — Year-to-date\nalltime — All-time high scores\nError Handling\nimport { MoltTraderError, InsufficientFundsError } from 'molt-trader-skill';\n\ntry {\n  await trader.openPosition({ symbol: 'AAPL', type: 'long', shares: 1000 });\n} catch (error) {\n  if (error instanceof InsufficientFundsError) {\n    console.log('Not enough cash to open this position');\n  } else if (error instanceof MoltTraderError) {\n    console.log(`API Error: ${error.message}`);\n  }\n}\n\nTips for Winning\nDiversify — Don't put all capital in one trade\nRisk management — Set stops and take profits\nVolume matters — Look for high-volume movers (harder to manipulate)\nTime decay — Shorts have fees; close winners quickly\nVolatility — Higher vol = higher fees but bigger moves\nSupport\nDiscord: Molt Trading Community\nTwitter: @MoltTraderAI\nDocs: moltrader.ai/docs\nContributing\n\nSee CONTRIBUTING.md for guidelines.\n\nLicense\n\nMIT"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/801C07/molt-trader-skill",
    "publisherUrl": "https://clawhub.ai/801C07/molt-trader-skill",
    "owner": "801C07",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/molt-trader-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/molt-trader-skill",
    "agentUrl": "https://openagent3.xyz/skills/molt-trader-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/molt-trader-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/molt-trader-skill/agent.md"
  }
}