Lark Calendar
Create, update, and delete calendar events and tasks in Lark.
- Rating
- 4.3 (48 reviews)
- Downloads
- 12,305 downloads
- Version
- 1.0.0
Overview
Create, update, and delete calendar events and tasks in Lark.
Complete Documentation
View Source →
Lark Calendar & Task Skill
Create, update, and delete calendar events and tasks in Lark (Feishu).
Overview
This skill provides full CRUD operations for:
- Calendar Events — meetings, appointments, schedules
- Tasks (Todo) — action items with deadlines
Configuration
Required Environment Variables (in .secrets.env):
FEISHU_APP_ID=cli_a9f52a4ed7b8ded4
FEISHU_APP_SECRET=<your-app-secret>
Default Calendar: [email protected] (Claw calendar)
Default Timezone: Asia/Singapore
Quick Reference
Create Calendar Event
node skills/lark-calendar/scripts/create-event.mjs \
--title "Meeting with Team" \
--description "Discuss Q2 roadmap" \
--start "2026-02-03 14:00:00" \
--end "2026-02-03 15:00:00" \
--attendees "Boyang,RK" \
--location "Meeting Room A"
Parameters:
| Param | Required | Description |
|---|---|---|
| --title | ✅ | Event title |
| --description | ❌ | Event description |
| --start | ✅ | Start time (YYYY-MM-DD HH:MM:SS) |
| --end | ✅ | End time (YYYY-MM-DD HH:MM:SS) |
| --attendees | ❌ | Comma-separated names (auto-resolved to user_ids) |
| --attendee-ids | ❌ | Comma-separated user_ids directly |
| --location | ❌ | Event location |
| --timezone | ❌ | Timezone (default: Asia/Singapore) |
| --calendar | ❌ | Calendar ID (uses default if omitted) |
Update Calendar Event
node skills/lark-calendar/scripts/update-event.mjs \
--event-id "f9900f6b-b472-4b17-a818-7b5584abdc37_0" \
--title "Updated Title" \
--start "2026-02-03 15:00:00" \
--end "2026-02-03 16:00:00"
Delete Calendar Event
node skills/lark-calendar/scripts/delete-event.mjs \
--event-id "f9900f6b-b472-4b17-a818-7b5584abdc37_0"
List Calendar Events
# List events for next 7 days
node skills/lark-calendar/scripts/list-events.mjs
# List events in date range
node skills/lark-calendar/scripts/list-events.mjs \
--start "2026-02-01" \
--end "2026-02-28"
Create Task
node skills/lark-calendar/scripts/create-task.mjs \
--title "Review PR #123" \
--description "Code review for authentication module" \
--due "2026-02-05 18:00:00" \
--assignees "Boyang,jc"
Parameters:
| Param | Required | Description |
|---|---|---|
| --title | ✅ | Task title |
| --description | ❌ | Task description |
| --due | ✅ | Due date (YYYY-MM-DD HH:MM:SS) |
| --assignees | ❌ | Comma-separated names (auto-resolved) |
| --assignee-ids | ❌ | Comma-separated user_ids directly |
| --timezone | ❌ | Timezone (default: Asia/Singapore) |
Update Task
node skills/lark-calendar/scripts/update-task.mjs \
--task-id "35fc5310-a1b1-49c7-be75-be631d3079ee" \
--title "Updated Task" \
--due "2026-02-06 18:00:00"
Delete Task
node skills/lark-calendar/scripts/delete-task.mjs \
--task-id "35fc5310-a1b1-49c7-be75-be631d3079ee"
Manage Event Attendees
# Add attendees
node skills/lark-calendar/scripts/manage-attendees.mjs \
--event-id "xxx" --add "RK,jc"
# Remove attendees
node skills/lark-calendar/scripts/manage-attendees.mjs \
--event-id "xxx" --remove "jc"
Manage Task Members
# Add members
node skills/lark-calendar/scripts/manage-task-members.mjs \
--task-id "xxx" --add "RK,jc"
# Remove members
node skills/lark-calendar/scripts/manage-task-members.mjs \
--task-id "xxx" --remove "jc"
Employee Directory
Names are auto-resolved to Lark user_ids. Supported names:
| user_id | Names | Role |
|---|---|---|
| dgg163e1 | Boyang, by, 博洋 | Boss |
| gb71g28b | RK | Leadership, R&D |
| 53gc5724 | Ding | Leadership, Operations |
| 217ec2c2 | Charline | HR |
| f2bfd283 | 曾晓玲, xiaoling | HR |
| f26fe45d | HH | Research |
| 45858f91 | zan, Eva | - |
| 7f79b6de | Issac | Operations |
| 1fb2547g | 王铁柱 | Operations |
| e5997acd | 尼克, Nico | Operations |
| 438c3c1f | Ivan | Operations |
| 17g8bab2 | Dodo | R&D, Product |
| 73b45ec5 | 启超, QiChaoShi | R&D, Design |
| d1978a39 | chenglin | R&D, Frontend |
| ef6fc4a7 | 冠林, Green | R&D, Frontend |
| b47fa8f2 | sixian, sx, Sixian-Yu | R&D, Frontend |
| 934fbf15 | jc, sagiri, 俊晨 | R&D, Backend |
| 8c4aad87 | 大明, daming | R&D, Backend |
| ab87g5e1 | Emily Yobal | Intern |
| 55fa337f | jingda, 景达 | Intern |
| 333c7cf1 | 刘纪源, 纪源, Aiden | Intern |
Business Rules
- Boyang is always added as attendee to every calendar event (automatic)
- Timezone handling: Uses IANA identifiers (e.g.,
Asia/Singapore,Asia/Shanghai) - Time format: Always
YYYY-MM-DD HH:MM:SS - user_id vs open_id: This skill uses
user_idformat (e.g.,dgg163e1), NOTopen_id(e.g.,ou_xxx)
Programmatic Usage
import { createEvent, updateEvent, deleteEvent } from './skills/lark-calendar/lib/calendar.mjs';
import { createTask, updateTask, deleteTask } from './skills/lark-calendar/lib/task.mjs';
import { resolveNames } from './skills/lark-calendar/lib/employees.mjs';
// Create event
const result = await createEvent({
title: 'Team Sync',
description: 'Weekly standup',
startTime: '2026-02-03 10:00:00',
endTime: '2026-02-03 10:30:00',
attendeeIds: ['dgg163e1', 'gb71g28b'],
location: 'Zoom',
timezone: 'Asia/Singapore'
});
// Create task
const task = await createTask({
title: 'Review document',
description: 'Q2 planning doc',
dueTime: '2026-02-05 18:00:00',
assigneeIds: ['dgg163e1'],
timezone: 'Asia/Singapore'
});
Lark API Reference
Permissions Required
Ensure your Lark app has these scopes:
calendar:calendar— Read/write calendar ✅ (already enabled)calendar:calendar:readonly— Read calendar ✅ (already enabled)task:task:write— Write tasks ⚠️ (needs to be added for task creation)task:task:read— Read taskscontact:user.employee_id:readonly— Read user info ✅ (already enabled)
- Go to Lark Open Platform
- Add scopes:
task:task:write,contact:contact:readonly(for dynamic employee lookup) - Re-publish the app version
contact:contact:readonly, the skill uses a static fallback employee list. Update lib/employees.mjs when team changes.
Installation
openclaw install lark-calendar
💻Code Examples
**Required Environment Variables** (in `.secrets.env`):
FEISHU_APP_ID=cli_a9f52a4ed7b8ded4
FEISHU_APP_SECRET=<your-app-secret>--location "Meeting Room A"
**Parameters:**
| Param | Required | Description |
|-------|----------|-------------|
| `--title` | ✅ | Event title |
| `--description` | ❌ | Event description |
| `--start` | ✅ | Start time (YYYY-MM-DD HH:MM:SS) |
| `--end` | ✅ | End time (YYYY-MM-DD HH:MM:SS) |
| `--attendees` | ❌ | Comma-separated names (auto-resolved to user_ids) |
| `--attendee-ids` | ❌ | Comma-separated user_ids directly |
| `--location` | ❌ | Event location |
| `--timezone` | ❌ | Timezone (default: Asia/Singapore) |
| `--calendar` | ❌ | Calendar ID (uses default if omitted) |
### Update Calendar Event--assignees "Boyang,jc"
**Parameters:**
| Param | Required | Description |
|-------|----------|-------------|
| `--title` | ✅ | Task title |
| `--description` | ❌ | Task description |
| `--due` | ✅ | Due date (YYYY-MM-DD HH:MM:SS) |
| `--assignees` | ❌ | Comma-separated names (auto-resolved) |
| `--assignee-ids` | ❌ | Comma-separated user_ids directly |
| `--timezone` | ❌ | Timezone (default: Asia/Singapore) |
### Update Task--task-id "xxx" --remove "jc"
## Employee Directory
Names are auto-resolved to Lark user_ids. Supported names:
| user_id | Names | Role |
|---------|-------|------|
| `dgg163e1` | Boyang, by, 博洋 | Boss |
| `gb71g28b` | RK | Leadership, R&D |
| `53gc5724` | Ding | Leadership, Operations |
| `217ec2c2` | Charline | HR |
| `f2bfd283` | 曾晓玲, xiaoling | HR |
| `f26fe45d` | HH | Research |
| `45858f91` | zan, Eva | - |
| `7f79b6de` | Issac | Operations |
| `1fb2547g` | 王铁柱 | Operations |
| `e5997acd` | 尼克, Nico | Operations |
| `438c3c1f` | Ivan | Operations |
| `17g8bab2` | Dodo | R&D, Product |
| `73b45ec5` | 启超, QiChaoShi | R&D, Design |
| `d1978a39` | chenglin | R&D, Frontend |
| `ef6fc4a7` | 冠林, Green | R&D, Frontend |
| `b47fa8f2` | sixian, sx, Sixian-Yu | R&D, Frontend |
| `934fbf15` | jc, sagiri, 俊晨 | R&D, Backend |
| `8c4aad87` | 大明, daming | R&D, Backend |
| `ab87g5e1` | Emily Yobal | Intern |
| `55fa337f` | jingda, 景达 | Intern |
| `333c7cf1` | 刘纪源, 纪源, Aiden | Intern |
## Business Rules
1. **Boyang is always added** as attendee to every calendar event (automatic)
2. **Timezone handling:** Uses IANA identifiers (e.g., `Asia/Singapore`, `Asia/Shanghai`)
3. **Time format:** Always `YYYY-MM-DD HH:MM:SS`
4. **user_id vs open_id:** This skill uses `user_id` format (e.g., `dgg163e1`), NOT `open_id` (e.g., `ou_xxx`)
## Programmatic Usagenode skills/lark-calendar/scripts/create-event.mjs \
--title "Meeting with Team" \
--description "Discuss Q2 roadmap" \
--start "2026-02-03 14:00:00" \
--end "2026-02-03 15:00:00" \
--attendees "Boyang,RK" \
--location "Meeting Room A"node skills/lark-calendar/scripts/update-event.mjs \
--event-id "f9900f6b-b472-4b17-a818-7b5584abdc37_0" \
--title "Updated Title" \
--start "2026-02-03 15:00:00" \
--end "2026-02-03 16:00:00"# List events for next 7 days
node skills/lark-calendar/scripts/list-events.mjs
# List events in date range
node skills/lark-calendar/scripts/list-events.mjs \
--start "2026-02-01" \
--end "2026-02-28"node skills/lark-calendar/scripts/create-task.mjs \
--title "Review PR #123" \
--description "Code review for authentication module" \
--due "2026-02-05 18:00:00" \
--assignees "Boyang,jc"node skills/lark-calendar/scripts/update-task.mjs \
--task-id "35fc5310-a1b1-49c7-be75-be631d3079ee" \
--title "Updated Task" \
--due "2026-02-06 18:00:00"# Add attendees
node skills/lark-calendar/scripts/manage-attendees.mjs \
--event-id "xxx" --add "RK,jc"
# Remove attendees
node skills/lark-calendar/scripts/manage-attendees.mjs \
--event-id "xxx" --remove "jc"⚙️Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
FEISHU_APP_ID | string | cli_a9f52a4ed7b8ded4 | - |
FEISHU_APP_SECRET | string | <your-app-secret> | - |
Tags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.