com um clique
feishu
Use this skill to respond to messages from feishu channel.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Use this skill to respond to messages from feishu channel.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional 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.