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)