Skip to content

Replace memo-based Apple Notes skill with native osascript workflow - #77235

Open
lishix520 wants to merge 1 commit into
NousResearch:mainfrom
lishix520:codex/native-apple-notes-resubmit
Open

Replace memo-based Apple Notes skill with native osascript workflow#77235
lishix520 wants to merge 1 commit into
NousResearch:mainfrom
lishix520:codex/native-apple-notes-resubmit

Conversation

@lishix520

Copy link
Copy Markdown

Resubmission of #6480, which was closed (the fork it pointed at was removed). No code changes since the version previously reviewed — re-posting so review can continue.

What & why

main still requires the third-party memo CLI (brew tap antoniorodr/memo && brew install ...) in skills/apple/apple-notes/SKILL.md. This replaces it with a native macOS osascript path driven through a helper script — no brew tap, no install step, every operation noninteractive and parameterized.

Changes

  • skills/apple/apple-notes/SKILL.md — rewritten to the modern section order; description ≤60 chars, one sentence ending with a period (AGENTS.md Terminal tool #1); prose names the Hermes terminal tool as the interaction surface, with osascript behind the helper script (AGENTS.md Support passing morph snapshot id #2); author credits the human contributor first (AGENTS.md Fix terminal interactivity #4).
  • skills/apple/apple-notes/scripts/apple_notes.py — parameterized, noninteractive helper exposing list-folders, list-notes, search, read, create, append, create-folder, move. AppleScript string building is separated from osascript execution so it is unit-testable (AGENTS.md Fix VM instance sharing across tasks #6).
  • tests/skills/test_apple_notes_skill.py — 21 tests: metadata compliance, AppleScript string building/escaping, and CLI dispatch (stdlib + pytest + unittest.mock, no network).

All mutations were validated against a live Notes.app scratch folder (create → append → read → list-notes → search → move → read-in-dest), then cleaned up.

Prior review (hermes-sweeper on #6480) — all addressed

  1. description >60 chars → now 56 chars, one sentence, period. ✅
  2. osascript as the prose interaction surface → terminal is the surface; osascript is behind the helper script. ✅
  3. append / folder / move had no executable procedure → scripts/apple_notes.py provides validated, noninteractive subcommands for each. ✅
  4. author: Hermes Agent + no skill test → author credits the human first; tests/skills/test_apple_notes_skill.py added (21 tests, passing). ✅

One bug found and fixed during live validation: list-notes originally used every note of first folder whose name is F, which mis-parses in AppleScript (whose binds to the note, not the folder) and silently returns empty. Rewritten to a tell block; covered by a regression test.

Replace the third-party `memo` CLI dependency with a native macOS
`osascript` path driven through a helper script, so the skill works
without `brew tap` / `brew install memo`.

- SKILL.md: rewritten to the modern section order; description <=60 chars,
  one sentence ending with a period (AGENTS.md NousResearch#1); prose names the Hermes
  `terminal` tool as the interaction surface, not osascript (AGENTS.md NousResearch#2);
  `author` credits the human contributor first (AGENTS.md NousResearch#4)
- scripts/apple_notes.py: parameterized, noninteractive helper exposing
  list-folders, list-notes, search, read, create, append, create-folder,
  move. AppleScript string building is separated from osascript execution
  so it is unit-testable (AGENTS.md NousResearch#6)
- tests/skills/test_apple_notes_skill.py: metadata compliance, AppleScript
  string building/escaping, and CLI dispatch (stdlib + pytest + unittest.mock)
- all mutations validated against a live Notes.app scratch folder

Resubmission of NousResearch#6480 (closed); all points from the prior hermes-sweeper
review are addressed.
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have tool/skills Skills system (list, view, manage) labels Aug 3, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Related to closed predecessor #6480 and the original Apple Notes request #6478. This is an active resubmission with a native osascript helper, so it is not marked duplicate.

@GottZ GottZ left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was generated by AI during triage.

Summary

Two PRs address the Apple Notes dependency issue. Both replace the third-party memo workflow with the same native, noninteractive osascript helper, updated skill guidance, and focused tests.

Related pull requests

  • #6480 [closed] related — (+564/-59) — superseded by #77235: This closed predecessor removes the memo prerequisite and adds native read, search, create, append, folder, and move operations plus tests. It remains relevant as the reviewed source of the resubmission; its diff addresses the contributor's keep_open review by shortening the description, naming the Hermes terminal tool, adding executable helper workflows, correcting attribution, and adding the requested skill tests.
  • #77235 related — (+564/-63) — keep open with a salvage path: This active resubmission carries the same native Apple Notes helper, documentation, and tests as #6480 against a newer base, directly removing the reported third-party dependency. The concrete salvageable work is the parameterized apple_notes.py workflow and its metadata, escaping, AppleScript-builder, and CLI-dispatch tests.

Duplicates

#6480 and #77235 contain effectively the same implementation; #6480 is the closed predecessor superseded by the active resubmission #77235.

Suggested consolidation

Keep #77235 open with a salvage path focused on the native, parameterized osascript helper and its tests. Leave #6480 closed as superseded by #77235; no additional duplicate PR needs action.

Cross-PR triage: Reviewed 2 pull requests and 0 issues in this complex. Each diff was read against this issue; Assessment working set: 51 kB of PR diffs, 4 kB of issue/PR text, 3 kB of discussion (3 comments), 0 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low — cosmetic, nice to have tool/skills Skills system (list, view, manage) type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants