crontap-natural-language-schedules について
自然言語の時刻表現を Crontap のスケジュールプレビューに変換するスキルです。タイムゾーンや暦の条件を確認し、プレビューは読み取り専用で、作成や更新には別途確認を求めます。
主な機能
- 01自然言語からスケジュールをプレビュー
- 02IANA タイムゾーンと暦の範囲を確認
- 03曖昧さを解消して再プレビュー
- 04夏時間変更前後の実行時刻を確認
- 05保存前に確認を求める
活用シーン
- 01「平日09:15」などの時刻表現を解析
- 02平日と祝日考慮ルールを区別
- 03夏時間の切り替わり前後の次回実行を確認
MCP 対応
Crontap MCP の preview_schedule ツールで読み取り専用のプレビューを作成します。スケジュールの作成や更新は別の操作です。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crontap/ skills --skill crontap-natural-language-schedulesインストール後、Claude Code で/crontap-natural-language-schedulesを入力して読み込まれたか確認します。
詳細
自然言語によるスケジュールをプレビューする
別のスキルでスケジュールを作成または更新する前に、このスキルを使って実行タイミングを確定します。プレビューは読み取り専用です。
前提条件
必須ツールを使用する前に、利用可能かどうかを確認してください。いずれかが利用できない場合は、そこで停止し、ユーザーに次の2つの選択肢だけを提示してください。
https://mcp.crontap.com/mcpで Crontap MCP に接続します。MCP はすべての Crontap プランで利用できます。- 生 API を使うため、
$CRONTAP_CLIENT_IDと$CRONTAP_API_KEYを設定します。生 API の利用には Ultra が必要です。
ユーザーがどちらかを選ぶまで、どちらかの方法を黙って選択したり、先に進んだりしないでください。
- ユーザーが意図するローカルタイムゾーンを特定します。
- 営業日の表現が平日を指すのか、祝日を考慮したカレンダーを指すのかを確認します。
- 開始日や月末日など、境界に関する要件を確認します。
スケジュールを明確に表現する
頻度、ローカル時刻、カレンダーの範囲を含む表現を優先します。
every weekday at 09:15every 6 hoursat 02:30 every Sundayon the first day of every month at 08:00
in the morning、twice a month、month end、タイムゾーンの指定がない weekdays のような表現は避けてください。5フィールドの cron では、祝日を考慮するルールや最終営業日のルールをすべて表現できるわけではありません。
ワークフロー
- ユーザーと正確な IANA タイムゾーンを確定します。
- 元の頻度指定とタイムゾーンを指定して
preview_scheduleを呼び出します。 - レスポンスで確認が必要な場合は、質問と選択肢を提示します。
- ユーザーの回答を使って再度プレビューします。
- 確定した cron、タイムゾーン、返された次回実行日時をすべて報告します。
- 別途作成または更新する前に、ユーザーに確認を求めます。
MCP の例
{
"tool": "preview_schedule",
"arguments": {
"text": "every weekday at 09:15",
"timezone": "America/New_York"
}
}
レスポンスのステータスが needs_clarification または rejected の場合、推測した cron を保存しないでください。返された選択肢は候補として扱い、ユーザーに代わって選んでよいという許可とは見なさないでください。
DST とカレンダーの確認
- 近い将来の夏時間への移行の前後で、次回実行日時を確認します。
- 名前付きタイムゾーンを使うと、ローカルの壁時計時刻が維持されます。UTC スケジュールでは、UTC の固定時刻が維持されます。
weekdayが土曜日と日曜日だけを除外するのか確認します。- 最終営業日のロジックでは、安全な候補頻度をスケジュールし、冪等なエンドポイント内で最終的なカレンダー確認を行います。
- 1回限りの処理では、正確なタイムスタンプとクリーンアップの動作を確認してから、1回限りのスケジュールを使います。
REST による代替手段
公開 API の代替手段を使うには、Ultra API へのアクセスが必要です。
curl --fail-with-body https://api.crontap.com/v1/schedule/preview \
-X POST \
-H "ClientId: $CRONTAP_CLIENT_ID" \
-H "ApiKey: $CRONTAP_API_KEY" \
-H "Content-Type: application/json" \
--data '{"text":"every weekday at 09:15","timezone":"America/New_York"}'
MCP は Ultra がなくても利用できます。接続済みの場合は MCP を優先してください。
安全性とプランの制限
- プレビューによってリソース容量は消費されません。
- 有効なプレビューでも、アカウントで作成可能な下限を下回る頻度が示される場合があります。権限の最終確認は作成時に行われます。
- 作成時にプラン制限のレスポンスが返された場合は、4つの選択肢からなる段階的な選択肢をそのまま提示し、実行可能な最小プランを明示します。
- 読み取り専用のプレビューから、ユーザーが作成に同意したと推測してはいけません。
トラブルシューティング
- 表現が拒否された場合は、頻度を1つ、ローカル時刻を1つに絞って簡潔にしてください。
- cron は正しく見えるのに次回実行日時が誤っている場合は、まずタイムゾーンを確認してください。
- 希望するカレンダールールを表現できない場合は、その条件をエンドポイントに移し、エンドポイントを冪等に保ちます。