mcpField
M
macos-calendar

macos-calendar

github.com/lucaperret生産性7344 回インストール32 週間前に更新
リポジトリ

macos-calendar について

シェルスクリプトで Apple Calendar のイベントを管理するスキルです。自然言語の予定依頼をイベント項目に変換し、日付、通知、繰り返しを設定できます。

主な機能

  1. 01利用可能なカレンダーの一覧表示
  2. 02時刻指定または終日のイベント作成
  3. 03相対日数による日付指定
  4. 04通知と繰り返しの設定
  5. 05項目の検証と操作ログ

活用シーン

  1. 01将来の日付に予定を登録
  2. 02平日の定例ミーティングを作成
  3. 03終日の休暇イベントを追加

インストール

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

$npx skills add https://github.com/lucaperret/agent-skills --skill macos-calendar

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

同梱ファイルreferences/recurrence.mdscripts/calendar.sh

詳細

macOS カレンダー

$SKILL_DIR/scripts/calendar.sh を使って、Apple Calendar のイベントを管理します。ロケールによる問題(FR/EN/DE の日付形式)を避けるため、日付の処理には相対計算(現在の日付 + N * 日)を使用します。

クイックスタート

カレンダーの一覧表示

正しいカレンダー名を確認するため、最初に必ずカレンダーを一覧表示します。

"$SKILL_DIR/scripts/calendar.sh" list-calendars
イベントの作成
echo '<json>' | "$SKILL_DIR/scripts/calendar.sh" create-event

JSON フィールド:

フィールド必須デフォルト説明
summaryはい-イベントのタイトル
calendarいいえ最初のカレンダーカレンダー名(list-calendars で取得)
descriptionいいえ""イベントのメモ
offset_daysいいえ0今日からの日数(0=今日、1=明日、7=来週)
iso_dateいいえ-絶対日付 YYYY-MM-DD(offset_days を上書き)
hourいいえ9開始時刻の時(0~23)
minuteいいえ0開始時刻の分(0~59)
duration_minutesいいえ30所要時間
alarm_minutesいいえ0N 分前に通知(0=通知なし)
all_dayいいえfalse終日イベント
recurrenceいいえ-iCal RRULE 文字列。references/recurrence.md を参照

自然言語の解釈

ユーザーのリクエストを JSON フィールドに対応付けます。

ユーザーの発言JSON
「明日の午後2時」offset_days: 1, hour: 14
「3日後」offset_days: 3
「次の月曜日の午前10時」今日から次の月曜日までの offset_days を計算し、hour: 10 を指定
「2月25日の午後3時30分」iso_date: "2026-02-25", hour: 15, minute: 30
「平日の毎朝9時」hour: 9, recurrence: "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"
「1時間前に通知して」alarm_minutes: 60
「3月1日に終日イベント」iso_date: "2026-03-01", all_day: true

「次の月曜日」「次の金曜日」などの場合は、現在の日付を使って日数のオフセットを計算します。必要に応じて date コマンドを使用してください。

# Days until next Monday (1=Monday)
target=1; today=$(date +%u); echo $(( (target - today + 7) % 7 ))

プロンプトの例

以下は実際のユーザープロンプトと、実行するコマンドです。

「2日後に歯医者へ電話するようリマインドして」

"$SKILL_DIR/scripts/calendar.sh" list-calendars

次に:

echo '{"calendar":"Personnel","summary":"Call dentist","offset_days":2,"hour":9,"duration_minutes":15,"alarm_minutes":30}' | "$SKILL_DIR/scripts/calendar.sh" create-event

「毎週火曜日の午後2時に、10分前のリマインダー付きでチームの同期ミーティングを設定して」

echo '{"calendar":"Work","summary":"Team sync","hour":14,"duration_minutes":60,"recurrence":"FREQ=WEEKLY;BYDAY=TU","alarm_minutes":10}' | "$SKILL_DIR/scripts/calendar.sh" create-event

「7月15日を休暇日に設定して」

echo '{"calendar":"Personnel","summary":"Vacances","iso_date":"2026-07-15","all_day":true}' | "$SKILL_DIR/scripts/calendar.sh" create-event

「次の木曜日の午後3時30分に診察の予約があるので、1時間前にリマインドして」

# First compute offset_days to next Thursday (4=Thursday)
target=4; today=$(date +%u); offset=$(( (target - today + 7) % 7 )); [ "$offset" -eq 0 ] && offset=7

次に:

echo "{\"calendar\":\"Personnel\",\"summary\":\"Doctor appointment\",\"offset_days\":$offset,\"hour\":15,\"minute\":30,\"duration_minutes\":60,\"alarm_minutes\":60}" | "$SKILL_DIR/scripts/calendar.sh" create-event

「今後4週間、平日の午前9時に毎日のスタンドアップを設定して」

echo '{"calendar":"Work","summary":"Daily standup","hour":9,"duration_minutes":15,"recurrence":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=20"}' | "$SKILL_DIR/scripts/calendar.sh" create-event

「隔週金曜日の午前11時に、マネージャーとの1対1ミーティングを追加して」

echo '{"calendar":"Work","summary":"1-on-1 Manager","hour":11,"duration_minutes":30,"recurrence":"FREQ=WEEKLY;INTERVAL=2;BYDAY=FR","alarm_minutes":5}' | "$SKILL_DIR/scripts/calendar.sh" create-event

重要なルール

  1. ユーザーがカレンダーを指定していない場合は、必ず最初にカレンダーを一覧表示します。[read-only] とマークされたカレンダーにはイベントを作成できません
  2. AppleScript では、ハードコードされた日付文字列を使用しないでください。必ず offset_days または iso_date を使用します
  3. 個人用カレンダーが複数ある場合は、カレンダー名をユーザーに確認します
  4. [read-only] カレンダーを指定しないでください。スクリプトはエラーで拒否します
  5. 繰り返しイベントの場合は、RRULE の構文について references/recurrence.md を参照します
  6. JSON は標準入力経由で渡します。CLI 引数として渡さないでください(プロセス一覧への情報漏えいを防ぐため)
  7. すべてのフィールドはスクリプトで検証されます(型の変換、範囲チェック、形式の検証)。無効な入力はエラーメッセージとともに拒否されます
  8. すべての操作はタイムスタンプ、コマンド、カレンダー、概要とともに logs/calendar.log に記録されます

コメント