lark-calendar
Original:🇨🇳 Chinese
Translated
Feishu Calendar (calendar): Provides comprehensive management capabilities for calendars and schedules (meetings). Core scenarios include: viewing/searching schedules, creating/updating schedules, managing attendees, checking free/busy status, and recommending available time slots. For high-frequency operations, prioritize using Shortcuts: +agenda (quick overview of today's/upcoming schedules), +create (create a schedule and invite attendees as needed), +freebusy (check the free/busy status of the user's primary calendar and RSVP status), +suggestion (provide multiple time recommendation solutions for appointment schedule requests with undetermined times).
310.9kinstalls
Sourcelarksuite/cli
Added on
NPX Install
npx skill4agent add larksuite/cli lark-calendarTags
Translated version includes tags in frontmatterSKILL.md Content (Chinese)
View Translation Comparison →calendar (v4)
CRITICAL — MUST use the Read tool to read before starting, which contains authentication and permission handling
CRITICAL — Before executing any Shortcuts, be sure to use the Read tool to read their corresponding documentation. Do not call commands blindly directly.
../lark-shared/SKILL.mdCore Scenarios
The calendar skill includes the following core scenarios:
1. Schedule Booking
This is the most core scenario of the calendar skill, focusing on enabling users to book schedules at low cost.
💡 Core Principle: Act as an intelligent assistant, provide decision support, not a form filler or make decisions on behalf of users.
Time and Date Inference Specifications:
To ensure accuracy, strictly follow the following rules when inferring time:
- Definition of the week: Monday is the first day of the week, Sunday is the last day of the week. When calculating relative dates like "next Monday", be sure to base it on the current actual date and week benchmark to avoid miscalculations.
- Range of a day: When the user refers to a general day such as "tomorrow" or "today", the time range should default to cover the entire day. Do not reduce the query scope on your own, as this may miss evening arrangements.
- Historical Time Constraint: Cannot book time that has completely passed. The only exception is a schedule that "crosses the current time", i.e., the start time of the schedule is in the past but the end time is in the future.
Workflow for Schedule Booking:
-
Intelligent Inference of Default Values
- Default values exist for title, attendees, and duration, so there is no need to frequently confirm with the user.
- Attendees: If no other people are clearly specified, the default attendees are only the user themselves. When searching for specific attendees (people, groups, meeting rooms) yields multiple results that cannot be uniquely determined, you must ask the user to select and confirm, and record this preference as long-term memory for automatic recognition in subsequent interactions.
- Meeting Rooms: Currently, active booking of meeting rooms is not supported unless the corresponding meeting room ID (with omm_ prefix) already exists in the current context and needs to be added to the schedule.
- Title: Automatically generated based on the conversation context (e.g., "Communication Alignment" or "Requirement Discussion"), defaults to "Meeting" if inference is not possible.
- Duration: Dynamically inferred based on meeting type and context (e.g., "Review/Report" is inferred as 60 minutes, etc.), defaults to 30 minutes if inference is not possible.
-
Time Suggestions and Decision Support (Core Experience)
- With a specific time point (e.g., "10 AM tomorrow"): Call the relevant tool (such as lark-calendar-freebusy) to first check the free/busy status of attendees during that period (Note: If an attendee's RSVP status for an existing schedule is "declined", that time period is considered free). If there are no conflicts, proceed to the next step of confirmation and creation; if there are conflicts, inform the user of the conflict and ask whether to continue creating or reselect a time.
lark-cli calendar +freebusy - With a time interval (e.g., "tomorrow", "afternoon", "this week"): Call the relevant tool (such as lark-calendar-suggestion) to obtain multiple time recommendation options for all attendees within the interval for the user to choose from. Only after the user confirms the option can you execute the schedule creation operation; once the user selects a recommended option, there is no need to check free/busy information again.
lark-cli calendar +suggestion - No time information provided: Default to inferring a reasonable interval (e.g., "today" or "the next two days") and also obtain multiple time recommendation options for the user to quickly select from.
- Life-related needs (e.g., fitness, swimming, walking, meal appointments, milk tea, etc. Note: "coffee appointment" is considered a work scenario): Do not call the tool. You should infer appropriate non-working hours on your own for the user to confirm. If inference is not possible, try to actively ask the user, and form a memory after receiving feedback for direct application in subsequent interactions.
suggestion - Ambiguity Resolution and Long-Term Memory Construction (Aha Moment): For the user's exclusive time expression habits (e.g., "after work starts", "before work ends") or ambiguous time scenarios (e.g., 12-hour format without specifying AM/PM), do not make subjective assumptions. You should clarify the true intention through active confirmation, and record such personalized definitions as long-term preferences to promote the continuous evolution of the system's cognitive ability, ultimately achieving an intelligent experience of "understanding next time".
- With a specific time point (e.g., "10 AM tomorrow"): Call the relevant tool (such as
-
Non-Blocking Execution
- After the user confirms the specific time option, execute
lark-cli calendar +create --summary "..." --start "..." --end "..." --attendee-ids ...
- After the user confirms the specific time option, execute
-
Friendly Feedback
- Report results: Return the summary information of the successfully created schedule
Core Concepts
- Calendar: The container for schedules. Each user has a primary calendar, and can also create or subscribe to shared calendars.
- Event: A single event entry in the calendar, containing attributes such as start/end time, location, title, attendees, etc. Supports one-time and recurring schedules, following the RFC5545 iCalendar international standard.
- All-day Event: A schedule that only occupies a date without specific start/end times, and the end date is included in the schedule time.
- Instance: A specific time instance of a schedule, essentially an expansion of the schedule. Regular events and exception events correspond to 1 Instance, while recurring events correspond to N Instances. When querying by time period, recurring schedules can be expanded into independent instances through the instance view for accurate display and management on the timeline.
- Recurrence Rule (Rrule): Defines the recurrence rule for recurring schedules, such as which means repeating every 14 days.
FREQ=DAILY;UNTIL=20230307T155959Z;INTERVAL=14 - Exception: A schedule in a recurring series that is inconsistent with the original recurring schedule.
- Attendee: A participant in the schedule, which can be a user, group, meeting room resource, external email address, etc. Each attendee has an independent RSVP status.
- RSVP Status: The response status of an attendee to a schedule invitation (Accept/Decline/Tentative).
- FreeBusy: Query the user's free/busy status during a specified time period, used for meeting time coordination.
Resource Relationships
Calendar (日历)
└── Event (日程)
├── Attendee (参会人)
└── Reminder (提醒)Shortcuts (Recommended for Priority Use)
Shortcuts are advanced encapsulations of common operations (). Operations with Shortcuts should be used first.
lark-cli calendar +<verb> [flags]| Shortcut | Description |
|---|---|
| View schedule arrangements (default to today) |
| Create a schedule and invite attendees (ISO 8601 time) |
| Check the free/busy status of the user's primary calendar and RSVP status |
| Provide multiple time recommendation solutions for appointment schedule requests with undetermined times |
+suggestion Usage
Before calling , be sure to read the usage instructions in lark-calendar-suggestion. Do not call the command directly.
+suggestionbash
lark-cli calendar +suggestion --start "2026-03-10T00:00:00+08:00" --end "2026-03-10T11:00:00+08:00" --attendee-ids "ou_xxx,oc_yyy" --duration-minutes 30 # 为用户ou_xxx和群组oc_yyy里的成员推荐空闲时段API Resources
bash
lark-cli schema calendar.<resource>.<method> # Must check the parameter structure before calling the API
lark-cli calendar <resource> <method> [flags] # Call the APIImportant: When using the native API, must first runto check theschema/--dataparameter structure. Do not guess the field format.--params
calendars
- — Create a shared calendar
create - — Delete a shared calendar
delete - — Query calendar information
get - — Query calendar list
list - — Update calendar information
patch - — Query the user's primary calendar
primary - — Search calendars
search
event.attendees
- — Delete event attendees
batch_delete - — Add event attendees
create - — Get event attendee list
list
events
- — Create an event
create - — Delete an event
delete - — Get an event
get - — Query event view
instance_view - — Update an event
patch - — Search events
search
freebusys
- — Query free/busy information of primary calendar events
list
Permission Table
| Method | Required scope |
|---|---|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Note (Mandatory):
- When converting between date (time) strings and timestamps, be sure to use external tools such as system commands or script code for processing to ensure absolute accuracy. Violations will lead to serious logical errors!