permiso-accessibility-permissions — Claude Code skill: macOS
A skill for coding agents that shows how to add a guided macOS accessibility permission panel to a Swift app.
npx skills add reason-machines/trending-skills --skill permiso-accessibility-permissions -a claude-codeWhat permiso-accessibility-permissions does
Permiso is a Swift library that walks the user through enabling a permission in System Settings with an animated overlay. The skill covers wiring it into a project and calling it from code.
It ships Swift snippets: PermisoAssistant.shared.present(panel: .accessibility), an AXIsProcessTrusted() check, a timer that polls until access is granted, and a SwiftUI settings view with a request button. Troubleshooting notes are included too — the panel stays hidden when called off the main thread, and AXIsProcessTrusted() can keep returning false until the app is relaunched.
You need Swift 5.9+ and macOS. Apps that use accessibility APIs must not be sandboxed, or need the right entitlements. Call present(panel:) from @MainActor, otherwise nothing renders.
What it helps with
- point the user to the right System Settings pane for accessibility access
- add a Codex Computer Use style permission panel to a macOS app
- gate an accessibility-dependent action behind an
AXIsProcessTrusted()check - detect the moment access is granted without restarting the app
- put a request-access button into a SwiftUI settings screen
Example prompts for the agent
- show me how to call
PermisoAssistant.shared.present(panel: .accessibility)on app launch - add a Permiso request button for accessibility access to my SwiftUI settings view
- set up a timer polling
AXIsProcessTrusted()so the app notices when access is granted
How to install permiso-accessibility-permissions
1Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill permiso-accessibility-permissions -a claude-code2Manually: put the files in place
~/.claude/skills/permiso-accessibility-permissions/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/permiso-accessibility-permissions/
1Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill permiso-accessibility-permissions -a codex2Manually: put the files in place
.agents/skills/permiso-accessibility-permissions/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill permiso-accessibility-permissions -a cursor2Manually: put the files in place
.cursor/skills/permiso-accessibility-permissions/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install reason-machines/trending-skills permiso-accessibility-permissions2Manually: put the files in place
.github/skills/permiso-accessibility-permissions/SKILL.md1Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill permiso-accessibility-permissions -a gemini-cli2Platform CLI
gemini skills install https://github.com/reason-machines/trending-skills --path skills/permiso-accessibility-permissionsManually: put the files in place
.devin/skills/permiso-accessibility-permissions/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill permiso-accessibility-permissions -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 permiso-accessibility-permissions
How do I install permiso-accessibility-permissions in Claude?
Run npx skills add reason-machines/trending-skills --skill permiso-accessibility-permissions -a claude-code. The skill file lands at ~/.claude/skills/permiso-accessibility-permissions/SKILL.md.
What does permiso-accessibility-permissions do?
It documents how to add the Permiso Swift library and use its API to show a guided panel that sends users to macOS settings to enable accessibility access.
Why does the panel not show up?
present(panel:) has to run on the main thread or inside @MainActor. Sandboxed apps may also need a full restart after the user grants access.