Skills feishu-group

Teach OpenClaw how to work in Feishu (Lark) group chats — recognize who's talking, behave properly in groups vs DMs, respect multi-user privacy, and format messages for the platform. Use when connecting OpenClaw to Feishu and you want your agent to be a competent group participant, not just a responder.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/4ier/feishu-group" ~/.claude/skills/openclaw-skills-feishu-group && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/4ier/feishu-group" ~/.openclaw/skills/openclaw-skills-feishu-group && rm -rf "$T"
manifest: skills/4ier/feishu-group/SKILL.md
source content

Feishu Group

Everything your OpenClaw agent needs to be a good Feishu group chat participant.

1. Know who you're talking to

Feishu group messages include sender names in metadata. DMs don't — they only include an opaque

open_id
. Without setup, your agent will assume all DMs come from one person.

Fix: Embed an

open_id → name
lookup table in USER.md. Since workspace files are injected into the system prompt, the agent matches senders instantly — no tool calls.

Run the bundled sync script to pull your org's contacts:

python3 scripts/sync_feishu_contacts.py <openclaw_config> <feishu_account> <user_md_path>

This populates a table in USER.md:

## 飞书通讯录 (App Name)
飞书 DM 不携带发送者姓名。用 inbound metadata 的 chat_id(格式 `user:ou_xxx`)匹配下表识别发送者。
| 姓名 | open_id |
|------|---------|
| Alice | ou_abc123 |
| Bob | ou_def456 |

Important: Feishu

open_id
is per-app. Multiple OpenClaw instances using different Feishu apps must each pull contacts with their own credentials.

After updating USER.md, restart the gateway. Workspace files are cached at startup;

/new
alone won't pick up changes.

Set up weekly auto-sync via crontab:

0 7 * * 1 python3 /path/to/scripts/sync_feishu_contacts.py ~/.openclaw/openclaw.json my_app ~/workspace/USER.md

2. Group chat etiquette

Add to AGENTS.md or SOUL.md:

When to respond:

  • Directly @mentioned
  • Can add real value to the conversation
  • Something witty or relevant fits naturally

When to stay silent:

  • Casual banter you have nothing to add to
  • Someone already answered well
  • "Yeah" / "Nice" / emoji-only territory

General rules:

  • Don't dominate the conversation — participate, don't monologue
  • One reaction per message max
  • Keep replies concise — respect the group's attention

3. DM behavior

  • Always address the sender by their actual name (look up from the contacts table)
  • Never assume a DM is from your "primary human" — anyone can message you
  • Keep conversations isolated — never leak what person A said to person B
  • Be more thorough in DMs than in groups (the person came to you specifically)

4. Platform formatting

Feishu does NOT render Markdown well. Follow these rules:

  • No markdown: No
    **bold**
    ,
    # headers
    , or
    [links](url)
    in messages
  • No tables: Use simple lists with dashes instead
  • Plain text only: Use line breaks and spacing for structure
  • Code blocks: Feishu does support
    code blocks
    — use sparingly

5. Multi-user privacy

Add to SOUL.md or AGENTS.md:

  • Different users' conversation contents are isolated from each other
  • Don't reveal what A discussed with you to B, even if B is the admin
  • Each person's DM is a private space
  • In group chats, don't share anyone's private information

6. Sender identification (AGENTS.md snippet)

Add this to your startup sequence:

识别消息发送者:飞书 DM 不携带发送者姓名,只有 open_id(inbound metadata 的 chat_id 格式 user:ou_xxx)。
提取 open_id,在 USER.md 的飞书通讯录表格中匹配找到姓名。
不要假设 DM 对方就是主人——任何人都可能给你发私聊。
群聊消息自带 Sender metadata 可直接使用。

Privacy

  • Only names and open_ids are stored (no emails, phones, or PII)
  • open_id is opaque, meaningful only within your Feishu app
  • App credentials are read at runtime from openclaw.json, never stored in skill files