apple-targets — Claude Code skill: Apple extensions in Expo
Reference docs for native Apple targets in an Expo app: widgets, share sheets, keyboards, network tunnels. The agent opens the right file and writes the Swift.
npx skills add EvanBacon/expo-apple-targets --skill apple-targets -a claude-codeWhat apple-targets does
This skill covers native Apple targets inside an Expo app: home screen widgets, App Clips, share extensions, custom keyboards, watchOS apps, Safari extensions, VPN tunnels, DNS proxies. It arrives as a folder of documents, one per extension type.
Each document keeps the same shape. You get Apple documentation and WWDC session links, a walk through what the extension does at runtime, use cases, working Swift samples, which OS versions support it, and a gotchas section recording the ways these targets fail without an error message. Ask for a widget, or ask why an extension never shows up, and the agent pulls up the matching file.
Underneath sits the @bacons/apple-targets config plugin, so the app has to be built with Expo. A few target types run into Apple's own walls: network-filter-data needs a special entitlement, and per-app proxying only works with MDM or a supervised device.
What it helps with
- put a widget on the home screen of an Expo app
- receive links and images from the system share sheet
- trace why a push notification arrives without its image
- pick between a Share, Action and App Intent target
- build a keyboard layout of your own
Example prompts for the agent
- Add a home screen widget to my app with
@bacons/apple-targets - Which target type do I need to accept links from other apps?
- My
notification-servicedrops the image from the push — why?
How to install apple-targets
1Skills CLI (Vercel)
npx skills add EvanBacon/expo-apple-targets --skill apple-targets -a claude-code2Manually: put the files in place
~/.claude/skills/apple-targets/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/apple-targets/
1Skills CLI (Vercel)
npx skills add EvanBacon/expo-apple-targets --skill apple-targets -a codex2Manually: put the files in place
.agents/skills/apple-targets/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add EvanBacon/expo-apple-targets --skill apple-targets -a cursor2Manually: put the files in place
.cursor/skills/apple-targets/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install EvanBacon/expo-apple-targets apple-targets2Manually: put the files in place
.github/skills/apple-targets/SKILL.md1Skills CLI (Vercel)
npx skills add EvanBacon/expo-apple-targets --skill apple-targets -a gemini-cli2Platform CLI
gemini skills install https://github.com/EvanBacon/expo-apple-targets --path skills/apple-targetsManually: put the files in place
.devin/skills/apple-targets/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add EvanBacon/expo-apple-targets --skill apple-targets -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 apple-targets
How do I install apple-targets in Claude Code?
Run npx skills add EvanBacon/expo-apple-targets --skill apple-targets -a claude-code. The skill is copied to ~/.claude/skills/apple-targets/SKILL.md and loads on its own from then on.
What does apple-targets do?
It hands the agent reference docs for Apple extension types: widgets, App Clips, keyboards, notification handlers, App Intents, network tunnels. Each doc carries lifecycle notes, Swift examples and the usual failure modes.
Which Apple targets need extra approval?
network-filter-data only builds with a special entitlement from Apple. Per-app proxying requires MDM or a supervised device.