ics-generator について
ics-generator は、自然言語による予定の説明から iCalendar RFC 5545 準拠の `.ics` ファイルを作成するスキルです。単発・繰り返し予定の作成に向けて、タイムゾーン、リマインダー、書式の扱い方を示します。
主な機能
- 01自然言語の予定情報を解析
- 02RFC 5545 準拠のカレンダーファイルを生成
- 03繰り返し予定と除外日の処理
- 04リマインダーと予定属性の追加
- 05タイムゾーンと書式の規則に対応
活用シーン
- 01会議の説明からカレンダーファイルを作成
- 02除外日を含む繰り返し予定を設定
- 03終日または複数日の予定を登録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ johnlarkin1/ claude-code-extensions --skill ics-generatorインストール後、Claude Code で/ics-generatorを入力して読み込まれたか確認します。
同梱ファイルreferences/ics-format.md
詳細
ICS カレンダーファイルジェネレーター
自然言語によるイベントの説明から、有効な .ics(iCalendar RFC 5545)ファイルを生成します。ファイルは Apple Calendar で直接開けます。
クイックスタート
最小限の有効な単一イベントファイル:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Claude//ICS Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART;TZID=America/New_York:20250115T140000
DTEND;TZID=America/New_York:20250115T150000
SUMMARY:Team Meeting
UID:[email protected]
DTSTAMP:20250115T120000Z
END:VEVENT
END:VCALENDAR
ワークフロー
- 解析:ユーザーの自然言語による説明から、タイトル、日付/時刻、所要時間、場所、繰り返し、参加者、リマインダーを解析します
- 日付表現を解決:「来週の火曜日」「今週の金曜日の午後3時」などを現在の日付を基準に解決します
- タイムゾーンのデフォルト:ユーザーが別のタイムゾーンを指定しない限り、
America/New_Yorkに設定します - UUID v4 を生成:UID フィールド用に
<uuid4>@claude.aiを生成します - DTSTAMP を設定:現在の UTC タイムスタンプに設定します
- VEVENT ブロックを作成:該当するプロパティをすべて含めます
- リマインダー用に VALARM を追加(指定がない場合のデフォルト:15 分前)
- 繰り返しイベント用に RRULE を追加
- 標準ヘッダーを含む VCALENDAR で囲みます
.icsファイルを現在の作業ディレクトリに書き込み、open <filename>.icsで開きます
デフォルト
- タイムゾーン:
America/New_York(東部時間) — イベントが明らかに別のタイムゾーンにある場合を除き、ユーザーにタイムゾーンを尋ねないでください - 自動で開く:ファイルの書き込み後、必ず
open <filename>.icsを実行します - 保存場所:現在の作業ディレクトリ
- 所要時間:指定がない場合は 1 時間
- リマインダー:指定がない場合は 15 分前
- ファイル名:イベントの概要からケバブケースで作成します。例:
team-meeting.ics
VCALENDAR ラッパー
すべての .ics ファイルは次の行で始まり、終わります:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Claude//ICS Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
<VTIMEZONE blocks>
<VEVENT blocks>
END:VCALENDAR
日付/時刻の形式
時刻指定のイベント(タイムゾーンあり)
DTSTART;TZID=America/New_York:20250115T140000
DTEND;TZID=America/New_York:20250115T150000
終日イベント(DATE のみ、時刻要素なし)
DTSTART;VALUE=DATE:20250115
DTEND;VALUE=DATE:20250116
注:終日イベントの DTEND は排他的です。1 月 15 日の単日イベントには、DTEND に 1 月 16 日を指定します。
UTC 時刻
DTSTART:20250115T190000Z
イベントプロパティ
必須
| プロパティ | 説明 | 例 |
|---|---|---|
DTSTART | 開始日時 | DTSTART;TZID=America/New_York:20250115T140000 |
DTEND または DURATION | 終了時刻または所要時間 | DTEND;TZID=America/New_York:20250115T150000 または DURATION:PT1H |
SUMMARY | イベントタイトル | SUMMARY:Team Standup |
UID | 一意の識別子 | UID:[email protected] |
DTSTAMP | 作成タイムスタンプ(UTC) | DTSTAMP:20250115T120000Z |
任意
| プロパティ | 説明 | 例 |
|---|---|---|
DESCRIPTION | イベントの詳細/メモ | DESCRIPTION:Discuss Q1 roadmap |
LOCATION | イベントの場所 | LOCATION:Conference Room A |
URL | 関連リンク | URL:https://meet.google.com/abc-defg-hij |
ORGANIZER | イベントの主催者 | ORGANIZER;CN=John:mailto:[email protected] |
ATTENDEE | 招待された人 | ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;CN=Jane:mailto:[email protected] |
STATUS | イベントのステータス | STATUS:CONFIRMED(または TENTATIVE、CANCELLED) |
TRANSP | 時間の公開状態 | TRANSP:OPAQUE(予定あり)または TRANSP:TRANSPARENT(予定なし) |
CATEGORIES | イベントのカテゴリ | CATEGORIES:MEETING,WORK |
PRIORITY | 優先度(0~9) | PRIORITY:1(1=最高、9=最低、0=未定義) |
DURATION 形式
DURATION:PT1H → 1 hour
DURATION:PT30M → 30 minutes
DURATION:PT1H30M → 1 hour 30 minutes
DURATION:P1D → 1 day
DURATION:P1W → 1 week
テキストのエスケープ
テキストプロパティ値では、次の文字をエスケープします:
- バックスラッシュ:
\\ - セミコロン:
\; - カンマ:
\, - 改行:
\n
例:
DESCRIPTION:Agenda:\n1. Review\n2. Planning\nLocation: Room 4\, Building A
リマインダー(VALARM)
VEVENT ブロック内に追加します:
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
よく使われるトリガーの時間
| 自然言語 | TRIGGER 値 |
|---|---|
| イベント開始時 | TRIGGER:PT0S |
| 5 分前 | TRIGGER:-PT5M |
| 10 分前 | TRIGGER:-PT10M |
| 15 分前 | TRIGGER:-PT15M |
| 30 分前 | TRIGGER:-PT30M |
| 1 時間前 | TRIGGER:-PT1H |
| 2 時間前 | TRIGGER:-PT2H |
| 1 日前 | TRIGGER:-P1D |
| 1 週間前 | TRIGGER:-P1W |
繰り返しイベント(RRULE)
VEVENT に RRULE プロパティを追加します:
RRULE:FREQ=WEEKLY;BYDAY=TU,TH;COUNT=10
一般的なパターン
| パターン | RRULE |
|---|---|
| 毎日 | RRULE:FREQ=DAILY |
| 平日毎日 | RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR |
| 毎週 | RRULE:FREQ=WEEKLY |
| 2週間ごと | RRULE:FREQ=WEEKLY;INTERVAL=2 |
| 毎月(同じ日付) | RRULE:FREQ=MONTHLY |
| 毎月(例:第2火曜日) | RRULE:FREQ=MONTHLY;BYDAY=2TU |
| 毎年 | RRULE:FREQ=YEARLY |
| 指定日まで毎週 | RRULE:FREQ=WEEKLY;UNTIL=20250630T235959Z |
| 10回まで毎週 | RRULE:FREQ=WEEKLY;COUNT=10 |
日付の除外(EXDATE)
EXDATE;TZID=America/New_York:20250219T140000
EXDATE;TZID=America/New_York:20250226T140000
タイムゾーンの処理
デフォルト:America/New_York
東部時間を使用する場合は、必ずこの VTIMEZONE ブロックを含めてください:
BEGIN:VTIMEZONE
TZID:America/New_York
BEGIN:STANDARD
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
一般的なタイムゾーン名の対応表
| ユーザーの表現 | TZID |
|---|---|
| 東部、ET、EST、EDT | America/New_York |
| 中部、CT、CST、CDT | America/Chicago |
| 山岳部、MT、MST、MDT | America/Denver |
| 太平洋、PT、PST、PDT | America/Los_Angeles |
| アリゾナ | America/Phoenix |
| ハワイ、HST | Pacific/Honolulu |
| ロンドン、GMT、BST | Europe/London |
| パリ、CET、CEST | Europe/Paris |
| 東京、JST | Asia/Tokyo |
一般的なすべてのタイムゾーンの完全な VTIMEZONE 定義については、references/ics-format.md を参照してください。
行の折り返し
75 オクテットを超える行は、CRLF の後に空白文字を 1 つ(スペースまたはタブ)挿入して折り返す必要があります。実際には、可能であればプロパティ行を 75 文字未満にしてください。
DESCRIPTION:This is a very long description that would exceed the seventy-f
ive octet limit so it is folded onto the next line with a leading space.
注意すべき重要事項
- 改行コード:ファイル全体で CRLF(
\r\n)の改行コードを使用してください - DTEND は排他的です:1 月 15 日の終日イベントには
DTEND;VALUE=DATE:20250116が必要です - UID はグローバルに一意である必要があります:イベントごとに必ず新しい UUID v4 を生成してください
- DTSTAMP は必須です:現在の UTC 時刻を必ず設定してください
- VTIMEZONE は VEVENT より前に置く必要があります:ファイル内で、イベントより前にタイムゾーン定義を配置してください
- 行末に空白を置かないでください:行末をスペースやタブにしないでください
- プロパティ名では大文字と小文字が区別されませんが、慣例として大文字を使用します
- 空行:コンポーネント内のプロパティ間に空行を入れないでください
- RRULE の UNTIL は UTC である必要があります:
UNTIL=20250630T235959Z(末尾に Z を付けます) - 複数値を持つプロパティ:カンマで区切ります:
EXDATE;TZID=America/New_York:20250219T140000,20250226T140000
完全な例
シンプルな会議
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Claude//ICS Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:America/New_York
BEGIN:STANDARD
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=America/New_York:20250115T140000
DTEND;TZID=America/New_York:20250115T150000
SUMMARY:Team Standup
DESCRIPTION:Weekly sync to review progress and blockers
LOCATION:Conference Room B
UID:[email protected]
DTSTAMP:20250115T120000Z
STATUS:CONFIRMED
TRANSP:OPAQUE
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
終日イベント
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Claude//ICS Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250220
DTEND;VALUE=DATE:20250221
SUMMARY:Company Holiday
UID:[email protected]
DTSTAMP:20250115T120000Z
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR
複数日にわたるイベント
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Claude//ICS Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART;VALUE=DATE:20250310
DTEND;VALUE=DATE:20250313
SUMMARY:Team Offsite
DESCRIPTION:Annual team offsite in Austin
LOCATION:Austin\, TX
UID:[email protected]
DTSTAMP:20250115T120000Z
END:VEVENT
END:VCALENDAR
例外を含む毎週の定例会議
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Claude//ICS Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:America/New_York
BEGIN:STANDARD
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=America/New_York:20250107T100000
DTEND;TZID=America/New_York:20250107T103000
SUMMARY:1:1 with Manager
RRULE:FREQ=WEEKLY;BYDAY=TU;UNTIL=20250701T035959Z
EXDATE;TZID=America/New_York:20250218T100000
EXDATE;TZID=America/New_York:20250527T100000
UID:[email protected]
DTSTAMP:20250115T120000Z
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT10M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
1 つのファイル内の複数イベント
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Claude//ICS Generator//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:America/New_York
BEGIN:STANDARD
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=America/New_York:20250120T090000
DTEND;TZID=America/New_York:20250120T091500
SUMMARY:Morning Standup
UID:[email protected]
DTSTAMP:20250115T120000Z
BEGIN:VALARM
TRIGGER:-PT5M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=America/New_York:20250120T140000
DTEND;TZID=America/New_York:20250120T150000
SUMMARY:Design Review
LOCATION:Zoom
UID:[email protected]
DTSTAMP:20250115T120000Z
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
リファレンス
プロパティの完全な表、RRULE の完全な構文、すべてのタイムゾーン定義、検証チェックリストについては、references/ics-format.md を参照してください。