mcpField
I
ics-generator

ics-generator

github.com/johnlarkin1生産性2143 回インストール13 週間前に更新
リポジトリ

ics-generator について

ics-generator は、自然言語による予定の説明から iCalendar RFC 5545 準拠の `.ics` ファイルを作成するスキルです。単発・繰り返し予定の作成に向けて、タイムゾーン、リマインダー、書式の扱い方を示します。

主な機能

  1. 01自然言語の予定情報を解析
  2. 02RFC 5545 準拠のカレンダーファイルを生成
  3. 03繰り返し予定と除外日の処理
  4. 04リマインダーと予定属性の追加
  5. 05タイムゾーンと書式の規則に対応

活用シーン

  1. 01会議の説明からカレンダーファイルを作成
  2. 02除外日を含む繰り返し予定を設定
  3. 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

ワークフロー

  1. 解析:ユーザーの自然言語による説明から、タイトル、日付/時刻、所要時間、場所、繰り返し、参加者、リマインダーを解析します
  2. 日付表現を解決:「来週の火曜日」「今週の金曜日の午後3時」などを現在の日付を基準に解決します
  3. タイムゾーンのデフォルト:ユーザーが別のタイムゾーンを指定しない限り、America/New_York に設定します
  4. UUID v4 を生成:UID フィールド用に <uuid4>@claude.ai を生成します
  5. DTSTAMP を設定:現在の UTC タイムスタンプに設定します
  6. VEVENT ブロックを作成:該当するプロパティをすべて含めます
  7. リマインダー用に VALARM を追加(指定がない場合のデフォルト:15 分前)
  8. 繰り返しイベント用に RRULE を追加
  9. 標準ヘッダーを含む VCALENDAR で囲みます
  10. .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、EDTAmerica/New_York
中部、CT、CST、CDTAmerica/Chicago
山岳部、MT、MST、MDTAmerica/Denver
太平洋、PT、PST、PDTAmerica/Los_Angeles
アリゾナAmerica/Phoenix
ハワイ、HSTPacific/Honolulu
ロンドン、GMT、BSTEurope/London
パリ、CET、CESTEurope/Paris
東京、JSTAsia/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.

注意すべき重要事項

  1. 改行コード:ファイル全体で CRLF(\r\n)の改行コードを使用してください
  2. DTEND は排他的です:1 月 15 日の終日イベントには DTEND;VALUE=DATE:20250116 が必要です
  3. UID はグローバルに一意である必要があります:イベントごとに必ず新しい UUID v4 を生成してください
  4. DTSTAMP は必須です:現在の UTC 時刻を必ず設定してください
  5. VTIMEZONE は VEVENT より前に置く必要があります:ファイル内で、イベントより前にタイムゾーン定義を配置してください
  6. 行末に空白を置かないでください:行末をスペースやタブにしないでください
  7. プロパティ名では大文字と小文字が区別されませんが、慣例として大文字を使用します
  8. 空行:コンポーネント内のプロパティ間に空行を入れないでください
  9. RRULE の UNTIL は UTC である必要があります:UNTIL=20250630T235959Z(末尾に Z を付けます)
  10. 複数値を持つプロパティ:カンマで区切ります: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 を参照してください。

コメント