Feishu Bridge
AlexAnys/feishu-openclaw
Connect a Feishu (Lark) bot to Clawdbot via WebSocket long-connection.
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via lark-cli event consume <EventKey (covers IM messages/reactions/chat changes, Approval status changes…
$ npx skills add rongxinzy/RongxinAI --skill lark-event -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rongxinzy/RongxinAI lark-event --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/rongxinzy/RongxinAI.git skills-src && mkdir -p .claude/skills && cp -r skills-src/MCPs/feishu/skills/lark-event .claude/skills/lark-event && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "lark-event" agent skill from https://github.com/rongxinzy/RongxinAI/tree/main/MCPs/feishu/skills/lark-event into .claude/skills/lark-event/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lark-event", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/rongxinzy/RongxinAI/tree/main/MCPs/feishu/skills/lark-eventType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add rongxinzy/RongxinAI --skill lark-event -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rongxinzy/RongxinAI lark-event --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rongxinzy/RongxinAI.git skills-src && mkdir -p .agents/skills && cp -r skills-src/MCPs/feishu/skills/lark-event .agents/skills/lark-event && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "lark-event" agent skill from https://github.com/rongxinzy/RongxinAI/tree/main/MCPs/feishu/skills/lark-event into .agents/skills/lark-event/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lark-event", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rongxinzy/RongxinAI --skill lark-event -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rongxinzy/RongxinAI lark-event --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rongxinzy/RongxinAI.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/MCPs/feishu/skills/lark-event .cursor/skills/lark-event && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "lark-event" agent skill from https://github.com/rongxinzy/RongxinAI/tree/main/MCPs/feishu/skills/lark-event into .cursor/skills/lark-event/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lark-event", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/rongxinzy/RongxinAI.git --path MCPs/feishu/skills/lark-event--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add rongxinzy/RongxinAI --skill lark-event -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rongxinzy/RongxinAI lark-event --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rongxinzy/RongxinAI.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/MCPs/feishu/skills/lark-event .gemini/skills/lark-event && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "lark-event" agent skill from https://github.com/rongxinzy/RongxinAI/tree/main/MCPs/feishu/skills/lark-event into .gemini/skills/lark-event/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lark-event", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install rongxinzy/RongxinAI lark-eventInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add rongxinzy/RongxinAI --skill lark-event -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rongxinzy/RongxinAI.git skills-src && mkdir -p .github/skills && cp -r skills-src/MCPs/feishu/skills/lark-event .github/skills/lark-event && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "lark-event" agent skill from https://github.com/rongxinzy/RongxinAI/tree/main/MCPs/feishu/skills/lark-event into .github/skills/lark-event/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lark-event", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rongxinzy/RongxinAI --skill lark-event -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rongxinzy/RongxinAI lark-event --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rongxinzy/RongxinAI.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/MCPs/feishu/skills/lark-event .opencode/skills/lark-event && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "lark-event" agent skill from https://github.com/rongxinzy/RongxinAI/tree/main/MCPs/feishu/skills/lark-event into .opencode/skills/lark-event/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lark-event", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
lark-eventLark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via lark-cli event consume <EventKey (covers IM messages/reactions/chat changes, Approval status changes…
Lark Event is an agent skill from rongxinzy/RongxinAI. Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via lark-cli event consume <EventKey (covers IM messages/reactions/chat changes, Approval status changes, Task updates, VC meeting started/joined/ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports --max-events / --timeout bounded runs and a stderr ready-marker contract — designed for AI agents running as…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `references/lark-event-application.md`, `references/lark-event-approval.md` and `references/lark-event-im.md`).
It sits in Productivity & Automation, covering Messaging and chat bots. It works with Feishu (Lark). The repository describes itself as: An all-in-one local AI Agent workspace with a fully self-developed stack. The licence is AGPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 31b424a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Lark Event loads about 2.7k tokens when it runs, and up to ~9.7k if it reads all its reference files. Until then it costs about 136 tokens; SKILL.md has 1,048 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from rongxinzy/RongxinAI at commit 31b424a, republished under its AGPL-3.0 licence (© rongxinzy). 1,048 words, ~2,703 tokens.
.claude/skills/lark-event/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.Prerequisite: Read
../lark-shared/SKILL.mdfirst for authentication,--as user/botswitching,Permission deniedhandling, and safety rules.
| Command | Purpose |
|---|---|
lark-cli event list [--json] | List all subscribable EventKeys |
lark-cli event schema <EventKey> [--json] | Show an EventKey's params and output schema |
lark-cli event consume <EventKey> [flags] | Blocking consume; events → stdout NDJSON |
lark-cli event status [--json] [--fail-on-orphan] | Inspect the local bus daemon status |
lark-cli event stop [--all] [--force] | Stop the bus daemon |
| Flag | Description |
|---|---|
--param key=value / -p | Business params (repeatable; comma-separated for multi-value). Unknown keys fail with valid names listed inline |
--jq <expr> | jq expression to filter / transform each event; empty output skips the event |
--max-events N | Exit after N events. Default 0 = unlimited |
--timeout D | Exit after duration D (e.g. 30s, 2m). Default 0 = no timeout. Whichever of --max-events / --timeout fires first wins |
--output-dir <dir> | Write each event as a file (relative paths only; prevents traversal) |
--quiet | Suppress stderr diagnostics. AI should not use this — it silences the ready marker |
--as user|bot|auto | Identity for the session (see lark-shared) |
# Default: stream every event for the key (no filter, no projection)
lark-cli event consume im.message.receive_v1 --as bot
# Grab one sample event to inspect payload shape
lark-cli event consume im.message.receive_v1 --max-events 1 --timeout 30s --as bot
# Run for 10 minutes then auto-exit
lark-cli event consume im.message.receive_v1 --timeout 10m --as bot
# Consume multiple EventKeys concurrently (one shape per process, no dispatcher)
lark-cli event consume im.message.receive_v1 --as bot > receive.ndjson &
lark-cli event consume im.message.reaction.created_v1 --as bot > reaction.ndjson &
wait
lark-cli event list --json → pick a legal keylark-cli event schema <key> --json → read resolved_output_schema + jq_root_path to determine field pathslark-cli event consume <key> [--jq '<expr>'] → consumeevent consume's stderr emits a fixed line [event] ready event_key=<key>. Parent processes should block on stderr until this line appears, then start reading stdout. Do not fall back to sleep.
event consume treats stdin close as a shutdown signal (wired for AI subprocess callers). Bounded runs are exempt: when --max-events or --timeout is set (> 0), stdin EOF is ignored and the run exits only via its own bound, timeout, or SIGTERM. For unbounded runs, < /dev/null / nohup / systemd's default StandardInput=null will cause an immediate graceful exit (stderr reason: signal). To keep an unbounded run alive:
< <(tail -f /dev/null)--max-events N / --timeout DOn exit, the last stderr line is [event] exited — received N event(s) in Xs (reason: ...).
| exit code | reason | Trigger |
|---|---|---|
| 0 | reason: limit | --max-events reached |
| 0 | reason: timeout | --timeout reached |
| 0 | reason: signal | Ctrl+C / SIGTERM / stdin EOF (stdin EOF applies to unbounded runs only) |
| 1 | JSON error envelope on stderr | Lark API business failure during pre-consume setup (for example subscription create/delete) |
| 2 | JSON error envelope on stderr (no exited line) | Validation failure (unknown EventKey, bad --param / --jq, another bus already connected) |
| 3 | JSON error envelope on stderr | Auth failure (missing token, missing scopes) |
| 4 / 5 | JSON error envelope on stderr | Network / internal failure (bus startup, handshake, file I/O) |
Startup and runtime failures emit a structured JSON envelope on stderr: {"ok":false,"error":{"type","subtype","param","message","hint",...}} (the envelope may also carry top-level identity / _notice siblings). Parse error.type / error.subtype to branch (e.g. missing_scope carries a missing_scopes list), error.param to find the offending flag, and error.hint for the recovery action — do not regex-match message text.
Orchestrators should treat reason: limit/timeout/signal (all exit 0) as "business completion" and non-zero as "failure".
kill -9Avoid kill -9 on consume processes: for EventKeys with a PreConsume hook (those that register server-side subscriptions via OAPI), kill -9 skips the OAPI unsubscribe and leaks server-side subscriptions (symptoms: "subscription already exists" on restart, duplicate event delivery). Prefer SIGTERM or closing stdin.
The command takes exactly one positional argument; k1,k2 and wildcards are unsupported. Listening to N keys means N subprocesses — this is intentional:
--as / --jq / --max-events / --timeout per keyAll N consumers share a single bus daemon (UDS local IPC), so the overhead is small
event schema <key> --json is the source of truth for writing --jq. Four things to look at:
(1) Where fields start — see jq_root_path
"." → fields are at the top level, write .chat_id".event" → fields are inside a V2 envelope, write .event.chat_id(2) Field list and types — see resolved_output_schema.properties.<name>
Each field carries type / description, and some also have format. Snippet (from event schema im.message.receive_v1 --json):
{
"chat_id": {"type":"string", "format":"chat_id", "description":"Chat ID, prefixed with oc_"},
"sender_id": {"type":"string", "format":"open_id", "description":"Sender open_id, prefixed with ou_"},
"create_time": {"type":"string", "format":"timestamp_ms", "description":"Send time as ms-epoch string"}
}(3) Field semantics — see the format tag
Lark-defined semantic tags (not JSON Schema's standard format). Common values: open_id / chat_id / message_id / timestamp_ms / email. Purpose: distinguish "same string type, different meanings" fields so you can reverse-lookup via API or convert formats.
(4) Decoded state — read the field's description
event consume runs Process hooks that may pre-decode some payload fields (flattening V2 envelopes, rendering .content to plain text, etc.) — behavior differs from raw OAPI. Always read the field's description before writing jq, especially for generic field names like content / data / body / payload.
Why it matters: blindly applying fromjson to an already-decoded text field makes jq error on every event and silently drop it — the consumer looks alive but emits nothing, with only a single WARN line buried on stderr. (This is the general behavior: any jq runtime error skips the event with a one-line WARN; the loop does not abort.)
Don't shortcut the schema: when projecting event schema --json with jq, do not strip .description from properties — that's the field that tells you whether a field is already decoded. Dump the full property objects, not just keys.
Aside: --param's valid parameters also live in the schema — the params section lists name / type / required / enum / default / description; section missing = this key accepts no --param.
| Topic | Reference | Coverage |
|---|---|---|
| Application | references/lark-event-application.md | Catalog of Application EventKeys, including application.bot.menu_v6 for custom bot menu push events + flattened event_key / operator fields + jq recipe |
| Approval | references/lark-event-approval.md | Catalog of 2 Approval EventKeys (approval.instance.status_changed_v4, approval.task.status_changed_v4) + optional/multi subscription_type pre-registration + user-auth subscription lifecycle + flat output field reference |
| IM | references/lark-event-im.md | Catalog of 12 IM EventKeys + shape notes (flat vs V2 envelope) + im.message.receive_v1 field gotchas (sender_id is open_id only; .content is plain text except for interactive cards) + common jq recipes (filter by chat_type / message_type / sender); for card.action.trigger see also ../lark-im/references/lark-im-card-action-reply.md |
| Task | references/lark-event-task.md | Catalog of 1 Task EventKey (task.task.update_user_access_v2) + Native V2 envelope shape + task commit types + user/bot subscription notes |
| VC | references/lark-event-vc.md | Catalog of 4 VC EventKeys (vc.meeting.participant_meeting_started_v1, vc.meeting.participant_meeting_joined_v1, vc.meeting.participant_meeting_ended_v1, vc.note.generated_v1) + field reference + source type semantics (meeting only) |
| Minutes | references/lark-event-minutes.md | Catalog of 1 Minutes EventKey (minutes.minute.generated_v1) + field reference + source type semantics (meeting only) |
| Whiteboard | references/lark-event-whiteboard.md | Catalog of 1 Board EventKey (board.whiteboard.updated_v1) + per-whiteboard subscription model (requires -p whiteboard_id=<token>) + payload field reference (whiteboard_id / operator_ids triple-id) |
© rongxinzy, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (references) in MCPs/feishu/skills/lark-event of rongxinzy/RongxinAI.
Open the folder on GitHubat commit 31b424a
We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 3 other GitHub owners. This page covers the copy in rongxinzy/RongxinAI, which our catalogue first saw on October 7, 2026.
Lark Event next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Lark Event this skillrongxinzy/RongxinAI | 154 | 3 repos | ~2.7k | Automated safety check: Pass | AGPL-3.0 | |
| Feishu BridgeAlexAnys/feishu-openclaw | 317 | 1 repos | ~615 | Automated safety check: Pass | None | |
| Lark Eventappleweiping/WEIPING_WIKI | 119 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Feishucodewhale-hq/Codewhale | 41k | — | ~413 | Automated safety check: Pass | MIT | |
| Feishu NotifyAI4Scientist/nano-scientist | 128 | 4 repos | ~1.6k | Automated safety check: Pass | None | |
| Feishu LarkOpenClaudia/openclaudia-skills | 713 | — | ~7.4k | Automated safety check: Notes | MIT |
AlexAnys/feishu-openclaw
Connect a Feishu (Lark) bot to Clawdbot via WebSocket long-connection.
appleweiping/WEIPING_WIKI
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via lark-cli event consume <EventKey (covers IM message receive, reactions, chat member changes, etc.).
codewhale-hq/Codewhale
Work with Feishu or Lark bots, docs, sheets, bitables, approval flows, and OpenAPI/MCP setup without hardcoding credentials.
AI4Scientist/nano-scientist
Send notifications to Feishu/Lark. An agent skill from AI4Scientist/nano-scientist.
OpenClaudia/openclaudia-skills
Send messages and interactive cards to Feishu (飞书) and Lark channels via webhooks or Bot API.
sugarforever/01coder-agent-skills
Add Feishu (飞书/Lark) as a channel. An agent skill from sugarforever/01coder-agent-skills.
rongxinzy/RongxinAI
SaaS financial health advisor. An agent skill from rongxinzy/RongxinAI.
rongxinzy/RongxinAI
Reduce voluntary and involuntary churn through cancel flow design, save offers, exit surveys, and dunning sequences.
rongxinzy/RongxinAI
The only skill for creating a new PowerPoint deck. An agent skill from rongxinzy/RongxinAI.
rongxinzy/RongxinAI
ZhiYuan Agent expert package lifecycle manager for the pi engine.
rongxinzy/RongxinAI
Professional Ziwei Doushu consultation skill with an offline calculation engine.
rongxinzy/RongxinAI
飞书邮箱:Use when user mentions 起草邮件、写邮件、草稿、发送/回复/转发邮件、查阅邮件、看邮件、搜索邮件、邮件文件夹、邮件标签、邮件联系人、监听新邮件、邮件收信规则等;use for mail/email intent only.
Works with
Categories
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via lark-cli event consume <EventKey (covers IM messages/reactions/chat changes, Approval status changes…. Lark Event is an agent skill from rongxinzy/RongxinAI.).
Lark Event fits situations like: real-time message processing; long-running subscribers; streaming webhook/push handlers.
Run `npx skills add rongxinzy/RongxinAI --skill lark-event -a claude-code`. Or copy the skill folder (MCPs/feishu/skills/lark-event in rongxinzy/RongxinAI) into .claude/skills/lark-event in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rongxinzy/RongxinAI --skill lark-event -a codex`. Or copy the skill folder (MCPs/feishu/skills/lark-event in rongxinzy/RongxinAI) into .agents/skills/lark-event in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rongxinzy/RongxinAI --skill lark-event -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lark-event, .gemini/skills/lark-event, .github/skills/lark-event and .opencode/skills/lark-event in your project.
SKILL.md names no scripts, command-line tools or credentials: Lark Event is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Lark Event is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Lark Event: Feishu Bridge (AlexAnys/feishu-openclaw, 317 stars), Lark Event (appleweiping/WEIPING_WIKI, 119 stars), Feishu (codewhale-hq/Codewhale, 41k stars) and Feishu Notify (AI4Scientist/nano-scientist, 128 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rongxinzy (a GitHub organization) maintains it in rongxinzy/RongxinAI, which has 154 GitHub stars. The repository holds 94 skills in this directory. The repository was last updated on October 10, 2026.
Source: rongxinzy/RongxinAI on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.