Folder-scoped Apple Notes integration for Claude Code on macOS.
Create, read, update, delete and list notes, but only within a folder you explicitly choose. Claude can't access your other notes, can't browse everything, can't delete outside scope.
- First time: Claude asks which folder to use
- You pick one (e.g. "Work Notes")
- Claude saves the choice to
config.jsonand remembers it between sessions - From now on, Claude works only in that folder without asking again
- To change the folder, tell Claude explicitly
In Claude Code, run:
/plugin marketplace add simplybychris/apple-notes-skill
/plugin install apple-notes@simplybychris-apple-notes-skill
Done. The skill is available in all your conversations.
Clone and copy to your project:
git clone https://github.com/simplybychris/apple-notes-skill.git
cp -r apple-notes-skill/.claude /path/to/your/project/.claude
cp -r apple-notes-skill/scripts /path/to/your/project/.claude/skills/apple-notes/scripts
chmod +x /path/to/your/project/.claude/skills/apple-notes/scripts/*.shOr install user-wide (all projects):
cp -r apple-notes-skill/.claude/skills/apple-notes ~/.claude/skills/
cp -r apple-notes-skill/scripts ~/.claude/skills/apple-notes/scripts
chmod +x ~/.claude/skills/apple-notes/scripts/*.shFirst run triggers a macOS dialog. Go to System Settings > Privacy & Security > Automation and enable Notes for your terminal app.
Talk to Claude naturally:
"Dodaj notatkę z podsumowaniem spotkania"
"Zapisz ten scenariusz do Apple Notes"
"Pokaż mi wszystkie notatki"
"Edytuj notatkę 'Projekt X' i dodaj sekcję o budżecie"
"Usuń notatkę 'Draft v1'"
"Save this as a note called 'Meeting Summary'"
"What notes do I have?"
"Update 'TODO' with the new task list"
Claude handles script calls, HTML formatting and folder scoping automatically.
| Script | Purpose |
|---|---|
get-config.sh <dir> |
Read saved folder config |
set-config.sh <dir> <folder> [account] |
Save folder config |
list-accounts.sh |
Show accounts |
list-folders.sh [account] |
Show folders |
create-folder.sh <name> [account] |
Create folder |
list-notes.sh <folder> [account] |
List notes in folder |
create-note.sh <folder> <title> [content] [account] |
Create note |
get-note.sh <folder> <name> [account] |
Read note |
update-note.sh <folder> <name> <content> [account] |
Update note |
delete-note.sh <folder> <name> [account] |
Delete note |
Every note operation requires <folder> as the first argument. No default.
Folder-scoped: works only in the folder you choose. Saved to config.json, persistent between sessions.
No injection: all parameters via AppleScript argv, no shell interpolation.
Pure AppleScript: no network calls, no file system access outside Notes.app.
Confirm deletes: skill requires user confirmation before deletion.
Folder choice is stored in config.json in the plugin/skill directory:
{"folder":"Scenariusze","account":"iCloud"}Claude reads this on every session start. No re-asking. To change, tell Claude or edit the file manually.
Apple Notes uses HTML. Claude formats automatically, but for manual control:
<div><h1>Heading</h1></div>
<div><p>Text with <b>bold</b> and <i>italic</i>.</p></div>
<div><ul><li>Item 1</li><li>Item 2</li></ul></div>- macOS with Apple Notes
- Claude Code CLI
- Automation permission for Notes
MIT