Skillshub apple-notes-webhooks-events
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-webhooks-events" ~/.claude/skills/comeonoliver-skillshub-apple-notes-webhooks-events && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-webhooks-events/SKILL.mdsource content
Apple Notes Webhooks & Events
Overview
Apple Notes has no webhook API. Monitor changes using: (1) File system watching on the Notes database, (2) Apple Shortcuts automation triggers, or (3) Periodic polling via JXA.
Polling-Based Change Detection
// src/events/notes-watcher.ts import { execSync } from "child_process"; interface NoteSnapshot { id: string; title: string; modified: string; } let lastSnapshot: Map<string, string> = new Map(); function detectChanges(): { added: string[]; modified: string[]; deleted: string[] } { const current = JSON.parse(execSync( `osascript -l JavaScript -e 'JSON.stringify(Application("Notes").defaultAccount.notes().map(n => ({id: n.id(), title: n.name(), modified: n.modificationDate().toISOString()})))'`, { encoding: "utf8" } )) as NoteSnapshot[]; const currentMap = new Map(current.map(n => [n.id, n.modified])); const added = current.filter(n => !lastSnapshot.has(n.id)).map(n => n.title); const modified = current.filter(n => lastSnapshot.has(n.id) && lastSnapshot.get(n.id) !== n.modified).map(n => n.title); const deleted = [...lastSnapshot.keys()].filter(id => !currentMap.has(id)); lastSnapshot = currentMap; return { added, modified, deleted }; } // Poll every 60 seconds setInterval(() => { const changes = detectChanges(); if (changes.added.length || changes.modified.length || changes.deleted.length) { console.log("Changes detected:", changes); } }, 60000);