名称: lark-calendar
描述: 在 Lark(飞书)中创建、更新和删除日历日程与任务。包含员工目录,可自动将姓名解析为 user_id。
版本: 1.0.0
作者: Claw AI
在 Lark(飞书)中创建、更新和删除日历日程与任务。
此技能提供完整的增删改查(CRUD)操作,支持:
- 日历日程 — 会议、预约、日程安排
- 任务(待办) — 带有截止日期的待办事项
必需的环境变量(在 .secrets.env 文件中设置):
FEISHU_APP_ID=cli_a9f52a4ed7b8ded4
FEISHU_APP_SECRET=<你的应用密钥>
默认日历: feishu.cn_caF80RJxgGcbBGsQx64bCh@group.calendar.feishu.cn (Claw 日历)
默认时区: Asia/Singapore
node skills/lark-calendar/scripts/create-event.mjs \
--title "团队会议" \
--description "讨论 Q2 路线图" \
--start "2026-02-03 14:00:00" \
--end "2026-02-03 15:00:00" \
--attendees "Boyang,RK" \
--location "会议室 A"
参数说明:
| 参数 | 必需 | 描述 |
|-------|----------|-------------|
| --title | ✅ | 日程标题 |
| --description | ❌ | 日程描述 |
| --start | ✅ | 开始时间 (YYYY-MM-DD HH:MM:SS) |
| --end | ✅ | 结束时间 (YYYY-MM-DD HH:MM:SS) |
| --attendees | ❌ | 逗号分隔的姓名列表(自动解析为 user_id) |
| --attendee-ids | ❌ | 逗号分隔的 user_id 列表(直接指定) |
| --location | ❌ | 日程地点 |
| --timezone | ❌ | 时区(默认:Asia/Singapore) |
| --calendar | ❌ | 日历 ID(省略则使用默认日历) |
node skills/lark-calendar/scripts/update-event.mjs \
--event-id "f9900f6b-b472-4b17-a818-7b5584abdc37_0" \
--title "更新后的标题" \
--start "2026-02-03 15:00:00" \
--end "2026-02-03 16:00:00"
node skills/lark-calendar/scripts/delete-event.mjs \
--event-id "f9900f6b-b472-4b17-a818-7b5584abdc37_0"
# 列出未来 7 天的日程
node skills/lark-calendar/scripts/list-events.mjs
# 列出指定日期范围内的日程
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 "评审 PR #123" \
--description "认证模块的代码评审" \
--due "2026-02-05 18:00:00" \
--assignees "Boyang,jc"
参数说明:
| 参数 | 必需 | 描述 |
|-------|----------|-------------|
| --title | ✅ | 任务标题 |
| --description | ❌ | 任务描述 |
| --due | ✅ | 截止日期 (YYYY-MM-DD HH:MM:SS) |
| --assignees | ❌ | 逗号分隔的姓名列表(自动解析) |
| --assignee-ids | ❌ | 逗号分隔的 user_id 列表(直接指定) |
| --timezone | ❌ | 时区(默认:Asia/Singapore) |
node skills/lark-calendar/scripts/update-task.mjs \
--task-id "35fc5310-a1b1-49c7-be75-be631d3079ee" \
--title "更新后的任务" \
--due "2026-02-06 18:00:00"
node skills/lark-calendar/scripts/delete-task.mjs \
--task-id "35fc5310-a1b1-49c7-be75-be631d3079ee"
# 添加参与者
node skills/lark-calendar/scripts/manage-attendees.mjs \
--event-id "xxx" --add "RK,jc"
# 移除参与者
node skills/lark-calendar/scripts/manage-attendees.mjs \
--event-id "xxx" --remove "jc"
# 添加成员
node skills/lark-calendar/scripts/manage-task-members.mjs \
--task-id "xxx" --add "RK,jc"
# 移除成员
node skills/lark-calendar/scripts/manage-task-members.mjs \
--task-id "xxx" --remove "jc"
姓名会自动解析为 Lark 的 user_id。支持的姓名列表:
| user_id | 姓名 | 角色 |
|---|---|---|
dgg163e1 |
Boyang, by, 博洋 | 负责人 |
gb71g28b |
RK | 领导层,研发 |
53gc5724 |
Ding | 领导层,运营 |
217ec2c2 |
Charline | 人力资源 |
f2bfd283 |
曾晓玲, xiaoling | 人力资源 |
f26fe45d |
HH | 研究 |
45858f91 |
zan, Eva | - |
7f79b6de |
Issac | 运营 |
1fb2547g |
王铁柱 | 运营 |
e5997acd |
尼克, Nico | 运营 |
438c3c1f |
Ivan | 运营 |
17g8bab2 |
Dodo | 研发,产品 |
73b45ec5 |
启超, QiChaoShi | 研发,设计 |
d1978a39 |
chenglin | 研发,前端 |
ef6fc4a7 |
冠林, Green | 研发,前端 |
b47fa8f2 |
sixian, sx, Sixian-Yu | 研发,前端 |
934fbf15 |
jc, sagiri, 俊晨 | 研发,后端 |
8c4aad87 |
大明, daming | 研发,后端 |
ab87g5e1 |
Emily Yobal | 实习生 |
55fa337f |
jingda, 景达 | 实习生 |
333c7cf1 |
刘纪源, 纪源, Aiden | 实习生 |
Asia/Singapore、Asia/Shanghai)。YYYY-MM-DD HH:MM:SS。user_id 格式(例如 dgg163e1),而非 open_id 格式(例如 ou_xxx)。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';
// 创建日程
const result = await createEvent({
title: '团队同步会',
description: '每周站会',
startTime: '2026-02-03 10:00:00',
endTime: '2026-02-03 10:30:00',
attendeeIds: ['dgg163e1', 'gb71g28b'],
location: 'Zoom',
timezone: 'Asia/Singapore'
});
// 创建任务
const task = await createTask({
title: '评审文档',
description: 'Q2 规划文档',
dueTime: '2026-02-05 18:00:00',
assigneeIds: ['dgg163e1'],
timezone: 'Asia/Singapore'
});
确保你的 Lark 应用拥有以下权限范围:
- calendar:calendar — 读写日历 ✅ (已启用)
- calendar:calendar:readonly — 读取日历 ✅ (已启用)
- task:task:write — 写入任务 ⚠️ (需要添加以支持任务创建)
- task:task:read — 读取任务
- contact:user.employee_id:readonly — 读取用户信息 ✅ (已启用)
添加权限步骤:
1. 访问 Lark 开放平台
2. 添加权限范围:task:task:write、contact:contact:readonly(用于动态员工查找)
3. 重新发布应用版本
注意: 如果没有 contact:contact:readonly 权限,技能将使用静态的员工列表作为后备方案。团队人员变动时,请更新 lib/employees.mjs 文件。