apple-contacts
SKILL.md
Apple Contacts Skill
Overview
- Manages macOS Contacts.app through AppleScript.
- No external dependencies — uses only bash and osascript.
- Main helper script:
scripts/contacts.sh. - All commands return JSON for agent consumption.
Quick Start
# Search for a contact by name
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh search --field name --limit 10 "John"
# Search for a contact by email
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh search --field email --exact "john@example.com"
# Get full details of a contact
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh get "John Doe"
# Get full details by stable contact id
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh get --id "23B708DC-4556-41E3-8738-89867826B760:ABPerson"
# List contacts
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh list --limit 20
# List contacts in a group
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh list --group "Work"
# Add a new contact
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh add --first "John" --last "Doe" --phone "+48123456789" --email "john@example.com" --org "Acme"
# Edit a contact by name
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh edit "John Doe" --phone "+48111222333"
# Edit a contact by stable contact id
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh edit --id "23B708DC-4556-41E3-8738-89867826B760:ABPerson" --email "new@example.com"
# Delete a contact by name
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh delete "John Doe"
# Delete a contact by stable contact id
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh delete --id "23B708DC-4556-41E3-8738-89867826B760:ABPerson"
# List all contact groups
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh groups
# Check Contacts automation health
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh doctor
What This Skill Can Do
search
# Search across name and organization
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh search "John"
# Search by exact email
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh search --field email --exact "john@example.com"
# Search by phone
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh search --field phone "+48123456789"
# Limit results
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh search --field name --limit 5 "Doe"
get
# Get by exact full name
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh get "John Doe"
# Get by stable contact id
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh get --id "23B708DC-4556-41E3-8738-89867826B760:ABPerson"
list
# List first 20 contacts
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh list --limit 20
# List contacts in a group
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh list --group "Work"
# List contacts in a group with limit
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh list --group "Work" --limit 10
add
# Add a minimal contact
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh add --first "John" --last "Doe"
# Add a full contact
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh add --first "John" --last "Doe" --phone "+48123456789" --email "john@example.com" --org "Acme" --title "CTO"
edit
# Add a phone to a contact found by name
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh edit "John Doe" --phone "+48111222333"
# Add an email to a contact found by id
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh edit --id "23B708DC-4556-41E3-8738-89867826B760:ABPerson" --email "new@example.com"
# Update organization and title
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh edit "John Doe" --org "NewCorp" --title "CTO"
delete
# Delete by name
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh delete "John Doe"
# Delete by stable contact id
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh delete --id "23B708DC-4556-41E3-8738-89867826B760:ABPerson"
groups
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh groups
doctor
bash ~/.agents/skills/apple-contacts/scripts/contacts.sh doctor
Operational Notes
- Default output is JSON — do not dump raw JSON to the user; summarize naturally.
- Search supports
--field name|phone|email|org|all,--limit N, and--exact. - Use
--field phoneor--field emailwhen the query is primarily a number or email lookup. - Contact payloads include a stable
id. - Phone, email, and address labels are normalized to simple values like
mobile,home,work, andother. - The
getcommand returns: name, phones, emails, addresses, organization, job title, birthday, and notes. - The
addcommand requires at least--firstor--last. get,edit, anddeletecan target an exact full name or--id.- Logical failures return
{"success": false, ...}and exit with code1. - Contacts.app must be running (the script activates it automatically).
Weekly Installs
1
Repository
vinitu/apple-co…ts-skillFirst Seen
9 days ago
Security Audits
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1