name: altic-studio description: macOS automation skill for AppleScript actions and Chrome browser control via MCP CDP tools. license: Apache-2.0
Altic Studio
altic-studio provides two automation modes:
- AppleScript mode for macOS apps and system actions
- MCP CDP mode for Google Chrome browser control
- MCP file mode for safe Finder and filesystem operations
- MCP clipboard mode for text, file, and image pasteboard operations
- 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.
Mode A: AppleScript (macOS apps)
- 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:
osascript "skills/altic-studio/scripts/<script>.applescript" [arg1] [arg2] ...
AppleScript Capabilities
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>read-recent-messages.applescript- args:<phone_or_handle> <count>fetch-all-contacts.applescript- args: noneset-reminder.applescript- args:<text> <YYYY-MM-DD HH:MM> [list_name]create-note.applescript- args:<title> <body> [folder]search-for-note.applescript- args:<query> [max_results]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>open-safari-tab.applescript- args:[url]close-safari-tab.applescript- args:[tab_index|-1]get-safari-tabs.applescript- args: noneswitch-safari-tab.applescript- args:<tab_index>run-safari-javascript.applescript- args:<javascript_code>navigate-safari.applescript- args:<url>reload-safari-page.applescript- args: nonesafari-go-back.applescript- args: nonesafari-go-forward.applescript- args: noneopen-safari-window.applescript- args:[url]close-safari-window.applescript- args: noneget-safari-page-info.applescript- args: nonedecrease-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):
swift "skills/altic-studio/scripts/capture-active-screen.swift" "/tmp/active-screen.png"
Swift command template (for window management):
swift "skills/altic-studio/scripts/window-manager.swift" "list_windows" '{"include_minimized":false}'
Mode B: Chrome Browser Control (MCP CDP)
Use MCP tools for deterministic Chrome automation:
chrome_open_sessionchrome_navigatechrome_wait_forchrome_clickchrome_typechrome_extractchrome_screenshotchrome_close_sessionchrome_list_sessionscapture_active_screen
Execution pattern:
- Open a Chrome session.
- Navigate and wait for stable selectors.
- Interact with click and type actions.
- Verify state with extraction.
- Capture screenshots on checkpoints or failures.
- Close session.
Mode C: File Finder and File Operations (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_selectionfirst. - For ambiguous file names, call
find_files, thenget_file_info; ask for disambiguation when multiple plausible matches remain. - Prefer
dry_run=truebeforecopy_file,copy_directory,move_file,rename_file, ortrash_filewhen 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_finderafter file operations when the user wants to see the result in Finder.
Mode D: Clipboard Operations (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: noneget_clipboard_files- args: noneset_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_textfirst when the user asks what text is currently copied. - Use
get_clipboard_fileswhen the user says they copied files in Finder or wants to paste copied files somewhere else. - Use
save_clipboard_imagewhen the user wants to inspect, store, or transform an image currently on the clipboard. - Use
set_clipboard_fileswith existing paths only; resolve ambiguous file names withfind_filesbefore changing the clipboard. - Use
set_clipboard_imageonly for existing image files.
Mode E: Window and Workspace Operations (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: nonelist_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_windowsbefore moving, resizing, minimizing, or focusing when the target app has multiple windows or the target is ambiguous. - Prefer
app_namefor user-facing workflows andwindow_idfor precise follow-up operations afterlist_windows. - Use
display_indexwhen arranging windows on a specific display; otherwise tools choose the display containing the target window. - Use
tile_windowswith explicitapp_nameswhen preparing a multi-app task. - Do not call
quit_appunless 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.
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_forbefore 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_infoorlist_directoryafter the operation when the user needs confirmation. - For clipboard mutations, verify with
get_clipboard_text,get_clipboard_files, orsave_clipboard_imagewhen the user needs confirmation. - For window mutations, verify with
list_windowswhen the user needs confirmation.
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