← Back to Skills Marketplace
swancho

Mac Notes Agent

by Swan C · GitHub ↗ · v1.1.0
cross-platform ✓ Security Clean
1534
Downloads
1
Stars
6
Active Installs
3
Versions
Install in OpenClaw
/install mac-notes-agent
Description
Integrate with the macOS Notes app (Apple Notes). Supports creating, listing, reading, updating, deleting, and searching notes via a simple Node.js CLI that bridges to AppleScript.
README (SKILL.md)

Mac Notes Agent

Overview

This skill lets the agent talk to Apple Notes on macOS using AppleScript (via osascript). It is implemented as a small Node.js CLI:

node skills/mac-notes-agent/cli.js \x3Ccommand> [options]

Requires macOS with the built-in Notes app and osascript available.

All operations target the default Notes account. Optionally you can specify which folder to use.


Commands

1) Add a new note

node skills/mac-notes-agent/cli.js add \
  --title "Meeting notes" \
  --body "First line\
Second line\
Third line" \
  [--folder "Jarvis"]
  • --title (required): Note title
  • --body (required): Note body text. Use \ for line breaks.
  • --folder (optional): Folder name. If omitted, uses system default folder. If folder doesn't exist, it will be created.

Line breaks (\ ) are converted to \x3Cbr> tags internally for proper rendering in Notes.

Result (JSON):

{
  "status": "ok",
  "id": "Jarvis::2026-02-09T08:40:00::Meeting notes",
  "title": "Meeting notes",
  "folder": "Jarvis"
}

2) List notes

node skills/mac-notes-agent/cli.js list [--folder "Jarvis"] [--limit 50]
  • Lists notes in the given folder (or all folders if omitted).
  • Output is JSON array with title, folder, creationDate, and synthetic id.

3) Read a note (get)

# By folder + title
node skills/mac-notes-agent/cli.js get \
  --folder "Jarvis" \
  --title "Meeting notes"

# By synthetic id
node skills/mac-notes-agent/cli.js get --id "Jarvis::2026-02-09T08:40:00::Meeting notes"

4) Update a note (replace body)

node skills/mac-notes-agent/cli.js update \
  --folder "Jarvis" \
  --title "Meeting notes" \
  --body "New content\
Replaces everything"
  • Replaces the entire body of the matching note.
  • Can also use --id for identification.

5) Append to a note

node skills/mac-notes-agent/cli.js append \
  --folder "Jarvis" \
  --title "Meeting notes" \
  --body "\
---\
Additional notes here"
  • Appends new content to the end of the existing note.

6) Delete a note

node skills/mac-notes-agent/cli.js delete \
  --folder "Jarvis" \
  --title "Meeting notes"

7) Search notes

node skills/mac-notes-agent/cli.js search \
  --query "keyword" \
  [--folder "Jarvis"] \
  [--limit 20]
  • Searches note titles and bodies for the keyword.

Identification Model

Apple Notes doesn't expose stable IDs. This CLI uses:

  • Primary key: (folderName, title)
  • Synthetic ID: folderName::creationDate::title

When multiple notes share the same title, the CLI operates on the most recently created one.


Environment

  • macOS only: Uses AppleScript via osascript
  • No npm dependencies: Uses only Node.js built-ins (child_process)
Usage Guidance
This skill appears to do what it claims: it runs AppleScript (via osascript) to operate on your Apple Notes. Before installing: (1) confirm you trust the skill author or inspect cli.js yourself (it's small and included); (2) be aware macOS will likely prompt to allow 'osascript' automation access to the Notes app — granting that lets the skill read and modify all Notes; (3) avoid passing untrusted input to the CLI (there is only basic escaping and edge cases could break or alter the generated AppleScript); and (4) if you don't want an agent to modify your Notes autonomously, restrict invocation to manual/user-invoked only. If you want extra assurance, run the CLI locally from a test account and review behavior before enabling it for automated use.
Capability Analysis
Type: OpenClaw Skill Name: mac-notes-agent Version: 1.1.0 The skill is designed to interact with the macOS Notes application using Node.js and AppleScript (`osascript`). While `osascript` is a powerful command, the `cli.js` code explicitly scopes all AppleScript commands to the 'Notes' application (`tell application "Notes"`) and includes a robust `esc` function to sanitize user-provided arguments (title, body, folder) by escaping double quotes and backslashes, preventing AppleScript injection. The `SKILL.md` file provides clear, benign instructions for the AI agent, without any evidence of prompt injection attempts or instructions to perform actions outside the stated purpose of managing notes. No data exfiltration, persistence mechanisms, or other malicious behaviors were identified.
Capability Assessment
Purpose & Capability
Name/description claim a macOS Notes bridge via AppleScript; the provided cli.js implements exactly that using only Node built-ins and osascript. No unrelated binaries, env vars, or services are requested.
Instruction Scope
SKILL.md instructs running the included Node CLI which in turn runs osascript AppleScript snippets to read/modify Notes. It does not read other files or contact external endpoints. Caution: the CLI constructs AppleScript text from user-supplied inputs with only simple escaping (backslashes and double quotes); this can lead to malformed scripts or AppleScript injection edge-cases for specially crafted inputs — review/validate inputs if you plan to expose it to untrusted content.
Install Mechanism
No install spec; the skill is instruction-only with a single CLI file included. Nothing is downloaded or installed by the skill itself.
Credentials
The skill requests no credentials, env vars, or config paths. Its runtime requirement (macOS with osascript) is proportional to its purpose.
Persistence & Privilege
always is false and there is no special persistence. However, the agent (by default) may invoke this skill autonomously and the skill can create/modify/delete Notes — consider the risk of granting automation control over your Notes if you allow autonomous invocations.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install mac-notes-agent
  3. After installation, invoke the skill by name or use /mac-notes-agent
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.1.0
Remove --bodyFile option for security (arbitrary file read). Use --body with \n for multi-line text instead.
v1.0.0
Initial stable release
v0.1.0
Initial release of mac-notes-agent: Node.js CLI to interact with Apple Notes on macOS. - Supports creating, listing, reading, updating, appending, deleting, and searching notes. - Uses AppleScript (via osascript) to bridge with the Notes app. - Identifies notes primarily by (folder, title); provides a synthetic ID for convenience. - Handles note bodies as plain text or file input, with support for folder creation. - All commands output structured JSON for easy integration. - No external Node.js dependencies; runs on Mac with built-in Notes app.
Metadata
Slug mac-notes-agent
Version 1.1.0
License
All-time Installs 6
Active Installs 6
Total Versions 3
Frequently Asked Questions

What is Mac Notes Agent?

Integrate with the macOS Notes app (Apple Notes). Supports creating, listing, reading, updating, deleting, and searching notes via a simple Node.js CLI that bridges to AppleScript. It is an AI Agent Skill for Claude Code / OpenClaw, with 1534 downloads so far.

How do I install Mac Notes Agent?

Run "/install mac-notes-agent" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Mac Notes Agent free?

Yes, Mac Notes Agent is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Mac Notes Agent support?

Mac Notes Agent is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Mac Notes Agent?

It is built and maintained by Swan C (@swancho); the current version is v1.1.0.

💬 Comments