Skillshub apple-notes-hello-world
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-hello-world" ~/.claude/skills/comeonoliver-skillshub-apple-notes-hello-world && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-hello-world/SKILL.mdsource content
Apple Notes Hello World
Overview
Create, read, search, and delete Apple Notes using JXA (JavaScript for Automation) via
osascript. All examples work from the command line on macOS.
Prerequisites
- Completed
(permissions granted)apple-notes-install-auth - macOS with Notes.app
Instructions
Step 1: Create a Note
# JXA: Create a note in the default folder osascript -l JavaScript -e ' const Notes = Application("Notes"); const defaultFolder = Notes.defaultAccount.folders[0]; const newNote = Notes.Note({ name: "Hello from Automation", body: "<h1>Hello World</h1><p>This note was created via JXA at " + new Date().toISOString() + "</p>" }); defaultFolder.notes.push(newNote); newNote.id(); ' # AppleScript equivalent: osascript -e ' tell application "Notes" tell account "iCloud" make new note at folder "Notes" with properties {name:"Hello AppleScript", body:"<p>Created via AppleScript</p>"} end tell end tell '
Step 2: List All Notes
# List notes with title and creation date osascript -l JavaScript -e ' const Notes = Application("Notes"); const notes = Notes.defaultAccount.notes(); notes.slice(0, 10).map(n => `${n.name()} | Created: ${n.creationDate().toISOString().split("T")[0]}` ).join("\n"); '
Step 3: Read a Note's Content
# Read note body (returns HTML) osascript -l JavaScript -e ' const Notes = Application("Notes"); const notes = Notes.defaultAccount.notes(); const target = notes.find(n => n.name() === "Hello from Automation"); if (target) { `Title: ${target.name()}\nBody: ${target.body()}\nModified: ${target.modificationDate()}`; } else { "Note not found"; } '
Step 4: Search Notes
# Search by keyword in note name osascript -l JavaScript -e ' const Notes = Application("Notes"); const query = "Hello"; const results = Notes.defaultAccount.notes().filter(n => n.name().toLowerCase().includes(query.toLowerCase()) ); results.map(n => n.name()).join("\n") || "No results"; '
Step 5: Create Note in Specific Folder
# Create a folder and add a note to it osascript -l JavaScript -e ' const Notes = Application("Notes"); const account = Notes.defaultAccount; // Create folder if it does not exist let folder = account.folders().find(f => f.name() === "Automation"); if (!folder) { folder = Notes.Folder({ name: "Automation" }); account.folders.push(folder); } // Add note to folder const note = Notes.Note({ name: "Organized Note", body: "<p>This note lives in the Automation folder.</p>" }); folder.notes.push(note); `Created in folder: ${folder.name()}`; '
Step 6: Delete a Note
# Delete by name (moves to Recently Deleted) osascript -l JavaScript -e ' const Notes = Application("Notes"); const notes = Notes.defaultAccount.notes(); const target = notes.find(n => n.name() === "Hello from Automation"); if (target) { Notes.delete(target); "Note deleted"; } else { "Note not found"; } '
Note Properties
| Property | Type | Writable | Description |
|---|---|---|---|
| string | Yes | Note title (first line) |
| string (HTML) | Yes | Full note content as HTML |
| string | No | Unique identifier |
| Date | No | When note was created |
| Date | No | Last modification |
| Folder | No | Parent folder |
Output
- Created a note via JXA and AppleScript
- Listed, searched, and read note content
- Organized note into a folder
- Deleted a note
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Notes.app not running | Add first |
| Empty body | Note has no text content | Check note is not just an image |
| Folder already exists | Check before creating |
| Slow response | iCloud sync in progress | Wait for sync; use local account |
Resources
Next Steps
Proceed to
apple-notes-local-dev-loop for development workflow setup.