en un clic
feishu
Use this skill to respond to messages from feishu channel.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
Use this skill to respond to messages from feishu channel.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
Discord Bot integration for sending messages, managing channels, and responding to events. Use when Bub needs to: (1) Send messages to Discord channels, (2) Create Discord bot with discord.py, (3) Handle Discord events (on_message, on_member_join, etc.), (4) Work with Discord webhooks, or (5) Any Discord-related functionality.
QQ C2C channel skill. Use when Bub is handling a QQ conversation. Return your normal text reply directly and let the QQ channel deliver it through standard Bub outbound routing.
Slack skill for proactive outbound Slack communication: posting a message to a channel or thread, editing an existing bot message, or adding an emoji reaction. Use when the bot needs to: (1) post a message somewhere OTHER than the current reply (e.g. a different channel, or a side note in the same thread), (2) edit a previously-sent bot message (e.g. a progress placeholder), or (3) acknowledge a message with a non-verbal emoji reaction. NOTE: normal replies to the current message are posted AUTOMATICALLY by the runtime — just answer as text. Reach for this skill only for proactive / out-of-band sends and message edits.
WeCom channel skill. Return normal replies directly. For proactive sends such as scheduled jobs, use the packaged wecom_send.py script.
Export, filter, scan, and review shareable tape datasets produced by `tape-dataset-opendal`. Use when Codex needs to prepare Bub-generated tape data for public sharing, Hugging Face upload, external research handoff, or any review-sensitive export that must run CEL filtering, TruffleHog secret scanning on the staged artifact, and a final conservative LLM audit.
Create or update a Bub plugin in any local path. Use when the task is to scaffold a Python package that exposes a [project.entry-points.bub] entry, implement Bub hooks or tools, and make the plugin take effect by installing it or adding it as a dependency in the Bub runtime project. When working inside bub-contrib, also follow its package and workspace conventions.
| name | feishu |
| description | Use this skill to respond to messages from feishu channel. |
Agent-facing execution guide for outbound communication in Feishu/Lark.
Assumption: BUB_FEISHU_APP_ID and BUB_FEISHU_APP_SECRET are already available.
Collect these fields before execution whenever possible:
chat_id: required for sending a new message or card; obtain it from the current channel/session context, not from the inbound JSON payloadmessage / text / content: required for sending or editing contentmessage_id: required for reply, edit, and reaction actionsreply_to_message.message_id: optional source reference from inbound metadata; use it only for context, not as a replacement for the current message idmessage_id is known, prefer reply semantics instead of sending an unrelated new message.sender_is_bot=true), do not assume reply mode is appropriate; prefer a normal message unless there is a clear user-authored message to reply to.feishu_send.py --format textfeishu_send.py --format cardlark-cli im +messages-send or lark-cli im +messages-reply with --imagefeishu_edit.pysender_is_bot=true, prefer a normal message unless a reply target is explicitly required and known to be correct.message_id is missing, do not perform reply, edit, or reaction actions; if chat_id is missing, do not perform send actions.feishu_send.py only supports text and card messages; when an outbound message must include an image, switch to lark-cli../image.png, use lark-cli ... --image ./image.png.feishu_send.py --format text so the message still reaches the user.The current Feishu channel message JSON includes:
message: normalized text contentmessage_id: current user message IDtype: normalized message typesender_idsender_namesender_is_botdatemediareply_to_messageTypical mappings:
chat_id from the current channel/session contextmessage_id as the reply targetmessage_idmessage_idPaths are relative to this skill directory.
# Send text message
uv run ${SKILL_DIR}/scripts/feishu_send.py \
--chat-id <CHAT_ID> \
--content "<TEXT>" \
--format text
# Send multi-line text message (heredoc)
uv run ${SKILL_DIR}/scripts/feishu_send.py \
--chat-id <CHAT_ID> \
--content "$(cat <<'EOF'
Build finished successfully.
Summary:
- 12 tests passed
- 0 failures
EOF
)" \
--format text
# Reply to a specific message
uv run ${SKILL_DIR}/scripts/feishu_send.py \
--chat-id <CHAT_ID> \
--content "<TEXT>" \
--format text \
--reply-to <MESSAGE_ID>
# Send card update
uv run ${SKILL_DIR}/scripts/feishu_send.py \
--chat-id <CHAT_ID> \
--content "<MARKDOWN_CONTENT>" \
--format card \
--title "<TITLE>"
# Edit an existing bot message
uv run ${SKILL_DIR}/scripts/feishu_edit.py \
--message-id <MESSAGE_ID> \
--text "<TEXT>"
lark-cliUse lark-cli only when the message must contain an image. The packaged feishu_send.py script does not upload media.
Prerequisites:
lark-cli is installed, typically via npm install -g @larksuite/clilark-cli config initlark-cli auth login has already granted the required user scopesRules:
lark-cli im +messages-send --chat-id <CHAT_ID> --image <PATH_OR_IMAGE_KEY>lark-cli im +messages-reply --message-id <MESSAGE_ID> --image <PATH_OR_IMAGE_KEY>--image accepts either a local file path like ./photo.png or an existing image_key like img_v3_...--image is a local file path, lark-cli uploads it automatically before sending--dry-runExamples:
# Send a new image message to the current chat as bot
lark-cli im +messages-send \
--chat-id <CHAT_ID> \
--image ./photo.png \
--as bot
# Reply to the current message with a local image
lark-cli im +messages-reply \
--message-id <MESSAGE_ID> \
--image ./photo.png \
--as bot
# Send an already uploaded image by image_key
lark-cli im +messages-send \
--chat-id <CHAT_ID> \
--image img_v3_abc123 \
--as bot
# Preview the request without executing it
lark-cli im +messages-send \
--chat-id <CHAT_ID> \
--image ./photo.png \
--as bot \
--dry-run
Identity notes:
--as bot for image sends in this skill because the rest of this skill already assumes app credentials and bot-style outbound actions--as user is supported by lark-cli, but local media upload is still performed with bot identity first, and the final send uses user identity--as user is required, make sure the user identity already has im:message.send_as_user and im:messageFor actions not covered by the packaged scripts, such as reactions, call the Feishu OpenAPI directly.
feishu_send.py--chat-id, -c: required--content, -m: required--format: optional, text or card, defaults to text--title, -t: used only with --format card--reply-to, -r: valid only with --format text--app-id: optional--app-secret: optionalfeishu_edit.py--message-id, -m: required--text, -t: required--app-id: optional--app-secret: optionalhttps://open.feishu.cn/document/https://open.larksuite.com/document/IM / Message documentationPOST /open-apis/im/v1/messagesPOST /open-apis/im/v1/messages/{message_id}/replyPATCH /open-apis/im/v1/messages/{message_id}POST /open-apis/im/v1/messages/{message_id}/reactionschat_id, message format, application permissions, and credentials.feishu_send.py --format text.chat_id.message_id is missing, do not perform reply, edit, or reaction actions.chat_id is missing, do not perform send actions.