skills$openclaw/lark-calendar
boyangwang4.0k

by boyangwang

lark-calendar – OpenClaw Skill

lark-calendar is an OpenClaw Skills integration for coding workflows. Create, update, and delete calendar events and tasks in Lark (Feishu). Includes employee directory for automatic name-to-user_id resolution.

4.0k stars8.0k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namelark-calendar
descriptionCreate, update, and delete calendar events and tasks in Lark (Feishu). Includes employee directory for automatic name-to-user_id resolution. OpenClaw Skills integration.
ownerboyangwang
repositoryboyangwang/lark-calendar
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @boyangwang/lark-calendar
last updatedFeb 7, 2026

Maintainer

boyangwang

boyangwang

Maintains lark-calendar in the OpenClaw Skills directory.

View GitHub profile
File Explorer
19 files
.
lib
calendar.mjs
9.5 KB
employees.mjs
7.3 KB
lark-api.mjs
3.6 KB
task.mjs
4.6 KB
scripts
create-event.mjs
4.0 KB
create-task.mjs
3.1 KB
delete-event.mjs
1.4 KB
delete-task.mjs
1.1 KB
list-events.mjs
2.5 KB
manage-attendees.mjs
3.3 KB
manage-task-members.mjs
3.0 KB
update-event.mjs
2.2 KB
update-task.mjs
1.8 KB
_meta.json
290 B
package-lock.json
678 B
package.json
337 B
SKILL.md
6.8 KB
SKILL.md

name: lark-calendar description: Create, update, and delete calendar events and tasks in Lark (Feishu). Includes employee directory for automatic name-to-user_id resolution. version: 1.0.0 author: Claw AI

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: feishu.cn_caF80RJxgGcbBGsQx64bCh@group.calendar.feishu.cn (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:

ParamRequiredDescription
--titleEvent title
--descriptionEvent description
--startStart time (YYYY-MM-DD HH:MM:SS)
--endEnd time (YYYY-MM-DD HH:MM:SS)
--attendeesComma-separated names (auto-resolved to user_ids)
--attendee-idsComma-separated user_ids directly
--locationEvent location
--timezoneTimezone (default: Asia/Singapore)
--calendarCalendar 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:

ParamRequiredDescription
--titleTask title
--descriptionTask description
--dueDue date (YYYY-MM-DD HH:MM:SS)
--assigneesComma-separated names (auto-resolved)
--assignee-idsComma-separated user_ids directly
--timezoneTimezone (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_idNamesRole
dgg163e1Boyang, by, 博洋Boss
gb71g28bRKLeadership, R&D
53gc5724DingLeadership, Operations
217ec2c2CharlineHR
f2bfd283曾晓玲, xiaolingHR
f26fe45dHHResearch
45858f91zan, Eva-
7f79b6deIssacOperations
1fb2547g王铁柱Operations
e5997acd尼克, NicoOperations
438c3c1fIvanOperations
17g8bab2DodoR&D, Product
73b45ec5启超, QiChaoShiR&D, Design
d1978a39chenglinR&D, Frontend
ef6fc4a7冠林, GreenR&D, Frontend
b47fa8f2sixian, sx, Sixian-YuR&D, Frontend
934fbf15jc, sagiri, 俊晨R&D, Backend
8c4aad87大明, damingR&D, Backend
ab87g5e1Emily YobalIntern
55fa337fjingda, 景达Intern
333c7cf1刘纪源, 纪源, AidenIntern

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 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 tasks
  • contact:user.employee_id:readonly — Read user info ✅ (already enabled)

To add permissions:

  1. Go to Lark Open Platform
  2. Add scopes: task:task:write, contact:contact:readonly (for dynamic employee lookup)
  3. Re-publish the app version

Note: Without contact:contact:readonly, the skill uses a static fallback employee list. Update lib/employees.mjs when team changes.

README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

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 tasks - `contact:user.employee_id:readonly` — Read user info ✅ (already enabled) **To add permissions:** 1. Go to [Lark Open Platform](https://open.larksuite.com/app/cli_a9f52a4ed7b8ded4/auth) 2. Add scopes: `task:task:write`, `contact:contact:readonly` (for dynamic employee lookup) 3. Re-publish the app version **Note:** Without `contact:contact:readonly`, the skill uses a static fallback employee list. Update `lib/employees.mjs` when team changes.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

Configuration

**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`

FAQ

How do I install lark-calendar?

Run openclaw add @boyangwang/lark-calendar in your terminal. This installs lark-calendar into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/boyangwang/lark-calendar. Review commits and README documentation before installing.