feishu-binding — Claude Code skill: connect Feishu and Lark
This skill walks through device flow authorization so your agent can message you on Feishu or Lark. Handy the first time you bind an account.
npx skills add Starchild-ai-agent/official-skills --skill feishu-binding -a claude-codeWhat feishu-binding does
feishu-binding manages the connection between your agent and a Feishu (飞书) or Lark account. Everything runs through one feishu tool with four actions: status reports the current app state, connect starts the device flow and returns a verification link plus a device_code, poll checks whether the user confirmed, and disconnect unbinds the app.
The skill first asks which brand you use. Mainland China means feishu on feishu.cn; everywhere else means lark on larksuite.com. The domains differ, so picking the wrong brand fails silently or lands you on the wrong login page. The agent then shows a QR code and a link, waits for you to confirm, and only then polls for status — auto-polling just burns API calls. A device flow lasts about 5 minutes, so an expired result from poll means starting connect over.
One user can hold a single Feishu or Lark app at a time. Switching brands means calling disconnect first, and that call stops the Feishu/Lark gateway instance, which is why the skill asks you to confirm it. How the QR code gets shown depends on your channel: web replies carry a file_path the frontend renders inline, Telegram gets it as a photo, and WeChat only gets the link, since scanning a QR code inside that messenger does not work.
What it helps with
- bind a Feishu account to the agent through device flow
- check whether Feishu or Lark is already connected
- unbind the app before switching brands
- restart binding after a device flow expires
- show the link or QR code in a way the current channel supports
Example prompts for the agent
- Connect Feishu to the agent
- Check the Lark binding status
- Disconnect Feishu, I want to switch to Lark
How to install feishu-binding
1Skills CLI (Vercel)
npx skills add Starchild-ai-agent/official-skills --skill feishu-binding -a claude-code2Manually: put the files in place
~/.claude/skills/feishu-binding/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/feishu-binding/
1Skills CLI (Vercel)
npx skills add Starchild-ai-agent/official-skills --skill feishu-binding -a codex2Manually: put the files in place
.agents/skills/feishu-binding/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Starchild-ai-agent/official-skills --skill feishu-binding -a cursor2Manually: put the files in place
.cursor/skills/feishu-binding/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Starchild-ai-agent/official-skills feishu-binding2Manually: put the files in place
.github/skills/feishu-binding/SKILL.md1Skills CLI (Vercel)
npx skills add Starchild-ai-agent/official-skills --skill feishu-binding -a gemini-cli2Platform CLI
gemini skills install https://github.com/Starchild-ai-agent/official-skills --path feishu-bindingManually: put the files in place
.devin/skills/feishu-binding/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Starchild-ai-agent/official-skills --skill feishu-binding -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about feishu-binding
How do I install feishu-binding in Claude?
Run npx skills add Starchild-ai-agent/official-skills --skill feishu-binding -a claude-code. The skill file then sits at ~/.claude/skills/feishu-binding/SKILL.md.
What does feishu-binding do?
It handles Feishu or Lark account binding: starts the device flow, returns a link and QR code, polls for confirmation, reports status, and unbinds the app.
What is the difference between feishu and lark here?
They are two brands on different domains: feishu uses feishu.cn and lark uses larksuite.com. A user can only have one app, so switching brands requires disconnect first.