add-feishu
Add Feishu (飞书/Lark) as a channel. Uses WebSocket long connection mode — no public URL needed. Bot responds to all messages (no trigger required).
By sugarforever · 448 installs
npx skills add sugarforever/01coder-agent-skills --skill add-feishu
Source repository · Upstream listing
Add Feishu Channel
This skill adds Feishu (飞书) support to NanoClaw using the skills engine for deterministic code changes, then walks through interactive setup.
Phase 1: Pre flight
Check if already applied
Read .nanoclaw/state.yaml . If feishu is in applied skills , skip to Phase 3 (Setup). The code changes are already in place.
Ask the user
Use AskUserQuestion to collect configuration:
AskUserQuestion: Do you have a Feishu app already, or do you need to create one?
If they have one, collect FEISHU APP ID and FEISHU APP SECRET now. If not, we'll create one in Phase 3.
Phase 2: Apply Code Changes
Run the skills engine to apply this skill's code package. The package files are in this directory alongside this SKILL.md.
Initialize skills system (if needed)
If .nanoclaw/ directory doesn't exist yet:
Apply the skill
This deterministically:
Adds src/channels/feishu.ts (FeishuChannel class implementing Channel interface)
Three way merges Feishu support into src/index.ts (reads credentials via readEnvFile , creates FeishuChannel if configured)
Installs the @larksuiteoapi/node sdk npm dependency
Updates .env with FEISHU APP ID and FEISHU APP SECRET
Records the application in .nanoclaw/state.yaml
If the apply reports merge conflicts, read the intent file:
modify/src/index.ts.intent.md — what changed and invariants for index.ts
Validate code changes
Build must be clean before proceeding.
Phase 3: Setup
Create Feishu App (if needed)
If the user doesn't have a Feishu app, tell them:
I need you to create a Feishu bot:
1. Go to [Feishu Open Platform](https://open.feishu.cn/app) and create a new app
2. Under Credentials , copy the App ID and App Secret
3. Under Event Subscriptions , enable Long Connection (WebSocket) mode
4. Add the event: im.message.receive v1 (Receive messages)
5. Under Permissions , add:
im:message:send as bot (Send messages as bot)
im:message (Read messages)
6. Publish the app (or create a version and approve it)
Wait for the user to provide the App ID and App Secret.
Configure environment
Add to .env :
Build and restart
Phase 4: Registration
Get Chat ID
Tell the user:
1. Start the bot: npm run dev
2. Send any message to the bot in Feishu (DM or group)
3. Check the logs — the chat id will appear in the metadata
4. The JID format is {chat id}@feishu
Or check the database directly:
Register the chat
Register directly in SQLite:
Note: requires trigger is set to 0 (false) so the bot responds to all messages without needing @mention.
Then restart the service to pick up the new registration.
Phase 5: Verify
Test the connection
Tell the user:
Send a message to the bot in Feishu. It should respond within a few seconds.
Check logs if needed
Look for:
Feishu bot info fetched — bot connected and identified itself
Connected to Feishu via WebSocket — WebSocket established
Feishu message sent — outbound message delivered
Troubleshooting
Bot not responding
Check:
1. FEISHU APP ID and FEISHU APP SECRET are set in .env
2. Chat is registered: sqlite3 store/messages.db "SELECT FROM registered groups WHERE jid LIKE '%@feishu'"
3. App is published on Feishu Open Platform (draft apps don't receive events)
4. Event subscription im.message.receive v1 is enabled
5. Long Connection (WebSocket) mode is enabled (not webhook)
6. Service is running: launchctl list grep nanoclaw (macOS) or systemctl user status nanoclaw (Linux)
Bot connects but doesn't receive messages
Verify the app has im:message permission
Verify the event im.message.receive v1 is subscribed
Check that the app version is published and approved
Bot receives but can't send
Verify the app has im:message:send as bot permission
For group chats: the bot must be added to the group first
"Failed to fetch Feishu bot info"
Non critical warning. Bot message detection (filtering own messages) won't work, but message sending/receiving still functions. Usually means the bot API endpoint isn't accessible — check network connectivity.
Removal
To remove Feishu integration:
1. Delete src/channels/feishu.ts
2. Remove FeishuChannel import and creation block from src/index.ts
3. Remove readEnvFile import if no other channel uses it
4. Remove FEISHU APP ID and FEISHU APP SECRET from .env
5. Remove Feishu registrations: sqlite3 store/messages.db "DELETE FROM registered groups WHERE jid LIKE '%@feishu'"
6. Uninstall: npm uninstall @larksuiteoapi/node sdk
7. Rebuild: npm run build && launchctl kickstart k gui/$(id u)/com.nanoclaw (macOS) or npm run build && systemctl user restart nanoclaw (Linux)