altic-studio

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Altic Studio

Altic Studio

altic-studio
provides two automation modes:
  1. AppleScript mode for macOS apps and system actions
  2. MCP CDP mode for Google Chrome browser control
  3. MCP file mode for safe Finder and filesystem operations
  4. MCP clipboard mode for text, file, and image pasteboard operations
  5. MCP window/workspace mode for arranging macOS apps and windows
It also includes Swift utility scripts for active-display screenshots, clipboard file/image operations, and window/workspace management on macOS.
altic-studio
提供两种自动化模式:
  1. 适用于macOS应用和系统操作的AppleScript模式
  2. 用于Google Chrome浏览器控制的MCP CDP模式
  3. 用于安全执行Finder和文件系统操作的MCP文件模式
  4. 用于文本、文件和图片剪贴板操作的MCP剪贴板模式
  5. 用于排列macOS应用和窗口的MCP窗口/工作区模式
它还包含Swift实用脚本,用于macOS上的活动显示器截图、剪贴板文件/图片操作以及窗口/工作区管理。

Mode A: AppleScript (macOS apps)

模式A:AppleScript(macOS应用)

  • Always execute AppleScript through Bash with
    osascript
    .
  • Always run from workspace root as the working directory.
  • Quote script paths and arguments.
  • Prefer direct script invocation; do not route through Python wrappers unless explicitly requested.
Command templates:
bash
osascript "skills/altic-studio/scripts/<script>.applescript" [arg1] [arg2] ...
  • 始终通过Bash使用
    osascript
    执行AppleScript。
  • 始终以工作区根目录作为工作目录运行。
  • 对脚本路径和参数添加引号。
  • 优先直接调用脚本;除非明确要求,否则不要通过Python包装器路由。
命令模板:
bash
osascript "skills/altic-studio/scripts/<script>.applescript" [arg1] [arg2] ...

AppleScript Capabilities

AppleScript功能

The full Altic automation surface is exposed as scripts under
skills/altic-studio/scripts
:
  • open-application.applescript
    - args:
    <app_name>
  • send-message.applescript
    - args:
    <phone_or_handle> <message>
  • messages-manager.applescript
    - args:
    <list_chats|send_file> ...
  • read-recent-messages.applescript
    - args:
    <phone_or_handle> <count>
  • fetch-all-contacts.applescript
    - args: none
  • contacts-manager.applescript
    - args:
    <get|create|update> ...
  • set-reminder.applescript
    - args:
    <text> <YYYY-MM-DD HH:MM> [list_name]
  • reminders-manager.applescript
    - args:
    <list_lists|list|search|complete|delete|reschedule|update|show> ...
  • create-note.applescript
    - args:
    <title> <body> [folder]
  • search-for-note.applescript
    - args:
    <query> [max_results]
  • notes-manager.applescript
    - args:
    <list_folders|list|get|append|update|delete|move> ...
  • create-calendar-event.applescript
    - args:
    <title> <YYYY-MM-DD HH:MM> <duration_minutes> [calendar]
  • list-all-calendar-events-for-day.applescript
    - args:
    <YYYY-MM-DD>
  • calendar-manager.applescript
    - args:
    <list_calendars|list|search|update|delete|availability|create_recurring> ...
  • open-safari-tab.applescript
    - args:
    [url]
  • close-safari-tab.applescript
    - args:
    [tab_index|-1]
  • get-safari-tabs.applescript
    - args: none
  • switch-safari-tab.applescript
    - args:
    <tab_index>
  • run-safari-javascript.applescript
    - args:
    <javascript_code>
  • navigate-safari.applescript
    - args:
    <url>
  • reload-safari-page.applescript
    - args: none
  • safari-go-back.applescript
    - args: none
  • safari-go-forward.applescript
    - args: none
  • open-safari-window.applescript
    - args:
    [url]
  • close-safari-window.applescript
    - args: none
  • get-safari-page-info.applescript
    - args: none
  • decrease-brightness.applescript
    - args:
    [amount_0_to_1]
  • increase-brightness.applescript
    - args:
    [amount_0_to_1]
  • turn-up-volume.applescript
    - args:
    [amount_0_to_100]
  • turn-down-volume.applescript
    - args:
    [amount_0_to_100]
  • capture-screenshot.applescript
    - args:
    [output_path] [full|interactive|window]
  • capture-active-screen.swift
    - args:
    <output_path>
    (captures full display containing frontmost app)
  • clipboard.swift
    - subcommands:
    get-files
    ,
    set-files <paths...>
    ,
    save-image <output_path>
    ,
    set-image <image_path>
  • window-manager.swift
    - subcommands:
    get_frontmost_app
    ,
    list_windows
    ,
    focus_window
    ,
    move_window
    ,
    resize_window
    ,
    center_window
    ,
    tile_windows
    ,
    minimize
    ,
    hide_app
    ,
    quit_app
