mcpField
A
altic-studio

altic-studio

github.com/altic-dev生産性177145 回インストール15 週間前に更新
リポジトリ

altic-studio について

altic-studioは、AppleScript、Swiftスクリプト、MCPツールでmacOSアプリ、ファイル、ブラウザー、クリップボード、ウィンドウを操作する自動化スキルです。一般的なシステム操作を構造化されたワークフローで扱います。

主な機能

  1. 01AppleScriptによるmacOSアプリの自動化
  2. 02MCPによるリマインダー、カレンダー、メモの操作
  3. 03MCP CDPによるChrome制御
  4. 04Finderとファイルシステムの操作
  5. 05クリップボードとウィンドウの管理
  6. 06Swiftによるスクリーンショットとユーティリティ

活用シーン

  1. 01連絡先、リマインダー、メモ、予定の管理
  2. 02Chromeでのページ移動と操作の自動化
  3. 03Finderでのファイル検索、移動、確認
  4. 04ウィンドウの配置とアクティブ画面の撮影

MCP 対応

メッセージ、連絡先、リマインダー、カレンダー、メモ、Chrome、ファイル、クリップボード、ウィンドウを操作するMCPツールを提供します。Chromeの自動化にはMCP CDPを使用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/altic-dev/altic-mcp --skill altic-studio

インストール後、Claude Code で/altic-studioを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
calendar-manager.applescript
capture-active-screen.swift
capture-screenshot.applescript
clipboard.swift
close-safari-tab.applescript
close-safari-window.applescript
contacts-manager.applescript
create-calendar-event.applescript
create-note.applescript
decrease-brightness.applescript
fetch-all-contacts.applescript
get-safari-page-info.applescript
get-safari-tabs.applescript
increase-brightness.applescript
list-all-calendar-events-for-day.applescript
messages-manager.applescript
navigate-safari.applescript
notes-manager.applescript
open-application.applescript
open-safari-tab.applescript
open-safari-window.applescript
read-recent-messages.applescript
README.md
reload-safari-page.applescript
reminders-manager.applescript
run-safari-javascript.applescript
safari-go-back.applescript
safari-go-forward.applescript
search-for-note.applescript
send-message.applescript

詳細

Altic Studio

altic-studio には、次の 2 つの自動化モードがあります。

  1. macOS アプリとシステム操作向けの AppleScript モード
  2. Google Chrome のブラウザー制御向けの MCP CDP モード
  3. Finder とファイルシステムを安全に操作する MCP ファイルモード
  4. テキスト、ファイル、画像のペーストボード操作向けの MCP クリップボードモード
  5. macOS アプリとウィンドウを配置する MCP ウィンドウ/ワークスペースモード

また、macOS でアクティブディスプレイのスクリーンショットを撮影する Swift ユーティリティスクリプトや、クリップボードのファイル/画像操作、ウィンドウ/ワークスペース管理用のスクリプトも含まれています。

モード A:AppleScript(macOS アプリ)

  • AppleScript は必ず Bash 経由で osascript を使用して実行してください。
  • 必ずワークスペースのルートを作業ディレクトリとして実行してください。
  • スクリプトのパスと引数は引用符で囲んでください。
  • 直接スクリプトを呼び出す方法を優先し、明示的に求められない限り Python ラッパー経由で実行しないでください。

コマンドテンプレート:

osascript "skills/altic-studio/scripts/<script>.applescript" [arg1] [arg2] ...
AppleScript の機能

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 コマンドテンプレート(アクティブディスプレイのスクリーンショット用):

swift "skills/altic-studio/scripts/capture-active-screen.swift" "/tmp/active-screen.png"

Swift コマンドテンプレート(ウィンドウ管理用):

swift "skills/altic-studio/scripts/window-manager.swift" "list_windows" '{"include_minimized":false}'

モード B:リマインダー、カレンダー、メモ(MCP)

構造化されたメッセージ、連絡先、リマインダー、カレンダー、メモのワークフローには、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>

ワークフローのルール:

  • 対象が曖昧な場合は、変更を加える前に list/search ツールを呼び出します。
  • identifier は、アプリが提供する ID または完全一致するタイトル/名前として扱います。
  • 変更処理で複数の候補が返された場合は、ユーザーに確認して対象を特定します。
  • 破壊的な操作は、ユーザーが明示的に確認するまで dry-run モードにしておきます。
  • ツールを呼び出す前に日付を検証します。日付は YYYY-MM-DD、日時は YYYY-MM-DD HH:MM を使用します。
  • send_file_message では、既存のグループスレッドを続ける場合、list_chats の後に recipient_type="chat" を優先します。電話番号またはメールアドレスのハンドルに直接送信する場合は、recipient_type="handle" を使用します。

モード C:Chrome ブラウザーの制御(MCP CDP)

決定論的な Chrome の自動化には、MCP ツールを使用します。

  • 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. セッションを閉じます。

モード D:ファイルの検索と操作(MCP)

ユーザーがファイルの検索、確認、コピー、移動、名前変更、Finder での表示、またはゴミ箱への移動を依頼した場合は、シェルコマンドではなく MCP ファイルツールを使用します。これらのツールは、検索や操作が成功すると 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 を使用します。

モード E:クリップボード操作(MCP)

ユーザーがクリップボードの内容の確認、コピー、貼り付け、消去、または保存を依頼した場合は、シェルコマンドではなく MCP クリップボードツールを使用します。これらのツールは、テキストやファイルの操作では 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 は既存の画像ファイルに対してのみ使用します。

モード F:ウィンドウとワークスペースの操作(MCP)

ユーザーがワークスペースの整理、アプリやウィンドウへのフォーカス、アプリの横並び配置、ウィンドウのサイズ変更、最小化、アプリの非表示、アプリの終了、または最前面のアプリの確認を求めた場合は、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 サーバーを実行しているホストアプリにアクセシビリティの許可を与えるようユーザーに伝えてください。

運用ルール

  • リマインダー/カレンダーのスクリプトを実行する前に、日付/時刻の形式を検証します。
  • 連絡先の検索で複数の候補が返された場合は、送信する前にどれかを確認します。
  • スクリプトの出力に権限の問題が示されている場合は、有効にすべき権限を正確に伝えます。
  • 明示的な CSS セレクターを優先し、動的なページでクリック/入力する前に chrome_wait_for を呼び出します。
  • Chrome で変更を行った後は、chrome_extract でページの状態が想定どおりか確認します。
  • ファイルを変更した場合、ユーザーが確認を必要としていれば、操作後に get_file_info または list_directory で対象を確認します。
  • クリップボードを変更した場合、ユーザーが確認を必要としていれば、get_clipboard_text、get_clipboard_files、または save_clipboard_image で確認します。
  • ウィンドウを変更した場合、ユーザーが確認を必要としていれば、list_windows で確認します。

権限チェックリスト

  • 連絡先へのアクセス
  • カレンダーへのアクセス
  • リマインダーへのアクセス
  • アプリ操作のためのオートメーション権限
  • システム操作およびウィンドウ管理のためのアクセシビリティ権限
  • スクリーンショットの撮影およびウィンドウ検出の改善のための画面収録権限
  • Safari の設定:Apple Events からの JavaScript を許可
  • CDP ツールのための Google Chrome のインストール
  • メッセージのデータベースを読み取るためのフルディスクアクセス
  • Finder で選択項目を表示、ゴミ箱に入れる、または読み取るためのオートメーション権限

コメント