lark-event

Stream Lark/Feishu platform events as NDJSON via lark-cli event consume.

3|2|Updated Jul 21, 2026
One-click install
npx skills add https://github.com/zlsbksdxl/codex-lark --skill lark-event-zlsbksdxl
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: lark-event
Source: https://github.com/zlsbksdxl/codex-lark/tree/main/plugins/feishu2codex/skills/lark-event
Command: npx skills add https://github.com/zlsbksdxl/codex-lark --skill lark-event-zlsbksdxl

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires lark-cli, and includes references (resource) components.

What problem does it solve? Building Lark/Feishu bots and real-time integrations normally requires standing up webhook servers and handling push infrastructure. This Skill lets an AI agent subscribe to and consume Lark platform events (IM messages, approval status changes, task updates, meeting lifecycle, minutes, whiteboard edits) directly as NDJSON streams through the lark-cli event consume command, with a subprocess contract designed for agent callers. ## Core Features & Use Cases - Event discovery and schema inspection: List all subscribable EventKeys with lark-cli event list and inspect each key's params and output schema via lark-cli event schema before writing jq filters. - Bounded or unbounded consumption: Stream events to stdout as NDJSON, with --max-events and --timeout for bounded runs, --jq for filtering/projection, and a stderr ready-marker plus structured exit codes for reliable subprocess orchestration. - Domain references: Detailed per-domain catalogs for IM (12 EventKeys), Approval, Task, VC meetings, Minutes, Whiteboard, and Application bot menu events, including auth scopes, subscription lifecycle, and field-level gotchas. - Use Case: Build a Lark bot that listens for incoming messages with lark-cli event consume im.message.receive_v1 --as bot, filters group text messages via jq, and replies through the IM skill. ## Quick Start Ask the agent to listen for incoming Lark messages by running lark-cli event consume im.message.receive_v1 with the bot identity and show each received message.

Frequently Asked Questions about lark-event

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I listen for incoming Lark/Feishu messages in real time?

Run lark-cli event consume im.message.receive_v1 --as bot to stream every received message as NDJSON to stdout. Add --jq filters to narrow by chat type, message type, or sender, and use --max-events or --timeout for bounded runs.

How do I find which Lark events I can subscribe to?

Run lark-cli event list --json to see all subscribable EventKeys, then lark-cli event schema <EventKey> --json to inspect its parameters and output schema. The schema's jq_root_path and field descriptions tell you exactly how to write --jq filters.

Can I consume multiple Lark event types in one process?

No, each event consume process accepts exactly one EventKey. To listen to multiple keys, start one subprocess per key; they share a single local bus daemon, so overhead is small and each stream keeps one consistent output shape.

Why does my jq filter silently drop all Lark events?

A jq runtime error skips the event with only a WARN on stderr. A common cause is applying fromjson to .content, which lark-cli pre-decodes to plain text for most message types; only interactive card messages keep raw JSON. Check the schema field descriptions first.

What happens if I kill -9 a Lark event consume process?

kill -9 skips the OAPI unsubscribe step for EventKeys with PreConsume hooks, leaking server-side subscriptions and causing 'subscription already exists' errors or duplicate delivery on restart. Use SIGTERM or close stdin for graceful shutdown instead.

Does lark-event support both user and bot identities?

Yes, most EventKeys accept --as user or --as bot, but some are restricted. Approval, VC, and Minutes events require --as user, while Task and Whiteboard events support both identities depending on the scope granted.