Swift command template (for active-display screenshots):
bash
swift "skills/altic-studio/scripts/capture-active-screen.swift" "/tmp/active-screen.png"
Swift command template (for window management):
bash
swift "skills/altic-studio/scripts/window-manager.swift" "list_windows" '{"include_minimized":false}'
完整的Altic自动化功能以脚本形式暴露在
skills/altic-studio/scripts
目录下:
  • open-application.applescript
    - 参数:
    <app_name>
  • send-message.applescript
    - 参数:
    <phone_or_handle> <message>
  • messages-manager.applescript
    - 参数:
    <list_chats|send_file> ...
  • read-recent-messages.applescript
    - 参数:
    <phone_or_handle> <count>
  • fetch-all-contacts.applescript
    - 参数:无
  • contacts-manager.applescript
    - 参数:
    <get|create|update> ...
  • set-reminder.applescript
    - 参数:
    <text> <YYYY-MM-DD HH:MM> [list_name]
  • reminders-manager.applescript
    - 参数:
    <list_lists|list|search|complete|delete|reschedule|update|show> ...
  • create-note.applescript
    - 参数:
    <title> <body> [folder]
  • search-for-note.applescript
    - 参数:
    <query> [max_results]
  • notes-manager.applescript
    - 参数:
    <list_folders|list|get|append|update|delete|move> ...
  • create-calendar-event.applescript
    - 参数:
    <title> <YYYY-MM-DD HH:MM> <duration_minutes> [calendar]
  • list-all-calendar-events-for-day.applescript
    - 参数:
    <YYYY-MM-DD>
  • calendar-manager.applescript
    - 参数:
    <list_calendars|list|search|update|delete|availability|create_recurring> ...
  • open-safari-tab.applescript
    - 参数:
    [url]
  • close-safari-tab.applescript
    - 参数:
    [tab_index|-1]
  • get-safari-tabs.applescript
    - 参数:无
  • switch-safari-tab.applescript
    - 参数:
    <tab_index>
  • run-safari-javascript.applescript
    - 参数:
    <javascript_code>
  • navigate-safari.applescript
    - 参数:
    <url>
  • reload-safari-page.applescript
    - 参数:无
  • safari-go-back.applescript
    - 参数:无
  • safari-go-forward.applescript
    - 参数:无
  • open-safari-window.applescript
    - 参数:
    [url]
  • close-safari-window.applescript
    - 参数:无
  • get-safari-page-info.applescript
    - 参数:无
  • decrease-brightness.applescript
    - 参数:
    [amount_0_to_1]
  • increase-brightness.applescript
    - 参数:
    [amount_0_to_1]
  • turn-up-volume.applescript
    - 参数:
    [amount_0_to_100]
  • turn-down-volume.applescript
    - 参数:
    [amount_0_to_100]
  • capture-screenshot.applescript
    - 参数:
    [output_path] [full|interactive|window]
  • capture-active-screen.swift
    - 参数:
    <output_path>
    (捕获包含最前端应用的完整显示器内容)
  • clipboard.swift
    - 子命令:
    get-files
    ,
    set-files <paths...>
    ,
    save-image <output_path>
    ,
    set-image <image_path>
  • window-manager.swift
    - 子命令:
    get_frontmost_app
    ,
    list_windows
    ,
    focus_window
    ,
    move_window
    ,
    resize_window
    ,
    center_window
    ,
    tile_windows
    ,
    minimize
    ,
    hide_app
    ,
    quit_app
