discord-markdown
Format text for Discord using markdown syntax. Use when composing Discord messages, bot responses, embed descriptions, forum posts, webhook payloads, or any content destined for Discord's chat interface. Triggers on requests mentioning Discord formatting, Discord messages, Discord bots, Discord embeds, or when the user needs text styled for Discord's rendering engine. Covers bold, italic, underline, strikethrough, spoilers, code blocks with syntax highlighting, headers, subtext, lists, block quotes, masked links, timestamps, and mentions. Always presents Discord-ready messages inside fenced code blocks so the user can copy-paste them directly into Discord with all markdown formatting preserved.
What this skill does
# Discord Markdown Formatting
Format text for Discord's chat rendering engine. Discord uses a modified subset of Markdown with some unique additions (spoilers, timestamps, subtext, guild navigation).
## Output Presentation โ CRITICAL
When composing a Discord message for the user, **always present the final message inside a fenced code block** so the user can copy-paste it directly into Discord with all markdown formatting intact.
**Why:** Claude's chat interface renders markdown (e.g., `**bold**` becomes **bold**). If the user copies rendered text, the markdown syntax is stripped and the message loses its formatting when pasted into Discord. A code block preserves the raw syntax.
### How to Present Discord Messages
Always wrap the final copy-paste-ready message in a fenced code block with the `markdown` language tag:
````
```markdown
# ๐ Announcement
**This is bold** and ~~this is struck~~ and ||this is a spoiler||
> Block quote here
-# Subtext footer
```
````
### Rules
1. **Always use a fenced code block** โ Triple backticks with `markdown` language identifier
2. **The ENTIRE message goes in ONE block** โ Everything the user will paste into Discord lives inside a single fenced code block. No part of the Discord message should ever appear outside the block as rendered markdown
3. **Explain outside the block** โ Put any notes, options, or context _before_ or _after_ the code block, never inside it
4. **Handle nested code blocks** โ If the Discord message itself contains code blocks, use four backticks (``````) as the outer fence so the inner triple backticks are preserved. The user copies everything between the outer fence โ the inner triple backticks are part of the Discord message:
`````
````markdown
Here's some code:
```javascript
console.log("hello");
```
Pretty cool right?
````
`````
5. **Multiple messages = multiple blocks** โ If providing alternatives or a multi-message sequence, use a separate code block for each with a label above it
6. **Message metadata summary** โ Always display a metadata summary table immediately after every Discord message code block (see below)
7. **Templates too** โ When presenting templates from the reference files, they should also be in copyable code blocks following these same rules
8. **Never partially render** โ Do NOT put headers, bold text, code snippets, or any other Discord-formatted content outside the code block. If it's part of the Discord message, it goes inside the block. The user should never have to assemble a message from rendered markdown and code blocks
### Message Metadata Summary
After **every** Discord message code block, include a summary table with the following stats:
| Stat | Description | How to Count |
| -------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Characters** | Total character count of the message | Count all characters inside the code block. Show as `X / 2,000` for chat messages or `X / 4,096` for embed descriptions |
| **Sections** | Number of header-delimited sections | Count all `#`, `##`, `###` headers. If no headers, show `0` |
| **User Mentions** | Users mentioned via `<@USER_ID>` or `<@!USER_ID>` | Count unique `<@...>` patterns (not role mentions) |
| **Role Mentions** | Roles mentioned via `<@&ROLE_ID>` | Count unique `<@&...>` patterns. Include `@everyone` and `@here` |
| **Channel Mentions** | Channels linked via `<#CHANNEL_ID>` or `<id:...>` | Count unique `<#...>` and `<id:...>` patterns |
| **URLs** | Links in the message | Count raw URLs and masked links `[text](url)` |
| **Code Blocks** | Code blocks with language info | If the message contains fenced code blocks, list languages used (e.g., `javascript`, `bash`). Show `โ` if none |
Format the summary as a compact table directly below the code block:
```
| Stat | Value |
|--------------------|----------------|
| Characters | 437 / 2,000 |
| Sections | 3 |
| User Mentions | 1 |
| Role Mentions | 1 (@everyone) |
| Channel Mentions | 0 |
| URLs | 0 |
| Code Blocks | โ |
```
**Notes:**
- For role mentions, parenthetically note if `@everyone` or `@here` is included since those ping the entire server
- For code blocks, list each language, e.g. `javascript, bash` โ or `(no lang)` if the block has no language identifier
- If characters exceed 80% of the limit, add a โ ๏ธ warning
- If characters exceed the limit, add a ๐ซ and suggest splitting the message
### Example Interaction
**User:** "Write me a Discord announcement about a new SDK release that includes code examples"
**Claude's response should look like:**
Here's your SDK announcement:
````markdown
# ๐ Volvox SDK v2.0 โ Breaking Changes
Hey @everyone โ we just shipped **v2.0** of the SDK and there are a few things you need to know before upgrading.
## What Changed
The `createJar` method now accepts an options object instead of positional arguments:
**Before:**
```ts
const jar = createJar("Lunch Spots", ["Chipotle", "Sweetgreen"], true);
```
**After:**
```ts
const jar = createJar({
name: "Lunch Spots",
options: ["Chipotle", "Sweetgreen"],
allowDuplicates: true,
});
```
## New: Shake Events
```ts
jar.on("shake", (result) => {
console.log(`๐ Selected: ${result.option}`);
});
```
> ๐ก Full migration guide pinned in <#dev-resources>
Drop questions in <#sdk-support> โ <@core-team> is standing by. ๐ซก
-# v2.0.0 โข <t:1770537600:D>
````
| Stat | Value |
| ---------------- | -------------------- |
| Characters | 659 / 2,000 |
| Sections | 3 |
| User Mentions | 1 |
| Role Mentions | 1 (@everyone) |
| Channel Mentions | 2 |
| URLs | 0 |
| Code Blocks | 3 โ `ts`, `ts`, `ts` |
**Key:** Notice the outer fence uses four backticks (``````) because the Discord message contains inner triple-backtick code blocks. The user copies everything between the outer fence โ inner backticks are part of the message.
---
## Quick Reference
| Style | Syntax | Renders As |
| --------------------- | -------------------- | -------------------- |
| Bold | `**text**` | **text** |
| Italic | `*text*` or `_text_` | _text_ |
| Underline | `__text__` | underlined text |
| Strikethrough | `~~text~~` | ~~text~~ |
| Spoiler | `\|\|text\|\|` | hidden until clicked |
| Inline code | `` `code` `` | monospaced |
| Bold italic | `***text***` | **_text_** |
| Underline italic | `__*text*__` | underlined italic |
| Underline bold | `__**text**__` | underlined bold |
| Underline bold italic | `__***text***__` | all three |
| Strikethrough bold | `~~**text**~~` | struck bold |
## Text Formatting
### Emphasis
```
*italic* or _italic_
**bold**
***bold italic***
__underline__
~~strikethrough~~
||spoiler texRelated in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing โ use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.