Community生产力与协作github.com

Jakeschincariol/scheduler

调度器。将每个已预约的电话自动添加到日历中。读取如“周四两点可以”这样的回复,将其转换为正确的日期和时间,检查日历冲突,当对方询问“你什么时候有空”时提供空闲时段,在获得确认后从你的日历创建带 Google Meet 链接的邀请,通过邮件确认,并将交易移至“已预约电话”阶段以停止后续跟进。

scheduler 是什么?

该技能是专为 AI 代理(如 Claude Code)设计的日程安排工具,能够自动将电话预约转化为日历事件。当收到包含时间信息的回复(如“周四两点可以”)时,它首先通过 slots.py parse 解析时间,并将模糊表达(如“2点”默认视为下午 2 点)转化为标准日期时间。接着,它会检查用户日历的忙闲状态(通过日历连接器读取 busy.json),避免冲突,并在用户要求时通过 slots.py free 提供多个空闲选项。在获得用户明确确认后,该技能会在用户的日历上创建带有 Google Meet 链接的邀请,或将邀请生成为 .ics 文件供用户手动添加。最后,它通过 slots.py book 记录批准信息,将交易移至“已预约电话”阶段,并利用 /follow-up 模板发送确认邮件。该技能支持 Cursor、Windsurf 等平台,强调安全性:绝不未经用户确认就创建、修改或取消事件,绝不对已占用的时间段重复预约,且仅读取忙闲信息以寻找空闲时段。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jakeschincariol/closer-skill/tree/main/scheduler

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

scheduler 是做什么的?

当某人同意通话的那一刻,调度器会在时机消逝之前将该通话添加到双方日历中。一次预约的通话比十次后续跟进更有价值。

${CLAUDE_SKILL_DIR} 以下是本技能所在的文件夹(即此 SKILL.md 文件所在的位置)。

python3 "${CLAUDE_SKILL_DIR}/slots.py" parse --text "抱歉,这周太忙了!周四两点可以。" --today 2026-10-27
python3 "${CLAUDE_SKILL_DIR}/slots.py" free --busy closer/busy.json --from 2026-10-28 --days 3 --length 30
python3 "${CLAUDE_SKILL_DIR}/slots.py" invite --contact dana-harbor-lane --start 2026-10-29T14:00 --minutes 30
python3 "${CLAUDE_SKILL_DIR}/slots.py" book --contact dana-harbor-lane --start 2026-10-29T14:00 \
    --minutes 30 --approval "yes" --busy closer/busy.json

步骤

  1. 确定时间。 使用 slots.py parse 解析对方的回复。如果回复中有“2点”而没有注明上午或下午,则视为下午 2 点(1 到 7 点为下午,8 到 12 点为上午)。如果输出 "No clear time",则请用户明确时间;切勿猜测日期。将完整日期告知用户:“你那边时间是周四,10 月 29 日下午 2:00,对吗?”
  2. 检查冲突。 通过日历连接器读取用户那天的日程,并将其写入 closer/busy.json,格式为 [{"start": "...", "end": "..."}]。如果用户要求的是空闲选项,则使用 slots.py free 列出工作时间内可用的空闲时段,并提供两到三个选项。
  3. 询问确认。 “预约 Harbor Lane Dental x Your Agency,周四 10 月 29 日,下午 2:00 至 2:30,Google Meet,受邀人 Dana Ortiz?请回复‘是’或‘否’。”
  4. 预订。 确认后,使用日历连接器在用户日历上创建事件(标题、时间、Google Meet、将 Dana 设为参与者)。如果没有日历连接器,则使用 slots.py invite 生成 .ics 文件,供用户打开或附加。
  5. 记录。 使用 slots.py book --approval "<他们的确认>"。交易将移至“已预约电话”阶段,/follow-up 停止跟进。
  6. 确认。 使用 /follow-up 的确认时间模板起草回复(“周四两点可以,Dana。现在发送邀请。”),并且仅在获得其自身的确认后才能发送。
  7. 准备。 提醒用户在通话前运行 /researcher。

演示示例

10 月 27 日周二上午 11:48:“抱歉,这周太忙了!周四两点可以。” parse 得出周四,10 月 29 日,下午 2:00。用户有空并确认后,日历显示“Harbor Lane Dental x Your Agency,周四,10 月 29 日,下午 2:00 至 2:30,Google Meet,受邀人 Dana Ortiz 和你”。(说明:Dana 和 Harbor Lane Dental 均为虚构。)

绝不执行的操作

  • 未经用户对该特定事件的明确确认,绝不预订、移动或取消任何事件。
  • 绝不会在用户日历上已有事件的时间段重复预约。
  • 绝不会读取日历详情,仅查看忙闲信息以寻找空闲时段。

同意与真实性

  • 未经用户对该特定消息、邀请或文档的明确确认,不会发送、预订或签署任何内容。Claude 起草,用户说“是”,然后从用户自己的账户发送:日历邀请通过用户自己的日历发出。每条消息一次确认。绝不“全部同意”。
  • 遇到第一次“不”或任何不感兴趣的迹象时立即停止。停止请求将永久生效,并适用于所有技能。
  • 绝不编造某人已同意的时间。当时间不明确时,一定要询问。

相关技能