{
  "schemaVersion": "1.0",
  "item": {
    "slug": "app-store-connect",
    "name": "App Store Connect",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/app-store-connect",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/app-store-connect",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/app-store-connect",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=app-store-connect",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "api-auth.md",
      "workflows.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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/app-store-connect"
    },
    "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/app-store-connect",
    "agentPageUrl": "https://openagent3.xyz/skills/app-store-connect/agent",
    "manifestUrl": "https://openagent3.xyz/skills/app-store-connect/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/app-store-connect/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 manage iOS/macOS apps on App Store Connect. Agent handles API authentication, build management, TestFlight distribution, App Review submissions, and analytics retrieval."
      },
      {
        "title": "Quick Reference",
        "body": "TopicFileAPI Authenticationapi-auth.mdCommon Workflowsworkflows.md"
      },
      {
        "title": "1. JWT Authentication Required",
        "body": "App Store Connect API uses JWT tokens signed with your private key.\n\n# Required environment variables:\n# ASC_ISSUER_ID     - From App Store Connect > Users > Keys\n# ASC_KEY_ID        - From the API key you created\n# ASC_PRIVATE_KEY_PATH - Path to your .p8 private key file\n\nGenerate JWT with ES256 algorithm, 20-minute expiration max. See api-auth.md for code examples."
      },
      {
        "title": "2. API Versioning",
        "body": "Always specify API version in requests.\n\ncurl -H \"Authorization: Bearer $JWT\" \\\n     \"https://api.appstoreconnect.apple.com/v1/apps\"\n\nCurrent stable version: v1. Check Apple docs for v2 endpoints."
      },
      {
        "title": "3. Build Processing States",
        "body": "Builds go through states after upload:\n\nStateMeaningActionPROCESSINGUpload received, processingWaitFAILEDProcessing failedCheck logsINVALIDValidation failedFix issues, re-uploadVALIDReady for testing/submissionProceed\n\nNever submit a build that is not VALID."
      },
      {
        "title": "4. TestFlight Distribution",
        "body": "Internal Testing: Up to 100 members, builds available immediately after processing\nExternal Testing: Up to 10,000 testers, requires Beta App Review for first build of version\nExternal groups need at least: app description, feedback email, privacy policy URL"
      },
      {
        "title": "5. App Review Submission",
        "body": "Before submitting for review:\n\nAll required metadata complete (descriptions, keywords, screenshots)\nApp Preview videos under 30 seconds\nPrivacy policy URL valid and accessible\nContact information current\n\nSubmission creates an appStoreVersion in PENDING_DEVELOPER_RELEASE or WAITING_FOR_REVIEW."
      },
      {
        "title": "6. Rate Limits",
        "body": "API has rate limits per hour. Handle 429 responses with exponential backoff.\n\n# Respect Retry-After header\nHTTP/1.1 429 Too Many Requests\nRetry-After: 60"
      },
      {
        "title": "7. Bundle ID Management",
        "body": "Bundle IDs are permanent once created. Cannot be deleted or renamed.\n\nUse reverse-domain notation: com.company.appname\nPlan naming carefully before registration\nEach bundle ID can only belong to one team"
      },
      {
        "title": "Common Traps",
        "body": "Expired JWT - Tokens expire in 20 min max. Regenerate before long operations.\nWrong key permissions - API keys need specific roles (Admin, App Manager, etc.)\nMissing export compliance - Apps with encryption need ECCN or exemption documentation\nBuild version collision - Each build needs unique version+build number combo\nScreenshot dimensions - Must match exactly for each device type (no scaling)\nPhased release confusion - Phased release is for App Store only, not TestFlight"
      },
      {
        "title": "External Endpoints",
        "body": "EndpointData SentPurposeapi.appstoreconnect.apple.comApp metadata, build infoApp Store Connect API\n\nNo other data is sent externally."
      },
      {
        "title": "Security & Privacy",
        "body": "Data that leaves your machine:\n\nApp metadata sent to Apple for App Store listing\nBuild information for processing\nAnalytics queries\n\nData that stays local:\n\nAPI private key (.p8) - never transmit\nJWT tokens - generated locally\nDownloaded reports\n\nThis skill does NOT:\n\nStore your .p8 key in plain text\nShare credentials with third parties\nAccess apps outside your team"
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\nios — iOS development patterns\nswift — Swift language reference\nxcode — Xcode IDE workflows"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star app-store-connect\nStay updated: clawhub sync"
      }
    ],
    "body": "When to Use\n\nUser needs to manage iOS/macOS apps on App Store Connect. Agent handles API authentication, build management, TestFlight distribution, App Review submissions, and analytics retrieval.\n\nQuick Reference\nTopic\tFile\nAPI Authentication\tapi-auth.md\nCommon Workflows\tworkflows.md\nCore Rules\n1. JWT Authentication Required\n\nApp Store Connect API uses JWT tokens signed with your private key.\n\n# Required environment variables:\n# ASC_ISSUER_ID     - From App Store Connect > Users > Keys\n# ASC_KEY_ID        - From the API key you created\n# ASC_PRIVATE_KEY_PATH - Path to your .p8 private key file\n\n\nGenerate JWT with ES256 algorithm, 20-minute expiration max. See api-auth.md for code examples.\n\n2. API Versioning\n\nAlways specify API version in requests.\n\ncurl -H \"Authorization: Bearer $JWT\" \\\n     \"https://api.appstoreconnect.apple.com/v1/apps\"\n\n\nCurrent stable version: v1. Check Apple docs for v2 endpoints.\n\n3. Build Processing States\n\nBuilds go through states after upload:\n\nState\tMeaning\tAction\nPROCESSING\tUpload received, processing\tWait\nFAILED\tProcessing failed\tCheck logs\nINVALID\tValidation failed\tFix issues, re-upload\nVALID\tReady for testing/submission\tProceed\n\nNever submit a build that is not VALID.\n\n4. TestFlight Distribution\nInternal Testing: Up to 100 members, builds available immediately after processing\nExternal Testing: Up to 10,000 testers, requires Beta App Review for first build of version\nExternal groups need at least: app description, feedback email, privacy policy URL\n5. App Review Submission\n\nBefore submitting for review:\n\nAll required metadata complete (descriptions, keywords, screenshots)\nApp Preview videos under 30 seconds\nPrivacy policy URL valid and accessible\nContact information current\n\nSubmission creates an appStoreVersion in PENDING_DEVELOPER_RELEASE or WAITING_FOR_REVIEW.\n\n6. Rate Limits\n\nAPI has rate limits per hour. Handle 429 responses with exponential backoff.\n\n# Respect Retry-After header\nHTTP/1.1 429 Too Many Requests\nRetry-After: 60\n\n7. Bundle ID Management\n\nBundle IDs are permanent once created. Cannot be deleted or renamed.\n\nUse reverse-domain notation: com.company.appname\nPlan naming carefully before registration\nEach bundle ID can only belong to one team\nCommon Traps\nExpired JWT - Tokens expire in 20 min max. Regenerate before long operations.\nWrong key permissions - API keys need specific roles (Admin, App Manager, etc.)\nMissing export compliance - Apps with encryption need ECCN or exemption documentation\nBuild version collision - Each build needs unique version+build number combo\nScreenshot dimensions - Must match exactly for each device type (no scaling)\nPhased release confusion - Phased release is for App Store only, not TestFlight\nExternal Endpoints\nEndpoint\tData Sent\tPurpose\napi.appstoreconnect.apple.com\tApp metadata, build info\tApp Store Connect API\n\nNo other data is sent externally.\n\nSecurity & Privacy\n\nData that leaves your machine:\n\nApp metadata sent to Apple for App Store listing\nBuild information for processing\nAnalytics queries\n\nData that stays local:\n\nAPI private key (.p8) - never transmit\nJWT tokens - generated locally\nDownloaded reports\n\nThis skill does NOT:\n\nStore your .p8 key in plain text\nShare credentials with third parties\nAccess apps outside your team\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\nios — iOS development patterns\nswift — Swift language reference\nxcode — Xcode IDE workflows\nFeedback\nIf useful: clawhub star app-store-connect\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/app-store-connect",
    "publisherUrl": "https://clawhub.ai/ivangdavila/app-store-connect",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/app-store-connect",
    "downloadUrl": "https://openagent3.xyz/downloads/app-store-connect",
    "agentUrl": "https://openagent3.xyz/skills/app-store-connect/agent",
    "manifestUrl": "https://openagent3.xyz/skills/app-store-connect/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/app-store-connect/agent.md"
  }
}