Skip to main content

lark-tools

Feishu/Lark full-capability access via the official `lark-cli` (terminal) plus native local-runtime Feishu channel binding/status. Use this skill whenever the user mentions anything related to Feishu or Lark, including but not limited to: checking today's schedule or a specific date's agenda, creating calendar events, querying free/busy status, viewing or creating tasks, searching group chats, reading chat history, sending or replying to messages, looking up contacts or user details, querying or writing Bitable (multi-dimensional table) records, searching documents, or running any lark-cli subcommand. ALSO use this skill to READ or OPEN a Feishu/Lark document, wiki, sheet, or Base from a link — any `feishu.cn`, `larksuite.com`, or `*.feishu.cn` URL (including `/docx/`, `/wiki/`, `/sheets/`, `/base/`, `/w000/`, `/file/` paths), even when the user just pastes the bare URL without saying "Feishu". Route by link type, NOT `webfetch`: a doc/docx/wiki link → `lark-cli docs +fetch` (it resolves both docx and wiki UR

Ir para a instalação

Informações da origem

Repositório
MiniMax-AI/minimax-code
Última atividade na origem
18 de setembro de 2026 às 11:25
Idioma detectado do SKILL.md
inglês
Estrelas
589
Forks
67

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
100 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
lark-tools
description
Feishu/Lark full-capability access via the official `lark-cli` (terminal) plus native local-runtime Feishu channel binding/status. Use this skill whenever the user mentions anything related to Feishu or Lark, including but not limited to: checking today's schedule or a specific date's agenda, creating calendar events, querying free/busy status, viewing or creating tasks, searching group chats, reading chat history, sending or replying to messages, looking up contacts or user details, querying or writing Bitable (multi-dimensional table) records, searching documents, or running any lark-cli subcommand. ALSO use this skill to READ or OPEN a Feishu/Lark document, wiki, sheet, or Base from a link — any `feishu.cn`, `larksuite.com`, or `*.feishu.cn` URL (including `/docx/`, `/wiki/`, `/sheets/`, `/base/`, `/w000/`, `/file/` paths), even when the user just pastes the bare URL without saying "Feishu". Route by link type, NOT `webfetch`: a doc/docx/wiki link → `lark-cli docs +fetch` (it resolves both docx and wiki URLs); a `/sheets/` link → `lark-cli sheets +read`; a `/base/` (Bitable) link → `lark-cli base +record-list`. Feishu serves an anti-bot/ad page to plain HTTP fetchers, so `webfetch` on a `feishu.cn` / `larksuite.com` URL returns garbage; switch to this skill when that happens. Even if the user simply says "check my schedule", "send a message to someone", "find a doc about X", "read this feishu doc", or "look up who Zhang San is", this skill applies. Also use it when encountering 401 / LARK_USER_AUTH_REQUIRED errors — this skill handles the auth flow.
descriptions
{"zh-Hans":"通过官方 lark-cli 使用飞书/Lark 全能力,包括日程、任务、消息、通讯录、文档和多维表格;读取/打开任何 feishu.cn / larksuite.com 链接(即使只粘贴裸链接)请按类型路由、不要用 webfetch(飞书反爬会返回广告页):文档/docx/wiki 用 docs +fetch,表格用 sheets +read,Base 用 base +record-list。"}
# Feishu / Lark Tools Run Feishu (Lark) operations by invoking the official `lark-cli` binary directly from the terminal. User credentials live in the global `~/.lark-cli/` store. Bot credentials are bound through native local-runtime Feishu channel config — no daemon proxy or per-bot HOME is needed. The local runtime owns two responsibilities: 1. **Bot binding** — persisting an existing Feishu app's `appId` / `appSecret` to the native channel binding store for the selected agent. 2. **Bot status** — surfacing whether a Feishu bot is bound and which agent it targets. User OAuth (UAT) is **not** a long-running runtime responsibility. Run `lark-cli auth login --recommend` for the bound app when user-scoped APIs are needed, and use `lark-cli auth login --scope "..."` directly when an operation first hits a missing-scope error. Everything else (calendar, IM, base, docs, tasks, …) is a plain `lark-cli` invocation. ## Reading a Feishu/Lark link (do NOT use webfetch) When the user pastes or references a Feishu/Lark URL — any `feishu.cn`, `*.feishu.cn`, or `larksuite.com` link, including `/docx/`, `/wiki/`, `/sheets/`, `/base/`, `/wiki/space/`, or `/file/` paths — read its content with `lark-cli`, never with `webfetch`: - **Document / wiki**: `lark-cli docs +fetch --doc "<url>"` (resolves both `/docx/` and `/wiki/` URLs; see `cli-skills/lark-doc/`). - **Sheet**: `lark-cli sheets +read` (see `cli-skills/lark-sheets/`). - **Base / Bitable**: `lark-cli base +record-list` (see `cli-skills/lark-base/`). Why not `webfetch`: Feishu blocks plain HTTP fetchers with an anti-bot / ad page, so `webfetch` on a `feishu.cn` URL returns a useless ad GIF or challenge page rather than the document. This is the same domain-routing pattern as `x-link-reader` (x.com → FxTwitter): a Feishu link belongs to `lark-cli`, not the generic web fetcher. If you already tried `webfetch` and got an anti-bot/ad page, switch to `lark-cli docs +fetch` and retry. ### Direct link fast path For a read-only `/docx/` or `/wiki/` link, call the documented command directly: ```text lark-cli docs +fetch --doc "<url>" --format json ``` Do not preflight this direct route with `which`, `command -v`, `where`, `Get-Command`, `lark-cli --version`, `lark-cli help`, installation checks, bot-binding checks, or a separate auth status call. The requested command is the capability check and the shortest correct path. Only if that command actually returns command-not-found, authentication/authorization required, or a missing-scope error should you enter the corresponding install or auth recovery below. Do not repeat a successful `docs +fetch` through another Lark command. ## Mandatory platform command router `lark-cli` itself is cross-platform, but the setup glue in this skill (installing `lark-cli`, checking auth JSON, and binding a Feishu bot with `mavis im channel bind`) is shell-specific. Before running any setup command, select exactly one platform command reference and use only that file's recipes. Router: 1. Read `<agent-context>.platform`. 2. If `platform` is `win32`: - REQUIRED: read `references/commands-windows-powershell.md`. - Use PowerShell recipes from that file only (`ConvertFrom-Json`, `Invoke-RestMethod`, `Join-Path`, etc.). - Do NOT use bash snippets, `command -v`, `cat`, `sed`, or `jq` pipelines. 3. If `platform` is `darwin` or `linux`: - REQUIRED: read `references/commands-macos-linux.md`. - Use bash/zsh recipes from that file only. 4. If `platform` is missing or unknown: - Do a tiny preflight to identify the shell/platform before running anything. - If still unclear, ask the user which environment is running the command. Never translate shell commands across platforms from memory. The platform reference files own every recipe for `install-lark-cli`, `bot-status`, `auth-status`, and `bind-feishu-bot`. The body of this skill keeps the high-level flow; the reference files keep the platform-specific glue. ## Quick Start for operations without a direct-link fast path 0. **Ensure `lark-cli` is installed after command-not-found** — see [Install lark-cli](#install-lark-cli) 1. **Check bot binding** — ensure a Feishu bot is connected to the agent 2. **Check user auth** — ensure the user has authorized via OAuth 3. **Run lark-cli** — see [Calling lark-cli](#calling-lark-cli) and the per-domain sub-skills ## Install lark-cli `lark-cli` is the official Feishu/Lark CLI binary that this skill drives. It is **not** bundled with mavis and is not installed by default. For the direct-link fast path, run the requested command without a separate installation probe. For other operations, or after a real command-not-found error, use the `install-lark-cli` recipe from the selected platform command reference; if missing, install it for the user before retrying the requested command. The npm package is **`@larksuite/cli`** (provides the `lark-cli` binary). Do not guess other package names. Notes: - If the global install fails with a permission error, tell the user and offer either an elevated install (e.g. `sudo npm install -g @larksuite/cli` on macOS/Linux, or running PowerShell as Administrator on Windows) or a per-user prefix. **Never run `sudo` without telling the user first.** - After install, do **not** run `lark-cli config init` unless you explicitly need to initialize the official CLI store outside Mavis. Bot binding in Mavis is handled by local-runtime channel config. - For upgrades after first install, see the update notice handling in `cli-skills/lark-shared/SKILL.md` (`npm update -g @larksuite/cli`). ## Bot Binding Before any Feishu operation, verify that a Feishu bot is connected. Without a bot, the global lark-cli store has no Feishu app credentials and `lark-cli api ...` cannot make API calls. ### Check connection status Use the `bot-status` recipe from the selected platform command reference. It runs `lark-cli auth status` and parses the JSON result with the platform-native parser (`jq` on macOS/Linux, `ConvertFrom-Json` on PowerShell). - **No output / no `appId`** — no app is bound, proceed to register a new bot below. - **`appId` present, `identity: "bot"`** — bot is bound but the user has not authorized (or the UAT expired). Jump to [User Authentication](#user-authentication). - **`appId` present, `identity: "user"`, `tokenStatus: "valid"`** — fully ready, proceed with the user's request. Check the `scope` field to confirm the requested operation's permission is included. ### Bind a Feishu bot If no bot is bound, ask the user for an existing Feishu app's `appId` and `appSecret`, then use the `bind-feishu-bot` recipe from the selected platform command reference. It runs: ```bash mavis im channel bind <agent> --platform feishu --app-id <appId> --app-secret <appSecret> ``` The local runtime persists the credentials in the native Feishu channel store and connects the bot to the channel runner. The bot is live without restarting local-runtime. ## User Authentication User credentials live in the global lark-cli store, keyed by `(appId, userOpenId)` and shared with the terminal `lark-cli`. The actual on-disk paths differ per platform — see `references/storage-paths.md` for the per-OS table; this skill never assumes any specific host OS path. After bot binding, run `lark-cli auth login --recommend` when user-scoped calls are needed. The resulting UAT is stored in the official global `lark-cli` store and reused by terminal commands. **Increments** happen lazily: when a specific call requires a scope the current UAT does not have (a high-sensitivity scope outside `--recommend`), `lark-cli` prints the exact `lark-cli auth login --scope "..."` invocation needed; rerun with that suggestion and the new UAT is written into the same global store on success. Do **not** re-run `--recommend` to "refresh" — it will pop another auth window for the user without adding any scope. ### Check auth status Use the `auth-status` recipe from the selected platform command reference. It runs `lark-cli auth status` and parses the JSON with `jq` (macOS/Linux) or `ConvertFrom-Json` (PowerShell), returning the same `{appId, identity, userOpenId, userName, tokenStatus, scope, expiresAt}` shape. If `identity == "user"` and `tokenStatus == "valid"` and the requested operation's scope is in the `scope` field, auth is valid — proceed with the user's request. Otherwise run `lark-cli auth login` (see [User Authentication](#user-authentication)). To actually call the server (catches stale-but-not-yet-expired tokens), use `lark-cli auth status --verify`. It returns the same JSON plus `verified: true|false`. ### Interop with the terminal `lark-cli` Because local-runtime channel binding and official `lark-cli` user auth are separate: - Bot credentials are stored by local-runtime with `mavis im channel bind`. - User OAuth tokens are stored by the official `lark-cli`. - After the user runs `lark-cli auth login --scope "..."` in the terminal to add an extra scope, subsequent terminal calls use the newly-issued UAT automatically. - `lark-cli config init` is only needed if the official CLI store has not been initialized for direct terminal use; do not hand-edit `~/.lark-cli/config.json`. ## Calling lark-cli **MANDATORY: Before running any `lark-cli` shortcut (`+messages-send`, `+chat-search`, `+agenda`, etc.), you MUST Read the corresponding sub-skill reference file first.** The examples below are just a starting point — they do NOT cover formatting caveats, content flags (`--text` vs `--markdown` vs `--content`), or identity requirements. The reference files contain critical details that, if missed, cause silent data loss (e.g. empty messages, wrong format). Use the Sub-Skills Index below to find the right reference file for each shortcut. Once auth is in place, invoke `lark-cli` directly. Use `--as user` for personal resources (calendar / drive / tasks) and `--as bot` for application-level operations (inbound IM / event subscribe). The per-domain sub-skills under `cli-skills/` document concrete command syntax; the cheat sheet below is just a starting point. ```bash # Generic OpenAPI passthrough (works for any documented Feishu endpoint) lark-cli api GET /open-apis/contact/v3/users/<user_id> --as user lark-cli api POST /open-apis/im/v1/messages --as bot --params '{"receive_id_type":"chat_id"}' --data '{...}' # Calendar — today's agenda + create event lark-cli calendar +agenda --as user --format json lark-cli calendar +create --as user --summary "Team Sync" --start 2026-04-01T14:00 --end 2026-04-01T15:00 # IM — search chats, list messages, send / reply lark-cli im +chat-search --as user --query "周报" --format json lark-cli im +chat-messages-list --as user --chat-id oc_xxx --format json lark-cli im +messages-send --as bot --chat-id oc_xxx --markdown "Hello" lark-cli im +messages-reply --as bot --message-id om_xxx --markdown "Reply" # Task / Base / Contact — same pattern lark-cli task +get-my-tasks --as user --format json lark-cli base +record-list --app-token bascnXXX --table-id tblXXX --format json lark-cli contact +search-user --as user --query "张三" --format json ``` Most subcommands print JSON when you pass `--format json`; pipe to `jq` to extract fields. A few commands print JSON unconditionally (e.g. `lark-cli auth status`, `lark-cli auth list`) — no `--format` flag needed for those. **Multi-bot environments** — when multiple bots are bound, pass `--as user --app-id <appId>` (or use `lark-cli auth use <appId>` to switch the default) to disambiguate. With a single bot, the only entry in `apps[]` is auto-selected. ## Sub-Skills Index (Load on Demand) Each entry maps to `cli-skills/<name>/SKILL.md`. **Before using any sub-skill, you MUST first Read `cli-skills/lark-shared/SKILL.md`** — it covers the cross-cutting basics (identity selection, scope concepts, permission-denied handling, security rules) and now aligns with the mavis flow described above (local-runtime owns Feishu bot binding; `lark-cli` owns user OAuth with `--recommend` or targeted `--scope`, never `--domain`). **Then Read the specific sub-skill's reference file** for the shortcut you're about to use (e.g. `cli-skills/lark-im/references/lark-im-messages-send.md` before calling `+messages-send`). Do NOT rely on the quick examples above — they omit critical formatting and content-flag details. | Scenario keywords | Sub-skill | Path | | ----------------------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------- | | Calendar / agenda / meeting room / free-busy / RSVP | lark-calendar | `cli-skills/lark-calendar/SKILL.md` | | Tasks / todos / lists / assignments | lark-task | `cli-skills/lark-task/SKILL.md` | | Send/receive messages / group chats / chat history / upload-download images & files | lark-im | `cli-skills/lark-im/SKILL.md` | | Contacts / find people / lookup open_id / departments | lark-contact | `cli-skills/lark-contact/SKILL.md` | | Create / edit / read Feishu cloud documents | lark-doc | `cli-skills/lark-doc/SKILL.md` | | Drive file management / upload-download / import docs / comments | lark-drive | `cli-skills/lark-drive/SKILL.md` | | Spreadsheet read/write / export | lark-sheets | `cli-skills/lark-sheets/SKILL.md` | | Bitable / Base / fields / records / views | lark-base | `cli-skills/lark-base/SKILL.md` | | Wiki / knowledge base / space members / nodes | lark-wiki | `cli-skills/lark-wiki/SKILL.md` | | Slides / PPT create and read | lark-slides | `cli-skills/lark-slides/SKILL.md` | | Whiteboard | lark-whiteboard | `cli-skills/lark-whiteboard/SKILL.md` | | Whiteboard CLI advanced ops | lark-whiteboard-cli | `cli-skills/lark-whiteboard-cli/SKILL.md` | | Email send/receive / drafts / rules / attachments | lark-mail | `cli-skills/lark-mail/SKILL.md` | | Video conference history / recordings | lark-vc | `cli-skills/lark-vc/SKILL.md` | | Minutes list / download / AI artifacts | lark-minutes | `cli-skills/lark-minutes/SKILL.md` | | Approval instances / tasks | lark-approval | `cli-skills/lark-approval/SKILL.md` | | Attendance / clock-in records | lark-attendance | `cli-skills/lark-attendance/SKILL.md` |
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub