Skip to content
Back to skills

Apple Contacts

ASecurity

Look up contacts from macOS Contacts.app. Use when resolving phone numbers to names, finding contact info, or searching the address book.

  • 651 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added February 10, 2026
toolsbash

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add sundial-org/awesome-openclaw-skills --skill apple-contacts --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Apple Contacts?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Apple Contacts
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/sundial-org-apple-contacts/badge)](https://www.skillsdirectory.com/skills/sundial-org-apple-contacts)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: apple-contacts
description: Look up contacts from macOS Contacts.app. Use when resolving phone numbers to names, finding contact info, or searching the address book.
metadata: {"clawdbot":{"emoji":"πŸ‘€","os":["darwin"]}}
---

# Apple Contacts

Query Contacts.app via AppleScript.

## Quick Lookups

```bash
# 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:

```bash
# 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 `is` instead of `contains`

## Output

Returns comma-separated: `name, phone1, [phone2...], email1, [email2...]`

No match = empty output (not an error).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…