macos-calendar について
シェルスクリプトで Apple Calendar のイベントを管理するスキルです。自然言語の予定依頼をイベント項目に変換し、日付、通知、繰り返しを設定できます。
主な機能
- 01利用可能なカレンダーの一覧表示
- 02時刻指定または終日のイベント作成
- 03相対日数による日付指定
- 04通知と繰り返しの設定
- 05項目の検証と操作ログ
活用シーン
- 01将来の日付に予定を登録
- 02平日の定例ミーティングを作成
- 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 | いいえ | 0 | N 分前に通知(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
重要なルール
- ユーザーがカレンダーを指定していない場合は、必ず最初にカレンダーを一覧表示します。[read-only] とマークされたカレンダーにはイベントを作成できません
- AppleScript では、ハードコードされた日付文字列を使用しないでください。必ず
offset_daysまたはiso_dateを使用します - 個人用カレンダーが複数ある場合は、カレンダー名をユーザーに確認します
- [read-only] カレンダーを指定しないでください。スクリプトはエラーで拒否します
- 繰り返しイベントの場合は、RRULE の構文について references/recurrence.md を参照します
- JSON は標準入力経由で渡します。CLI 引数として渡さないでください(プロセス一覧への情報漏えいを防ぐため)
- すべてのフィールドはスクリプトで検証されます(型の変換、範囲チェック、形式の検証)。無効な入力はエラーメッセージとともに拒否されます
- すべての操作はタイムスタンプ、コマンド、カレンダー、概要とともに
logs/calendar.logに記録されます
コメント
Markdown 対応