automating-notes

A macOS automation guide for controlling Apple Notes with JavaScript for Automation (JXA), Apple's scripting system. It covers accounts, folders, notes, HTML content, searches, moves, and fallback methods.

In plain words
What is it for?
For creating, organizing, searching, updating, moving, and deleting Apple Notes programmatically, including meeting notes and notes with checklists or attachments.
Why use it?
It removes the need to perform repetitive Notes.app work by hand and explains how to handle its folder and account structure safely.

Skill for Claude CodeCodex

Part of the automating-mac-apps plugin — 16 skills, 10 commands, 9 agents shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/spillwavesolutions/automating-mac-apps-plugin/automating-notes
Any agent
npx skills add SpillwaveSolutions/automating-mac-apps-plugin --skill automating-notes
Clone the repo
git clone --depth 1 https://github.com/SpillwaveSolutions/automating-mac-apps-plugin

Made for: Claude Code, Codex.

Or install automating-mac-apps, the plugin that ships this one along with the rest of its 16 skills, 10 commands, 9 agents.

Per session 71 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,639 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00071 $0.01639
Opus 5 $0.00036 $0.00820
Sonnet 5 $0.00014 $0.00328
Haiku 4.5 $0.00007 $0.00164

Measured 3d ago against content hash 8f2274411b1a, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

automating-notes scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

The scan reads SKILL.md. This mod also ships 5 executable files (scripts/create_note.py, scripts/create_notes_folder.py, scripts/search_notes.py, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/automating-mac-apps-plugin/skills/automating-notes/SKILL.md · 191 lines

How it starts

The opening of the file, as written. The whole thing — 191 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Automating Apple Notes (JXA-first, AppleScript discovery)

Relationship to the macOS automation skill

  • Standalone for Notes; reuse automating-mac-apps for permissions, shell, and Objective-C/UI scripting patterns.
  • PyXA Installation: To use PyXA examples in this skill, see the installation instructions in automating-mac-apps skill (PyXA Installation section).

Core framing

  • Notes uses an AEOM hierarchy: Application → Accounts → Folders → Notes (with nested folders).
  • Load: automating-notes/references/notes-basics.md for complete specifier reference.

Workflow (default)

  1. Resolve account/folder explicitly (iCloud vs On My Mac); validate existence and permissions.
  2. Ensure target path exists (create folders if needed); handle creation failures gracefully.
  3. Create notes with explicit name and HTML body; verify creation success.
  4. Query/update with .whose filters; batch delete/move as needed; check counts before/after operations.
  5. For checklists/attachments, use clipboard/Objective-C scripting if dictionary support is insufficient; test fallbacks.
  6. For meeting/people workflows, file notes under meetings/<company>/<date>-<meeting-title> and people/<first>-<last>/...; validate final structure.

Quickstart (ensure path + create)

JXA (Legacy):

const Notes = Application("Notes");

// Ensure folder path exists, creating intermediate folders as needed
function ensurePath(acc, path) {
  const parts = path.split("/").filter(Boolean);
  let container = acc;
  parts.forEach(seg => {
    let f; try {
      f = container.folders.byName(seg);
      f.name(); // Verify access
    } catch (e) {
      // Folder doesn't exist, create it
      f = Notes.Folder({ name: seg });
      container.folders.push(f);
    }
    container = f;
  });
  return container;
}

try {
  // Get iCloud account and ensure meeting folder exists
  const acc = Notes.accounts.byName("iCloud");
  const folder = ensurePath(acc, "meetings/Acme/2024-07-01-Review");

  // Create new note in the folder
  folder.notes.push(Notes.Note({
    name: "Client Review",
    body: "<h1>Client Review</h1><div>Agenda...</div>"
  }));
  console.log("Note created successfully");
} catch (e) {
  console.error("Failed to create note: " + e.message);
}

Read the full file on GitHub · 191 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 191 lines · 71 tokens per session scan A 8f2274411b1a

Subscribe to this mod's changes

automating-notes is a skill published in the GitHub repository SpillwaveSolutions/automating-mac-apps-plugin (40 stars, last pushed 12d ago), licensed MIT. It adds 71 tokens to every session and 1,639 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

resume

Finds an album by name and shows detailed status with next steps. Use when the user mentions an album name or wants to continue previous work.

bitwize-music-studio/claude-ai-music-skills · 31 tokens

import-art

Places album art files in the correct audio and content directory locations. Use when the user has generated or downloaded album artwork that needs to be saved.

bitwize-music-studio/claude-ai-music-skills · 32 tokens

import-track

Moves track markdown files to the correct album location. Use when the user has track files in Downloads or other locations that need to be placed in an album.

bitwize-music-studio/claude-ai-music-skills · 34 tokens

catch

Shape output for a human working through agents. Use on every response, out to and including casual conversation, even when the user did not ask for brevity.

saadshahd/moo.md · 34 tokens

lark-vc-agent

飞书视频会议会中能力:用于让应用机器人真实加入或离开正在进行的会议,并读取当前身份可见的会中事件、发送会中文本消息或会中表情。适用于用户询问正在开的会议发生了什么、谁在发言、是否共享内容,或需要发现当前可读的进行中会议 ID。不负责已结束会议搜索、参会人快照、纪要、逐字稿或录制查询,这些使用 lark-vc 技能。.

DropFan/claude-code-plugins · 114 tokens

lark-vc

飞书视频会议:搜索历史会议记录、查询会议纪要(总结/待办/章节/逐字稿)、查询参会人快照。当用户查询已结束的会议、获取会议产物(纪要/妙记)、查看参会人时使用;查询未来日程走 lark-calendar。不负责:Agent 真实入会/离会、会中实时事件(走 lark-vc-agent)。.

DropFan/claude-code-plugins · 95 tokens