关于 crontap-natural-language-schedules
面向需要把自然语言时间表达转换为计划的用户,指导先预览 Crontap 调度并确认时区和日历规则。预览只读,创建或更新需另行确认。
主要功能
- 01将自然语言表达转换为调度预览
- 02确认 IANA 时区与日历范围
- 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确认已加载。
详细介绍
预览自然语言日程
在其他技能创建或更新日程之前,使用此技能解析时间安排。预览操作为只读。
前置条件
使用所需工具前,先检查它们是否可用。如果缺少任何工具,请停止并只向用户提供以下两种选择:
- 连接 Crontap MCP:
https://mcp.crontap.com/mcp。所有 Crontap 套餐均支持 MCP 访问。 - 为原始 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 等表述。五字段 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是否只排除周六和周日。 - 对于最后一个工作日规则,安排一个安全的候选频率,并在幂等端点中进行最终日历检查。
- 对于一次性任务,只有在确认其精确时间戳和清理行为后,才使用一次性日程。
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"}'
无需 Ultra 即可使用 MCP。连接后优先使用 MCP。
安全和套餐限制
- 预览不会占用资源容量。
- 有效的预览仍可能产生低于账户创建下限的频率。创建操作才是最终的权限检查。
- 如果创建操作随后返回套餐限制响应,请保留其四个选项的层级,并指出满足需求的最小套餐。
- 切勿将只读预览推断为用户同意创建。
故障排除
- 如果表述被拒绝,请将其简化为一种频率和一个本地时间。
- 如果 cron 看起来正确,但下一次运行时间不对,请先检查时区。
- 如果无法表示所需的日历规则,请将该条件移至端点,并确保端点具有幂等性。
参考资料
评论
支持 Markdown