Swift命令模板(用于活动显示器截图):
bash
swift "skills/altic-studio/scripts/capture-active-screen.swift" "/tmp/active-screen.png"
Swift命令模板(用于窗口管理):
bash
swift "skills/altic-studio/scripts/window-manager.swift" "list_windows" '{"include_minimized":false}'

Mode B: Reminders, Calendar, And Notes (MCP)

模式B:提醒事项、日历和备忘录(MCP)

Use MCP tools for structured Messages, Contacts, Reminders, Calendar, and Notes workflows. These newer tools return JSON envelopes with
ok
,
action
,
data
, and
error
. Delete tools default to
dry_run=true
; only delete after explicit user confirmation.
Available Messages tools:
  • list_chats
    - args:
    [limit]
  • send_file_message
    - args:
    <recipient> <path> [message] [recipient_type]
Available Contacts tools:
  • get_contact
    - args:
    <identifier>
  • create_contact
    - args:
    <first_name> <last_name> [organization] [phone] [email] [note]
  • update_contact
    - args:
    <identifier> [first_name] [last_name] [organization] [phone] [email] [note]
Available Reminders tools:
  • list_reminder_lists
    - args: none
  • list_reminders
    - args:
    [list_name] [include_completed]
  • search_reminders
    - args:
    <query> [list_name] [include_completed]
  • complete_reminder
    - args:
    <identifier> [list_name]
  • delete_reminder
    - args:
    <identifier> [list_name] [dry_run]
  • reschedule_reminder
    - args:
    <identifier> <YYYY-MM-DD HH:MM> [list_name]
  • update_reminder
    - args:
    <identifier> [list_name] [name] [body] [datetime] [completed] [priority] [flagged]
  • show_reminder
    - args:
    <identifier> [list_name]
Available Calendar tools:
  • list_calendars
    - args: none
  • list_calendar_events
    - args:
    <start_date> <end_date> [calendar_name]
  • search_calendar_events
    - args:
    <query> [start_date] [end_date] [calendar_name]
  • update_calendar_event
    - args:
    <identifier> [title] [start_datetime] [duration_minutes] [calendar_name] [location] [notes_text]
  • delete_calendar_event
    - args:
    <identifier> [start_date] [end_date] [calendar_name] [dry_run]
  • check_calendar_availability
    - args:
    <start_datetime> <duration_minutes> [calendar_name]
  • create_recurring_event
    - args:
    <title> <start_datetime> <duration_minutes> <frequency> [interval] [count] [until_date] [calendar_name] [location] [notes_text]
Available Notes tools:
  • list_note_folders
    - args: none
  • list_notes
    - args:
    [folder] [max_results]
  • get_note
    - args:
    <identifier>
  • append_to_note
    - args:
    <identifier> <body>
  • update_note
    - args:
    <identifier> <body>
  • delete_note
    - args:
    <identifier> [dry_run]
  • move_note
    - args:
    <identifier> <folder>
Workflow rules:
  • Call list/search tools before mutating when the target is ambiguous.
  • Treat
    identifier
    as either an app-provided id or an exact title/name match.
  • If a mutation returns multiple matches, ask the user to disambiguate.
  • Keep destructive actions in dry-run mode until the user explicitly confirms.
  • Validate dates before calling tools: dates use
    YYYY-MM-DD
    , date-times use
    YYYY-MM-DD HH:MM
    .
  • For
    send_file_message
    , prefer
    recipient_type="chat"
    after
    list_chats
    when continuing an existing group thread; use
    recipient_type="handle"
    for a direct phone number or email handle.
使用MCP工具实现结构化的信息、联系人、提醒事项、日历和备忘录工作流。这些较新的工具返回包含
ok
action
data
error
的JSON数据包。删除工具默认
dry_run=true
;仅在用户明确确认后执行删除操作。
可用的信息工具:
  • list_chats
    - 参数:
    [limit]
  • send_file_message
    - 参数:
    <recipient> <path> [message] [recipient_type]
