{
  "schemaVersion": "1.0",
  "item": {
    "slug": "monkeytype-tracker",
    "name": "Monkeytype Tracker and Advisor",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Qrucio/monkeytype-tracker",
    "canonicalUrl": "https://clawhub.ai/Qrucio/monkeytype-tracker",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/monkeytype-tracker",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=monkeytype-tracker",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "scripts/monkeytype_stats.py",
      "SKILL.md"
    ],
    "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": "monkeytype-tracker",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-05T20:18:06.379Z",
      "expiresAt": "2026-05-12T20:18:06.379Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=monkeytype-tracker",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=monkeytype-tracker",
        "contentDisposition": "attachment; filename=\"monkeytype-tracker-1.1.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "monkeytype-tracker"
      },
      "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/monkeytype-tracker"
    },
    "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/monkeytype-tracker",
    "agentPageUrl": "https://openagent3.xyz/skills/monkeytype-tracker/agent",
    "manifestUrl": "https://openagent3.xyz/skills/monkeytype-tracker/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/monkeytype-tracker/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": "Monkeytype Tracker",
        "body": "Track your Monkeytype typing statistics and get personalized improvement tips."
      },
      {
        "title": "Pre-Flight Check (ALWAYS DO THIS FIRST)",
        "body": "Before running ANY command, check if setup is complete:\n\nSecurity Priority:\n\nEnvironment variable (most secure): MONKEYTYPE_APE_KEY\nConfig file fallback: ~/.openclaw/workspace/config/monkeytype.json\n\n# Check environment variable first\nape_key = os.getenv('MONKEYTYPE_APE_KEY')\nif not ape_key:\n    # Check config exists and has valid key\n    config_path = Path.home() / \".openclaw\" / \"workspace\" / \"config\" / \"monkeytype.json\"\n\nIf no env var AND no config: → Run Setup Flow (Step 1)\nIf apeKey exists but API returns 471 \"inactive\": → Tell user to activate the key (checkbox)\nIf apeKey works: → Proceed with command"
      },
      {
        "title": "Step 1: Get ApeKey",
        "body": "Send this message:\n\nHey! 👋 I see you want to track your Monkeytype stats. I'll need your API key to get started.\n\n**🔑 How to get it:**\n1. Go to monkeytype.com → **Account Settings** (click your profile icon)\n2. Select **\"Ape Keys\"** from the left sidebar\n3. Click **\"Generate new key\"**\n4. ⚠️ **Activate it:** Check the checkbox next to your new key (keys are inactive by default!)\n5. Copy the key and send it to me\n\nOnce you share the key, I'll ask about automation preferences 🤖\n\n---\n\n🔒 **Prefer to add it manually?** No problem!\n\n**Option 1: Environment Variable (Recommended - Most Secure)**\nSet in your system:\n- Windows (PowerShell): `$env:MONKEYTYPE_APE_KEY=\"YOUR_KEY_HERE\"`\n- Linux/Mac: `export MONKEYTYPE_APE_KEY=\"YOUR_KEY_HERE\"`\n\n**Option 2: Config File**\nCreate this file: `~/.openclaw/workspace/config/monkeytype.json`\nWith this content:\n{\n  \"apeKey\": \"YOUR_KEY_HERE\"\n}\n\nThen just say \"monkeytype stats\" and I'll take it from there!\n\nAfter receiving key:\n\nSave to ~/.openclaw/workspace/config/monkeytype.json:\n\n{\n  \"apeKey\": \"USER_KEY_HERE\",\n  \"automations\": {\n    \"dailyReport\": false,\n    \"weeklyReport\": false,\n    \"reportTime\": \"20:00\"\n  }\n}\n\nTest the key immediately by running python scripts/monkeytype_stats.py stats\nIf 471 error → Key is inactive, ask user to check the checkbox\nIf success → Proceed to Step 2"
      },
      {
        "title": "Step 2: Verify & Ask Automation Preferences",
        "body": "After key verification succeeds, send:\n\nGot it! Key saved and verified ✅\n\n**📊 Quick Overview:**\n• {tests} tests completed ({hours} hrs)\n• 🏆 PB: {pb_15}WPM (15s) | {pb_30}WPM (30s) | {pb_60}WPM (60s)\n• 🔥 Current streak: {streak} days\n\nNow, would you like automated reports?\n\n**Options:**\n1️⃣ **Daily report** — Summary of the day's practice\n2️⃣ **Weekly report** — Week-over-week comparison + tips\n3️⃣ **Both**\n4️⃣ **None** — On-demand only\n\n⏰ What time should I send reports? (default: 8pm)"
      },
      {
        "title": "Step 3: Finalize Setup",
        "body": "After user chooses options:\n\nUpdate config with preferences\nCreate cron jobs if automations enabled:\n\nDaily: 0 {hour} * * * with name monkeytype-daily-report\nWeekly: 0 {hour} * * 0 with name monkeytype-weekly-report\n\n\nSend completion message:\n\n🎉 **You're all set!**\n\n**✅ Config saved:**\n• Weekly report: {status}\n• Daily report: {status}\n\n**💡 Try these anytime:**\n• \"show my typing stats\"\n• \"how's my typing progress\"\n• \"compare my typing this week\"\n• \"monkeytype leaderboard\"\n\nHappy typing! May your WPM be ever higher 🚀⌨️"
      },
      {
        "title": "Error Handling",
        "body": "ErrorUser MessageNo config file\"Looks like Monkeytype isn't set up yet. Let me help you get started! 🔑\" → Start Setup FlowNo apeKey in configSame as aboveAPI 471 \"inactive\"\"Your API key is inactive. Go to Monkeytype → Account Settings → Ape Keys and check the checkbox next to your key to activate it ✅\"API 401 \"unauthorized\"\"Your API key seems invalid. Let's set up a new one.\" → Start Setup FlowAPI rate limit\"Hit the API rate limit. Try again in a minute ⏳\"Network error\"Couldn't reach Monkeytype servers. Check your connection and try again.\""
      },
      {
        "title": "Fetch Stats",
        "body": "Triggers: \"show my monkeytype stats\", \"how's my typing\", \"typing stats\"\n\nPre-flight check (see above)\nRun: python scripts/monkeytype_stats.py stats\nFormat output nicely with emojis"
      },
      {
        "title": "Recent History & Analysis",
        "body": "Triggers: \"analyze my recent typing\", \"how have I been typing lately\"\n\nPre-flight check\nRun: python scripts/monkeytype_stats.py history --limit 50\nAnalyze output and provide 2-3 improvement tips"
      },
      {
        "title": "Progress Comparison",
        "body": "Triggers: \"compare my typing progress\", \"am I improving\"\n\nPre-flight check\nRun: python scripts/monkeytype_stats.py compare"
      },
      {
        "title": "Leaderboard Lookup",
        "body": "Triggers: \"monkeytype leaderboard\", \"where do I rank\"\n\nPre-flight check\nRun: python scripts/monkeytype_stats.py leaderboard [--mode time] [--mode2 60]"
      },
      {
        "title": "Improvement Tips Logic",
        "body": "After fetching stats, analyze and provide tips based on:\n\nIssueTipStdDev > 15\"Focus on consistency — slow down and aim for 95%+ accuracy every test\"Accuracy < 95%\"Accuracy builds speed. Slow down until you hit 95%+ consistently\"60s << 30s PB\"Stamina gap detected. Practice longer tests to build endurance\"Low test count\"More practice = faster progress. Aim for 5-10 tests daily\"Streak broken\"Consistency matters! Try to type a bit every day\""
      },
      {
        "title": "API Notes",
        "body": "Base URL: https://api.monkeytype.com\nAuth header: Authorization: ApeKey {key}\nRate limits: 30 req/min global, 30/day for results endpoint\nCache results locally when possible"
      },
      {
        "title": "Files",
        "body": "~/.openclaw/workspace/config/monkeytype.json: User config\nscripts/monkeytype_stats.py: Main stats fetcher script"
      }
    ],
    "body": "Monkeytype Tracker\n\nTrack your Monkeytype typing statistics and get personalized improvement tips.\n\nPre-Flight Check (ALWAYS DO THIS FIRST)\n\nBefore running ANY command, check if setup is complete:\n\nSecurity Priority:\n\nEnvironment variable (most secure): MONKEYTYPE_APE_KEY\nConfig file fallback: ~/.openclaw/workspace/config/monkeytype.json\n# Check environment variable first\nape_key = os.getenv('MONKEYTYPE_APE_KEY')\nif not ape_key:\n    # Check config exists and has valid key\n    config_path = Path.home() / \".openclaw\" / \"workspace\" / \"config\" / \"monkeytype.json\"\n\n\nIf no env var AND no config: → Run Setup Flow (Step 1) If apeKey exists but API returns 471 \"inactive\": → Tell user to activate the key (checkbox) If apeKey works: → Proceed with command\n\nSetup Flow (3 Steps)\nStep 1: Get ApeKey\n\nSend this message:\n\nHey! 👋 I see you want to track your Monkeytype stats. I'll need your API key to get started.\n\n**🔑 How to get it:**\n1. Go to monkeytype.com → **Account Settings** (click your profile icon)\n2. Select **\"Ape Keys\"** from the left sidebar\n3. Click **\"Generate new key\"**\n4. ⚠️ **Activate it:** Check the checkbox next to your new key (keys are inactive by default!)\n5. Copy the key and send it to me\n\nOnce you share the key, I'll ask about automation preferences 🤖\n\n---\n\n🔒 **Prefer to add it manually?** No problem!\n\n**Option 1: Environment Variable (Recommended - Most Secure)**\nSet in your system:\n- Windows (PowerShell): `$env:MONKEYTYPE_APE_KEY=\"YOUR_KEY_HERE\"`\n- Linux/Mac: `export MONKEYTYPE_APE_KEY=\"YOUR_KEY_HERE\"`\n\n**Option 2: Config File**\nCreate this file: `~/.openclaw/workspace/config/monkeytype.json`\nWith this content:\n{\n  \"apeKey\": \"YOUR_KEY_HERE\"\n}\n\nThen just say \"monkeytype stats\" and I'll take it from there!\n\n\nAfter receiving key:\n\nSave to ~/.openclaw/workspace/config/monkeytype.json:\n{\n  \"apeKey\": \"USER_KEY_HERE\",\n  \"automations\": {\n    \"dailyReport\": false,\n    \"weeklyReport\": false,\n    \"reportTime\": \"20:00\"\n  }\n}\n\nTest the key immediately by running python scripts/monkeytype_stats.py stats\nIf 471 error → Key is inactive, ask user to check the checkbox\nIf success → Proceed to Step 2\nStep 2: Verify & Ask Automation Preferences\n\nAfter key verification succeeds, send:\n\nGot it! Key saved and verified ✅\n\n**📊 Quick Overview:**\n• {tests} tests completed ({hours} hrs)\n• 🏆 PB: {pb_15}WPM (15s) | {pb_30}WPM (30s) | {pb_60}WPM (60s)\n• 🔥 Current streak: {streak} days\n\nNow, would you like automated reports?\n\n**Options:**\n1️⃣ **Daily report** — Summary of the day's practice\n2️⃣ **Weekly report** — Week-over-week comparison + tips\n3️⃣ **Both**\n4️⃣ **None** — On-demand only\n\n⏰ What time should I send reports? (default: 8pm)\n\nStep 3: Finalize Setup\n\nAfter user chooses options:\n\nUpdate config with preferences\nCreate cron jobs if automations enabled:\nDaily: 0 {hour} * * * with name monkeytype-daily-report\nWeekly: 0 {hour} * * 0 with name monkeytype-weekly-report\nSend completion message:\n🎉 **You're all set!**\n\n**✅ Config saved:**\n• Weekly report: {status}\n• Daily report: {status}\n\n**💡 Try these anytime:**\n• \"show my typing stats\"\n• \"how's my typing progress\"\n• \"compare my typing this week\"\n• \"monkeytype leaderboard\"\n\nHappy typing! May your WPM be ever higher 🚀⌨️\n\nError Handling\nError\tUser Message\nNo config file\t\"Looks like Monkeytype isn't set up yet. Let me help you get started! 🔑\" → Start Setup Flow\nNo apeKey in config\tSame as above\nAPI 471 \"inactive\"\t\"Your API key is inactive. Go to Monkeytype → Account Settings → Ape Keys and check the checkbox next to your key to activate it ✅\"\nAPI 401 \"unauthorized\"\t\"Your API key seems invalid. Let's set up a new one.\" → Start Setup Flow\nAPI rate limit\t\"Hit the API rate limit. Try again in a minute ⏳\"\nNetwork error\t\"Couldn't reach Monkeytype servers. Check your connection and try again.\"\nCommands\nFetch Stats\n\nTriggers: \"show my monkeytype stats\", \"how's my typing\", \"typing stats\"\n\nPre-flight check (see above)\nRun: python scripts/monkeytype_stats.py stats\nFormat output nicely with emojis\nRecent History & Analysis\n\nTriggers: \"analyze my recent typing\", \"how have I been typing lately\"\n\nPre-flight check\nRun: python scripts/monkeytype_stats.py history --limit 50\nAnalyze output and provide 2-3 improvement tips\nProgress Comparison\n\nTriggers: \"compare my typing progress\", \"am I improving\"\n\nPre-flight check\nRun: python scripts/monkeytype_stats.py compare\nLeaderboard Lookup\n\nTriggers: \"monkeytype leaderboard\", \"where do I rank\"\n\nPre-flight check\nRun: python scripts/monkeytype_stats.py leaderboard [--mode time] [--mode2 60]\nImprovement Tips Logic\n\nAfter fetching stats, analyze and provide tips based on:\n\nIssue\tTip\nStdDev > 15\t\"Focus on consistency — slow down and aim for 95%+ accuracy every test\"\nAccuracy < 95%\t\"Accuracy builds speed. Slow down until you hit 95%+ consistently\"\n60s << 30s PB\t\"Stamina gap detected. Practice longer tests to build endurance\"\nLow test count\t\"More practice = faster progress. Aim for 5-10 tests daily\"\nStreak broken\t\"Consistency matters! Try to type a bit every day\"\nAPI Notes\nBase URL: https://api.monkeytype.com\nAuth header: Authorization: ApeKey {key}\nRate limits: 30 req/min global, 30/day for results endpoint\nCache results locally when possible\nFiles\n~/.openclaw/workspace/config/monkeytype.json: User config\nscripts/monkeytype_stats.py: Main stats fetcher script"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Qrucio/monkeytype-tracker",
    "publisherUrl": "https://clawhub.ai/Qrucio/monkeytype-tracker",
    "owner": "Qrucio",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/monkeytype-tracker",
    "downloadUrl": "https://openagent3.xyz/downloads/monkeytype-tracker",
    "agentUrl": "https://openagent3.xyz/skills/monkeytype-tracker/agent",
    "manifestUrl": "https://openagent3.xyz/skills/monkeytype-tracker/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/monkeytype-tracker/agent.md"
  }
}