🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

TestFlight Seat Monitor

by @jon-xo

Monitor available TestFlight beta slots with smart app lookups and silent batch checking. Get alerted when slots open up.

Versionv1.0.1
Downloads1,370
TERMINAL
clawhub install testflight-monitor

πŸ“– About This Skill


name: testflight-seat-monitor description: Monitor available TestFlight beta slots with smart app lookups and silent batch checking. Get alerted when slots open up. metadata: {"clawdbot":{"emoji":"🎯","os":["darwin","linux"]}}

TestFlight Seat Monitor

Monitor available TestFlight beta slots with smart app name lookups and silent batch checking. Get alerted only when seats open up.

What It Does

  • Lookup TestFlight codes β†’ app names using community data
  • Check single URLs for immediate status
  • Batch monitoring with state tracking (silent by default)
  • Only alerts on changes (full β†’ available)
  • Configurable intervals (30min - 3hr recommended)
  • Why This Exists

    TestFlight betas fill up fast. This skill:

  • Monitors multiple betas in one job
  • Stays silent unless something changes
  • Uses human-readable app names (not cryptic codes)
  • Tracks state across checks to detect transitions
  • Installation

    clawhub install testflight-monitor
    

    Or clone from GitHub:

    cd ~/.openclaw/workspace/skills
    git clone https://github.com/jon-xo/testflight-monitor-skill.git testflight-monitor
    cd testflight-monitor
    

    Initial Setup

    ⚠️ Important: config/batch-config.json is user-specific and NOT shipped with defaults.

    1. Initialize your config (one time)

    cp config/batch-config.example.json config/batch-config.json
    

    2. Add your TestFlight URLs

    ./testflight-monitor.sh add https://testflight.apple.com/join/YOUR_CODE_HERE
    ./testflight-monitor.sh add https://testflight.apple.com/join/ANOTHER_CODE
    ./testflight-monitor.sh list
    

    3. Verify it works

    ./testflight-monitor.sh batch
    

    Output: SILENT: No status changes detected. (or alert if available)

    Quick Start

    # Every hour check
    openclaw cron add \
      --name "TestFlight Monitor" \
      --every 60m \
      --target isolated \
      --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."
    

    Quick Start

    4. Set up automated monitoring (cron - optional)

    # Check every hour, silent unless slots open
    openclaw cron add \
      --name "TestFlight Monitor" \
      --every 60m \
      --target isolated \
      --message "Run: ~/.openclaw/workspace/skills/testflight-monitor/testflight-monitor.sh batch. If output contains 'SILENT', reply NO_REPLY. Otherwise announce the findings."
    

    Commands

    Core Commands

    lookup Look up app name by TestFlight code

    ./testflight-monitor.sh lookup BnjD4BEf
    

    Output: OpenClaw iOS

    check Check single TestFlight URL for availability

    ./testflight-monitor.sh check https://testflight.apple.com/join/BnjD4BEf
    

    Output: Status: full | App: OpenClaw iOS

    batch Check all configured URLs (silent unless status changed)

    ./testflight-monitor.sh batch
    

    Output: SILENT: No status changes detected.

    Or: πŸŽ‰ OpenClaw iOS beta now has open slots! https://...

    Configuration Commands

    list Show all monitored URLs with app names

    ./testflight-monitor.sh list
    

    add Add URL to batch monitoring

    ./testflight-monitor.sh add https://testflight.apple.com/join/Sq8bYSnJ
    

    remove Remove URL from batch monitoring

    ./testflight-monitor.sh remove https://testflight.apple.com/join/Sq8bYSnJ
    

    config Show batch configuration (JSON)

    ./testflight-monitor.sh config
    

    state Show current state (last known status for each app)

    ./testflight-monitor.sh state
    

    Maintenance Commands

    update-lookup Refresh lookup table from awesome-testflight-link

    ./testflight-monitor.sh update-lookup
    

    Run weekly to keep app names current

    Architecture

    testflight-monitor/
    β”œβ”€β”€ testflight-monitor.sh       # Main CLI (entry point)
    β”œβ”€β”€ lib/                         # Modular components
    β”‚   β”œβ”€β”€ lookup.sh               # Code β†’ app name resolver
    β”‚   β”œβ”€β”€ check-single.sh         # Single URL checker
    β”‚   └── check-batch.sh          # Batch checker (silent mode)
    β”œβ”€β”€ config/                      # Configuration & state
    β”‚   β”œβ”€β”€ testflight-codes.json  # Community lookup table (~859 apps)
    β”‚   β”œβ”€β”€ custom-codes.json      # User overrides (private betas)
    β”‚   β”œβ”€β”€ batch-config.json      # Monitoring configuration
    β”‚   └── batch-state.json       # State tracking
    β”œβ”€β”€ tools/                       # Utilities
    β”‚   └── update-lookup.sh       # Refresh lookup table
    └── SKILL.md                     # This file
    

    Configuration Files

    batch-config.json

    User-specific monitoring list. Not shipped with defaults; created during initial setup.

    Example structure:

    {
      "links": [
        "https://testflight.apple.com/join/YOUR_CODE_1",
        "https://testflight.apple.com/join/YOUR_CODE_2"
      ],
      "interval_minutes": 60
    }
    

    Manage via CLI:

    ./testflight-monitor.sh add 
    ./testflight-monitor.sh remove 
    ./testflight-monitor.sh list
    

    Or edit directly (config/batch-config.json)

    custom-codes.json

    Add private betas not in the community list:

    {
      "BnjD4BEf": "OpenClaw iOS",
      "YOUR_CODE": "Your App Name"
    }
    

    Silent by Default

    The batch checker only outputs when status changes:

  • full β†’ available: πŸŽ‰ Alert!
  • full β†’ full: Silent
  • available β†’ full: Silent (you already got in, or missed it)
  • This prevents notification spam while keeping you informed.

    Data Sources

    Lookup table: awesome-testflight-link

  • Community-maintained list of 800+ public TestFlight betas
  • Updated via update-lookup command
  • Recommended: refresh weekly
  • Custom codes: User-defined in config/custom-codes.json

  • For private betas not in the community list
  • Higher priority than community list
  • Dependencies

  • curl - Fetch TestFlight pages
  • jq - JSON processing
  • bash - Shell scripting (macOS/Linux)
  • Examples

    Monitor OpenClaw iOS Beta

    cd ~/.openclaw/workspace/skills/testflight-monitor
    ./testflight-monitor.sh add https://testflight.apple.com/join/BnjD4BEf
    ./testflight-monitor.sh batch
    

    Check Multiple Apps

    ./testflight-monitor.sh add https://testflight.apple.com/join/Sq8bYSnJ  # Duolingo
    ./testflight-monitor.sh add https://testflight.apple.com/join/b9jMyOWt  # Reddit
    ./testflight-monitor.sh list
    

    Manual Status Check

    ./testflight-monitor.sh check https://testflight.apple.com/join/BnjD4BEf
    

    Contributing

    GitHub: https://github.com/jon-xo/testflight-monitor-skill Issues: Report bugs or request features Pull Requests: Improvements welcome

    License

    MIT License - see LICENSE file

    Credits

  • Built for OpenClaw
  • Lookup data from awesome-testflight-link
  • Inspired by the need to catch beta slots without notification spam
  • Version History

    1.0.0 (2026-02-11)

  • Initial release
  • Unified architecture (lookup + single + batch in one skill)
  • Silent-by-default batch monitoring
  • CLI-based configuration
  • Community lookup table integration
  • πŸ’‘ Examples

    Monitor OpenClaw iOS Beta

    cd ~/.openclaw/workspace/skills/testflight-monitor
    ./testflight-monitor.sh add https://testflight.apple.com/join/BnjD4BEf
    ./testflight-monitor.sh batch
    

    Check Multiple Apps

    ./testflight-monitor.sh add https://testflight.apple.com/join/Sq8bYSnJ  # Duolingo
    ./testflight-monitor.sh add https://testflight.apple.com/join/b9jMyOWt  # Reddit
    ./testflight-monitor.sh list
    

    Manual Status Check

    ./testflight-monitor.sh check https://testflight.apple.com/join/BnjD4BEf