š¤ Apple Contacts OpenClaw Skill - ClawHub
Do you want your AI agent to automate Apple Contacts workflows? This free skill from ClawHub helps with apple apps & services tasks without building custom tools from scratch.
What this skill does
Look up contacts from macOS Contacts.app. Use when resolving phone numbers to names, finding contact info, or searching the address book.
Install
npx clawhub@latest install apple-contactsFull SKILL.md
Open original| name | description |
|---|---|
| apple-contacts | Look up contacts from macOS Contacts.app. Use when resolving phone numbers to names, finding contact info, or searching the address book. |
Apple Contacts
Query Contacts.app via AppleScript.
Quick Lookups
# By phone (name only)
osascript -e 'tell application "Contacts" to get name of every person whose value of phones contains "+1XXXXXXXXXX"'
# By name
osascript -e 'tell application "Contacts" to get name of every person whose name contains "John"'
# List all
osascript -e 'tell application "Contacts" to get name of every person'
Full Contact Info
ā ļø Don't use first person whose ā buggy. Use this pattern:
# By phone
osascript -e 'tell application "Contacts"
set matches to every person whose value of phones contains "+1XXXXXXXXXX"
if length of matches > 0 then
set p to item 1 of matches
return {name of p, value of phones of p, value of emails of p}
end if
end tell'
# By name
osascript -e 'tell application "Contacts"
set matches to every person whose name contains "John"
if length of matches > 0 then
set p to item 1 of matches
return {name of p, value of phones of p, value of emails of p}
end if
end tell'
Phone Lookup
ā ļø Exact string match required ā must match stored format exactly.
| Stored | Search | Works? |
|---|---|---|
+1XXXXXXXXXX |
+1XXXXXXXXXX |
ā |
+1XXXXXXXXXX |
XXXXXXXXXX |
ā |
Try with +1 prefix first. If fails, search by name instead.
Name Search
- Case-insensitive
- Partial match with
contains - Exact match: use
isinstead ofcontains
Output
Returns comma-separated: name, phone1, [phone2...], email1, [email2...]
No match = empty output (not an error).