apple-bridges — Claude Code skill: what it does, how to install
Connects your coding agent to Apple apps and tmux sessions on macOS. Handy for checking calendar slots, reading emails, and managing reminders.
npx skills add more-io/claude-apple-bridges --skill apple-bridges -a claude-codeWhat apple-bridges does
The skill connects the agent to Apple desktop software using Swift CLI binaries placed in ~/.claude/. It covers Reminders, Calendar, Contacts, Notes, Mail, Messages, and tmux panes. The agent can search appointments, draft emails, capture terminal session snapshots, or send iMessage texts directly from the prompt.
Destructive actions run in dry-run mode until you pass the --force flag. You must grant Full Disk Access to your terminal app in macOS settings for reading Messages, or the database lookup will fail.
What it helps with
- schedule events and locate open time slots in Apple Calendar
- create and check off tasks in Apple Reminders
- inspect inbox and compose messages through Apple Mail
- read text output from running tmux panes
Example prompts for the agent
- Check my calendar for tomorrow and list all open time slots
- Add a reminder to pick up groceries at 6 PM
- Show recent unread messages in Apple Mail
How to install apple-bridges
1Skills CLI (Vercel)
npx skills add more-io/claude-apple-bridges --skill apple-bridges -a claude-code2Manually: put the files in place
~/.claude/skills/apple-bridges/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/apple-bridges/
1Skills CLI (Vercel)
npx skills add more-io/claude-apple-bridges --skill apple-bridges -a codex2Manually: put the files in place
.agents/skills/apple-bridges/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add more-io/claude-apple-bridges --skill apple-bridges -a cursor2Manually: put the files in place
.cursor/skills/apple-bridges/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install more-io/claude-apple-bridges apple-bridges2Manually: put the files in place
.github/skills/apple-bridges/SKILL.md1Skills CLI (Vercel)
npx skills add more-io/claude-apple-bridges --skill apple-bridges -a gemini-cli2Platform CLI
gemini skills install https://github.com/more-io/claude-apple-bridges --path skills/apple-bridgesManually: put the files in place
.devin/skills/apple-bridges/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add more-io/claude-apple-bridges --skill apple-bridges -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-bridges
How to install apple-bridges in Claude Code?
Run npx skills add more-io/claude-apple-bridges --skill apple-bridges -a claude-code. The binaries must reside in ~/.claude/ for the commands to execute.
What does apple-bridges do?
It gives CLI agents access to Apple Reminders, Calendar, Contacts, Notes, Mail, Messages, and tmux. The assistant runs dedicated Swift tools to query and update macOS software directly.
What macOS permissions are required?
The operating system prompts for Calendar, Reminders, and Contacts access on initial execution. Notes and Mail require Automation permissions in Privacy & Security, while reading Messages requires Full Disk Access.
Source text
SKILL.md · MIT
---
name: apple-bridges
description: Use this skill whenever the user asks about Apple apps — Reminders, Calendar, Contacts, Notes, Mail, Messages (iMessage/SMS), or tmux sessions. This includes creating/completing reminders, checking/adding calendar events, looking up contacts, reading/writing notes, sending/reading email, reading/sending iMessages and texts, and capturing tmux session content. Also use this skill when the user mentions tasks, todos, scheduling, birthdays, free time slots, or end-of-day summaries. The bridges are CLI tools installed at ~/.claude/ that give Claude Code native access to these Apple apps on macOS.
---
# Apple Bridges
Swift CLI tools at `~/.claude/` that give Claude Code native access to Apple apps on macOS.
## Quick Reference
| Bridge | Binary | Purpose |
|--------|--------|---------|
| [reminders-bridge](reminders-bridge.md) | `~/.claude/reminders-bridge` | Manage Apple Reminders — lists, items, due dates, repeats, search |
| [calendar-bridge](calendar-bridge.md) | `~/.claude/calendar-bridge` | Read/write Apple Calendar — events, free slots, scheduling |
| [contacts-bridge](contacts-bridge.md) | `~/.claude/contacts-bridge` | Search/manage Apple Contacts — lookup, birthdays |
| [notes-bridge](notes-bridge.md) | `~/.claude/notes-bridge` | Read/write Apple Notes — create, search, append |
| [mail-bridge](mail-bridge.md) | `~/.claude/mail-bridge` | Read/send Apple Mail — inbox, unread, compose |
| [tmux-bridge](tmux-bridge.md) | `~/.claude/tmux-bridge` | Read/write tmux sessions — panes, snapshots, send keystrokes |
| [messages-bridge](messages-bridge.md) | `~/.claude/messages-bridge` | Read/send Apple Messages — chats, unread, search, send text and files |
**Read the detail file for the bridge you need** — each contains full command syntax, all parameters, and usage examples.
## General Patterns
### CLI Syntax
All bridges follow the same pattern:
```bash
~/.claude/<bridge-name> <command> [arguments...]
```
In Claude Desktop (via `apple-bridges-mcp`), each bridge is two tools: `<bridge>_read` for commands that only read and `<bridge>_write` for commands that change data, such as `reminders_read` and `reminders_write`. Pass the same arguments as the `args` array, one element per argument, starting with the command. A read tool refuses a flag that would write (`mail read --mark-read`), and `tmux_write` types into any pane, so it is never a tool to allow for a whole session.
### Quoting
Arguments with spaces must be quoted:
```bash
~/.claude/reminders-bridge add "Shopping List" "Buy milk" "From the organic store"
~/.claude/calendar-bridge add "Work" "Team Meeting" "2026-03-01 10:00" "2026-03-01 11:00"
```
### Destructive Operations
Delete commands use a **dry-run by default** pattern — they show what would be deleted without the `--force` flag:
```bash
# Dry run (safe preview)
~/.claude/reminders-bridge delete "Work" "Old task"
# Actually delete
~/.claude/reminders-bridge delete "Work" "Old task" --force
```
This applies to: `reminders-bridge delete`, `calendar-bridge delete`, `contacts-bridge delete`, `notes-bridge delete`, `mail-bridge delete`.
### Permissions
Each bridge requires macOS permission on first use:
| Bridge | Permission | Settings Path |
|--------|-----------|---------------|
| reminders-bridge | Reminders | Privacy & Security > Reminders |
| calendar-bridge | Calendars | Privacy & Security > Calendars |
| contacts-bridge | Contacts | Privacy & Security > Contacts |
| notes-bridge | Automation (Notes.app) | Privacy & Security > Automation |
| mail-bridge | Automation (Mail.app) | Privacy & Security > Automation |
| tmux-bridge | None (uses tmux CLI) | — |
| messages-bridge | Full Disk Access (read) + Automation (Messages.app) | Privacy & Security > Full Disk Access / Automation |
### Allowed Tools Configuration
Add to `.claude/settings.local.json`:
```json
{
"permissions": {
"allow": [
"Bash(~/.claude/reminders-bridge:*)",
"Bash(~/.claude/calendar-bridge:*)",
"Bash(~/.claude/contacts-bridge:*)",
"Bash(~/.claude/notes-bridge:*)",
"Bash(~/.claude/mail-bridge:*)",
"Bash(~/.claude/tmux-bridge:*)",
"Bash(~/.claude/messages-bridge:*)"
]
}
}
```
© more-io · MIT · more-io/claude-apple-bridges