Replace memo-based Apple Notes skill with native osascript workflow - #77235
Replace memo-based Apple Notes skill with native osascript workflow#77235lishix520 wants to merge 1 commit into
Conversation
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.
GottZ
left a comment
There was a problem hiding this comment.
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 thememoprerequisite 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 Hermesterminaltool, 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 parameterizedapple_notes.pyworkflow 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.
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
mainstill requires the third-partymemoCLI (brew tap antoniorodr/memo && brew install ...) inskills/apple/apple-notes/SKILL.md. This replaces it with a native macOSosascriptpath driven through a helper script — nobrew 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 Hermesterminaltool as the interaction surface, withosascriptbehind the helper script (AGENTS.md Support passing morph snapshot id #2);authorcredits the human contributor first (AGENTS.md Fix terminal interactivity #4).skills/apple/apple-notes/scripts/apple_notes.py— parameterized, noninteractive helper exposinglist-folders,list-notes,search,read,create,append,create-folder,move. AppleScript string building is separated fromosascriptexecution 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
osascriptas the prose interaction surface →terminalis the surface;osascriptis behind the helper script. ✅scripts/apple_notes.pyprovides validated, noninteractive subcommands for each. ✅author: Hermes Agent+ no skill test →authorcredits the human first;tests/skills/test_apple_notes_skill.pyadded (21 tests, passing). ✅One bug found and fixed during live validation:
list-notesoriginally usedevery note of first folder whose name is F, which mis-parses in AppleScript (whosebinds to the note, not the folder) and silently returns empty. Rewritten to atellblock; covered by a regression test.