lark-calendar

飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-vc)、待办任务(走 lark-task)。

npx skills add https://github.com/larksuite/cli --skill lark-calendar

calendar (v4)

开始前先读 ../lark-shared/SKILL.md(认证、权限处理)。

CRITICAL — 凡涉及预约日程/会议室、调整时间或查询/搜索会议室,第一步 MUST 读 references/lark-calendar-schedule-meeting.md。仅编辑字段(改标题/描述)或增删参会人(不涉及时间和会议室)时可跳过,直接读 references/lark-calendar-update.md

身份

日程归属选身份:

  • 查看/管理登录用户本人的日程 → --as user(默认,绝大多数场景)。
  • 查看/管理 bot 自己创建/拥有的日程 → --as bot
# 用户本人日程 → user
lark-cli calendar +agenda --as user
# bot 自建或参与的日程 → bot
lark-cli calendar +agenda --as bot

Shortcuts

Shortcut说明
+agenda查看日程安排(默认今天)
+meeting通过日程事件 ID 获取关联的视频会议信息(meeting_id、meeting_note),日程开过视频会议才会有meeting_id
+create创建日程并邀请参会人(ISO 8601 时间)
+update更新既有日程字段,或独立增量添加/移除参会人和会议室
+freebusy查询用户主日历的忙闲信息和 RSVP 状态(纯查询场景;预约场景走 +suggestion
+room-find针对一个或多个明确的时间块查找可用会议室(无明确时间时禁止直接调用,需先走 +suggestion)
+rsvp回复日程(接受/拒绝/待定)
+suggestion根据非明确时间或一段时间范围,推荐多个可用时间块方案

+get — 单日程详情

通过 calendar_id + event_id 获取单个日程详情。

# calendar_id不传,默认primary
lark-cli calendar +get --calendar-id <calendar_id> --event-id <event_id>

日程描述统一使用 description 一个字段,按 Markdown 富文本处理。读取日程时 description 返回 Markdown 富文本(仅有纯文本描述时返回该纯文本);创建/更新日程时也通过 --description 传入 Markdown。

+search-event — 按关键词、时间范围和参会人搜索日程

仅返回基础字段(event_id/summary/start/end 等),需要详情请走 +get

# query 按关键词 可选
# start/end 按时间范围(ISO 8601 或 YYYY-MM-DD)可选
# attendee-ids 按参会人(自动识别 ou_ 用户 / oc_ 群聊 / omm_ 会议室前缀)可选
# page-token 分页游标,用于继续翻页 可选
# page-size 每页数量,默认 30 可选
lark-cli calendar +search-event --query "周会" --start 2026-04-20 --end 2026-04-27 --attendee-ids "ou_user1,oc_chat1,omm_room1" --page-token <page_token> --page-size 30

+agenda — 查看近期日程安排

默认查询当天。结果应整理为按日期分组、按开始时间升序的易读时间线。

# start/end 时间范围(ISO 8601 / YYYY-MM-DD / Unix 秒),均可选;默认当天
# calendar-id 日历 ID(默认primary)可选
lark-cli calendar +agenda --start 2026-03-10 --end 2026-03-17 --calendar-id <calendar_id>

注意:

  • 已取消的日程自动过滤;无日程时直接告知"日程清空"。
  • 时间范围超过 40 天会自动拆分查询并合并结果。

+freebusy — 查询主日历忙闲时段和 RSVP 状态

仅返回忙碌时段起止时间,不含日程标题等隐私信息;其他订阅日历不在范围内。

# start/end 时间范围(ISO 8601 / YYYY-MM-DD / Unix 秒),均可选;默认当天
# user-id 目标用户 open_id(ou_ 前缀)可选;默认当前登录用户,bot 身份必须显式指定
lark-cli calendar +freebusy --start 2026-03-11 --end 2026-03-12 --user-id ou_xxx

用法提示:

  • 仅判断是否有空+freebusy需要日程详情+agenda
  • 检查多人可用性:分别调用并对比,找共同空闲。
  • 预约/改约场景下,调用规则(参与人过多、含群组、来自 +suggestion 等)详见 schedule-clear-time.md § 查询忙闲

前置条件路由

先判断是否重复性日程:若操作对象是重复性日程,必须先读 重复性日程操作规范,并在用户未明确范围时先确认「仅此次/全部/此次及后续」(不要默认仅此次),再按下表进入具体操作流程。

场景前置要求
预约日程/会议、调整时间、查会议室先读 lark-calendar-schedule-meeting.md
仅编辑字段(标题/描述)或增删参会人先定位 event_id,再读 lark-calendar-update.md
调用任何 Shortcut先读其对应 reference 文档

写操作反馈

创建、更新、删除、RSVP 等写操作完成后,直接基于命令返回结果反馈用户;不要为了“确认是否生效”主动发起二次查询。只有用户明确要求复查,或命令返回信息不足以回答用户问题时,才需要再查询。

核心概念

  • 日程实例(Instance):重复性日程展开后的具体时间实例。「仅此次」操作时使用具体实例的 event_id;「全部」或「此次及后续」操作时需对原重复性日程操作(使用原日程 event_id),并按需处理例外。
  • 重复性日程例外(Exception):对重复性日程某次实例做过「仅此次」编辑后产生的独立日程(拥有独立 event_id)。删除/更新「全部」时必须同时处理例外,否则例外会残留。
  • 全天日程(All-day Event):只按日期占用、没有具体起止时刻的日程,结束日期是包含在日程时间内的。
  • 时间块 vs 时间范围:时间块是具体确定的连续时间段(如 14:00~15:00),时间范围是泛指(如"今天下午")。+room-find 必须基于确定时间块,不能基于模糊范围。
  • 会议室(Room):"room"不是"房间",是"会议室"。会议室是日程的一种参与人(resource attendee),不能脱离日程单独预定。
  • 日程会议 ID(Meeting ID):日程的历史视频会议 ID,在日程上开过视频会议才会有。

术语映射

用户日常说的"帮我约个日历""查一下今天的日历",实际意图是针对**日程(Event)**的创建或查询,而非操作日历(Calendar)容器本身。自动将口语化的"日历"意图映射为"日程"操作。

意图路由

用户意图路由到
查询过去的会议("昨天的会议""上周的会")../lark-vc/SKILL.md(会议数据含即时会议,仅查日程会遗漏)
查询日历/日程或未来时间的会议本 skill
按关键词搜索日程本 skill(+search-event
从日程获取关联的视频会议 ID 或用户绑定的会议纪要文档本 skill(+meeting
从日程进一步拿 AI 智能纪要 / 逐字稿 / 妙记产物+meetingmeeting_id,再 vc +detailnote +detail / minutes +detail
预约/改约日程、调整时间、添加/更换会议室、查会议室先判断新建 vs 编辑,再进入 schedule-meeting 工作流
仅编辑日程字段(标题/描述)或增删参会人(不涉及时间和会议室)先定位 event_id,再读 +update 执行变更
编辑/删除重复性日程(「改这个重复日程」「删掉后面的」「全部取消」等)先读 重复性日程操作规范,确认操作范围后执行

任务类型分流

处理"预约/改约日程、添加/移除参会人、添加/更换会议室、调整时间"时,必须先判断新建 vs 编辑:

  • 编辑已有日程的强信号:用户提到已存在的日程锚点(标题、时间段、这个日程这场会)并表达修改动作(添加、移除、改到、换会议室、调整时间)。默认走编辑流,绝不能按新建处理。
  • 新建日程:用户表达新增意图("新约一个会""创建一个日程""安排一次会议"),且没有指向既有日程的修改动作。

时间推断规范

  • 星期的定义:周一是一周的第一天,周日是最后一天。计算"下周一"等相对日期时,基于当前真实日期推算。
  • 一天的范围:用户提到"明天""今天"等泛指某天时,时间范围应覆盖整天,不要自行缩减。
  • 历史时间约束:不能预约已经完全过去的时间。唯一例外是"跨越当前时间"的日程(开始在过去、结束在未来)。

会议室规则

  • 凡是"预定/查询/搜索可用会议室",都必须进入 schedule-meeting 工作流,会议室参数规范详见 +room-find
  • +room-find 的时间输入必须是确定时间块,不能是时间区间搜索。
  • 用户仅要求"查会议室"但未提供明确时间时,必须先调用 +suggestion 获取可用时间块,再将时间块交给 +room-find。严禁猜测时间盲目调用。
  • 编辑已有日程时,"添加会议室"默认是增量语义,保留已有会议室;只有用户明确说"更换会议室""移除会议室"时才删除旧会议室。

API Resources

# 通用调用格式
lark-cli calendar <resource> <method> [flags]

# 查询用户主日历
lark-cli calendar calendars primary

# 获取日程分享链接
lark-cli calendar events share_info --calendar-id <calendar_id> --event-id <event_id>

# 删除日程
lark-cli calendar events delete --calendar-id <calendar_id> --event-id <event_id>

calendar_id 可以直接传 primary,代表当前调用身份的主日历 ID。

查询资源的方法列表以及方法的使用方式

  • 列出某资源下的方法:lark-cli calendar <resource> -h
  • 查看方法的cli flag:lark-cli calendar <resource> <method> -h
  • 查看方法API参数:lark-cli schema calendar.<resource>.<method>

<resource>calendars(日历本身)/ events(日程)/ event.attendees(参与人)/ freebusys(忙闲)。例:lark-cli schema calendar.events.delete

常用其他域命令

# 搜索用户,更多参数详见 lark-contact
lark-cli contact +search-user --query <query> --as user

# 搜索群聊,更多参数详见 lark-im
lark-cli im +chat-search --query <query> --as user

搜索用户接口不支持 bot 身份,必须用 --as user;搜到的 ou_ open_id 用于日程参与人操作(如添加日程参与人)。

不在本 skill 范围

  • 查询过去的视频会议记录 → lark-vc
  • 待办任务管理 → lark-task
  • 通讯录 → lark-contact
  • 即时通讯 → lark-im
  • 会议室物理设施管理 → 管理员后台

注意(强制性):

  • 涉及日期(时间)字符串与时间戳的相互转换时,务必调用系统命令或脚本代码等外部工具进行处理,以确保转换的绝对准确;换算禁止依赖容器默认时区(常为 UTC,会导致 8 小时偏移),必须显式指定目标时区。违者将导致严重的逻辑错误!

More skills from larksuite

lark-doc
larksuite
飞书云文档 / Docx / 知识库 Wiki 文档(v2):创建、打开、读取、获取、查看、总结、整理、改写、翻译、审阅和编辑飞书文档内容。当用户给出飞书文档 URL/token,或说查看/读取/打开某个文档、提取文档内容、总结文档、生成/创建文档、追加/替换/删除/移动内容、调整排版、插入或下载文档图片/附件/素材/画板缩略图时使用。文档内容中出现嵌入电子表格、多维表格、需要将重要信息可视化为画板(含 SVG 画板)、引用或同步块时,也先用本 skill 读取和提取 token,再切到对应 skill 下钻。使用本 skill 时,docs +create、docs +fetch、docs +update 必须携带 --api-version v2;默认使用 DocxXML,也支持 Markdown。
documentapiproductivity
lark-im
larksuite
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件(支持大文件分片下载)、管理表情回复。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据时使用。
communicationproductivityapi
lark-shared
larksuite
Use when first setting up lark-cli, running auth login, switching user/bot identity (--as), handling permission denied or scope errors, needing to update lark-cli, or seeing _notice in JSON output.
developmentapicommunication
lark-base
larksuite
当需要用 lark-cli 操作飞书多维表格(Base)时调用:搜索 Base、建表、字段管理、记录读写、记录分享链接、视图配置、历史查询,以及角色/表单/仪表盘管理/工作流;也适用于把旧的 +table / +field / +record 写法改成当前命令写法。涉及字段设计、公式字段、查找引用、跨表计算、行级派生指标、数据分析需求时也必须使用本 skill。
databasedata-analysisapi
lark-drive
larksuite
飞书云空间:管理云空间中的文件和文件夹。上传和下载文件、创建文件夹、复制/移动/删除文件、查看文件元数据、管理文档评论、管理文档权限、订阅用户评论变更事件、修改文件标题(docx、sheet、bitable、file、folder、wiki);也负责把本地 Word/Markdown/Excel/CSV 以及 Base 快照(.base)导入为飞书在线云文档(docx、sheet、bitable)。当用户需要上传或下载文件、整理云空间目录、查看文件详情、管理评论、管理文档权限、修改文件标题、订阅用户评论变更事件,或要把本地文件导入成新版文档、电子表格、多维表格/Base 时使用。
documentproductivityapi
lark-whiteboard
larksuite
飞书画板:查询和编辑飞书云文档中的画板。支持导出画板为预览图片、导出原始节点结构、使用多种格式更新画板内容。 当用户需要查看画板内容、导出画板图片、编辑画板时使用此 skill。不负责:飞书云文档内容编辑(lark-doc)、文档内嵌电子表格/Base(lark-sheets / lark-base)。
documentcreativeproductivity
lark-mail
larksuite
飞书邮箱 — draft, compose, send, reply, forward, read, and search emails; manage drafts, folders, labels, contacts, attachments, and mail rules. Use when user mentions 起草邮件, 写一封邮件, 拟邮件, 草稿, 发通知邮件, 发送邮件, 发邮件, 回复邮件, 转发邮件, 查看邮件, 看邮件, 读邮件, 搜索邮件, 查邮件, 收件箱, 邮件会话, 编辑草稿, 管理草稿, 下载附件, 邮件文件夹, 邮件标签, 邮件联系人, 监听新邮件, 收信规则, 邮件规则, draft, compose, send email, reply, forward, inbox, mail thread, mail rules.
communicationproductivityapi
lark-workflow-meeting-summary
larksuite
会议纪要整理工作流:汇总指定时间范围内的会议纪要并生成结构化报告。当用户需要整理会议纪要、生成会议周报、回顾一段时间内的会议内容时使用。
productivitydocumentcommunication