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 message receive, reactions, chat member changes, etc.).
$ npx skills add appleweiping/WEIPING_WIKI --skill lark-event -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install appleweiping/WEIPING_WIKI 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/appleweiping/WEIPING_WIKI.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skill/lark-cli/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/appleweiping/WEIPING_WIKI/tree/main/skill/lark-cli/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/appleweiping/WEIPING_WIKI/tree/main/skill/lark-cli/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 appleweiping/WEIPING_WIKI --skill lark-event -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install appleweiping/WEIPING_WIKI lark-event --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appleweiping/WEIPING_WIKI.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skill/lark-cli/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/appleweiping/WEIPING_WIKI/tree/main/skill/lark-cli/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 appleweiping/WEIPING_WIKI --skill lark-event -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install appleweiping/WEIPING_WIKI lark-event --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appleweiping/WEIPING_WIKI.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skill/lark-cli/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/appleweiping/WEIPING_WIKI/tree/main/skill/lark-cli/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/appleweiping/WEIPING_WIKI.git --path skill/lark-cli/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 appleweiping/WEIPING_WIKI --skill lark-event -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install appleweiping/WEIPING_WIKI lark-event --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appleweiping/WEIPING_WIKI.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skill/lark-cli/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/appleweiping/WEIPING_WIKI/tree/main/skill/lark-cli/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 appleweiping/WEIPING_WIKI 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 appleweiping/WEIPING_WIKI --skill lark-event -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/appleweiping/WEIPING_WIKI.git skills-src && mkdir -p .github/skills && cp -r skills-src/skill/lark-cli/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/appleweiping/WEIPING_WIKI/tree/main/skill/lark-cli/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 appleweiping/WEIPING_WIKI --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 appleweiping/WEIPING_WIKI lark-event --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appleweiping/WEIPING_WIKI.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skill/lark-cli/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/appleweiping/WEIPING_WIKI/tree/main/skill/lark-cli/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 message receive, reactions, chat member changes, etc.).
Lark Event is an agent skill from 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.). 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 subprocesses.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `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: knowledge base managed with an LLM workflow. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 76fdc42. 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 1.9k tokens when it runs, and up to ~3k if it reads all its reference files. Until then it costs about 113 tokens; SKILL.md has 792 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 appleweiping/WEIPING_WIKI at commit 76fdc42, republished under its MIT licence (© appleweiping). 792 words, ~1,923 tokens.
.claude/skills/lark-event/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; 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). < /dev/null / nohup / systemd's default StandardInput=null will cause an immediate graceful exit (stderr reason: signal). To keep running:
< <(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 |
| non-0 | Error: ... (no exited line) | Startup / runtime failure (permissions, network, params, config) |
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 |
|---|---|---|
| IM | references/lark-event-im.md | Catalog of 11 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) |
© appleweiping, MIT. 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 1 other file (references) in skill/lark-cli/skills/lark-event of appleweiping/WEIPING_WIKI.
Open the folder on GitHubat commit 76fdc42
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 skillappleweiping/WEIPING_WIKI | 119 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Feishu BridgeAlexAnys/feishu-openclaw | 317 | 1 repos | ~615 | Automated safety check: Pass | None | |
| Lark Eventrongxinzy/RongxinAI | 154 | 3 repos | ~2.7k | Automated safety check: Pass | AGPL-3.0 | |
| 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.
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…
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.
appleweiping/WEIPING_WIKI
Unified lazy-mode communication assistant for Vipin across WhatsApp, WeChat, QQ, Feishu/Lark, and email.
appleweiping/WEIPING_WIKI
Step 5 of the PaperOrchestra pipeline (arXiv:2604.05018). An agent skill from appleweiping/WEIPING_WIKI.
appleweiping/WEIPING_WIKI
Connect to and control Google Chrome browser using agent-browser with CDP (Chrome DevTools Protocol).
appleweiping/WEIPING_WIKI
Personal Gmail and Google Workspace email assistant for Vipin.
appleweiping/WEIPING_WIKI
A skill your agent uses when the user wants to log into 微信视频号, validate cookie state, upload videos, set scheduled publish time, fill long description, set a cover image, or save drafts through a…
appleweiping/WEIPING_WIKI
Route Feishu/Lark content access for Codex. An agent skill from appleweiping/WEIPING_WIKI.
Works with
Categories
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.). Lark Event is an agent skill from appleweiping/WEIPING_WIKI.).
Lark Event fits situations like: real-time message processing; long-running subscribers; streaming webhook/push handlers.
Run `npx skills add appleweiping/WEIPING_WIKI --skill lark-event -a claude-code`. Or copy the skill folder (skill/lark-cli/skills/lark-event in appleweiping/WEIPING_WIKI) into .claude/skills/lark-event in your project. Claude Code loads it when a task matches its description.
Run `npx skills add appleweiping/WEIPING_WIKI --skill lark-event -a codex`. Or copy the skill folder (skill/lark-cli/skills/lark-event in appleweiping/WEIPING_WIKI) 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 appleweiping/WEIPING_WIKI --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 MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.7k 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 1.1k 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 (rongxinzy/RongxinAI, 154 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.
appleweiping (a GitHub user) maintains it in appleweiping/WEIPING_WIKI, which has 119 GitHub stars. The repository holds 51 skills in this directory. The repository was last updated on August 26, 2026.
Source: appleweiping/WEIPING_WIKI on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.