
ios-permissions-handling
by co-labs-co
Central skills repository for ContextHarness - curated agent skills and workflows
SKILL.md
name: ios-permissions-handling version: 0.1.0 author: cmtzco description: iOS app permissions request and management guide. When to use: when adding camera access, microphone usage, speech recognition, photo library access, or any iOS system resource requiring user authorization. What problems it solves: prevents app crashes due to missing permissions, ensures App Store approval by including proper usage descriptions, handles permission request flows properly, and manages permission denial states gracefully.
iOS Permissions Handling
Overview
iOS apps must explicitly request user permission before accessing hardware features like camera, microphone, photo library, or speech recognition. This skill covers the complete permissions flow: Info.plist configuration, runtime authorization requests, and handling denied/don't-ask-again states.
Identified Patterns
The following patterns were identified in this codebase that this skill addresses:
Pattern 1: Info.plist Usage Descriptions
- Location:
DadBrain/DadBrain/Resources/Info.plist - Description: Required NSUsageDescription keys for each permission type
- Frequency: 4 permission descriptions (NSMicrophoneUsageDescription, NSSpeechRecognitionUsageDescription, NSCameraUsageDescription, NSPhotoLibraryUsageDescription)
Pattern 2: Runtime Authorization Request
- Location:
DadBrain/DadBrain/ViewModels/VoiceRecorder.swift - Description: Programmatic permission request with proper error handling
- Frequency: 1 complete implementation for Speech Recognition
TODO: Implementation
This skeleton skill needs Phase 2 refinement. Areas to develop:
Workflow Instructions
- Add NSUsageDescription to Info.plist
- Import required framework
- Request authorization at appropriate time
- Handle authorization status responses
- Implement graceful fallback for denied permissions
Best Practices
- When to request permissions (app launch vs first use)
- How to explain why permission is needed
- Handling "don't ask again" scenarios
- Linking to Settings app when permission denied
Common Pitfalls
- Missing usage descriptions in Info.plist (App Store rejection)
- Requesting permissions too early (user confusion)
- Not handling permission denial (app crashes)
- Forgetting to add framework capabilities in Xcode
Suggested Resources
Based on codebase analysis, consider adding:
Scripts (scripts/)
permission-request-generator.swift- Generates Info.plist entries and request codepermission-checker.sh- Validates all required permissions are properly configured
References (references/)
ios-permissions-guide.md- Complete list of iOS permission types and keyspermission-request-timing.md- Best practices for when to request permissionsapp-store-permissions-requirements.md- App Store review guidelines for permissions
Assets (assets/)
usage-description-templates/- Template descriptions for common permission typespermission-flow-ux/- UX patterns for permission request screens
Evidence from Codebase
| File | Pattern | Relevance |
|---|---|---|
DadBrain/DadBrain/Resources/Info.plist | NSUsageDescription entries | Required Info.plist configuration |
DadBrain/DadBrain/ViewModels/VoiceRecorder.swift | SFSpeechRecognizer.requestAuthorization() | Runtime authorization example |
DadBrain/DadBrain/ViewModels/PhotoScanner.swift | Camera/Photo library permissions | Multiple permission handling |
Refinement Priority
Score: 8.6/10 Priority: High
Refinement Tasks
- Research complete iOS permission types and their keys
- Create permission-request-generator script
- Document all permission-related Info.plist keys
- Add examples for each permission type (camera, mic, speech, photos, location)
- Create UX patterns for permission request screens
Skeleton generated by ContextHarness /baseline Run Phase 2 skill refinement to complete implementation
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon