Create, update, and delete calendar events and tasks in Lark (Feishu).
This skill provides full CRUD operations for:
Required Environment Variables (in .secrets.env):
bash
FEISHU_APP_ID=cli_a9f52a4ed7b8ded4
FEISHU_APP_SECRET=<your-app-secret>
Default Calendar: feishu.cn_caF80RJxgGcbBGsQx64bCh@group.calendar.feishu.cn (Claw calendar)
Default Timezone: Asia/Singapore
bash
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:
ParamRequiredDescription--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)
bash
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"
bash
node skills/lark-calendar/scripts/delete-event.mjs \
--event-id "f9900f6b-b472-4b17-a818-7b5584abdc37_0"
bash
# 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"
bash
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:
ParamRequiredDescription--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)
bash
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"
bash
node skills/lark-calendar/scripts/delete-task.mjs \
--task-id "35fc5310-a1b1-49c7-be75-be631d3079ee"
bash
# 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"
bash
# 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"
Names are auto-resolved to Lark user_ids. Supported names:
user_idNamesRoledgg163e1Boyang, by, 博洋Bossgb71g28bRKLeadership, R&D53gc5724DingLeadership, Operations217ec2c2CharlineHRf2bfd283曾晓玲, xiaolingHRf26fe45dHHResearch45858f91zan, Eva-7f79b6deIssacOperations1fb2547g王铁柱Operationse5997acd尼克, NicoOperations438c3c1fIvanOperations17g8bab2DodoR&D, Product73b45ec5启超, QiChaoShiR&D, Designd1978a39chenglinR&D, Frontendef6fc4a7冠林, GreenR&D, Frontendb47fa8f2sixian, sx, Sixian-YuR&D, Frontend934fbf15jc, sagiri, 俊晨R&D, Backend8c4aad87大明, damingR&D, Backendab87g5e1Emily YobalIntern55fa337fjingda, 景达Intern333c7cf1刘纪源, 纪源, AidenIntern
Asia/Singapore, Asia/Shanghai)YYYY-MM-DD HH:MM:SSuser_id format (e.g., dgg163e1), NOT open_id (e.g., ou_xxx)javascript
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'
});
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)To add permissions:
task:task:write, contact:contact:readonly (for dynamic employee lookup)Note: Without contact:contact:readonly, the skill uses a static fallback employee list. Update lib/employees.mjs when team changes.