OverviewHistoryStatsSecurity
npx skills add ...
Documentation
SKILL.md
npx skills add starchild-ai-agent/official-skills --skill feishu-binding
Feishu/Lark binding: device flow authorization, connect, disconnect, status check.
npx skills add starchild-ai-agent/official-skills --skill feishu-binding
Connect / disconnect the user's Feishu (้ฃไนฆ) or Lark account so the agent can chat via the Feishu/Lark app.
The feishu tool stays built-in. This SKILL.md is the reference doc.
config/context/references/messaging-channels.md โ how messages are routed across channelsskills/wechat-binding/SKILL.md โ analogous WeChat flowskills/tg-bot-binding/SKILL.md โ analogous Telegram flow| Brand | Region | Domain |
|---|---|---|
feishu | China mainland (ไธญๅฝๅคง้) | feishu.cn / accounts.feishu.cn |
lark | International | larksuite.com / accounts.larksuite.com |
Ask the user which brand they use. Default to feishu if unclear. Chinese-speaking users almost always use feishu.
feishu(action="connect", brand="feishu") โ returns verification_uri, device_code, and a QR code image saved to workspace.markdown_image from the result (e.g. ). The user scans it with their Feishu/Lark app.verification_url as a clickable link. The user opens it in their browser, logs in to Feishu/Lark, and confirms.feishu(action="poll", device_code=<from step 1>, brand=<same brand>).
status: "done" โ binding complete, congratulate the user.status: "pending" โ ask the user if they've scanned the QR code or opened the link and confirmed.status: "expired" โ the device flow expired (typically 5 minutes). Start over with connect.| action | required params | purpose |
|---|---|---|
status | โ | Current Feishu/Lark app state. Use to check if already connected. |
connect | brand (optional, default "feishu") | Start device flow. Returns verification URL + device_code. |
poll | device_code, brand | Check if user has confirmed authorization. Returns status. |
disconnect | โ | Unbind Feishu/Lark app (destructive โ confirm with user first). |
| User channel | How to show |
|---|---|
| Web | Include file_path (QR image) in your reply โ frontend renders it inline. Also show the link. |
| Telegram | send_to_telegram(file_path=<qr_path>, message_type="photo") + include the link in the caption |
| Show the link only (user can't scan a QR inside WeChat for Feishu) | |
| Feishu | (User is already on Feishu โ they don't need to bind. Tell them it's already connected or check status.) |
| Aspect | Feishu/Lark | Telegram | |
|---|---|---|---|
| Auth method | Device flow (URL) | QR code scan | Bot token |
| User action | Open URL + confirm in app | Scan QR + confirm | Create bot via @BotFather |
| Credential | None (device flow handles it) | bot_token (from QR) | bot_token (from BotFather) |
| Brand choice | feishu / lark | N/A | N/A |
connect. Wait for user confirmation that they've opened the link and confirmed in Feishu/Lark. Auto-polling wastes API calls.poll returns expired, tell the user and start a new connect.disconnect is destructive โ confirm with the user before calling it. It will stop the Feishu/Lark gateway instance.feishu and lark use different API domains. Using the wrong brand will fail silently or redirect to the wrong login page.disconnect first, then connect with the new brand.| Symptom | Likely cause | Fix |
|---|---|---|
connect returns error | User already has an active app | Call status first; if active, ask if they want to disconnect and rebind |
poll returns expired | User took too long to confirm | Start a new connect |
poll returns pending repeatedly | User hasn't opened the URL yet | Remind them to open the verification URL |
| User says "I can't find the link" | URL was in a previous message | Re-run connect to get a fresh URL |