agentsclimarketplace

Slack best practices

Skill Yesterday-AI/skills/plugins/office/skills/slack-best-practices

Yesterday's PUBLIC plugin catalog for Claude Code and Cursor

Install
npx -y skills add Yesterday-AI/skills --skill slack-best-practices

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

A collection of formatting rules, emoji quirks, and communication etiquette for Slack. Use when composing messages for Slack to ensure correct rendering and team-friendly communication.

SKILL.md

5.9 KB, as published. Nobody here has run it

Slack Best Practices πŸ’¬πŸˆβ€β¬›

πŸ›‘ CRITICAL RULE: NEVER USE DOUBLE ASTERISKS (**)

Slack does NOT support Standard Markdown bolding. Using ** will show the literal asterisks to the user. ALWAYS use single asterisks (*) for bold text.

FOR AGENTS: You are hard-wired to use **. You MUST run a post-processing step on your final message string to replace ** with * before calling the message tool.

Slack uses a unique flavor of Markdown called mrkdwn. This skill captures the quirks and best practices learned by Yesterday agents to ensure our messages look perfect.


Formatting Rules (mrkdwn)

Elementmrkdwn SyntaxStandard MD (Avoid!)
Bold*text* (single asterisk)**text**
Italic_text_ (underscore)*text*
Strike~text~~~text~~
Blockquote> textsame
Inline Code`code`same
Code Block```code block```same
Link<URL|Label>[Label](URL)

Note: Slack does NOT support # headers or Markdown tables. Use ALL CAPS BOLD to simulate headers. Use bullet lists instead of tables.


Links & URLs

Auto-linking works if you paste a raw URL. To suppress the preview embed, wrap it in angle brackets:

<https://example.com>

To show custom link text:

<https://example.com|Click here>

Email links:

<mailto:[email protected]|Mail Alex>

Special characters that must be escaped in text strings (not in URLs):

CharacterUse instead
&&amp;
<&lt;
>&gt;

Mentions

User mention:

<@U012AB3CD>

Slack auto-converts the user ID to their display name. Get user IDs from their Slack profile ("Copy member ID").

Channel mention:

<#C123ABC456>

Slack auto-converts to the channel name. Get channel ID from the URL: https://app.slack.com/client/E.../C123ABC456

User group mention:

<!subteam^SAZ94GDB8>

Special mentions (use sparingly!):

MentionSyntaxWho gets notified
@here<!here>Active members of channel
@channel<!channel>All members of channel
@everyone<!everyone>Every workspace member (#general only)

Date & Time Formatting

Slack can auto-localize timestamps to the reader's timezone:

<!date^UNIX_TIMESTAMP^{date_short} at {time}|Fallback text>

Available tokens:

TokenExample output
{date_num}2026-03-05
{date}March 5th, 2026
{date_short}Mar 5, 2026
{date_long}Thursday, March 5th, 2026
{date_pretty}today / yesterday / tomorrow
{time}2:00 PM
{time_secs}2:00:00 PM

Emoji

  • Standard Only: Stick to standard Slack emojis (:feet:, :sparkles:, :rocket:).
  • No hallucinations: Do not invent emoji names unless sure they exist in the workspace.
  • Tone: Use sparingly to soften messages -- one emoji per paragraph max.
  • Emoji are stored internally in colon format (:smile:). When posting, you can use native unicode emoji directly and Slack will convert them.

Cross-Channel Posting (message Tool)

πŸ›‘ CRITICAL: Use the Correct Tool Format

The generic message tool's channel parameter does NOT work for cross-channel posting in Slack. It always sends to the current session's DM. Use the Slack skill sendMessage action instead.

Posting to a different channel from within a DM session:

{
  "action": "sendMessage",
  "to": "channel:C0EXAMPLE01",
  "content": "Hello from another channel"
}

Posting to a user's DM:

{
  "action": "sendMessage",
  "to": "user:U012AB3CD",
  "content": "Hello via DM"
}

The to field format:

TargetFormatExample
Channel by IDchannel:C123ABC456channel:C0EXAMPLE01
User by IDuser:U012AB3CDuser:U0EXAMPLE02

Common mistake: Using message(action=send, channel=C123) -- this ignores the channel parameter and posts to the DM of the current session. Always use sendMessage with to: "channel:...".

Prerequisites:

  • The target channel must be in channels.slack.accounts.default.channels with allow: true
  • The bot must be invited to the target channel
  • groupPolicy: "allowlist" means only explicitly listed channels are allowed

Communication Etiquette

  1. Thread over Flood: Use threads for deep-dives, detailed logs, or long explanations. Keep channels scannable.
  2. Mentions: Use @user sparingly. Prefer no mentions for broad updates unless truly urgent.
  3. Headers: Simulate with *ALL CAPS BOLD* -- Slack has no # header support.
  4. No tables: Slack does not render Markdown tables. Use bullet lists instead.
  5. Link embeds: Wrap links in <> to suppress large previews in busy channels.

Troubleshooting & Common Agent Mistakes

  • The "Model Reflex" (CRITICAL): LLMs are pre-trained on millions of Standard Markdown examples and WILL reflexively use **bold** even when they know better. Treat this as a high-risk failure point.
  • The "Mental Double-Check": Before any message is sent to Slack, perform a final scan of the text string to ensure NO double-asterisks (**) exist. Convert to * if found.
  • Formatting Over Content: High-quality content is useless if the formatting is broken. Prioritize correct mrkdwn syntax over speedy replies.
  • Self-Correction Loop: Before calling the message tool, run a search-and-replace: ** β†’ *.

"Clear is kind. Scannable is better." πŸΎπŸ“‘

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.