From slack-by-salesforce
Guidance for composing well-formatted, effective Lark IM messages using mrkdwn syntax
How this skill is triggered — by the user, by Claude, or both
Slash command
/slack-by-salesforce:slack-messagingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides guidance for composing well-formatted, effective Lark IM messages. The Lark
This skill provides guidance for composing well-formatted, effective Lark IM messages. The Lark
connector supersedes Slack here: route all sends, drafts, and digests through the curated lark_*
tools below. For card grammar and message-formatting depth, delegate to the lark-im skill.
Depth core (read for any non-trivial flow):
../../connectors/LARK-PATTERNS.md(P1 identity, P2 safe mutation, P3 token economy, P4 interactive cards),../../connectors/LARK-RECIPES.md,../../connectors/LARK-FUSION.md(delegate tolark-im).
Apply this skill whenever composing, drafting, or helping the user write a Lark IM message — whether posting plain text, drafting for review, or surfacing a decision/digest as an interactive card.
| Goal | Tool | Notes |
|---|---|---|
Resolve a recipient (name/email → open_id) | lark_contact_search | P1 — always do this first; IDs cannot be guessed. user_ids: "me" is the caller. |
| Send a plain text / mrkdwn message | lark_im_send | dry_run: true first, show the planned recipient + body, then re-send to commit (P2). |
| Surface a decision or digest | lark_im_card_send | Use an interactive card (P4), not plain text — see below. |
| Find context before replying | lark_im_search | Project with jq (P3) to keep token cost down. |
Anything without a curated tool goes through lark_api (Lark OpenAPI passthrough). For card spec
YAML grammar, threading, and mrkdwn edge cases, defer to the lark-im skill rather than
hand-rolling.
Lark IM uses its own markup syntax called mrkdwn, which differs from standard Markdown. Always use mrkdwn when composing Lark IM messages:
| Format | Syntax | Notes |
|---|---|---|
| Bold | *text* | Single asterisks, NOT double |
| Italic | _text_ | Underscores |
| Strikethrough | ~text~ | Tildes |
| Code (inline) | `code` | Backticks |
| Code block | ```code``` | Triple backticks |
| Quote | > text | Angle bracket |
| Link | <url|display text> | Pipe-separated in angle brackets |
| User mention | <at user_id="ou_...">name</at> | Resolve the open_id via lark_contact_search first |
| Bulleted list | - item or • item | Dash or bullet character |
| Numbered list | 1. item | Number followed by period |
**bold** (double asterisks) — Lark IM uses *bold* (single asterisks)## headers — Lark IM does not support Markdown headers. Use *bold text* on its own line instead.[text](url) for links — Lark IM uses <url|text> format--- for horizontal rules — Lark IM does not render theseopen_id for a mention — resolve it via lark_contact_search (P1)A plain lark_im_send is fine for a one-line reply. But whenever the output is a decision or a
digest — an announcement, a status brief, an approve/triage prompt — post an interactive card
via lark_im_card_send instead. Always print_json: true to validate the spec offline, then
dry_run: true, then send. Card spec grammar (header templates, panel, item+button rows,
actions, *_i18n) lives in the lark-im skill, references/spec-reference.md.
# minimal announcement card (pass as `spec` to lark_im_card_send)
header: { title: "Q3 planning kickoff", template: blue }
elements:
- md: "*When:* Mon 10:00 · *Where:* VC room 3"
- note: "Reply in thread with blockers."
lark_doc_create / lark_wiki_node_create, P8) and link it instead of a wall of text.*bold* for names, dates, deadlines, and action items so they stand out when scanning.lark-im skill covers reaction management if you need to apply one programmatically.)lark_mail_draft_create so it can be eyeballed in the Mail UI before anything is sent (P2). Never auto-send.npx claudepluginhub larkcowork/lark-cowork-plugins --plugin slack-by-salesforceCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.