Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when composing a message destined for Slack: emit Slack mrkdwn token forms (single-asterisk bold, underscore italic, single-tilde strike, <url|label> links, no markdown headers) instead of standard Markdown -- which cheaper models do not do by default.
.claude/skills/slack-mrkdwn-format/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 6 |
| Model | Lift | Δ tokens | Δ turns | Cases | Verified |
|---|---|---|---|---|---|
| gemini-3.6-flashbest | +36% | +178% | 0% | 22 | 54d ago |
| gemini-3.5-flash | pending re-run | — | |||
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
| case-05 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
Slack does NOT parse standard (CommonMark / GitHub) Markdown. It parses its own dialect, mrkdwn, whose inline tokens differ. Apply this whenever the output is a message that will be posted to a Slack channel, thread, or DM. The default Markdown a model reaches for renders in Slack as broken literal text (you see **bold**, ## Heading, and unclickable [label](url)).
*text*. Never **text** (that prints two literalasterisks, no bold).
_text_. Never a single pair of asterisks (*text* is BOLDin Slack, not italic).
*_text_*.~text~. Never ~~text~~ (prints literal tildes). text (this one matches Markdown).<url|visible label>: the URL, a pipe, then the label, all inside angle brackets,e.g. <https://example.com/dash|View dashboard>. A bare URL needing no label is just <url>. Never the Markdown [label](url) form -- Slack prints it literally and the link is not clickable.
#, ##, or ###. A section title is just a boldline: *Section title*, usually followed by a blank line. ALL-CAPS or a leading emoji can add weight, but never a markdown header mark.
• (preferred) or -. Numbered list = 1., 2..> text (matches Markdown). Code block = triple backticks (matches Markdown).:white_check_mark:, :warning:, :rocket: (Unicode alsorenders). Shortcodes are the portable form.
Everything not listed (paragraphs, blank-line spacing) is plain text.
**Deploy complete** -> *Deploy complete**draft, do not ship* -> _draft, do not ship_[Open the build](https://example.com/build/42) -> <https://example.com/build/42|Open the build>https://example.com/status -> <https://example.com/status>## Release 9.4 notes -> *Release 9.4 notes*~~9:00~~ moved to 10:30 -> ~9:00~ moved to 10:30- **Owner:** Dana -> • *Owner:* Dana1. **Build** then deploy -> 1. *Build* then deploy> shipping is blocked stays > shipping is blocked (matches Markdown)A full message side by side -- LEFT is the wrong default, RIGHT renders correctly in Slack:
BEFORE (standard Markdown):
## **Build summary**
- **Status:** green
- *Owner:* Lee
- See the [run](https://example.com/run/9) -- ~~retry~~ passed on first try.AFTER (Slack mrkdwn):
*Build summary*
• *Status:* green
• _Owner:_ Lee
• See the <https://example.com/run/9|run> -- ~retry~ passed on first try.#. Use a bold line, optionally ALL CAPS:*RELEASE STATUS*.
*urgent*, with no surrounding spacesinside the asterisks (* urgent * does not render).
2 * 3, a filename my_file): Slack only formatsmatched pairs that hug non-space characters, so a lone * or an underscore inside a word is usually safe as-is; if it renders, wrap the run in inline code.
<https://example.com> -- do not invent a label.~old value~ new value, so the changereads at a glance.
*_text_*.The reverse (_*text*_) also renders, but pick one form and keep it consistent.
user_name) can trigger accidentalitalics; if Slack swallows the underscores, wrap the token in inline code: user_name .
**bold** / DO *bold**italic* / DO _italic_~~strike~~ / DO ~strike~[label](https://example.com) / DO <https://example.com|label><https://example.com> then (label) / DO put the label after a pipe: <https://example.com|label>## Heading or ### Subhead / DO a bold line *Heading*- [ ] task boxes / DO • :white_check_mark: style bullets* for italics and _ for bold / DO the opposite: * bold, _ italicthe one place that markup does not work.
** for bold: the single most common failure; it renders as visible asterisks.[text](url): renders literally; the link is dead.##/### for section titles: renders the hash marks literally.~~ for strikethrough: renders literal tildes.*word* intending italics: in Slack that is BOLD; italics need underscores.*single*; no ** anywhere._underscore_; not single asterisks.~single~; no ~~.<url|label> (or bare <url>); no [label](url).#/##/###; section titles are bold lines.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-17 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.5-flash | verified | 7/10/2026 | +96% |
Other measured skills in the registry, with their headline benchmark lift.