Lark CLI
This skill uses the lark CLI to operate Feishu/Lark products (IM, Drive, Docs, Sheets, Mail, Calendar, Wiki, Bitable, Tasks, and more), with the shortest-path examples and reference links.
What this repo provides
larkCLI: a single binary to access Feishu/Lark products (IM, Drive, Docs, Sheets, Mail, Calendar, Wiki, Bitable, Tasks).- Two output modes: human tables by default, JSON with
--jsonfor automation. - SDK-first implementation via the official
oapi-sdk-go.
Quickstart (minimal)
- Install the CLI (see
references/INSTALL.md). - Authenticate:
- Tenant token (app-only, bot/app identity):
lark auth tenant - User token (user-scoped, on behalf of a user):
lark auth user loginSeereferences/AUTH.mdfor details and scopes.
- Tenant token (app-only, bot/app identity):
- Run a command:
lark whoami
lark chats list --limit 10
lark users search "Ada" --json
Core concepts (tl;dr)
- Feishu = Lark (global brand). Same API surface, different API endpoints.
- Most commands follow:
lark <product> <action> [args] [flags]. - Required IDs are positional args (no required
--idflags). - Many commands accept a Lark/Feishu web URL in place of IDs.
--jsonprints machine-readable output to stdout; logs/errors go to stderr.
See references/CONCEPTS.md for a longer primer.
When to use tenant vs user tokens
- Tenant token: app-level operations as your bot/app identity.
- User token: user-scoped operations on behalf of a specific user.
If a command fails with scope errors, check references/TROUBLESHOOTING.md.
Token Type Usage
Use --token-type to force the access token type:
--token-type auto: default, auto-select based on command needs.--token-type tenant: force tenant token.--token-type user: force user token.
Examples:
lark whoami --token-type tenant
lark drive list --token-type user
Agent-friendly workflow
- Prefer
--jsonand parse in tools/scripts. - Use
--limit/--pagesfor pagination-heavy commands. - Reuse
--accountorLARK_ACCOUNTfor multi-user scenarios.
User-facing output style (important)
When you execute lark commands on the user's behalf:
- Do not dump raw CLI commands or verbose terminal output to the user by default.
- Summarize results in human-readable language (what changed / what was found / next action).
- Only include the exact command/output when the user explicitly asks, or when it's needed for debugging/repro.
- Prefer short lists and direct links (Docx/Sheet URLs) over IDs/tokens.
Common recipes
See references/RECIPES.md for common tasks (send message, search users, read docs, etc.).
Deep references
- Install:
references/INSTALL.md - Auth & scopes:
references/AUTH.md - Concepts & IDs:
references/CONCEPTS.md - Recipes:
references/RECIPES.md - Troubleshooting:
references/TROUBLESHOOTING.md - Completion:
references/COMPLETION.md - Docs:
references/DOCS.md - Sheets:
references/SHEETS.md - Bitable bases:
references/BASES.md - Drive:
references/DRIVE.md - Minutes:
references/MINUTES.md - Calendars:
references/CALENDARS.md - Meetings:
references/MEETINGS.md - Chats:
references/CHATS.md - Messages:
references/MESSAGES.md - Contacts:
references/CONTACTS.md - Mail:
references/MAIL.md - Tasklists:
references/TASKLISTS.md - Tasks:
references/TASKS.md - Users:
references/USERS.md - Config:
references/CONFIG.md - Whoami:
references/WHOAMI.md - Wiki:
references/WIKI.md