🤖 A universal AppleScript automation toolkit that enables AI agents and developers to control macOS applications through natural language commands or direct script execution.
Agent-Agnostic — Works with any AI agent framework (OpenClaw, Claude Code, Cursor, Codex, or standalone)
- 🌐 Browser Automation — Control Chrome, Safari, Firefox (navigate, execute JS, extract data)
- 📁 File Management — Finder operations (create, move, copy, delete, organize files)
- 💬 Communication — Mail & Messages (iMessage) automation
- ⚙️ System Control — Volume, brightness, notifications, clipboard, power management
- 💻 Terminal Automation — Run commands, manage windows/tabs, capture output
- 🎵 Media Control — Music (iTunes), Calendar, Contacts, Reminders
- macOS 10.15 or later
- Accessibility permissions enabled (System Settings → Privacy & Security → Accessibility)
# Clone the repository
git clone https://github.com/haoyiyin/applescript-skill.git
cd applescript-skillWith AI Agents:
"Open Chrome and visit GitHub"
"Organize all PDFs on my desktop"
"Send iMessage to John saying 'Meeting at 3pm'"
"Set volume to 50%"
"Run ls -la in Terminal"
Direct AppleScript:
osascript -e 'tell application "Google Chrome" to set URL of active tab of first window to "https://github.com"'From Python:
import subprocess
def run_applescript(script):
result = subprocess.run(['osascript', '-e', script], capture_output=True, text=True)
return result.stdout
run_applescript('tell application "Finder" to return name of every item of desktop')From Node.js:
const { execSync } = require('child_process');
function runAppleScript(script) {
return execSync(`osascript -e '${script}'`, { encoding: 'utf8' });
}
console.log(runAppleScript('tell application "Finder" to return count of every item of desktop'));applescript-skill/
├── SKILL.md # Agent skill definition (OpenClaw format)
├── README.md # English documentation (this file)
├── README.zh.md # Chinese documentation
├── LICENSE # MIT License
├── references/ # Ready-to-use script templates
│ ├── chrome.applescript # Browser automation
│ ├── finder.applescript # File management
│ ├── mail.applescript # Email automation
│ ├── messages.applescript # iMessage automation
│ ├── system.applescript # System control
│ └── terminal.applescript # Terminal automation
└── scripts/ # Custom automation scripts
| Category | Applications |
|---|---|
| Browsers | Chrome, Safari, Firefox |
| File System | Finder |
| Communication | Mail, Messages (iMessage) |
| System | Volume, Brightness, Notifications, Clipboard |
| Development | Terminal, VS Code |
| Media | Music (iTunes), QuickTime |
| Productivity | Calendar, Contacts, Reminders, Notes |
tell application "Google Chrome"
tell active tab of first window
set URL to "https://github.com/trending"
delay 2
return title
end tell
end telltell application "Finder"
set desktopFiles to every item of desktop whose name ends with ".pdf"
repeat with file in desktopFiles
move file to folder "Documents" of home folder
end repeat
end telltell application "Messages"
set theBuddy to buddy "contact@example.com" of (service 1 whose service type is iMessage)
send "Hello! Are you free?" to theBuddy
end tell-- Set volume to 50%
set volume output volume 50
-- Copy to clipboard
set the clipboard to "Hello, World!"
-- Display notification
display notification "Task completed!" with title "Automation"- Open System Settings → Privacy & Security → Accessibility
- Click the + button
- Add these applications:
Google Chrome(or your browser)TerminalMessagesMail- Your AI agent application (if applicable)
- Open System Settings → Privacy & Security → Automation
- Enable permissions for:
System EventsFinderMessagesMail
- AppleScript can control your entire Mac — only run scripts from trusted sources
- Review scripts before execution, especially those that:
- Delete or move files
- Send messages or emails
- Execute terminal commands
- Access sensitive data
- Scripts run locally — no data is sent to external servers unless explicitly coded
# Copy to OpenClaw workspace
cp -r applescript-skill ~/.openclaw/workspace/skills/applescript/Reference the references/ scripts directly in your prompts:
Use the AppleScript skill to open Chrome and navigate to GitHub.
Reference: ./applescript-skill/references/chrome.applescript
Implement AppleScript execution in your agent's tool layer:
def execute_applescript_file(path):
result = subprocess.run(['osascript', path], capture_output=True, text=True)
return {'output': result.stdout, 'error': result.stderr}MIT License — See LICENSE file for details.
Built with ❤️ for the AI agent community