可用的联系人工具:
  • get_contact
    - 参数:
    <identifier>
  • create_contact
    - 参数:
    <first_name> <last_name> [organization] [phone] [email] [note]
  • update_contact
    - 参数:
    <identifier> [first_name] [last_name] [organization] [phone] [email] [note]
可用的提醒事项工具:
  • list_reminder_lists
    - 参数:无
  • list_reminders
    - 参数:
    [list_name] [include_completed]
  • search_reminders
    - 参数:
    <query> [list_name] [include_completed]
  • complete_reminder
    - 参数:
    <identifier> [list_name]
  • delete_reminder
    - 参数:
    <identifier> [list_name] [dry_run]
  • reschedule_reminder
    - 参数:
    <identifier> <YYYY-MM-DD HH:MM> [list_name]
  • update_reminder
    - 参数:
    <identifier> [list_name] [name] [body] [datetime] [completed] [priority] [flagged]
  • show_reminder
    - 参数:
    <identifier> [list_name]
可用的日历工具:
  • list_calendars
    - 参数:无
  • list_calendar_events
    - 参数:
    <start_date> <end_date> [calendar_name]
  • search_calendar_events
    - 参数:
    <query> [start_date] [end_date] [calendar_name]
  • update_calendar_event
    - 参数:
    <identifier> [title] [start_datetime] [duration_minutes] [calendar_name] [location] [notes_text]
  • delete_calendar_event
    - 参数:
    <identifier> [start_date] [end_date] [calendar_name] [dry_run]
  • check_calendar_availability
    - 参数:
    <start_datetime> <duration_minutes> [calendar_name]
  • create_recurring_event
    - 参数:
    <title> <start_datetime> <duration_minutes> <frequency> [interval] [count] [until_date] [calendar_name] [location] [notes_text]
可用的备忘录工具:
  • list_note_folders
    - 参数:无
  • list_notes
    - 参数:
    [folder] [max_results]
  • get_note
    - 参数:
    <identifier>
  • append_to_note
    - 参数:
    <identifier> <body>
  • update_note
    - 参数:
    <identifier> <body>
  • delete_note
    - 参数:
    <identifier> [dry_run]
  • move_note
    - 参数:
    <identifier> <folder>
工作流规则:
  • 当目标不明确时,在执行变更操作前先调用列表/搜索工具。
  • identifier
    视为应用提供的ID或精确的标题/名称匹配。
  • 如果变更操作返回多个匹配结果,请用户明确指定目标。
  • 在用户明确确认前,破坏性操作保持试运行模式。
  • 在调用工具前验证日期格式:日期使用
    YYYY-MM-DD
    ,日期时间使用
    YYYY-MM-DD HH:MM
  • 对于
    send_file_message
    ,当继续现有群组对话时,在
    list_chats
    之后优先使用
    recipient_type="chat"
    ;对于直接电话号码或邮箱账号,使用
    recipient_type="handle"

Mode C: Chrome Browser Control (MCP CDP)

模式C:Chrome浏览器控制(MCP CDP)

Use MCP tools for deterministic Chrome automation:
  • chrome_open_session
  • chrome_navigate
  • chrome_wait_for
  • chrome_click
  • chrome_type
  • chrome_extract
  • chrome_screenshot
  • chrome_close_session
  • chrome_list_sessions
  • capture_active_screen
Execution pattern:
  1. Open a Chrome session.
  2. Navigate and wait for stable selectors.
  3. Interact with click and type actions.
  4. Verify state with extraction.
  5. Capture screenshots on checkpoints or failures.
  6. Close session.
使用MCP工具实现确定性的Chrome自动化:
  • chrome_open_session
  • chrome_navigate
  • chrome_wait_for
  • chrome_click
  • chrome_type
  • chrome_extract
  • chrome_screenshot
  • chrome_close_session
  • chrome_list_sessions
  • capture_active_screen
