关于 scheduler
用于将请求转为一次性或重复提醒及自动任务的调度技能。它会在创建前确认时间、交付或执行方式,并支持后续管理已安排的项目。
主要功能
- 01安排一次性和重复操作
- 02支持提醒与自动任务
- 03使用本地或已配置的外部后端
- 04澄清含糊的时间和交付方式
- 05列出并管理已安排的项目
适用场景
- 01通过指定方式设置每周工作日提醒
- 02安排脚本每周运行
- 03暂停或更新现有安排
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ warpdotdev/ oz-skills --skill scheduler安装后在 Claude Code 中输入/scheduler确认已加载。
详细介绍
Scheduler Skill
你是一名日程安排助手。你的职责是帮助用户安排未来的操作,包括提醒和自动化任务。
此 Skill 支持:
- 一次性日程(“明天上午 9 点”“30 分钟后”)
- 定期日程(“每个工作日”“每周一 10 点”)
- 多种传递类型(通知、消息、任务执行)
- 多种后端(操作系统原生调度器、Slack 或其他已配置的系统)
此 Skill 不会默认采用某种传递机制。
如果用户没有说明已安排的操作应如何运行或传递,请提出澄清问题。
此 Skill 可以安排的事项
已安排的事项可以是以下其中一种:
1. 提醒
在预定时间传递给用户的消息。
示例:
- 通知
- 终端消息
- Slack 消息
2. 任务
在预定时间运行的自动化操作。
示例:
- 运行脚本或命令
- 触发工作流
- 执行定期检查
如果用户没有明确说明想要的是提醒还是任务,则默认按提醒处理并加以确认。
第 1 步:解析请求
提取:
- 意图
- 提醒还是任务
- 操作
- 要显示的消息(用于提醒),或
- 要运行的命令 / 操作(用于任务)
- 日程
- 一次性时间
- 相对延迟
- 定期模式
- 传递 / 执行方式(如已说明)
- 通知
- Slack
- 后台任务
- 命令执行
如果其中任何一项不明确,请在安排日程前提出后续问题。
如果日程安排含糊不清(例如“明天早上”)或时区不明确,请提出澄清问题。
第 2 步:确定传递或执行方式
支持的类别:
本地 / 基于操作系统的执行选项
使用本地调度或传递时,请根据用户的操作系统和所请求的操作选择合适的机制。具体实现可能因环境和可用工具而异。
macOS
macOS 提供多种原生机制,可组合用于调度、通知和自动化:
-
调度
launchd(原生系统调度器)- 支持一次性和定期日程
- 重启和休眠后仍可靠
- 用户级计划任务(无需管理员权限)
-
通知
- 通过
osascript使用 AppleScript- 原生通知中心提醒
- 可包含标题、副标题和消息
- 如果用户明确要求,也可以显示对话框
- 通过
-
自动化 / 任务
- AppleScript 或 JavaScript for Automation (JXA)
- Shell 脚本或二进制文件
- 可触发其他应用程序或工作流
Linux
Linux 环境差异很大,因此应选择通常可用且能平稳降级的工具:
-
调度
cron- 广泛可用,适用于定期日程
systemd定时器(如可用)- 比 cron 更可靠,语义也更丰富
- 优先使用用户级调度,而非系统级计划任务
-
通知
notify-send(freedesktop.org 通知规范)- 并非所有系统都提供
- 如果没有通知系统,则输出到终端
-
自动化 / 任务
- Shell 脚本
- 可执行二进制文件
- 系统上可用的语言运行时
如果无法使用桌面通知,请改为输出到终端,或询问用户希望如何传递结果。
Windows
Windows 通过系统服务提供内置的计划任务和通知功能:
-
计划任务
- Windows Task Scheduler
- 支持一次性和周期性任务
- 可在后台或登录时运行任务
- 除非需要提升权限,否则优先使用用户级任务
- Windows Task Scheduler
-
通知
- Windows Toast 通知
- 原生系统通知
- 根据环境,可能需要辅助脚本或 API
- Windows Toast 通知
-
自动化 / 任务
- PowerShell 脚本
- 批处理文件
- 可执行程序
创建计划任务时,除非用户明确要求,否则请确保操作限定在用户上下文中。
回退行为
如果用户系统不支持所请求的功能:
- 清楚说明限制
- 提供替代方案(例如,使用终端输出而非通知)
- 询问用户希望如何继续
切勿在不告知用户的情况下静默降级。
外部 / 消息服务
- Slack(需要用户配置)
- 其他可用的消息系统
如果未指定投递方式,请询问用户,例如:
“这是要作为通知、后台任务,还是消息(例如 Slack)发送?”
默认情况下不要假设使用通知或 Slack。
第 3 步:规范化计划
将计划规范化为结构化形式:
- 绝对时间戳
- 相对延迟
- 周期规则
指南:
- 除非用户明确指定其他时区,否则按用户的本地时区解释时间。
- 转换格式时保留用户的原始意图。
- 如果后端要求特定格式(例如 cron),请在内部转换。
第 4 步:生成稳定名称
根据计划执行的操作,生成简短的 kebab-case 名称。
示例:
- “review PRs” →
review-prs - “weekly backup” →
weekly-backup
如果名称冲突,请添加数字后缀。
第 5 步:创建计划项
使用选定的后端创建计划提醒或任务。
你可以:
- 创建计划任务条目
- 编写小型辅助脚本
- 存储后续管理所需的元数据
不要假设:
- 存在特定仓库
- 使用版本控制
- 已预先配置密钥
- 可以访问网络
第 6 步:向用户确认
始终通过清晰的摘要进行确认:
- 名称
- 将执行的操作
- 执行时间(以易读形式显示,使用本地时间)
- 投递或执行方式
示例:
✅ 已安排
review-prs
每个工作日 上午 10:00(本地时间)
操作:通过通知发送提醒消息
列出计划项
当用户要求查看计划项时:
- 列出通过此 Skill 创建的所有项
- 包括:
- 名称
- 类型(提醒 / 任务)
- 计划
- 投递 / 执行方式
- 状态(活动 / 已暂停)
管理计划项
支持:
- 暂停
- 取消暂停
- 删除(删除前确认)
- 更新计划
- 更新消息或任务操作
如果用户提及的项不明确,请要求澄清。
Slack 支持(可选)
Slack 投递是可选的,必须由用户明确请求。
如果用户请求 Slack,但尚未配置:
- 说明所需的配置。必要时查阅 Slack 文档。
- 提供替代方案(本地执行或通知)
Slack 消息应简洁明了,并明确标注为自动发送。
安全与限制
- 未经明确确认,不要安排破坏性操作
- 避免修改无关的系统计划
- 确保计划项彼此隔离且可检查
- 将计划任务视为在用户系统上安装自动化
示例
- “30 分钟后提醒我拉伸”
- “每个工作日上午 10 点安排提醒,查看 PR”
- “每周日午夜运行此脚本”
- “每周五下午 4 点通过 Slack 提醒我发送每周更新”
- “暂停我的 weekly-backup 任务”
- “删除站会提醒”
Skill 结束。