← ClaudeAtlas

ios-secrets-setuplisted

Configure iOS service keys, Secrets.xcconfig, CI signing credentials, or release secret injection and provenance.
patrickserrano/lacquer · ★ 3 · AI & Automation · score 69
Install: claude install-skill patrickserrano/lacquer
# iOS App-Runtime Secrets Setup App-runtime keys (RevenueCat, Aptabase, …) live in a gitignored `Secrets.xcconfig`, never in source or the committed `project.yml`. The lacquer syncs a `Secrets.xcconfig.example` template into the component dir. 1. **Copy & ignore:** `cp Secrets.xcconfig.example Secrets.xcconfig`, fill in real values, and add `Secrets.xcconfig` to `.gitignore`. The example is committed; the real file never is. (The committed `project.yml` must also stay key-free.) 2. **Wire into the build (`project.yml`):** point the target's configs at the xcconfig and surface each key into `Info.plist`: ```yaml targets: <App>: configFiles: Debug: Secrets.xcconfig Release: Secrets.xcconfig info: path: App/Info.plist properties: REVENUECAT_API_KEY: $(REVENUECAT_API_KEY) APTABASE_APP_KEY: $(APTABASE_APP_KEY) ``` 3. **Read at runtime** from the Info dictionary — fail loud if a required key is blank rather than shipping a broken SDK init: ```swift enum Secrets { static func required(_ key: String) -> String { guard let v = Bundle.main.object(forInfoDictionaryKey: key) as? String, !v.isEmpty else { fatalError("Missing \(key) — copy Secrets.xcconfig.example to Secrets.xcconfig and fill it in") } return v } static var revenueCatAPIKey: String { required("REVENUECAT_API_KEY") } static v