执行流程:
  1. 打开Chrome会话。
  2. 导航并等待选择器稳定。
  3. 通过点击和输入操作进行交互。
  4. 通过提取操作验证状态。
  5. 在检查点或失败时捕获截图。
  6. 关闭会话。

Mode D: File Finder and File Operations (MCP)

模式D:文件查找和文件操作(MCP)

Use MCP file tools instead of shell commands when the user asks to find, inspect, copy, move, rename, reveal, or trash files. These tools return JSON for successful lookups and operations, and
Error: ...
strings for failures.
Available tools:
  • find_files
    - args:
    <query> [root] [max_results] [include_hidden] [kind]
  • list_directory
    - args:
    <path> [include_hidden] [max_results]
  • get_file_info
    - args:
    <path>
  • copy_file
    - args:
    <source> <destination> [overwrite] [dry_run]
  • copy_directory
    - args:
    <source> <destination> [overwrite] [dry_run]
  • move_file
    - args:
    <source> <destination> [overwrite] [dry_run]
  • rename_file
    - args:
    <path> <new_name> [overwrite] [dry_run]
  • trash_file
    - args:
    <path> [dry_run]
  • reveal_in_finder
    - args:
    <path>
  • get_finder_selection
    - args: none
File workflow rules:
  • If the user refers to selected files, the current Finder window, or "this file", call
    get_finder_selection
    first.
  • For ambiguous file names, call
    find_files
    , then
    get_file_info
    ; ask for disambiguation when multiple plausible matches remain.
  • Prefer
    dry_run=true
    before
    copy_file
    ,
    copy_directory
    ,
    move_file
    ,
    rename_file
    , or
    trash_file
    when the target or destination is ambiguous.
  • Do not overwrite unless the user explicitly asks for replacement; default
    overwrite=false
    .
  • Use
    trash_file
    , not permanent deletion.
  • Use
    reveal_in_finder
    after file operations when the user wants to see the result in Finder.
当用户要求查找、检查、复制、移动、重命名、显示或删除文件时,使用MCP文件工具而非shell命令。这些工具在查找和操作成功时返回JSON,失败时返回
Error: ...
字符串。
可用工具:
  • find_files
    - 参数:
    <query> [root] [max_results] [include_hidden] [kind]
  • list_directory
    - 参数:
    <path> [include_hidden] [max_results]
  • get_file_info
    - 参数:
    <path>
  • copy_file
    - 参数:
    <source> <destination> [overwrite] [dry_run]
  • copy_directory
    - 参数:
    <source> <destination> [overwrite] [dry_run]
  • move_file
    - 参数:
    <source> <destination> [overwrite] [dry_run]
  • rename_file
    - 参数:
    <path> <new_name> [overwrite] [dry_run]
  • trash_file
    - 参数:
    <path> [dry_run]
  • reveal_in_finder
    - 参数:
    <path>
  • get_finder_selection
    - 参数:无
文件工作流规则:
  • 如果用户提及选中的文件、当前Finder窗口或“此文件”,先调用
    get_finder_selection
  • 对于模糊的文件名,先调用
    find_files
    ,再调用
    get_file_info
    ;当存在多个合理匹配结果时,请用户明确指定。
  • 当目标或目的地不明确时,在执行
    copy_file
    copy_directory
    move_file
    rename_file
    trash_file
    前优先设置
    dry_run=true
  • 除非用户明确要求替换,否则不要覆盖文件;默认
    overwrite=false
  • 使用
    trash_file
    而非永久删除。
  • 当用户希望在Finder中查看操作结果时,在文件操作后调用
    reveal_in_finder

Mode E: Clipboard Operations (MCP)

模式E:剪贴板操作(MCP)

Use MCP clipboard tools instead of shell commands when the user asks to inspect, copy, paste, clear, or save clipboard contents. These tools return JSON for text and file operations,
Error: ...
strings for failures, and image content for saved clipboard images.
Available tools:
  • get_clipboard_text
    - args:
    [max_chars]
  • set_clipboard_text
    - args:
    <text>
  • clear_clipboard
    - args: none
  • get_clipboard_files
    - args: none
  • set_clipboard_files
    - args:
    <paths>
  • save_clipboard_image
    - args:
    [output_path]
  • set_clipboard_image
    - args:
    <path>
