claude-session-manager
Manage Claude Code session transcripts from local JSONL storage, including listing candidate sessions, exporting full or selected…
Add Feishu (飞书/Lark) as a channel. Uses WebSocket long connection mode — no public URL needed. Bot responds to all messages (no trigger required).
$ npx -y skills add sugarforever/01coder-agent-skills --skill add-feishu --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/add-feishuContext preview
The summary Claude sees to decide when to auto-load this skill.
Add Feishu (飞书/Lark) as a channel. Uses WebSocket long connection mode — no public URL needed. Bot responds to all messages (no trigger required).
name: add-feishu description: Add Feishu (飞书/Lark) as a channel. Uses WebSocket long connection mode — no public URL needed. Bot responds to all messages (no trigger required).
This skill adds Feishu (飞书) support to NanoClaw using the skills engine for deterministic code changes, then walks through interactive setup.
Read `.nanoclaw/state.yaml`. If `feishu` is in `applied_skills`, skip to Phase 3 (Setup). The code changes are already in place.
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.
Run the skills engine to apply this skill's code package. The package files are in this directory alongside this SKILL.md.
If `.nanoclaw/` directory doesn't exist yet:
npx tsx scripts/apply-skill.ts --init
npx tsx scripts/apply-skill.ts .claude/skills/add-feishu
This deterministically:
If the apply reports merge conflicts, read the intent file:
npm run build
Build must be clean before proceeding.
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.
Add to `.env`:
FEISHU_APP_ID=<their-app-id> FEISHU_APP_SECRET=<their-app-secret>
npm run build launchctl kickstart -k gui/$(id -u)/com.nanoclaw # macOS # Linux: systemctl --user restart nanoclaw
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:
sqlite3 store/messages.db "SELECT jid FROM chats WHERE jid LIKE '%@feishu'"
Register directly in SQLite:
INSERT INTO registered_groups (jid, name, folder, trigger_pattern, added_at, requires_trigger)
VALUES ('{chat_id}@feishu', 'feishu', 'feishu', '@{ASSISTANT_NAME}', datetime('now'), 0);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.
Tell the user:
> Send a message to the bot in Feishu. It should respond within a few seconds.
tail -f logs/nanoclaw.log # Or run interactively: npm run dev
Look for:
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)
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.
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)
A marketplace of agent skills by VerySmallWoods — content creation, publishing, analytics, and security scanning. Works with Claude Code, Codex, Cursor, Windsurf, and any other coding agent that supports the skills.sh format.
Manage Claude Code session transcripts from local JSONL storage, including listing candidate sessions, exporting full or selected…
Use when an agent needs to delegate a task to the OpenAI Codex CLI from another agent environment such as Claude Code, OpenClaw,…
Manage local Codex session transcripts, including listing candidate sessions, exporting full or selected sessions to organized…
Design typography-driven video cover images using HTML/CSS + Chrome DevTools screenshot. Generates covers in all needed aspect…
Generate elegant cover images for articles. Analyzes content and creates eye-catching hand-drawn style cover images with multiple…
Convert Mermaid diagrams and Markdown tables to images (PNG) for platforms that don't support rich formatting. Use when user asks…