Skip to content

@tank/slack-message-writer

1.1.0
Skill

Description

Write short, scannable Slack messages with key words in bold (dyslexia and ADHD friendly) and copy them to the macOS clipboard. Covers pasted Markdown, composer markup, API mrkdwn, Markdown blocks, mentions, dates, accessibility, announcements, status and incident updates, decisions, handoffs, and review requests.

Triggered by

write a Slack messagedraft a Slack messageSlack copySlack announcementSlack updateSlack incident
Pending
tank install -g @tank/slack-message-writer

Slack Message Writer

Write Slack-native messages that are short, easy to scan, hard to misunderstand, and ready to paste. Copy the final artifact to the clipboard unless the user opts out.

Core Philosophy

  1. Lead with the point. Put the decision, request, outcome, or state in the first line. Context follows the headline.
  2. Keep it short. Every line must earn its place. Cut background the reader already has, and link to a document instead of explaining it.
  3. Bold the key words. A reader who reads only the bold text should still get who, what, and when. This makes messages scannable, especially for dyslexic and ADHD readers.
  4. Match the paste target's syntax. Text pasted into Slack's default composer is parsed as standard Markdown: **bold**, not *bold*.
  5. Notify deliberately. Mention the smallest useful audience. Never add @channel, @here, @everyone, or a user-group mention without explicit intent.

Workflow

  1. Infer audience, purpose, desired action, deadline, and tone from context.
  2. Ask one concise question only when a missing fact materially changes the message.
  3. Pick a delivery mode below. Default to Clipboard (pasted Markdown).
  4. Draft with the relevant recipe, then cut it to the Length Budget.
  5. Bold the key words in every line (see Bold Key Words).
  6. Check names, links, dates, identifiers, and notification scope. Invent none.
  7. Display the final message in one fenced text block.
  8. Pipe the exact unfenced text to scripts/copy-to-clipboard.sh.
  9. Report Copied to clipboard. and remind the user to re-type @mentions. Never say sent unless a separate Slack tool sent it.

Length Budget

RuleTarget
Whole messageAbout 5 lines; more than 8 needs a reason
SentenceOne idea, about 15 words or fewer
ContextAt most one short line
ListAt most 5 items, unless the list is the content (tickets, owners)
Detail that does not fitA link, not more paragraphs

Prefer a label and a fragment (**Next:** **rehearsal** on **Thursday**) over a full sentence. Do not repeat in the body what the headline already said.

Bold Key Words

Bold the words that carry meaning, so the bold text alone reads as a summary: the action the reader must take, owners, deadlines and times, status words, numbers that matter, and the line's subject when unclear.

  • Bold 1 to 3 short phrases per line; past about a third of a line, nothing stands out.
  • Bold whole words or phrases, never a full sentence, filler words, or code.
  • Emphasize with bold, not italics or underline: British Dyslexia Association guidance says italics and underline make letters harder to read.
  • Syntax follows the mode: **bold** when pasting and in API Markdown; *bold* only in API mrkdwn or typed composer markup. Pasted *single* renders italic.

Delivery Modes

User intentOutput modeFormatting
Write, draft, reply, announce, copyClipboard (pasted Markdown)**bold**, _italic_, ~~strike~~, code, - lists, > quotes, [label](url)
User types it, or has markup preference onComposer markup*bold*, _italic_, ~strike~, code, quotes, Markdown-style links
Web API message using textAPI mrkdwn`<url
Preserve an LLM's standard MarkdownAPI Markdownmarkdown_text or a markdown block
Structured app messageAPI rich layoutBlock Kit rich_text plus accessible fallback text

Do not mix syntaxes. Clipboard output never contains API-only forms such as <@U123> or <!date...> unless the user asked for an API payload.

Quick-Start: Common Messages

"Ask for action or review"

Request first, deadline, focus, link.

**Review requested: onboarding copy**
Please **review** it by **Thursday 14:00**, focusing on **value clarity** and **missing objections**.
[Open the draft](https://example.com)

"Share a status update"

State, done, next, risk. Omit empty sections.

**Project Atlas: on track for Friday**
- **Done:** **import flow** and validation
- **Next:** **migration rehearsal**
- **Risk:** legal copy due **Thursday**

"Announce a change"

What changed, who is affected, when, action, source of truth.

**New expense approval flow starts Monday**
Requests **over $1,000** need **Finance approval**. Existing requests are **unchanged**.
**Action:** use the **new form** from **Monday**. [Guide](https://example.com)

"Post an incident update"

Status, impact, action underway, next update, with an absolute time and timezone.

**Investigating: delayed report generation**
**Impact:** reports **20-30 minutes late**, **no data loss**.
**Now:** draining the **worker queue**. **Next update:** **15:30 UTC**

"Record a decision or hand off work"

Decision or current state, reason, exact next action and owner, known risk.

**Decision: keep the launch behind the existing flag**
**Why:** the rollback path is **proven**; a second flag adds **risk**.
**Next:** **Maya** raises it from **10% to 25%** after tomorrow's error review.

Formatting Judgment

SignalUseAvoid
One key takeawayBold first-line headlineMultiple competing headings
Three or more parallel factsBulleted listBullets for a single sentence
Commands, IDs, literal valuesInline code or code blockBold code-like text
One primary actionA labeled action lineSeveral unlabeled links
Urgent operational changeExplicit impact and next updateEmoji-only urgency

Use at most one or two purposeful emoji. Never let emoji alone carry status, urgency, approval, or failure.

Clipboard Delivery

Send only the final message body over standard input:

bash scripts/copy-to-clipboard.sh <<'SLACK_MESSAGE'
**Final Slack message**
Exact text to copy.
SLACK_MESSAGE

Never copy analysis, alternatives, the code fence, or the completion note. Slack's default composer parses pasted plain text as standard Markdown and ignores the clipboard's HTML (verified in the desktop app, 2026-11-02), so the script copies plain text. Pasted @Name text never becomes a real mention.

Decision Trees

QuestionIf yesIf no
Did the user request API JSON or Block Kit?Use API mode and load the referenceUse clipboard (pasted Markdown)
Is there one explicit action?Put it in the first two lines, in boldLead with the outcome or state
Does a mention notify many people?Require explicit user intentUse the narrow mention
Is a date viewed across timezones?Localized API date syntax in API modeInclude an explicit timezone
Is the message over the length budget?Cut detail or link to a documentKeep it self-contained
Does the bold alone miss who, what, or when?Bold the missing key wordsKeep the bold as it is
Is the content sensitive or surprising?Keep neutral wording; ask before adding namesDraft directly

Scripts

ScriptUsage
scripts/copy-to-clipboard.shCopy non-empty UTF-8 text from standard input as literal macOS plain text; rejects missing input, invalid UTF-8, and unsupported arguments

Reference Index

FileContents
references/slack-formatting.mdPasted Markdown behavior, composer markup, API mrkdwn, standard Markdown blocks, rich text, mentions, dates, escaping, parsing controls, accessibility, limits, and mode-specific checks

Command Palette

Search packages, docs, and navigate Tank