Skillshub apple-notes-ci-integration

install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-ci-integration" ~/.claude/skills/comeonoliver-skillshub-apple-notes-ci-integration && rm -rf "$T"
manifest: skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-ci-integration/SKILL.md
source content

Apple Notes CI Integration

Overview

Apple Notes automation requires macOS — use GitHub Actions macOS runners.

GitHub Actions Workflow

name: Notes Automation Tests
on: [push]

jobs:
  test:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: "20" }
      - run: npm ci
      - name: Test Notes access
        run: |
          # macOS CI runners have Notes.app but limited permissions
          osascript -l JavaScript -e "typeof Application(\"Notes\")" || echo "Notes not available in CI"
      - name: Run unit tests (mocked)
        run: npm test

Important Limitation

macOS CI runners (GitHub Actions) have restricted Apple Events permissions. Real Notes.app automation tests must run on local macOS machines. Use mocked clients in CI.

// tests/mocks/notes-client.mock.ts
export class MockAppleNotesClient {
  private notes: Array<{ id: string; title: string; body: string }> = [];

  createNote(title: string, body: string): string {
    const id = `note-${Date.now()}`;
    this.notes.push({ id, title, body });
    return id;
  }

  listNotes() { return this.notes; }
  searchNotes(q: string) { return this.notes.filter(n => n.title.includes(q)); }
}

Resources