Clipboard workflow rules:
  • Ask before overwriting clipboard contents unless the user explicitly asks to copy, set, clear, or replace the clipboard.
  • Use
    get_clipboard_text
    first when the user asks what text is currently copied.
  • Use
    get_clipboard_files
    when the user says they copied files in Finder or wants to paste copied files somewhere else.
  • Use
    save_clipboard_image
    when the user wants to inspect, store, or transform an image currently on the clipboard.
  • Use
    set_clipboard_files
    with existing paths only; resolve ambiguous file names with
    find_files
    before changing the clipboard.
  • Use
    set_clipboard_image
    only for existing image files.
当用户要求检查、复制、粘贴、清除或保存剪贴板内容时,使用MCP剪贴板工具而非shell命令。这些工具在文本和文件操作成功时返回JSON,失败时返回
Error: ...
字符串,保存剪贴板图片时返回图片内容。
可用工具:
  • get_clipboard_text
    - 参数:
    [max_chars]
  • set_clipboard_text
    - 参数:
    <text>
  • clear_clipboard
    - 参数:无
  • get_clipboard_files
    - 参数:无
  • set_clipboard_files
    - 参数:
    <paths>
  • save_clipboard_image
    - 参数:
    [output_path]
  • set_clipboard_image
    - 参数:
    <path>
剪贴板工作流规则:
  • 除非用户明确要求复制、设置、清除或替换剪贴板,否则在覆盖剪贴板内容前先询问用户。
  • 当用户询问当前复制的文本内容时,先调用
    get_clipboard_text
  • 当用户表示已在Finder中复制文件或想要将复制的文件粘贴到其他位置时,调用
    get_clipboard_files
  • 当用户想要检查、存储或转换当前剪贴板中的图片时,调用
    save_clipboard_image
  • set_clipboard_files
    仅使用现有路径;在更改剪贴板前,通过
    find_files
    解析模糊的文件名。
  • set_clipboard_image
    仅用于现有图片文件。

Mode F: Window and Workspace Operations (MCP)

模式F:窗口和工作区操作(MCP)

Use MCP window tools when the user asks to arrange the workspace, focus an app or window, tile apps side by side, resize windows, minimize windows, hide apps, quit apps, or inspect the frontmost app. These tools return JSON for successful operations and
Error: ...
strings for failures.
Available tools:
  • get_frontmost_app
    - args: none
  • list_windows
    - args:
    [app_name] [include_minimized]
  • focus_window
    - args:
    [app_name] [window_id] [window_index]
  • move_window
    - args:
    <x> <y> [app_name] [window_id] [window_index] [display_index]
  • resize_window
    - args:
    <width> <height> [app_name] [window_id] [window_index] [display_index]
  • center_window
    - args:
    [app_name] [window_id] [window_index] [display_index] [width] [height]
  • tile_windows
    - args:
    [layout=columns|rows|grid] [app_names] [display_index] [padding]
  • minimize
    - args:
    [app_name] [window_id] [window_index]
  • hide_app
    - args:
    <app_name>
  • quit_app
    - args:
    <app_name>
Window workflow rules:
  • Call
    list_windows
    before moving, resizing, minimizing, or focusing when the target app has multiple windows or the target is ambiguous.
  • Prefer
    app_name
    for user-facing workflows and
    window_id
    for precise follow-up operations after
    list_windows
    .
  • Use
    display_index
    when arranging windows on a specific display; otherwise tools choose the display containing the target window.
  • Use
    tile_windows
    with explicit
    app_names
    when preparing a multi-app task.
  • Do not call
    quit_app
    unless the user explicitly asked to close or quit that app.
  • If a window mutation fails with an Accessibility error, tell the user to grant Accessibility permission to the host app running the MCP server.
