{
  "schemaVersion": "1.0",
  "item": {
    "slug": "testflight",
    "name": "TestFlight",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/ivangdavila/testflight",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/testflight",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/testflight",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=testflight",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "ci-cd.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": "testflight",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T12:59:20.155Z",
      "expiresAt": "2026-05-08T12:59:20.155Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=testflight",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=testflight",
        "contentDisposition": "attachment; filename=\"testflight-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "testflight"
      },
      "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/testflight"
    },
    "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",
    "agentPageUrl": "https://openagent3.xyz/skills/testflight/agent",
    "manifestUrl": "https://openagent3.xyz/skills/testflight/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/testflight/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": "When to Use",
        "body": "User needs to distribute beta builds via TestFlight. Agent handles App Store Connect setup, tester groups, build uploads, and CI/CD integration."
      },
      {
        "title": "Quick Reference",
        "body": "TopicFileCI/CD automationci-cd.md"
      },
      {
        "title": "1. App Store Connect Setup First",
        "body": "Before uploading:\n\nBundle ID registered in Developer Portal\nApp created in App Store Connect\nApp-specific password or API key configured"
      },
      {
        "title": "2. Build Requirements",
        "body": "Every TestFlight build needs:\n\nUnique build number (CFBundleVersion) - increment ALWAYS\nValid provisioning profile (App Store distribution)\nNo missing compliance declarations"
      },
      {
        "title": "3. Tester Group Strategy",
        "body": "GroupPurposeLimitInternalTeam members with App Store Connect access100ExternalBeta testers, requires review10,000\n\nInternal builds available immediately. External requires Apple review (24-48h first time)."
      },
      {
        "title": "4. Upload Methods",
        "body": "MethodBest ForXcodeManual, one-off uploadsxcrun altoolScripts, CI without fastlaneFastlaneFull automation, multiple appsXcode CloudApple-native CI/CDTransporterGUI for non-developers"
      },
      {
        "title": "5. Build Expiration",
        "body": "TestFlight builds expire after 90 days. Plan releases accordingly."
      },
      {
        "title": "TestFlight Traps",
        "body": "Build number not incremented - rejected immediately, must bump and rebuild\nMissing export compliance - stuck in \"Processing\" until answered in App Store Connect\nExternal testers on first build - requires full beta review, use internal first\nExpired provisioning profile - upload fails silently, check before archiving\nApp-specific password in CI - use App Store Connect API key instead (more secure, no 2FA issues)"
      },
      {
        "title": "App Store Connect API Key (Recommended)",
        "body": "App Store Connect > Users > Keys > App Store Connect API\nGenerate key with \"App Manager\" role\nDownload .p8 file (only shown ONCE)\nNote: Issuer ID, Key ID"
      },
      {
        "title": "Fastlane Upload",
        "body": "# In Fastfile\nlane :beta do\n  build_app(scheme: \"MyApp\")\n  upload_to_testflight(\n    api_key_path: \"fastlane/api_key.json\",\n    skip_waiting_for_build_processing: true\n  )\nend"
      },
      {
        "title": "xcrun altool (No Fastlane)",
        "body": "xcrun altool --upload-app \\\n  --type ios \\\n  --file \"MyApp.ipa\" \\\n  --apiKey \"KEY_ID\" \\\n  --apiIssuer \"ISSUER_ID\""
      },
      {
        "title": "Security & Privacy",
        "body": "Data that leaves your machine:\n\nIPA/app binary uploaded to Apple servers\nBuild metadata (version, bundle ID, team)\n\nData that stays local:\n\nAPI keys and certificates (keep in Keychain)\nSource code (not uploaded)\n\nThis skill does NOT:\n\nStore Apple credentials in plain text\nShare builds outside Apple's infrastructure"
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\nios — iOS development patterns\nxcode — Xcode workflows\nflutter — cross-platform builds"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star testflight\nStay updated: clawhub sync"
      }
    ],
    "body": "When to Use\n\nUser needs to distribute beta builds via TestFlight. Agent handles App Store Connect setup, tester groups, build uploads, and CI/CD integration.\n\nQuick Reference\nTopic\tFile\nCI/CD automation\tci-cd.md\nCore Rules\n1. App Store Connect Setup First\n\nBefore uploading:\n\nBundle ID registered in Developer Portal\nApp created in App Store Connect\nApp-specific password or API key configured\n2. Build Requirements\n\nEvery TestFlight build needs:\n\nUnique build number (CFBundleVersion) - increment ALWAYS\nValid provisioning profile (App Store distribution)\nNo missing compliance declarations\n3. Tester Group Strategy\nGroup\tPurpose\tLimit\nInternal\tTeam members with App Store Connect access\t100\nExternal\tBeta testers, requires review\t10,000\n\nInternal builds available immediately. External requires Apple review (24-48h first time).\n\n4. Upload Methods\nMethod\tBest For\nXcode\tManual, one-off uploads\nxcrun altool\tScripts, CI without fastlane\nFastlane\tFull automation, multiple apps\nXcode Cloud\tApple-native CI/CD\nTransporter\tGUI for non-developers\n5. Build Expiration\n\nTestFlight builds expire after 90 days. Plan releases accordingly.\n\nTestFlight Traps\nBuild number not incremented - rejected immediately, must bump and rebuild\nMissing export compliance - stuck in \"Processing\" until answered in App Store Connect\nExternal testers on first build - requires full beta review, use internal first\nExpired provisioning profile - upload fails silently, check before archiving\nApp-specific password in CI - use App Store Connect API key instead (more secure, no 2FA issues)\nCI/CD Quick Setup\nApp Store Connect API Key (Recommended)\nApp Store Connect > Users > Keys > App Store Connect API\nGenerate key with \"App Manager\" role\nDownload .p8 file (only shown ONCE)\nNote: Issuer ID, Key ID\nFastlane Upload\n# In Fastfile\nlane :beta do\n  build_app(scheme: \"MyApp\")\n  upload_to_testflight(\n    api_key_path: \"fastlane/api_key.json\",\n    skip_waiting_for_build_processing: true\n  )\nend\n\nxcrun altool (No Fastlane)\nxcrun altool --upload-app \\\n  --type ios \\\n  --file \"MyApp.ipa\" \\\n  --apiKey \"KEY_ID\" \\\n  --apiIssuer \"ISSUER_ID\"\n\nSecurity & Privacy\n\nData that leaves your machine:\n\nIPA/app binary uploaded to Apple servers\nBuild metadata (version, bundle ID, team)\n\nData that stays local:\n\nAPI keys and certificates (keep in Keychain)\nSource code (not uploaded)\n\nThis skill does NOT:\n\nStore Apple credentials in plain text\nShare builds outside Apple's infrastructure\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\nios — iOS development patterns\nxcode — Xcode workflows\nflutter — cross-platform builds\nFeedback\nIf useful: clawhub star testflight\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/testflight",
    "publisherUrl": "https://clawhub.ai/ivangdavila/testflight",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/testflight",
    "downloadUrl": "https://openagent3.xyz/downloads/testflight",
    "agentUrl": "https://openagent3.xyz/skills/testflight/agent",
    "manifestUrl": "https://openagent3.xyz/skills/testflight/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/testflight/agent.md"
  }
}