Reference for iOS/macOS app capabilities, permissions, entitlements, and Info.plist keys. Use whenever adding a capability or permission to an iOS or macOS app — even if the user doesn't use the exact terms. Triggers for "add permission", "request camera access", "Info.plist key", "usage description", "privacy permission", "iOS capability", "entitlement", "purpose string", "NSLocationUsageDescription", "microphone permission", "camera permission", "location access", "HealthKit", "HomeKit", "NFC", "Siri", "Face ID", "Bluetooth permission", "push notifications entitlement", or any request to enable a system feature that requires user consent or a capability entitlement.
npx claudepluginhub oliverames/ames-claude --plugin ames-standalone-skillsThis skill uses the workspace's default tool permissions.
Use this skill to look up the correct Info.plist keys, entitlements, and purpose strings when adding capabilities to an iOS app. The full lookup table is in `references/capabilities-reference.md`.
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
Use this skill to look up the correct Info.plist keys, entitlements, and purpose strings when adding capabilities to an iOS app. The full lookup table is in references/capabilities-reference.md.
NSCameraUsageDescription)com.apple.developer.healthkit)Every Info.plist usage description key requires a purpose string that iOS displays to the user when requesting permission. Apple reviews these strings and will reject apps with bad ones.
Requirements:
Good examples:
Bad examples (will cause App Store rejection):
Writing tips:
WhenInUse and AlwaysAndWhenInUse), each key needs its own purpose string, and the "always" variant should explain why background access is neededIn Bitrig projects (and any XcodeGen-based project), capabilities are configured in Project.json rather than editing Info.plist directly. The format is XcodeGen's spec serialized as JSON.
Add usage description strings under the target's info.properties (or settings.base.INFOPLIST_KEY_* for modern Xcode build settings):
{
"targets": {
"MyApp": {
"info": {
"properties": {
"NSCameraUsageDescription": "This app uses the camera to scan documents.",
"NSLocationWhenInUseUsageDescription": "Your location is used to find nearby stores."
}
}
}
}
}
For capabilities that require entitlements (HealthKit, HomeKit, NFC, Siri, etc.), add them under the target's entitlements key:
{
"targets": {
"MyApp": {
"entitlements": {
"path": "MyApp.entitlements",
"properties": {
"com.apple.developer.healthkit": true,
"com.apple.developer.siri": true
}
}
}
}
}
If not using XcodeGen, add keys directly to the <dict> in Info.plist:
<key>NSCameraUsageDescription</key>
<string>This app uses the camera to scan documents.</string>
And for entitlements, add them to the .entitlements file:
<key>com.apple.developer.healthkit</key>
<true/>
Not all capabilities need entitlements. Most only need an Info.plist usage description key. The ones that also require entitlements are:
com.apple.developer.healthkitcom.apple.developer.homekitcom.apple.developer.nfc.readersession.formatscom.apple.developer.siriThese must also be enabled in the Signing & Capabilities tab in Xcode (or the Apple Developer portal) in addition to the code-level configuration.
See references/capabilities-reference.md for the complete lookup table of all 32 iOS capabilities with their keys, Info.plist entries, entitlements, SF Symbol icons, and default purpose strings.