ai-agents/skills/trip-register-to-calendar/SKILL.md
旅行会社の予約メールなどの生テキストから、旅程(交通機関・宿泊)を抽出して Google Calendar primary にイベント登録する。フォーマットは問わない。登録前にユーザー承認を必須化し、開始 30 分前のポップアップ通知をデフォルトで付ける運用。
npx skillsauth add hodanov/my-pde trip-register-to-calendarInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
旅行会社の予約メールや自然言語の旅程テキストから必要情報を抽出し、Google Calendar primary に複数イベントとして登録する。
/trip-register-to-calendar + 旅の目的/テーマ + 予約メール本文を貼り付けmcp__claude_ai_Google_Calendar__authenticate → complete_authentication を先に案内するAsia/TokyooverrideReminders: [{ method: "popup", minutes: 30 }] を渡して個別に付与する(カレンダー側のデフォルト設定には依存しない)見つからない項目は空欄として扱い、勝手に補完しない。
🚄 <列車名 列車番号> | <出発駅>→<到着駅>(例: 🚄 つるぎ1号 | 金沢→敦賀)✈️ <便名> | <出発空港>→<到着空港>🏨 <施設名>(例: 🏨 コンフォートホテル佐賀)<出発駅>発 HH:MM > <到着駅>着 HH:MM
列車: <列車名 列車番号>
座席: <N号車M席>(原文 `10=17A` → `10号車17A` に整形)
目的: <旅の目的/テーマ>
施設: <施設名>
TEL: <電話番号>
部屋: <部屋タイプ>
プラン: <プラン名>
食事: <食事条件>
目的: <旅の目的/テーマ>
進捗チェックリストをコピーして使う:
- [ ] 1. 入力(目的/テーマ・予約テキスト)を識別
- [ ] 2. 旅程を抽出・正規化
- [ ] 3. 既存イベントの重複チェック
- [ ] 4. 承認テーブルを提示しユーザー承認を取得
- [ ] 5. 各イベントを作成
- [ ] 6. 結果(成功/失敗)を一覧で報告
入力から「旅の目的/テーマ」と予約情報の生テキストを識別する。目的/テーマが不明なら推測せずユーザーに確認する。
生テキストから旅程情報を抽出し、内部表現(交通イベント配列 + 宿泊イベント配列)に正規化する。
YYYY-MM-DD、時刻は HH:MM、TZ は Asia/Tokyo重複チェック: 旅程の最小日〜最大日の範囲で mcp__claude_ai_Google_Calendar__list_events(calendarId: "primary")を呼び、同タイトルの既存イベントがあれば該当行に「既存」と印を付ける。承認テーブルで重複候補を明示し、再登録するか既定でスキップするかをユーザーに委ねる(再実行時の重複量産を防ぐ)。
抽出結果を以下の形式で ユーザーに表で提示し、登録可否を確認する。
| # | 種別 | 日付 | 開始 | 終了 | タイトル | 場所 | 座席 | 状態 | | --- | ---- | ---------- | ----- | --------- | ------------------------- | ------ | --------- | ---- | | 1 | 交通 | 2026-04-18 | 06:00 | 06:57 | 🚄 つるぎ1号 | 金沢→敦賀 | 金沢駅 | 10号車17A | 新規 | | 2 | 宿泊 | 2026-04-18 | 15:00 | 10:00(翌) | 🏨 コンフォートホテル佐賀 | 佐賀県 | - | 新規 |
承認前にユーザーは修正・除外を指示できる。
承認後、各イベントを mcp__claude_ai_Google_Calendar__create_event で作成する。
calendarId: "primary"timeZone: "Asia/Tokyo"startTime / endTime は ISO 8601(例: 2026-04-18T06:00:00+09:00)summary、description、location(駅名や施設名を入れる)を渡すoverrideReminders: [{ method: "popup", minutes: 30 }] で開始 30 分前のポップアップ通知を付与するnotificationLevel は NONE(本人のみなので)colorId で種別を色分け(交通=7 Peacock / 宿泊=10 Basil)、宿泊は availability: "AVAILABILITY_FREE"(一泊で予定が埋まらないように)登録完了後、作成された各イベント ID とタイトルを一覧で返す。失敗したイベントがあればエラー内容と未登録一覧も併せて返す。
examples/saga-2026-04-18.md に佐賀旅行の入力例と期待される登録内容(宿泊 1 + 交通 8 = 9 件)をまとめる。
documentation
AIとの壁打ちで整理したプラン、または別ファイルの設計メモや実装メモを、読みやすいMarkdown形式の実装プランに整形して `docs/plan/YYYY-MM-DD_<plan-name>.md` に保存する作業で使う。会話中に提案したプランの書き出し、テキストメモの構造化、見出し整理、表への変換、チェックリスト化、保存が必要なときに使う。
data-ai
AIとの壁打ちで整理したプラン、または指定ファイルの内容を GitHub Issue として作成する。セッション内のプランの Issue 化、既存プランファイルからの Issue 作成、config によるデフォルト値設定が必要なときに使う。
tools
変更をコミットしてドラフトPRを作成する一連のGit/ghワークフロー。ユーザーが「コミットして」「PR作って」「draft PR」等を求めたときに使用し、status/diff確認・命令形コミット・push・gh pr create --draft(--assignee hodanov)まで実行する。
documentation
SV リーグの試合詳細ページから REPORT-A / REPORT-B(任意で LiveScore)を取得し、応援チーム / 両チーム対比 / 注目選手ズームの 3 視点で 1 試合分のレビュー Markdown を `docs/svleague-match-review/` 配下に出力する。