Automates macOS Contacts via JXA with AppleScript dictionary discovery. Use when asked to "automate contacts", "JXA contacts automation", "macOS address book scripting", "AppleScript contacts", or "Contacts app automation". Covers querying, CRUD, multi-value fields, groups, images, and ObjC bridge fallbacks.
Automates macOS Contacts with JXA for querying, CRUD operations, multi-value fields, and group management.
/plugin marketplace add SpillwaveSolutions/automating-mac-apps-plugin/plugin install automating-mac-apps@automating-mac-apps-pluginThis skill is limited to using the following tools:
references/contacts-advanced.mdreferences/contacts-basics.mdreferences/contacts-dictionary.mdreferences/contacts-pyxa-api-reference.mdreferences/contacts-recipes.mdscripts/export_contacts_to_csv.pyscripts/import_contacts_from_csv.pyscripts/search_contacts.pyautomating-mac-apps for: TCC permissions setup, shell command helpers, UI scripting fallbacks, and ObjC bridge patterns.automating-mac-apps skill (PyXA Installation section).name(), emails()), write with assignments.push()add ... to command or .people.push; handle duplicates defensively.whose for coarse filtering; fall back to hybrid (coarse filter + JS refine) when needed.make, then assign primitives and push multi-values; Contacts.save() to persist.person.id() exists after save; handle TCC permission errors..id() checksconst Contacts = Application("Contacts");
const email = "ada@example.com";
try {
const existing = Contacts.people.whose({ emails: { value: { _equals: email } } })();
const person = existing.length ? existing[0] : Contacts.Person().make();
person.firstName = "Ada";
person.lastName = "Lovelace";
// Handle multi-value email
const work = Contacts.Email({ label: "Work", value: email });
person.emails.push(work);
Contacts.save();
// Handle groups with error checking
let grp;
try {
grp = Contacts.groups.byName("VIP");
grp.name(); // Verify exists
} catch (e) {
grp = Contacts.Group().make();
grp.name = "VIP";
}
Contacts.add(person, { to: grp });
Contacts.save();
console.log("Contact upserted successfully");
} catch (error) {
console.error("Contacts operation failed:", error);
}
automating-contacts/references/contacts-basics.mdautomating-contacts/references/contacts-recipes.mdautomating-contacts/references/contacts-advanced.mdautomating-contacts/references/contacts-dictionary.mdautomating-contacts/references/contacts-pyxa-api-reference.mdCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.