Skillshub apple-notes-performance-tuning
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-performance-tuning" ~/.claude/skills/comeonoliver-skillshub-apple-notes-performance-tuning && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-performance-tuning/SKILL.mdsource content
Apple Notes Performance Tuning
Performance Benchmarks
| Operation | 100 notes | 1000 notes | 10000 notes |
|---|---|---|---|
| List all | ~0.5s | ~3s | ~30s |
| Search by name | ~0.3s | ~2s | ~20s |
| Full-text search | ~1s | ~8s | ~80s |
| Create note | ~0.2s | ~0.2s | ~0.2s |
| Export all to JSON | ~1s | ~10s | ~100s |
Optimization Strategies
1. Limit Results
// BAD: Load all notes then slice const all = Notes.defaultAccount.notes(); // Loads everything const first10 = all.slice(0, 10); // BETTER: Specify range (JXA supports this for some operations) // Unfortunately JXA does not support server-side filtering // Best approach: cache results locally
2. Local SQLite Cache
# Export to SQLite once, then query locally osascript -l JavaScript scripts/export-to-sqlite.js sqlite3 notes-cache.db "SELECT title FROM notes WHERE body LIKE '%project%'"
3. Incremental Sync
// Only process notes modified since last sync const lastSync = new Date(fs.readFileSync(".last-sync", "utf8")); const modified = allNotes.filter(n => n.modificationDate() > lastSync);