| name | feishu-calendar |
| description | This skill should be used when the user asks to "schedule a meeting on Feishu", "check my Feishu calendar", "create a Feishu event", "update a Lark calendar event", "delete a calendar event", "what's on my schedule", "book a room on Feishu", "invite someone to a meeting", "manage Feishu calendar", or any calendar operations involving Feishu or Lark. Also trigger for general scheduling requests like "add a meeting", "move my standup", "cancel Friday's review", or "who's attending".
|
| metadata | {"version":"0.2.0"} |
Feishu Calendar Skill
Manage Feishu (Lark) calendar events via the Open Platform Calendar API v4.
Execution Modes
This skill works in two environments. Detect which one you are in and follow the matching workflow.
Claude Code (has internet access)
Run the Python scripts directly via Bash. No need to ask the user to run anything.
cd ${CLAUDE_PLUGIN_ROOT}/skills/feishu-calendar/scripts && python run.py
You can also run individual tools directly:
cd ${CLAUDE_PLUGIN_ROOT}/skills/feishu-calendar/scripts && python -c "
import sys; sys.path.insert(0, 'tools')
from list_events import run
run({'calendar_id': 'feishu.cn_xxx@group.calendar.feishu.cn', 'days': 7})
"
Or use run.py with a config.json you write — same result, just write config.json then python run.py.
Cowork (sandboxed, no internet)
Cowork cannot call the Feishu API. Use the config.json → run.py → user workflow:
- Write
config.json in the scripts/ directory.
- Ask the user to run:
python run.py from the scripts/ directory.
- Read the output the user pastes back, or read
output.json.
Setup
On first use, check that .env exists in scripts/. If not, ask the user for their Feishu App ID and App Secret, then create scripts/.env:
FEISHU_APP_ID=<their_app_id>
FEISHU_APP_SECRET=<their_app_secret>
FEISHU_BASE_URL=https://open.feishu.cn
See INSTALL.md at the plugin root for detailed setup instructions.
Quick Reference
| What to do | Tool name | Key params |
|---|
| List calendars | list_calendars | (none) |
| List events in a range | list_events | calendar_id, start, end, days |
| Get event details | get_event | calendar_id, event_id |
| Create events | create_events | calendar_id, events[] |
| Update an event | update_event | calendar_id, event_id, + fields |
| Delete events | delete_events | calendar_id, event_ids[] |
| Add/list attendees | manage_attendees | calendar_id, event_id, action, attendees[] |
Writing config.json
Write a JSON file with a tasks array. Each task has tool, description, and params:
{
"tasks": [
{
"tool": "create_events",
"description": "Schedule team standup",
"params": {
"calendar_id": "feishu.cn_xxx@group.calendar.feishu.cn",
"events": [
{
"summary": "Team Standup",
"start": "2026-03-20T10:00:00+08:00",
"end": "2026-03-20T10:30:00+08:00",
"description": "Daily sync"
}
]
}
}
]
}
Multiple tasks can be chained in one config.json and they execute sequentially.
Time Format
Always use ISO 8601 with timezone offset: "2026-03-20T10:00:00+08:00"
The user is in UTC+8 (China Standard Time). Never use naive datetimes without offset.
Detailed Reference
Read references/agent-guide.md for the full specification of every tool's parameters, multi-task examples, common patterns, and troubleshooting.
Read references/calendars.md for the list of known calendars and their IDs.