当用户要求整理工作区、聚焦应用或窗口、并排平铺应用、调整窗口大小、最小化窗口、隐藏应用、退出应用或检查最前端应用时,使用MCP窗口工具。这些工具在操作成功时返回JSON,失败时返回
Error: ...
字符串。
可用工具:
  • get_frontmost_app
    - 参数:无
  • list_windows
    - 参数:
    [app_name] [include_minimized]
  • focus_window
    - 参数:
    [app_name] [window_id] [window_index]
  • move_window
    - 参数:
    <x> <y> [app_name] [window_id] [window_index] [display_index]
  • resize_window
    - 参数:
    <width> <height> [app_name] [window_id] [window_index] [display_index]
  • center_window
    - 参数:
    [app_name] [window_id] [window_index] [display_index] [width] [height]
  • tile_windows
    - 参数:
    [layout=columns|rows|grid] [app_names] [display_index] [padding]
  • minimize
    - 参数:
    [app_name] [window_id] [window_index]
  • hide_app
    - 参数:
    <app_name>
  • quit_app
    - 参数:
    <app_name>
窗口工作流规则:
  • 当目标应用有多个窗口或目标不明确时,在执行移动、调整大小、最小化或聚焦操作前先调用
    list_windows
  • 面向用户的工作流优先使用
    app_name
    ,在
    list_windows
    之后的精确后续操作中使用
    window_id
  • 在特定显示器上排列窗口时使用
    display_index
    ;否则工具会选择包含目标窗口的显示器。
  • 准备多应用任务时,使用带有明确
    app_names
    tile_windows
  • 除非用户明确要求关闭或退出该应用,否则不要调用
    quit_app
  • 如果窗口变更操作因辅助功能错误失败,请告知用户向运行MCP服务器的宿主应用授予辅助功能权限。

Operational Rules

操作规则

  • Validate date/time format before running reminder/calendar scripts.
  • If contact lookup returns multiple options, ask for disambiguation before sending.
  • If script output indicates permission issues, report exact permissions to enable.
  • Prefer explicit CSS selectors and call
    chrome_wait_for
    before click/type on dynamic pages.
  • After mutating actions in Chrome, verify expected page state with
    chrome_extract
    .
  • For file mutations, verify the target with
    get_file_info
    or
    list_directory
    after the operation when the user needs confirmation.
  • For clipboard mutations, verify with
    get_clipboard_text
    ,
    get_clipboard_files
    , or
    save_clipboard_image
    when the user needs confirmation.
  • For window mutations, verify with
    list_windows
    when the user needs confirmation.
  • 在运行提醒事项/日历脚本前验证日期/时间格式。
  • 如果联系人查找返回多个选项,在发送前请用户明确指定。
  • 如果脚本输出显示权限问题,告知用户需要启用的具体权限。
  • 优先使用明确的CSS选择器,在动态页面上执行点击/输入操作前调用
    chrome_wait_for
  • 在Chrome中执行变更操作后,通过
    chrome_extract
    验证预期页面状态。
  • 对于文件变更操作,当用户需要确认时,在操作后通过
    get_file_info
    list_directory
    验证目标。
  • 对于剪贴板变更操作,当用户需要确认时,通过
    get_clipboard_text
    get_clipboard_files
    save_clipboard_image
    验证。
  • 对于窗口变更操作,当用户需要确认时,通过
    list_windows
    验证。

Permissions Checklist

权限清单

  • Contacts access
  • Calendars access
  • Reminders access
  • Automation permission for app control
  • Accessibility permission for system controls and window management
  • Screen Recording permission for screenshots and improved window discovery
  • Safari setting: Allow JavaScript from Apple Events
  • Google Chrome installed for CDP tools
  • Full Disk Access for reading Messages database
  • Automation permission for Finder when revealing, trashing, or reading selection
  • 联系人访问权限
  • 日历访问权限
  • 提醒事项访问权限
  • 应用控制自动化权限
  • 系统控制和窗口管理辅助功能权限
  • 截图和窗口识别优化的屏幕录制权限
  • Safari设置:允许来自Apple Events的JavaScript
  • 安装Google Chrome以使用CDP工具
  • 读取信息数据库的全盘访问权限
  • 显示、删除或读取选中内容时的Finder自动化权限