permissionkit — Claude Code and Cursor skill: parental consent in iOS
A skill that walks the agent through PermissionKit: a child asks a parent for an exception to communication limits over iMessage.
npx skills add dpearson2699/swift-ios-skills --skill permissionkit -a claude-codeWhat permissionkit does
Reach for this skill when a Swift app restricts a child's contact with other people and needs a way for the child to ask a parent for an exception. The agent gets the whole flow: CommunicationLimits reports whether a phone number or email is already known, PermissionQuestion carries the request, AskCenter.shared.ask(_:in:) starts the send, and the verdict arrives later via responses(for:).
The skill ships a version table. Core types such as CommunicationTopic and CommunicationLimits start at iOS 26.0, AskError at 26.1, and AskCenter, PermissionButton plus significant-update topics at 26.2. It also covers attaching a name and avatar to the question and lists the available actions, .message and .audioCall among them.
Everything runs through iMessage. That rules it out as a general in-app consent, moderation or chat-safety layer. Entitlement keys should come from Apple's docs and Xcode capabilities rather than guesswork. When communication limits are off, ask throws AskError.communicationLimitsNotEnabled, so that branch needs handling.
What it helps with
- Explain to a child why a contact is blocked by a parental limit
- Build a request for one contact or several to send to a parent
- Find out which phone numbers and emails the system already recognises
- Attach a name and avatar so the parent knows who the request is about
- Handle the error thrown when communication limits are off
Example prompts for the agent
- Check with
CommunicationLimitswhether+1234567890is known, and build a question if it isn't - Add a SwiftUI screen with
PermissionButtonthat sends a parent a request for.audioCall - Catch
AskError.communicationLimitsNotEnabledinsiderequestPermission
How to install permissionkit
1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill permissionkit -a claude-code2Manually: put the files in place
~/.claude/skills/permissionkit/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/permissionkit/
1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill permissionkit -a codex2Manually: put the files in place
.agents/skills/permissionkit/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill permissionkit -a cursor2Manually: put the files in place
.cursor/skills/permissionkit/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dpearson2699/swift-ios-skills permissionkit2Manually: put the files in place
.github/skills/permissionkit/SKILL.md1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill permissionkit -a gemini-cli2Platform CLI
gemini skills install https://github.com/dpearson2699/swift-ios-skills --path skills/permissionkitManually: put the files in place
.devin/skills/permissionkit/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill permissionkit -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about permissionkit
How do I install permissionkit in Claude Code?
Run npx skills add dpearson2699/swift-ios-skills --skill permissionkit -a claude-code. The skill file lands at ~/.claude/skills/permissionkit/SKILL.md.
What does permissionkit do?
It guides the agent through writing PermissionKit code: limit checks, question creation, the send flow and response handling.
Does PermissionKit work for in-app contact permissions?
No. Its communication experiences exist only in iMessage, so in-app contact consent, moderation and chat safety are outside its scope.