skills/legal/privacy-publish/SKILL.md
Turn drafted legal docs (privacy policy, terms) into hosted pages and set the App Store Connect Privacy Policy / Support / Marketing URLs via the ASC REST API. Use at Phase 6 / submission, after legal drafts exist. The App Privacy "nutrition label" stays manual (Apple exposes no API) — this prints the exact answers to click.
npx skillsauth add rshankras/claude-code-apple-skills privacy-publishInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Close the "hosted legal pages + ASC URLs" gap: render .planning/legal/{privacy,terms}.md → host them → PATCH the Privacy/Support URLs onto the App Store version. The one thing with no API — the App Privacy nutrition label — is handed off as a precise checklist.
Depends on the user's web infra, so ask once, remember. Hosting choice is theirs; the ASC URL-setting is the automatable part.
.planning/legal/privacy.md, .planning/legal/terms.md (from legal/privacy-policy)._shared/asc-api/ set up (README).ASC="python3 <path to asc.py>" — resolve asc.py relative to this SKILL.md file's location (../../_shared/asc-api/asc.py), never the project cwd. Known install locations:
~/.claude/swiftship-skills/_shared/asc-api/asc.py.claude/skills/_shared/asc-api/asc.py (project) or ~/.claude/skills/_shared/asc-api/asc.py (global)_shared/ tree ships with the plugin.appInfoLocalization and appStoreVersionLocalization (get their ids first)..md if the host renders it).AskUserQuestion once, then remember in .planning/):
POST /wp-json/wp/v2/pages with an application password.claude-in-chrome (detect → preview → confirm → act → fall back, per TOOL-HANDOFF.md).--apply):
appInfoLocalizations (privacyPolicyUrl):
$ASC PATCH /v1/appInfoLocalizations/<id> '{"data":{"type":"appInfoLocalizations","id":"<id>","attributes":{"privacyPolicyUrl":"https://…/privacy"}}}' --apply
appStoreVersionLocalizations (supportUrl, marketingUrl) — PATCH the current version's en-US localization id.Sources/PrivacyInfo.xcprivacy (e.g. Data Not Collected, no tracking) for the user to click in ASC ▸ App Privacy. Do not claim this step is automated.--apply (captured 2026-07).development
US web checkout via the StoreKit External Purchase Link entitlement — currently 0% Apple commission (litigation ongoing), how to ship it safely, and how to architect for a commission flip so a future ruling is a config change, not a rewrite. Use when adding external purchase links, weighing web checkout vs IAP, or planning US-storefront pricing strategy.
tools
Revenue beyond the single-app price tag — own-app bundles, Family Sharing as a conversion lever, cross-developer bundles & suites, and institutional licensing via Group Purchases / Apple School & Business Manager. Use when a developer has multiple apps, a subscription worth sharing, complementary indie partners, or school/clinic/business buyers.
testing
Run a structured accessibility audit on an iOS/macOS app — automated XCUITest audits, Accessibility Inspector, manual VoiceOver/Dynamic Type passes, and App Store Accessibility Nutrition Label evaluation. Use before release, when preparing Nutrition Label declarations, or for EU Accessibility Act compliance.
tools
Stage-by-stage audit of an app's App Store growth machinery against a 54-item P0–P9 playbook — every item scored from an App Store Connect MCP call, a codebase check, or an explicit question to the user, then routed to the skill or command that fixes it. Read-only on App Store Connect. Use for a growth audit or scorecard, a pre-launch growth plan, a quarterly re-audit, or "which growth levers am I missing."