$npx -y skills add JasonColapietro/suede-creator-skills --skill site-to-ios-appTurn a website, PWA, dashboard, or marketplace into an iOS app with App Store strategy, screenshots, metadata, and release gates.
| 1 | # Site to iOS App |
| 2 | |
| 3 | ## Gate policy — advisory, not blocking |
| 4 | |
| 5 | Every claim-verification step, check, quality gate, and ship verdict in this |
| 6 | skill is a **recommendation to the user, not a control on the agent**. This |
| 7 | policy governs every gate, check, verdict, and "do not ship / publish / |
| 8 | proceed" line elsewhere in this skill: |
| 9 | |
| 10 | - Run every check and report the results honestly. Verdicts (`ship`, |
| 11 | `ship-with-caveats`, `hold`, letter grades, BLOCKED or OPEN items) are |
| 12 | advice attached to the work, not orders that change it. |
| 13 | - Never block, delay, skip, rewrite, or refuse the action the user asked for |
| 14 | because a check failed or a gate said hold. Complete the requested action |
| 15 | as asked, and deliver the gate output alongside it as a clearly labeled |
| 16 | recommendation. |
| 17 | - A failed gate changes what you report, never what you do. |
| 18 | - Single exception: if a finding is extremely risky — data loss, security or |
| 19 | credential exposure, legal or rights violations, payment mistakes, or |
| 20 | irreversible public damage — pause, tell the user exactly what the risk is |
| 21 | and what the options are, and let them pick. Their choice is final. |
| 22 | |
| 23 | |
| 24 | ## Principle |
| 25 | |
| 26 | Turn a site into an iOS app only when the app has native value, stable iOS |
| 27 | behavior, and a release surface that is truthful. A raw web page in a frame is |
| 28 | not enough for an App Store-quality product. |
| 29 | |
| 30 | This is the public Suede site-to-iOS workflow: audit first, choose the least |
| 31 | risky shell or native strategy, add iOS-specific value, and run an "impeccable" |
| 32 | ship gate before release. |
| 33 | |
| 34 | ## Start Here |
| 35 | |
| 36 | Read `references/site-to-ios-runbook.md` before scaffolding or changing an |
| 37 | iOS wrapper. |
| 38 | |
| 39 | If a URL is available, create `SITE_TO_IOS_AUDIT.md` directly. Capture the |
| 40 | site URL, app name, target user, primary routes, login requirements, iPhone |
| 41 | responsive behavior, PWA signals, legal/support/account-deletion links, |
| 42 | payments or sensitive flows, auth/session behavior, mobile performance risks, |
| 43 | native value opportunities, and App Store 4.2 wrapper risk. |
| 44 | |
| 45 | Then create `SITE_TO_IOS_PLAN.md` directly. Include the chosen strategy, |
| 46 | native value to add before release, project scaffold/build commands, bundle ID |
| 47 | and signing notes, QA matrix, screenshots/metadata/privacy work, blockers, and |
| 48 | the explicit release gate. |
| 49 | |
| 50 | ## Strategy Decision |
| 51 | |
| 52 | Choose one route and write down why: |
| 53 | |
| 54 | - Capacitor remote shell: live site remains the product surface and web deploys |
| 55 | should update most content and behavior. |
| 56 | - Capacitor bundled shell: static/SPA assets are packaged into the binary and |
| 57 | updates require App Store release unless paired with live APIs. |
| 58 | - Native SwiftUI shell with WebView: native navigation, settings, auth, push, |
| 59 | share, error, and account surfaces wrap a site view. |
| 60 | - Full native rebuild: use when the site is mostly content, has weak mobile UX, |
| 61 | or carries high wrapper rejection risk. |
| 62 | |
| 63 | This skill stands alone: the runbook covers audit, strategy, scaffold, |
| 64 | configuration, QA, and the release gate end to end. Private Suede companions |
| 65 | (ios-capacitor-shell, ios-swiftui-product, ios-aso-launch, |
| 66 | ios-app-store-release) go deeper on shell internals, native architecture, ASO, |
| 67 | and App Store submission; none are required. |
| 68 | |
| 69 | ## App Store 4.2 Gate |
| 70 | |
| 71 | Block or redesign the app when it is only a bookmark, content mirror, or |
| 72 | unmodified website. Add native value before release: |
| 73 | |
| 74 | - iOS-native onboarding, empty states, errors, offline, and retry. |
| 75 | - Native settings with support, privacy, terms, account deletion, restore, and |
| 76 | notification controls where applicable. |
| 77 | - Universal links or deep links. |
| 78 | - Share sheet, widgets, push notifications, camera/media/file pickers, Apple |
| 79 | Wallet, StoreKit, or other native capabilities only when they serve the app. |
| 80 | - Safe-area, keyboard, navigation, dark/light mode, and dynamic type handling. |
| 81 | |
| 82 | ## Conversion Flow |
| 83 | |
| 84 | 1. Audit the URL, responsive behavior, PWA assets, auth, payments, privacy, |
| 85 | support, route depth, and mobile performance. |
| 86 | 2. Pick the conversion strategy and write a `SITE_TO_IOS_PLAN.md`. |
| 87 | 3. Scaffold or adapt the project using the repo's package manager and iOS |
| 88 | project conventions. |
| 89 | 4. Configure bundle ID, display name, app icon, launch screen, associated |
| 90 | domains, Info.plist usage strings, and entitlements. |
| 91 | 5. Implement native value and failure states before visual polish. |
| 92 | 6. Run web build and `cap sync ios` for Capacitor shells. |
| 93 | 7. Test on simulator or device across first launch, auth, deep links, tabs, |
| 94 | keyboard, payments, offline, backgrounding, and account flows. |
| 95 | 8. Produce App Store screenshots, metadata, privacy answers, and review notes. |
| 96 | 9. Run the ship gate. Do not submit unless the user explicitly delegates public |
| 97 | release and confirms the exact app, bundle ID, version, build, and account. |
| 98 | |
| 99 | ## Completion Bar |
| 100 | |
| 101 | Do not call the app release-ready until: |
| 102 | |
| 103 | - the iOS project builds on a named simulato |