
Lark Im
- 389k installs
- 15.9k repo stars
- Updated July 28, 2026
- larksuite/cli
lark-im is an agent skill for Lark instant messaging via lark-cli: send messages, search chats, manage groups, download files, and handle reactions with correct user or bot identity.
About
The lark-im skill guides agents through Feishu Lark instant messaging with the lark-cli binary. It covers messages, chats, threads, reactions, flags, and media resources, with shortcuts like +messages-send, +chat-search, +messages-search, and +messages-resources-download for common workflows. Agents must read lark-shared first for authentication and permission handling. The skill distinguishes user identity (--as user) from bot identity (--as bot), explaining when each token type succeeds or fails based on chat membership, tenant boundaries, and app visibility. It documents resource relationships between chats, messages, threads, and members, plus scope tables for every API method. Shortcut commands are preferred over raw API calls, and schema inspection is required before constructing --data payloads. Use it when users need to message teammates, search chat history, manage group members, download attachments with chunked large-file support, or handle emoji reactions and bookmarks in Lark IM.
- Requires reading lark-shared SKILL.md first for auth, scopes, and permission handling before any IM call.
- Shortcut commands like +messages-send, +chat-search, and +messages-resources-download wrap common IM workflows.
- Documents user vs bot identity rules and when sender name resolution fails under bot visibility limits.
- Covers messages, chats, threads, reactions, flags, pins, and chunked file download from chat resources.
- Maps every API method to required OAuth scopes with schema-first guidance via lark-cli schema.
Lark Im by the numbers
- 388,531 all-time installs (skills.sh)
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
lark-im capabilities & compatibility
- Capabilities
- lark im shortcut command routing · user and bot identity selection with scope table · message send, reply, search, and batch retrieval · group chat create, list, search, and member mana · chunked image and file download from messages · reaction, flag, and pin management on messages a
- Works with
- slack
- Use cases
- orchestration · email · project management
npx skills add https://github.com/larksuite/cli --skill lark-imAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 389k |
|---|---|
| repo stars | ★ 15.9k |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 28, 2026 |
| Repository | larksuite/cli ↗ |
How do I let an agent send Lark messages, search chat history, or manage group chats without guessing lark-cli auth, scopes, or identity flags?
Send, search, and manage Lark instant messages, group chats, threads, reactions, and file downloads through lark-cli shortcuts and native IM APIs.
Who is it for?
Teams using Feishu Lark who want agents to automate IM tasks through the official lark-cli with documented shortcuts.
Skip if: Skip when you need post-meeting VC notes, minutes, or ended-meeting search; route those to lark-vc instead.
When should I use this skill?
User asks to send Lark messages, search chat logs, create or update group chats, download chat files, or manage reactions and bookmarks.
What you get
Correct lark-cli IM commands with validated identity, scopes, and shortcut-first workflows for messaging, search, and file operations.
- Sent or retrieved Lark messages
- Chat search results
- Downloaded chat attachments
By the numbers
- Lark IM shortcut command routing
- User and bot identity selection with scope tables
- Message send, reply, search, and batch retrieval
Files
im (v1)
CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理
Core Concepts
- Message: A single message in a chat, identified by
message_id(om_xxx). Supports types: text, post, image, file, audio, video, sticker, interactive (card), share_chat, share_user, merge_forward, etc. - Chat: A group chat or P2P conversation, identified by
chat_id(oc_xxx). - Thread: A reply thread under a message, identified by
thread_id(om_xxx or omt_xxx). - Reaction: An emoji reaction on a message.
- Flag: A bookmark on a message or thread.
Resource Relationships
Chat (oc_xxx)
├── Message (om_xxx)
│ ├── Thread (reply thread)
│ ├── Reaction (emoji)
│ └── Resource (image / file / video / audio)
└── Member (user / bot)Important Notes
Identity and Token Mapping
--as usermeans user identity and usesuser_access_token. Calls run as the authorized end user, so permissions depend on both the app scopes and that user's own access to the target chat/message/resource.--as botmeans bot identity and usestenant_access_token. Calls run as the app bot, so behavior depends on the bot's membership, app visibility, availability range, and bot-specific scopes.- If an IM API says it supports both
userandbot, the token type changes who the operator is. The same API can succeed with one identity and fail with the other because owner/admin status, chat membership, tenant boundary, or app availability are checked against the current caller.
Sender Name Resolution with Bot Identity
When using bot identity (--as bot) to fetch messages (e.g. +chat-messages-list, +threads-messages-list, +messages-mget), sender names may not be resolved (shown as open_id instead of display name). This happens when the bot cannot access the user's contact info.
Root cause: The bot's app visibility settings do not include the message sender, so the contact API returns no name.
Solution: Check the app's visibility settings in the Lark Developer Console — ensure the app's visible range covers the users whose names need to be resolved. Alternatively, use --as user to fetch messages with user identity, which typically has broader contact access.
Card Messages (Interactive)
Card messages (interactive type) are not yet supported for compact conversion in event subscriptions. The raw event data will be returned instead, with a hint printed to stderr.
Flag Types
Flags support two layers:
- Message-layer flag:
(ItemTypeDefault, FlagTypeMessage)— regular message bookmark - Feed-layer flag:
(ItemTypeThread/ItemTypeMsgThread, FlagTypeFeed)— thread as feed-layer bookmark
Item types for feed-layer flags:
- ItemTypeThread (4) = thread in a topic-style chat
- ItemTypeMsgThread (11) = thread in a regular chat
Shortcuts(推荐优先使用)
Shortcut 是对常用操作的高级封装(lark-cli im +<verb> [flags])。有 Shortcut 的操作优先使用。
| Shortcut | 说明 |
|---|---|
| `+chat-create` | Create a group chat or topic chat; user/bot; --chat-mode group |
| `+chat-list` | List groups the current user/bot is a member of; user/bot; supports sorting, pagination, and --exclude-muted (user identity only) |
| `+chat-messages-list` | List messages in a chat or P2P conversation; user/bot; accepts --chat-id or --user-id, resolves P2P chat_id, supports time range/sort/pagination |
| `+chat-search` | Search visible group chats by --query keyword and/or --member-ids; user/bot; e.g. l |
Related skills
How it compares
lark-im is an agent skill for Lark instant messaging via lark-cli: send messages, search chats, manage groups, download files, and handle reactions with correct user or bot identity, not a generic alternative.
FAQ
Who is lark-im for?
Developers and operators automating Feishu Lark messaging through lark-cli with agent-guided shortcuts and scope-aware API calls.
When should I use lark-im?
When sending or searching messages, managing group chats, downloading attachments, or handling reactions in Lark IM conversations.
Is lark-im safe to install?
Review the Security Audits panel on this page before installing in production.