# Apple Notes Import

> A Claude skill from GregTheGreek/claude-obsidian.

- **Type:** Skill
- **Install:** `agentstack add skill-gregthegreek-claude-obsidian-apple-notes-import`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [GregTheGreek](https://agentstack.voostack.com/s/gregthegreek)
- **Installs:** 0
- **Category:** [Productivity](https://agentstack.voostack.com/c/productivity)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [GregTheGreek](https://github.com/GregTheGreek)
- **Source:** https://github.com/GregTheGreek/claude-obsidian/tree/main/skills/apple-notes-import

## Install

```sh
agentstack add skill-gregthegreek-claude-obsidian-apple-notes-import
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Apple Notes Import

Import notes from the "Claude Inbox" folder in iCloud Notes and dispatch content to appropriate agents based on @tags.

## Manifest Tracking

The skill tracks imported notes in a manifest file to avoid re-processing:

**Manifest location:** `~/.claude/data/apple-notes-manifest.json`

**Manifest structure:**
```json
{
  "imported": {
    "Note Title": {
      "importedAt": "2026-01-19T12:00:00Z",
      "modificationDate": "2026-01-19T11:30:00Z",
      "contentHash": "abc123..."
    }
  }
}
```

**Status logic:**
- **NEW**: Note name not in manifest
- **MODIFIED**: Note in manifest but modification date changed
- **IMPORTED**: Note in manifest with same modification date (already processed)

## Workflow

### Step 1: Check Prerequisites

First, verify the Claude Inbox folder exists:

```bash
osascript -e 'tell application "Notes" to tell account "iCloud" to exists folder "Claude Inbox"'
```

If this returns `false`, inform the user:

> The "Claude Inbox" folder doesn't exist in your iCloud Notes.
>
> To set up:
> 1. Open the Notes app
> 2. In the iCloud account section, create a new folder called "Claude Inbox"
> 3. Add notes to this folder with @tags in the body (e.g., @thinking, @write)
> 4. Run this skill again

If you get a permission error, inform the user:

> Terminal needs permission to control Notes.
>
> Go to System Preferences > Privacy & Security > Automation and enable "Notes" for Terminal.

### Step 2: Load Manifest

Read the manifest file if it exists:

```bash
cat ~/.claude/data/apple-notes-manifest.json 2>/dev/null || echo '{"imported":{}}'
```

Parse the JSON to get the list of previously imported notes.

### Step 3: Count and Extract Notes

Count notes in the inbox:

```bash
osascript -e 'tell application "Notes" to tell account "iCloud" to tell folder "Claude Inbox" to count of notes'
```

If count is 0, inform the user:

> Your Claude Inbox is empty. Add notes with @tags to import them:
> - @thinking - Start a thinking session
> - @write - Get writing feedback

Extract all notes with their names, modification dates, and content:

```bash
osascript -e '
tell application "Notes"
    tell account "iCloud"
        tell folder "Claude Inbox"
            set output to ""
            repeat with n in notes
                set noteName to name of n
                set noteBody to body of n
                set noteMod to modification date of n
                set output to output & "---NOTE_START---" & return & "NAME: " & noteName & return & "MODIFIED: " & noteMod & return & "BODY:" & return & noteBody & return & "---NOTE_END---" & return
            end repeat
            return output
        end tell
    end tell
end tell
'
```

### Step 4: Compare Against Manifest

For each extracted note:
1. Check if note name exists in manifest
2. If exists, compare modification date
3. Determine status: NEW, MODIFIED, or IMPORTED

### Step 5: Parse Content and Present Notes

The note body comes as HTML. To extract plain text and @tags:

1. Strip HTML tags: `sed 's/]*>//g'`
2. Decode common HTML entities: `sed 's/&nbsp;/ /g; s/&amp;/\&/g; s/&lt;//g; s/&quot;/"/g'`
3. Find @tags: `grep -oE '@[a-zA-Z]+'`

Present notes grouped by status:

```
Notes in Claude Inbox:

NEW:
1. [Note Title] - @thinking

MODIFIED (content changed since last import):
2. [Another Note] - @write

ALREADY IMPORTED:
3. [Old Note] - @thinking (imported 2026-01-18)

Which note would you like to process? (enter number, "new" for all new notes, or "all")
```

If there are no NEW or MODIFIED notes:

> No new notes in your Claude Inbox. All notes have been imported previously.
>
> You can still re-process an existing note if needed, or add new notes to the inbox.

Use AskUserQuestion to let the user select.

### Step 6: Route to Agent

Based on detected @tags, route to the appropriate agent:

| Tag | Action |
|-----|--------|
| @thinking | Launch thinking-partner agent with note as context |
| @write | Launch writing_critic agent with note content |
| @research | Inform user: "Research routing not yet implemented - would you like to process this note differently?" |
| (no tag) | Ask user which agent to use |
| (multiple tags) | Ask user which tag/agent to use |

### Step 7: Update Manifest

After successfully processing a note, update the manifest:

1. Ensure directory exists: `mkdir -p ~/.claude/data`
2. Add/update the note entry with current timestamp and modification date
3. Write updated manifest back to file

Use the Write tool to update `~/.claude/data/apple-notes-manifest.json`.

## Agent Dispatch

### For @thinking

Present the note content, then transition to thinking-partner behavior:

> **Imported from Apple Notes:** [Note Title]
>
> [Note content here]
>
> ---
>
> I'll help you think through this. Are we continuing an existing thread, or starting fresh?

Then use the Task tool with `subagent_type: "thinking-partner"` to begin the session, passing the note content as context.

### For @write

Present the note content, then transition to writing_critic behavior:

> **Imported from Apple Notes:** [Note Title]
>
> [Note content here]
>
> ---
>
> I'll help review this writing. What's the intended audience and purpose?

Then use the Task tool with `subagent_type: "writing_critic"` to begin the review, passing the note content as context.

## Important Notes

- **Read-only on Notes**: This skill never modifies or deletes notes from Apple Notes
- **Manifest tracking**: Imported notes are tracked locally to avoid re-processing
- **macOS only**: Uses AppleScript which is only available on macOS
- **iCloud account only**: Only reads from the iCloud Notes account, not Gmail/Exchange
- **First run**: The first time you run this, macOS will prompt to grant Terminal permission to control Notes - approve this to proceed

## Example Session

```
User: /apple-notes-import

Claude: Checking Claude Inbox in iCloud Notes...

Found 3 notes:

NEW:
1. "Product Strategy Ideas" - @thinking

ALREADY IMPORTED:
2. "Draft Blog Post" - @write (imported 2026-01-18)
3. "Meeting Notes" - (no tags) (imported 2026-01-17)

Which note would you like to process?

User: 1

Claude: **Imported from Apple Notes:** Product Strategy Ideas

We should consider three main approaches for the Q2 launch:
1. Focus on enterprise features
2. Double down on developer experience
3. Hybrid approach with modular pricing

Each has tradeoffs I want to think through carefully.

---

I'll help you think through this. Are we continuing an existing thread, or starting fresh?

[After processing, manifest is updated to record this import]
```

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [GregTheGreek](https://github.com/GregTheGreek)
- **Source:** [GregTheGreek/claude-obsidian](https://github.com/GregTheGreek/claude-obsidian)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-gregthegreek-claude-obsidian-apple-notes-import
- Seller: https://agentstack.voostack.com/s/gregthegreek
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
