本文へ移動
cccskills
無料GitHub で公開

apple-notes-multi-env-setup

Configure Apple Notes automation for multiple accounts and environments. Trigger: "apple notes multi account".

インストール方法を見る

含まれるファイル(1)

  • SKILL.md6.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Apple Notes Multi-Environment Setup

Overview

Apple Notes supports multiple accounts simultaneously: iCloud (default), Gmail/Yahoo/AOL via IMAP, Exchange, and the local "On My Mac" account. Each account has isolated folders and notes, making accounts the natural boundary for environment separation. Use this to separate personal vs work notes, production vs development data, or synced vs local-only content. The "On My Mac" account is especially useful for development and testing because it never syncs to iCloud, so experiments stay local.

Prerequisites

  • A written environment map that names the intended account and folder by stable local configuration, not a broad account default.
  • Separate test data for development and staging; iCloud folders alone are not an access-control boundary.
  • An approval path for creating accounts or folders, especially in managed or shared environments.

Instructions

  1. Resolve the selected environment from an allowlist and fail if it is not explicitly configured.
  2. Verify the expected account and folder exist before a write; do not silently create missing production folders.
  3. Keep development local where possible, and require an explicit operator choice before a job touches a synchronized account.
  4. Log only the environment label and opaque configuration version, never account names, note titles, or bodies.

Account Discovery

# List all configured Notes accounts
osascript -l JavaScript -e '
  const Notes = Application("Notes");
  Notes.accounts().map(a =>
    a.name() + " — " + a.notes().length + " notes, " +
    a.folders().map(f => f.name()).join(", ")
  ).join("\n");
'

Environment-Based Configuration

// src/config/environments.ts
interface NotesEnvConfig {
  accountName: string;
  defaultFolder: string;
  autoSync: boolean;
  description: string;
}

const ENVIRONMENTS: Record<string, NotesEnvConfig> = {
  production: {
    accountName: "iCloud",
    defaultFolder: "Production",
    autoSync: true,
    description: "Live notes synced across all devices via iCloud",
  },
  staging: {
    accountName: "iCloud",
    defaultFolder: "Staging",
    autoSync: true,
    description: "Test notes visible on other devices for QA",
  },
  development: {
    accountName: "On My Mac",
    defaultFolder: "Dev",
    autoSync: false,
    description: "Local-only notes for development and testing",
  },
};

function getEnv(): string {
  return process.env.NOTES_ENV || "development";
}

Account-Scoped Operations

// JXA wrapper that enforces account isolation
const Notes = Application("Notes");

function getAccount(envName) {
  const config = {
    production: "iCloud",
    staging: "iCloud",
    development: "On My Mac",
  };
  const accountName = config[envName] || config.development;
  const account = Notes.accounts().find(a => a.name() === accountName);
  if (!account) throw new Error(`Account "${accountName}" not found. Enable it in Notes > Settings > Accounts.`);
  return account;
}

function getFolder(account, folderName) {
  let folder = account.folders().find(f => f.name() === folderName);
  if (!folder) {
    // Create folder if it does not exist
    folder = Notes.Folder({ name: folderName });
    account.folders.push(folder);
  }
  return folder;
}

function createNote(envName, folderName, title, body) {
  const account = getAccount(envName);
  const folder = getFolder(account, folderName);
  const note = Notes.Note({ name: title, body: body });
  folder.notes.push(note);
  return note.id();
}

Enable "On My Mac" Account

# "On My Mac" is disabled by default on newer macOS versions
# Enable via Notes preferences:
# Notes > Settings > check "Enable the On My Mac account"

# Verify it is available
osascript -l JavaScript -e '
  const Notes = Application("Notes");
  const local = Notes.accounts().find(a => a.name() === "On My Mac");
  local ? "On My Mac: enabled (" + local.notes().length + " notes)" : "On My Mac: DISABLED";
'

Error Handling

IssueCauseSolution
"On My Mac" account not foundDisabled in Notes settingsNotes > Settings > enable "On My Mac" account
Gmail account shows no notesIMAP notes not enabledSystem Settings > Internet Accounts > Gmail > enable Notes
Folder creation fails on GmailIMAP accounts have read-only folder structureUse iCloud or "On My Mac" for custom folders
Notes appear in wrong accountdefaultAccount used instead of explicit accountAlways specify account by name; never rely on default
Sync conflict between environmentsSame iCloud account, different foldersUse distinct folder names per environment (Prod/, Staging/)

Output

Environment selection yields the approved environment label, an account/folder existence check, and a read-only scope confirmation. A failed match blocks mutation and produces a redacted diagnostic that the configuration owner can act on.

Examples

For local development, select the configured development environment, confirm the On My Mac test folder exists, and use synthetic notes only. For production, require a separately reviewed configuration that points to the exact approved folder; if it is absent, stop and ask the owner to create or approve it rather than creating it automatically.

Resources

Next Steps

For access control across accounts, see apple-notes-enterprise-rbac. For monitoring account health, see apple-notes-observability.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Build a synthetic-data CI gate for customer-controlled Abridge integration code without calling undocumented vendor interfaces. Use when adding regression checks to an Abridge deployment repository. Trigger with "test the Abridge integration".

日本語の概要は準備中です。原文の説明を表示しています。

jeremylongshore/tons-of-skills-marketplace2,8322026年10月13日 更新

Triage Abridge recording, note-review, Epic handoff, and access failures from observed evidence without inventing vendor error codes. Use when an Abridge clinical workflow is degraded. Trigger with "diagnose this Abridge issue".

日本語の概要は準備中です。原文の説明を表示しています。

jeremylongshore/tons-of-skills-marketplace2,8322026年10月13日 更新

Design and verify the clinician workflow from consent through recording, draft review, Linked Evidence, and final note disposition. Use when implementing or auditing an Abridge clinical documentation pathway. Trigger with "map the Abridge note workflow".

日本語の概要は準備中です。原文の説明を表示しています。

jeremylongshore/tons-of-skills-marketplace2,8322026年10月13日 更新

Verify the approved handoff of clinician-reviewed Abridge note sections into Epic templates and downstream workflows. Use when configuring or auditing Abridge-to-Epic documentation flow. Trigger with "verify the Abridge Epic handoff".

日本語の概要は準備中です。原文の説明を表示しています。

jeremylongshore/tons-of-skills-marketplace2,8322026年10月13日 更新

Evaluate Abridge adoption, workflow value, and avoidable operational friction without inventing prices or vendor billing meters. Use when reviewing an Abridge rollout or renewal. Trigger with "analyze Abridge value".

日本語の概要は準備中です。原文の説明を表示しています。

jeremylongshore/tons-of-skills-marketplace2,8322026年10月13日 更新

Produce a PHI-minimized Abridge support bundle with provenance, redaction, and protected escalation boundaries. Use when support needs reproducible evidence for an Abridge issue. Trigger with "build an Abridge debug bundle".

日本語の概要は準備中です。原文の説明を表示しています。

jeremylongshore/tons-of-skills-marketplace2,8322026年10月13日 更新

jeremylongshore のスキルをすべて見る

このスキルの問題を報告する