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

Zur Installation springen

Quellinformationen

Repository
MiniMax-AI/minimax-code
Letzte Quellaktivität
18. September 2026 um 11:25
Erkannte Sprache von SKILL.md
Englisch
Sterne
589
Forks
67

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
100 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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` |
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen