{
  "schemaVersion": "1.0",
  "item": {
    "slug": "testflight-monitor",
    "name": "TestFlight Seat Monitor",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/jon-xo/testflight-monitor",
    "canonicalUrl": "https://clawhub.ai/jon-xo/testflight-monitor",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/testflight-monitor",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=testflight-monitor",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "config/batch-config.example.json",
      "config/batch-config.json",
      "config/testflight-codes.json",
      "lib/check-batch.sh"
    ],
    "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/testflight-monitor"
    },
    "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/testflight-monitor",
    "agentPageUrl": "https://openagent3.xyz/skills/testflight-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/testflight-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/testflight-monitor/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": "TestFlight Seat Monitor",
        "body": "Monitor available TestFlight beta slots with smart app name lookups and silent batch checking. Get alerted only when seats open up."
      },
      {
        "title": "What It Does",
        "body": "Lookup TestFlight codes → app names using community data\nCheck single URLs for immediate status\nBatch monitoring with state tracking (silent by default)\nOnly alerts on changes (full → available)\nConfigurable intervals (30min - 3hr recommended)"
      },
      {
        "title": "Why This Exists",
        "body": "TestFlight betas fill up fast. This skill:\n\nMonitors multiple betas in one job\nStays silent unless something changes\nUses human-readable app names (not cryptic codes)\nTracks state across checks to detect transitions"
      },
      {
        "title": "Installation",
        "body": "clawhub install testflight-monitor\n\nOr clone from GitHub:\n\ncd ~/.openclaw/workspace/skills\ngit clone https://github.com/jon-xo/testflight-monitor-skill.git testflight-monitor\ncd testflight-monitor"
      },
      {
        "title": "Initial Setup",
        "body": "⚠️ Important: config/batch-config.json is user-specific and NOT shipped with defaults."
      },
      {
        "title": "1. Initialize your config (one time)",
        "body": "cp config/batch-config.example.json config/batch-config.json"
      },
      {
        "title": "2. Add your TestFlight URLs",
        "body": "./testflight-monitor.sh add https://testflight.apple.com/join/YOUR_CODE_HERE\n./testflight-monitor.sh add https://testflight.apple.com/join/ANOTHER_CODE\n./testflight-monitor.sh list"
      },
      {
        "title": "3. Verify it works",
        "body": "./testflight-monitor.sh batch\n# Output: SILENT: No status changes detected. (or alert if available)"
      },
      {
        "title": "Quick Start",
        "body": "# Every hour check\nopenclaw cron add \\\n  --name \"TestFlight Monitor\" \\\n  --every 60m \\\n  --target isolated \\\n  --message \"Run TestFlight batch check: ~/.openclaw/workspace/skills/testflight-monitor/testflight-monitor.sh batch. If output contains 'SILENT', reply NO_REPLY. Otherwise announce the findings.\""
      },
      {
        "title": "4. Set up automated monitoring (cron - optional)",
        "body": "# Check every hour, silent unless slots open\nopenclaw cron add \\\n  --name \"TestFlight Monitor\" \\\n  --every 60m \\\n  --target isolated \\\n  --message \"Run: ~/.openclaw/workspace/skills/testflight-monitor/testflight-monitor.sh batch. If output contains 'SILENT', reply NO_REPLY. Otherwise announce the findings.\""
      },
      {
        "title": "Core Commands",
        "body": "lookup <code>\nLook up app name by TestFlight code\n\n./testflight-monitor.sh lookup BnjD4BEf\n# Output: OpenClaw iOS\n\ncheck <url>\nCheck single TestFlight URL for availability\n\n./testflight-monitor.sh check https://testflight.apple.com/join/BnjD4BEf\n# Output: Status: full | App: OpenClaw iOS\n\nbatch\nCheck all configured URLs (silent unless status changed)\n\n./testflight-monitor.sh batch\n# Output: SILENT: No status changes detected.\n# Or: 🎉 **OpenClaw iOS** beta now has open slots! https://..."
      },
      {
        "title": "Configuration Commands",
        "body": "list\nShow all monitored URLs with app names\n\n./testflight-monitor.sh list\n\nadd <url>\nAdd URL to batch monitoring\n\n./testflight-monitor.sh add https://testflight.apple.com/join/Sq8bYSnJ\n\nremove <url>\nRemove URL from batch monitoring\n\n./testflight-monitor.sh remove https://testflight.apple.com/join/Sq8bYSnJ\n\nconfig\nShow batch configuration (JSON)\n\n./testflight-monitor.sh config\n\nstate\nShow current state (last known status for each app)\n\n./testflight-monitor.sh state"
      },
      {
        "title": "Maintenance Commands",
        "body": "update-lookup\nRefresh lookup table from awesome-testflight-link\n\n./testflight-monitor.sh update-lookup\n# Run weekly to keep app names current"
      },
      {
        "title": "Architecture",
        "body": "testflight-monitor/\n├── testflight-monitor.sh       # Main CLI (entry point)\n├── lib/                         # Modular components\n│   ├── lookup.sh               # Code → app name resolver\n│   ├── check-single.sh         # Single URL checker\n│   └── check-batch.sh          # Batch checker (silent mode)\n├── config/                      # Configuration & state\n│   ├── testflight-codes.json  # Community lookup table (~859 apps)\n│   ├── custom-codes.json      # User overrides (private betas)\n│   ├── batch-config.json      # Monitoring configuration\n│   └── batch-state.json       # State tracking\n├── tools/                       # Utilities\n│   └── update-lookup.sh       # Refresh lookup table\n└── SKILL.md                     # This file"
      },
      {
        "title": "batch-config.json",
        "body": "User-specific monitoring list. Not shipped with defaults; created during initial setup.\n\nExample structure:\n\n{\n  \"links\": [\n    \"https://testflight.apple.com/join/YOUR_CODE_1\",\n    \"https://testflight.apple.com/join/YOUR_CODE_2\"\n  ],\n  \"interval_minutes\": 60\n}\n\nManage via CLI:\n\n./testflight-monitor.sh add <url>\n./testflight-monitor.sh remove <url>\n./testflight-monitor.sh list\n\nOr edit directly (config/batch-config.json)"
      },
      {
        "title": "custom-codes.json",
        "body": "Add private betas not in the community list:\n\n{\n  \"BnjD4BEf\": \"OpenClaw iOS\",\n  \"YOUR_CODE\": \"Your App Name\"\n}"
      },
      {
        "title": "Silent by Default",
        "body": "The batch checker only outputs when status changes:\n\nfull → available: 🎉 Alert!\nfull → full: Silent\navailable → full: Silent (you already got in, or missed it)\n\nThis prevents notification spam while keeping you informed."
      },
      {
        "title": "Data Sources",
        "body": "Lookup table: awesome-testflight-link\n\nCommunity-maintained list of 800+ public TestFlight betas\nUpdated via update-lookup command\nRecommended: refresh weekly\n\nCustom codes: User-defined in config/custom-codes.json\n\nFor private betas not in the community list\nHigher priority than community list"
      },
      {
        "title": "Dependencies",
        "body": "curl - Fetch TestFlight pages\njq - JSON processing\nbash - Shell scripting (macOS/Linux)"
      },
      {
        "title": "Monitor OpenClaw iOS Beta",
        "body": "cd ~/.openclaw/workspace/skills/testflight-monitor\n./testflight-monitor.sh add https://testflight.apple.com/join/BnjD4BEf\n./testflight-monitor.sh batch"
      },
      {
        "title": "Check Multiple Apps",
        "body": "./testflight-monitor.sh add https://testflight.apple.com/join/Sq8bYSnJ  # Duolingo\n./testflight-monitor.sh add https://testflight.apple.com/join/b9jMyOWt  # Reddit\n./testflight-monitor.sh list"
      },
      {
        "title": "Manual Status Check",
        "body": "./testflight-monitor.sh check https://testflight.apple.com/join/BnjD4BEf"
      },
      {
        "title": "Contributing",
        "body": "GitHub: https://github.com/jon-xo/testflight-monitor-skill\nIssues: Report bugs or request features\nPull Requests: Improvements welcome"
      },
      {
        "title": "License",
        "body": "MIT License - see LICENSE file"
      },
      {
        "title": "Credits",
        "body": "Built for OpenClaw\nLookup data from awesome-testflight-link\nInspired by the need to catch beta slots without notification spam"
      },
      {
        "title": "Version History",
        "body": "1.0.0 (2026-02-11)\n\nInitial release\nUnified architecture (lookup + single + batch in one skill)\nSilent-by-default batch monitoring\nCLI-based configuration\nCommunity lookup table integration"
      }
    ],
    "body": "TestFlight Seat Monitor\n\nMonitor available TestFlight beta slots with smart app name lookups and silent batch checking. Get alerted only when seats open up.\n\nWhat It Does\nLookup TestFlight codes → app names using community data\nCheck single URLs for immediate status\nBatch monitoring with state tracking (silent by default)\nOnly alerts on changes (full → available)\nConfigurable intervals (30min - 3hr recommended)\nWhy This Exists\n\nTestFlight betas fill up fast. This skill:\n\nMonitors multiple betas in one job\nStays silent unless something changes\nUses human-readable app names (not cryptic codes)\nTracks state across checks to detect transitions\nInstallation\nclawhub install testflight-monitor\n\n\nOr clone from GitHub:\n\ncd ~/.openclaw/workspace/skills\ngit clone https://github.com/jon-xo/testflight-monitor-skill.git testflight-monitor\ncd testflight-monitor\n\nInitial Setup\n\n⚠️ Important: config/batch-config.json is user-specific and NOT shipped with defaults.\n\n1. Initialize your config (one time)\ncp config/batch-config.example.json config/batch-config.json\n\n2. Add your TestFlight URLs\n./testflight-monitor.sh add https://testflight.apple.com/join/YOUR_CODE_HERE\n./testflight-monitor.sh add https://testflight.apple.com/join/ANOTHER_CODE\n./testflight-monitor.sh list\n\n3. Verify it works\n./testflight-monitor.sh batch\n# Output: SILENT: No status changes detected. (or alert if available)\n\nQuick Start\n# Every hour check\nopenclaw cron add \\\n  --name \"TestFlight Monitor\" \\\n  --every 60m \\\n  --target isolated \\\n  --message \"Run TestFlight batch check: ~/.openclaw/workspace/skills/testflight-monitor/testflight-monitor.sh batch. If output contains 'SILENT', reply NO_REPLY. Otherwise announce the findings.\"\n\nQuick Start\n4. Set up automated monitoring (cron - optional)\n# Check every hour, silent unless slots open\nopenclaw cron add \\\n  --name \"TestFlight Monitor\" \\\n  --every 60m \\\n  --target isolated \\\n  --message \"Run: ~/.openclaw/workspace/skills/testflight-monitor/testflight-monitor.sh batch. If output contains 'SILENT', reply NO_REPLY. Otherwise announce the findings.\"\n\nCommands\nCore Commands\n\nlookup <code>\nLook up app name by TestFlight code\n\n./testflight-monitor.sh lookup BnjD4BEf\n# Output: OpenClaw iOS\n\n\ncheck <url>\nCheck single TestFlight URL for availability\n\n./testflight-monitor.sh check https://testflight.apple.com/join/BnjD4BEf\n# Output: Status: full | App: OpenClaw iOS\n\n\nbatch\nCheck all configured URLs (silent unless status changed)\n\n./testflight-monitor.sh batch\n# Output: SILENT: No status changes detected.\n# Or: 🎉 **OpenClaw iOS** beta now has open slots! https://...\n\nConfiguration Commands\n\nlist\nShow all monitored URLs with app names\n\n./testflight-monitor.sh list\n\n\nadd <url>\nAdd URL to batch monitoring\n\n./testflight-monitor.sh add https://testflight.apple.com/join/Sq8bYSnJ\n\n\nremove <url>\nRemove URL from batch monitoring\n\n./testflight-monitor.sh remove https://testflight.apple.com/join/Sq8bYSnJ\n\n\nconfig\nShow batch configuration (JSON)\n\n./testflight-monitor.sh config\n\n\nstate\nShow current state (last known status for each app)\n\n./testflight-monitor.sh state\n\nMaintenance Commands\n\nupdate-lookup\nRefresh lookup table from awesome-testflight-link\n\n./testflight-monitor.sh update-lookup\n# Run weekly to keep app names current\n\nArchitecture\ntestflight-monitor/\n├── testflight-monitor.sh       # Main CLI (entry point)\n├── lib/                         # Modular components\n│   ├── lookup.sh               # Code → app name resolver\n│   ├── check-single.sh         # Single URL checker\n│   └── check-batch.sh          # Batch checker (silent mode)\n├── config/                      # Configuration & state\n│   ├── testflight-codes.json  # Community lookup table (~859 apps)\n│   ├── custom-codes.json      # User overrides (private betas)\n│   ├── batch-config.json      # Monitoring configuration\n│   └── batch-state.json       # State tracking\n├── tools/                       # Utilities\n│   └── update-lookup.sh       # Refresh lookup table\n└── SKILL.md                     # This file\n\nConfiguration Files\nbatch-config.json\n\nUser-specific monitoring list. Not shipped with defaults; created during initial setup.\n\nExample structure:\n\n{\n  \"links\": [\n    \"https://testflight.apple.com/join/YOUR_CODE_1\",\n    \"https://testflight.apple.com/join/YOUR_CODE_2\"\n  ],\n  \"interval_minutes\": 60\n}\n\n\nManage via CLI:\n\n./testflight-monitor.sh add <url>\n./testflight-monitor.sh remove <url>\n./testflight-monitor.sh list\n\n\nOr edit directly (config/batch-config.json)\n\ncustom-codes.json\n\nAdd private betas not in the community list:\n\n{\n  \"BnjD4BEf\": \"OpenClaw iOS\",\n  \"YOUR_CODE\": \"Your App Name\"\n}\n\nSilent by Default\n\nThe batch checker only outputs when status changes:\n\nfull → available: 🎉 Alert!\nfull → full: Silent\navailable → full: Silent (you already got in, or missed it)\n\nThis prevents notification spam while keeping you informed.\n\nData Sources\n\nLookup table: awesome-testflight-link\n\nCommunity-maintained list of 800+ public TestFlight betas\nUpdated via update-lookup command\nRecommended: refresh weekly\n\nCustom codes: User-defined in config/custom-codes.json\n\nFor private betas not in the community list\nHigher priority than community list\nDependencies\ncurl - Fetch TestFlight pages\njq - JSON processing\nbash - Shell scripting (macOS/Linux)\nExamples\nMonitor OpenClaw iOS Beta\ncd ~/.openclaw/workspace/skills/testflight-monitor\n./testflight-monitor.sh add https://testflight.apple.com/join/BnjD4BEf\n./testflight-monitor.sh batch\n\nCheck Multiple Apps\n./testflight-monitor.sh add https://testflight.apple.com/join/Sq8bYSnJ  # Duolingo\n./testflight-monitor.sh add https://testflight.apple.com/join/b9jMyOWt  # Reddit\n./testflight-monitor.sh list\n\nManual Status Check\n./testflight-monitor.sh check https://testflight.apple.com/join/BnjD4BEf\n\nContributing\n\nGitHub: https://github.com/jon-xo/testflight-monitor-skill\nIssues: Report bugs or request features\nPull Requests: Improvements welcome\n\nLicense\n\nMIT License - see LICENSE file\n\nCredits\nBuilt for OpenClaw\nLookup data from awesome-testflight-link\nInspired by the need to catch beta slots without notification spam\nVersion History\n\n1.0.0 (2026-02-11)\n\nInitial release\nUnified architecture (lookup + single + batch in one skill)\nSilent-by-default batch monitoring\nCLI-based configuration\nCommunity lookup table integration"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/jon-xo/testflight-monitor",
    "publisherUrl": "https://clawhub.ai/jon-xo/testflight-monitor",
    "owner": "jon-xo",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/testflight-monitor",
    "downloadUrl": "https://openagent3.xyz/downloads/testflight-monitor",
    "agentUrl": "https://openagent3.xyz/skills/testflight-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/testflight-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/testflight-monitor/agent.md"
  }
}