CRITICAL — Before starting, you MUST first use the Read tool to read ../lark-shared/SKILL.md, which contains authentication and permission handling
Use Cases
- "What's on today" / "Today's schedule and to-dos"
- "What meetings are tomorrow" / "Tomorrow's schedule and incomplete tasks"
- "Help me see what to do today" / "Morning report summary"
- "Kickoff summary" / "standup report"
- "What else is scheduled this week"
Prerequisites
Only supports user identity. Ensure authorization before execution:
lark-cli auth login --domain calendar,task
Workflow
{date} ─┬─► calendar +agenda [--start/--end] ──► 日程列表(会议/事件)
└─► task +get-my-tasks --complete=false [--due-end] ──► 未完成待办列表
│
▼
AI 汇总(时间转换 + 冲突检测 + 排序)──► 摘要
Step 1: Get schedule
# 今天(默认,无需额外参数)
lark-cli calendar +agenda
# 指定日期范围(必须使用 ISO 8601 格式,不支持 "tomorrow" 等自然语言)
lark-cli calendar +agenda --start "2026-03-26T00:00:00+08:00" --end "2026-03-26T23:59:59+08:00"
Note:
--start/--endOnly supports ISO 8601 format (e.g.2026-01-01or2026-01-01T15:04:05+08:00) and Unix timestamp,does not support"tomorrow"、"next monday"and other natural language. The AI needs to calculate the target date itself based on the current date.
The output includes: event_id, summary, start_time (including timestamp + timezone), end_time, free_busy_status, self_rsvp_status.
Step 2: Get incomplete to-dos
# 默认 pending 摘要:必须显式过滤未完成任务(最多 20 条)
lark-cli task +get-my-tasks --complete=false
# 只看指定日期前到期的未完成任务(推荐用于摘要场景,减少数据量)
lark-cli task +get-my-tasks --complete=false --due-end "2026-03-27T23:59:59+08:00"
# 获取全部未完成任务(超过 20 条时)
lark-cli task +get-my-tasks --complete=false --page-all
Note:
+get-my-tasksWhen--completeis not included,both completed and incomplete tasks are returned, which will show completed tasks as "to-dos" in the summary. For pending aggregation scenarios such as standups/daily reports,mustexplicitly include--complete=false, do not omit it.At the data volume level, adding a filter is also recommended:
- Use
--due-endto filter out tasks due before the target date- If tasks without a due date are also needed,
--due-endmay be omitted, but during AI summarization only showthose created within the last 30 days, and collapse the rest as "Other N historical to-dos"
Step 3: AI summary
Integrate the results of Step 1 and Step 2, and output according to the following structure:
## {日期}摘要({YYYY-MM-DD 星期X})
### 日程安排
| 时间 | 事件 | 组织者 | 状态 |
|------|------|--------|------|
| 09:00-10:00 | 产品需求评审 | 张三 | 已接受 |
| 14:00-15:00 | 技术方案讨论 | 李四 | 待确认 |
### 待办事项
- [ ] {task_summary}(截止:{due_date})
- [ ] {task_summary}
### 小结
- 共 {n} 场会议,{m} 项待办
- 冲突提醒:{列出时间重叠的日程}
- 空闲时段:{free_slots}(根据日程推算)
Data processing rules:
- Time conversion: The API returns a Unix timestamp, which needs to be converted based on the
timezonefield (usuallyAsia/Shanghai) toHH:mmformat - RSVP status mapping:
API value Display text acceptAccepted declineDeclined needs_actionPending confirmation tentativeTentative - Schedule sorting: sort by start time in ascending order
- Conflict detection: after sorting by time, check whether adjacent events overlap in time (the previous end_time > the next start_time); if so, list the conflict groups in the summary
- Declined events: mark as "Declined" but do not count them in busy periods and conflict detection
- To-do sorting: sort by due time in ascending order, mark overdue ones as "Overdue", and put those without a due time at the end
Permission table
| Command | Required scope |
|---|---|
calendar +agenda |
calendar:calendar.event:read |
task +get-my-tasks |
task:task:read |
Reference
- lark-shared — Authentication, permissions (required reading)
- lark-calendar —
+agendaDetailed usage - lark-task —
+get-my-tasksDetailed usage