{
  "schemaVersion": "1.0",
  "item": {
    "slug": "discord-markdown",
    "name": "Discord Markdown",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/BillChirico/discord-markdown",
    "canonicalUrl": "https://clawhub.ai/BillChirico/discord-markdown",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/discord-markdown",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discord-markdown",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/syntax-highlighting.md",
      "references/templates.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "discord-markdown",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T22:51:42.070Z",
      "expiresAt": "2026-05-06T22:51:42.070Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discord-markdown",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=discord-markdown",
        "contentDisposition": "attachment; filename=\"discord-markdown-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "discord-markdown"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/discord-markdown"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/discord-markdown",
    "agentPageUrl": "https://openagent3.xyz/skills/discord-markdown/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discord-markdown/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discord-markdown/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Discord Markdown Formatting",
        "body": "Format text for Discord's chat rendering engine. Discord uses a modified subset of Markdown with some unique additions (spoilers, timestamps, subtext, guild navigation)."
      },
      {
        "title": "Output Presentation — CRITICAL",
        "body": "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.\n\nWhy: 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."
      },
      {
        "title": "How to Present Discord Messages",
        "body": "Always wrap the final copy-paste-ready message in a fenced code block with the markdown language tag:\n\n```markdown\n# 🚀 Announcement\n\n**This is bold** and ~~this is struck~~ and ||this is a spoiler||\n\n> Block quote here\n\n-# Subtext footer\n```"
      },
      {
        "title": "Rules",
        "body": "Always use a fenced code block — Triple backticks with markdown language identifier\nThe 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\nExplain outside the block — Put any notes, options, or context before or after the code block, never inside it\nHandle 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:\n\n````markdown\nHere's some code:\n\n```javascript\nconsole.log(\"hello\");\n```\n\nPretty cool right?\n````\n\nMultiple messages = multiple blocks — If providing alternatives or a multi-message sequence, use a separate code block for each with a label above it\nMessage metadata summary — Always display a metadata summary table immediately after every Discord message code block (see below)\nTemplates too — When presenting templates from the reference files, they should also be in copyable code blocks following these same rules\nNever 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"
      },
      {
        "title": "Message Metadata Summary",
        "body": "After every Discord message code block, include a summary table with the following stats:\n\nStatDescriptionHow to CountCharactersTotal character count of the messageCount all characters inside the code block. Show as X / 2,000 for chat messages or X / 4,096 for embed descriptionsSectionsNumber of header-delimited sectionsCount all #, ##, ### headers. If no headers, show 0User MentionsUsers mentioned via <@USER_ID> or <@!USER_ID>Count unique <@...> patterns (not role mentions)Role MentionsRoles mentioned via <@&ROLE_ID>Count unique <@&...> patterns. Include @everyone and @hereChannel MentionsChannels linked via <#CHANNEL_ID> or <id:...>Count unique <#...> and <id:...> patternsURLsLinks in the messageCount raw URLs and masked links [text](url)Code BlocksCode blocks with language infoIf the message contains fenced code blocks, list languages used (e.g., javascript, bash). Show — if none\n\nFormat the summary as a compact table directly below the code block:\n\n| Stat               | Value          |\n|--------------------|----------------|\n| Characters         | 437 / 2,000    |\n| Sections           | 3              |\n| User Mentions      | 1              |\n| Role Mentions      | 1 (@everyone)  |\n| Channel Mentions   | 0              |\n| URLs               | 0              |\n| Code Blocks        | —              |\n\nNotes:\n\nFor role mentions, parenthetically note if @everyone or @here is included since those ping the entire server\nFor code blocks, list each language, e.g. javascript, bash — or (no lang) if the block has no language identifier\nIf characters exceed 80% of the limit, add a ⚠️ warning\nIf characters exceed the limit, add a 🚫 and suggest splitting the message"
      },
      {
        "title": "Example Interaction",
        "body": "User: \"Write me a Discord announcement about a new SDK release that includes code examples\"\n\nClaude's response should look like:\n\nHere's your SDK announcement:\n\n# 🚀 Volvox SDK v2.0 — Breaking Changes\n\nHey @everyone — we just shipped **v2.0** of the SDK and there are a few things you need to know before upgrading.\n\n## What Changed\n\nThe `createJar` method now accepts an options object instead of positional arguments:\n\n**Before:**\n\n```ts\nconst jar = createJar(\"Lunch Spots\", [\"Chipotle\", \"Sweetgreen\"], true);\n```\n\n**After:**\n\n```ts\nconst jar = createJar({\n  name: \"Lunch Spots\",\n  options: [\"Chipotle\", \"Sweetgreen\"],\n  allowDuplicates: true,\n});\n```\n\n## New: Shake Events\n\n```ts\njar.on(\"shake\", (result) => {\n  console.log(`🎉 Selected: ${result.option}`);\n});\n```\n\n> 💡 Full migration guide pinned in <#dev-resources>\n\nDrop questions in <#sdk-support> — <@core-team> is standing by. 🫡\n\n-# v2.0.0 • <t:1770537600:D>\n\nStatValueCharacters659 / 2,000Sections3User Mentions1Role Mentions1 (@everyone)Channel Mentions2URLs0Code Blocks3 — ts, ts, ts\n\nKey: 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."
      },
      {
        "title": "Quick Reference",
        "body": "StyleSyntaxRenders AsBold**text**textItalic*text* or _text_textUnderline__text__underlined textStrikethrough~~text~~textSpoiler||text||hidden until clickedInline code`code`monospacedBold italic***text***textUnderline italic__*text*__underlined italicUnderline bold__**text**__underlined boldUnderline bold italic__***text***__all threeStrikethrough bold~~**text**~~struck bold"
      },
      {
        "title": "Emphasis",
        "body": "*italic* or _italic_\n**bold**\n***bold italic***\n__underline__\n~~strikethrough~~\n||spoiler text||"
      },
      {
        "title": "Combining Styles",
        "body": "Nest formatting markers from outside in. Discord resolves them in this order: underline → bold → italic → strikethrough.\n\n__**bold underline**__\n__*italic underline*__\n__***bold italic underline***__\n~~**bold strikethrough**~~\n~~__**bold underline strikethrough**__~~\n||**bold spoiler**||"
      },
      {
        "title": "Escaping",
        "body": "Prefix any markdown character with \\ to display it literally:\n\n\\*not italic\\*\n\\*\\*not bold\\*\\*\n\\|\\|not a spoiler\\|\\|"
      },
      {
        "title": "Headers",
        "body": "Headers require # at the start of a line followed by a space. Only three levels are supported.\n\n# Large Header\n## Medium Header\n### Small Header\n\nImportant: Headers do not work inline. The # must be the first character on the line."
      },
      {
        "title": "Subtext",
        "body": "Small, muted gray text below content. Useful for footnotes, disclaimers, or attribution.\n\n-# This renders as subtext"
      },
      {
        "title": "Single-line",
        "body": "> This is a single block quote"
      },
      {
        "title": "Multi-line",
        "body": "Everything after >>> (including subsequent lines) becomes quoted:\n\n>>> This entire block\nincluding this line\nand this line\nare all quoted"
      },
      {
        "title": "Unordered",
        "body": "Use - or * with a space. Indent with spaces for nesting:\n\n- Item one\n- Item two\n  - Nested item\n  - Another nested item\n    - Deep nested"
      },
      {
        "title": "Ordered",
        "body": "1. First item\n2. Second item\n3. Third item\n\nAuto-numbering trick: Discord auto-increments if you repeat 1.:\n\n1. First\n1. Second (renders as 2.)\n1. Third (renders as 3.)"
      },
      {
        "title": "Inline Code",
        "body": "Use `inline code` for short snippets"
      },
      {
        "title": "Multi-line Code Block",
        "body": "Wrap code with triple backticks on their own lines:\n\n```\nfunction hello() {\n  return \"world\";\n}\n```"
      },
      {
        "title": "Syntax Highlighting",
        "body": "Add a language identifier after the opening backticks:\n\n```javascript\nfunction hello() {\n  return \"world\";\n}\n```\n\nSee references/syntax-highlighting.md for the full list of supported languages.\n\nCommonly used languages: javascript, typescript, python, csharp, json, bash, css, html, sql, yaml, diff, markdown"
      },
      {
        "title": "Masked Links",
        "body": "[Click here](https://example.com)\n\nNote: Masked links work in embeds and some contexts, but regular chat may show a preview. Discord may suppress masked links from bots in certain conditions."
      },
      {
        "title": "Auto-linking",
        "body": "Discord auto-links any valid URL pasted directly:\n\nCheck out https://example.com for more info"
      },
      {
        "title": "Suppressing Link Previews",
        "body": "Wrap a URL in angle brackets to prevent Discord from generating a preview embed:\n\n<https://example.com>"
      },
      {
        "title": "Timestamps",
        "body": "Dynamic timestamps that display in each user's local timezone.\n\nFormat: <t:UNIX_TIMESTAMP:FORMAT_FLAG>\n\nFlagOutput StyleExampletShort time4:20 PMTLong time4:20:30 PMdShort date02/08/2026DLong dateFebruary 8, 2026fShort date/time (default)February 8, 2026 4:20 PMFLong date/timeSunday, February 8, 2026 4:20 PMRRelative2 hours ago\n\nExample:\n\nEvent starts <t:1770537600:F>\nThat was <t:1770537600:R>\n\nTip: Use Math.floor(Date.now() / 1000) or date +%s to get the current Unix timestamp."
      },
      {
        "title": "Mentions & References",
        "body": "<@USER_ID>          → @username mention\n<@!USER_ID>         → @username mention (nickname format)\n<@&ROLE_ID>         → @role mention\n<#CHANNEL_ID>       → #channel link\n<id:browse>         → Browse Channels link\n<id:customize>      → Customize Community link\n<id:guide>          → Server Guide link\n<id:linked-roles>   → Linked Roles link"
      },
      {
        "title": "Emoji",
        "body": ":emoji_name:                    → Standard/custom emoji\n<:emoji_name:EMOJI_ID>          → Custom emoji\n<a:emoji_name:EMOJI_ID>         → Animated custom emoji"
      },
      {
        "title": "Discord-Specific Gotchas",
        "body": "No nested block quotes — Discord does not support >> for nested quotes\nHeaders need line start — # must be the first character on the line (not inline)\nUnderline is NOT standard Markdown — __text__ underlines in Discord but bolds in standard Markdown\nSpoilers are Discord-only — ||text|| has no equivalent in standard Markdown\nLists need a blank line — Start lists after a blank line or they may not render\nEmbed markdown differs — Some formatting behaves differently in embeds vs chat messages\n2000 character limit — Standard messages max at 2,000 characters; nitro users get 4,000\nEmbed description limit — Embed descriptions max at 4,096 characters\nCode block language names are case-insensitive — JS, js, and JavaScript all work"
      },
      {
        "title": "Formatting for Different Contexts",
        "body": "Reminder: Regardless of context, always present the final Discord-ready message inside a fenced code block so the user can copy-paste it directly. See \"Output Presentation\" above."
      },
      {
        "title": "Chat Messages",
        "body": "Full markdown support. 2,000 character limit (4,000 with Nitro)."
      },
      {
        "title": "Embed Descriptions",
        "body": "Full markdown support. 4,096 character limit. Masked links work reliably here."
      },
      {
        "title": "Embed Field Values",
        "body": "Limited markdown. 1,024 character limit per field."
      },
      {
        "title": "Bot Messages / Webhooks",
        "body": "Full markdown support. Same as chat messages. Use embeds for richer formatting."
      },
      {
        "title": "Forum Posts",
        "body": "Full markdown support in the post body. Title is plain text only."
      },
      {
        "title": "Resources",
        "body": "Syntax highlighting: references/syntax-highlighting.md — full list of supported languages with examples\nTemplates: references/templates.md — copy-paste templates for common Discord formatting patterns"
      }
    ],
    "body": "Discord Markdown Formatting\n\nFormat text for Discord's chat rendering engine. Discord uses a modified subset of Markdown with some unique additions (spoilers, timestamps, subtext, guild navigation).\n\nOutput Presentation — CRITICAL\n\nWhen 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.\n\nWhy: 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.\n\nHow to Present Discord Messages\n\nAlways wrap the final copy-paste-ready message in a fenced code block with the markdown language tag:\n\n```markdown\n# 🚀 Announcement\n\n**This is bold** and ~~this is struck~~ and ||this is a spoiler||\n\n> Block quote here\n\n-# Subtext footer\n```\n\nRules\nAlways use a fenced code block — Triple backticks with markdown language identifier\nThe 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\nExplain outside the block — Put any notes, options, or context before or after the code block, never inside it\nHandle 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:\n````markdown\nHere's some code:\n\n```javascript\nconsole.log(\"hello\");\n```\n\nPretty cool right?\n````\n\nMultiple messages = multiple blocks — If providing alternatives or a multi-message sequence, use a separate code block for each with a label above it\nMessage metadata summary — Always display a metadata summary table immediately after every Discord message code block (see below)\nTemplates too — When presenting templates from the reference files, they should also be in copyable code blocks following these same rules\nNever 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\nMessage Metadata Summary\n\nAfter every Discord message code block, include a summary table with the following stats:\n\nStat\tDescription\tHow to Count\nCharacters\tTotal character count of the message\tCount all characters inside the code block. Show as X / 2,000 for chat messages or X / 4,096 for embed descriptions\nSections\tNumber of header-delimited sections\tCount all #, ##, ### headers. If no headers, show 0\nUser Mentions\tUsers mentioned via <@USER_ID> or <@!USER_ID>\tCount unique <@...> patterns (not role mentions)\nRole Mentions\tRoles mentioned via <@&ROLE_ID>\tCount unique <@&...> patterns. Include @everyone and @here\nChannel Mentions\tChannels linked via <#CHANNEL_ID> or <id:...>\tCount unique <#...> and <id:...> patterns\nURLs\tLinks in the message\tCount raw URLs and masked links [text](url)\nCode Blocks\tCode blocks with language info\tIf the message contains fenced code blocks, list languages used (e.g., javascript, bash). Show — if none\n\nFormat the summary as a compact table directly below the code block:\n\n| Stat               | Value          |\n|--------------------|----------------|\n| Characters         | 437 / 2,000    |\n| Sections           | 3              |\n| User Mentions      | 1              |\n| Role Mentions      | 1 (@everyone)  |\n| Channel Mentions   | 0              |\n| URLs               | 0              |\n| Code Blocks        | —              |\n\n\nNotes:\n\nFor role mentions, parenthetically note if @everyone or @here is included since those ping the entire server\nFor code blocks, list each language, e.g. javascript, bash — or (no lang) if the block has no language identifier\nIf characters exceed 80% of the limit, add a ⚠️ warning\nIf characters exceed the limit, add a 🚫 and suggest splitting the message\nExample Interaction\n\nUser: \"Write me a Discord announcement about a new SDK release that includes code examples\"\n\nClaude's response should look like:\n\nHere's your SDK announcement:\n\n# 🚀 Volvox SDK v2.0 — Breaking Changes\n\nHey @everyone — we just shipped **v2.0** of the SDK and there are a few things you need to know before upgrading.\n\n## What Changed\n\nThe `createJar` method now accepts an options object instead of positional arguments:\n\n**Before:**\n\n```ts\nconst jar = createJar(\"Lunch Spots\", [\"Chipotle\", \"Sweetgreen\"], true);\n```\n\n**After:**\n\n```ts\nconst jar = createJar({\n  name: \"Lunch Spots\",\n  options: [\"Chipotle\", \"Sweetgreen\"],\n  allowDuplicates: true,\n});\n```\n\n## New: Shake Events\n\n```ts\njar.on(\"shake\", (result) => {\n  console.log(`🎉 Selected: ${result.option}`);\n});\n```\n\n> 💡 Full migration guide pinned in <#dev-resources>\n\nDrop questions in <#sdk-support> — <@core-team> is standing by. 🫡\n\n-# v2.0.0 • <t:1770537600:D>\n\nStat\tValue\nCharacters\t659 / 2,000\nSections\t3\nUser Mentions\t1\nRole Mentions\t1 (@everyone)\nChannel Mentions\t2\nURLs\t0\nCode Blocks\t3 — ts, ts, ts\n\nKey: 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.\n\nQuick Reference\nStyle\tSyntax\tRenders As\nBold\t**text**\ttext\nItalic\t*text* or _text_\ttext\nUnderline\t__text__\tunderlined text\nStrikethrough\t~~text~~\ttext\nSpoiler\t||text||\thidden until clicked\nInline code\t`code`\tmonospaced\nBold italic\t***text***\ttext\nUnderline italic\t__*text*__\tunderlined italic\nUnderline bold\t__**text**__\tunderlined bold\nUnderline bold italic\t__***text***__\tall three\nStrikethrough bold\t~~**text**~~\tstruck bold\nText Formatting\nEmphasis\n*italic* or _italic_\n**bold**\n***bold italic***\n__underline__\n~~strikethrough~~\n||spoiler text||\n\nCombining Styles\n\nNest formatting markers from outside in. Discord resolves them in this order: underline → bold → italic → strikethrough.\n\n__**bold underline**__\n__*italic underline*__\n__***bold italic underline***__\n~~**bold strikethrough**~~\n~~__**bold underline strikethrough**__~~\n||**bold spoiler**||\n\nEscaping\n\nPrefix any markdown character with \\ to display it literally:\n\n\\*not italic\\*\n\\*\\*not bold\\*\\*\n\\|\\|not a spoiler\\|\\|\n\nHeaders\n\nHeaders require # at the start of a line followed by a space. Only three levels are supported.\n\n# Large Header\n## Medium Header\n### Small Header\n\n\nImportant: Headers do not work inline. The # must be the first character on the line.\n\nSubtext\n\nSmall, muted gray text below content. Useful for footnotes, disclaimers, or attribution.\n\n-# This renders as subtext\n\nBlock Quotes\nSingle-line\n> This is a single block quote\n\nMulti-line\n\nEverything after >>> (including subsequent lines) becomes quoted:\n\n>>> This entire block\nincluding this line\nand this line\nare all quoted\n\nLists\nUnordered\n\nUse - or * with a space. Indent with spaces for nesting:\n\n- Item one\n- Item two\n  - Nested item\n  - Another nested item\n    - Deep nested\n\nOrdered\n1. First item\n2. Second item\n3. Third item\n\n\nAuto-numbering trick: Discord auto-increments if you repeat 1.:\n\n1. First\n1. Second (renders as 2.)\n1. Third (renders as 3.)\n\nCode Blocks\nInline Code\nUse `inline code` for short snippets\n\nMulti-line Code Block\n\nWrap code with triple backticks on their own lines:\n\n```\nfunction hello() {\n  return \"world\";\n}\n```\n\nSyntax Highlighting\n\nAdd a language identifier after the opening backticks:\n\n```javascript\nfunction hello() {\n  return \"world\";\n}\n```\n\n\nSee references/syntax-highlighting.md for the full list of supported languages.\n\nCommonly used languages: javascript, typescript, python, csharp, json, bash, css, html, sql, yaml, diff, markdown\n\nLinks\nMasked Links\n[Click here](https://example.com)\n\n\nNote: Masked links work in embeds and some contexts, but regular chat may show a preview. Discord may suppress masked links from bots in certain conditions.\n\nAuto-linking\n\nDiscord auto-links any valid URL pasted directly:\n\nCheck out https://example.com for more info\n\nSuppressing Link Previews\n\nWrap a URL in angle brackets to prevent Discord from generating a preview embed:\n\n<https://example.com>\n\nTimestamps\n\nDynamic timestamps that display in each user's local timezone.\n\nFormat: <t:UNIX_TIMESTAMP:FORMAT_FLAG>\n\nFlag\tOutput Style\tExample\nt\tShort time\t4:20 PM\nT\tLong time\t4:20:30 PM\nd\tShort date\t02/08/2026\nD\tLong date\tFebruary 8, 2026\nf\tShort date/time (default)\tFebruary 8, 2026 4:20 PM\nF\tLong date/time\tSunday, February 8, 2026 4:20 PM\nR\tRelative\t2 hours ago\n\nExample:\n\nEvent starts <t:1770537600:F>\nThat was <t:1770537600:R>\n\n\nTip: Use Math.floor(Date.now() / 1000) or date +%s to get the current Unix timestamp.\n\nMentions & References\n<@USER_ID>          → @username mention\n<@!USER_ID>         → @username mention (nickname format)\n<@&ROLE_ID>         → @role mention\n<#CHANNEL_ID>       → #channel link\n<id:browse>         → Browse Channels link\n<id:customize>      → Customize Community link\n<id:guide>          → Server Guide link\n<id:linked-roles>   → Linked Roles link\n\nEmoji\n:emoji_name:                    → Standard/custom emoji\n<:emoji_name:EMOJI_ID>          → Custom emoji\n<a:emoji_name:EMOJI_ID>         → Animated custom emoji\n\nDiscord-Specific Gotchas\nNo nested block quotes — Discord does not support >> for nested quotes\nHeaders need line start — # must be the first character on the line (not inline)\nUnderline is NOT standard Markdown — __text__ underlines in Discord but bolds in standard Markdown\nSpoilers are Discord-only — ||text|| has no equivalent in standard Markdown\nLists need a blank line — Start lists after a blank line or they may not render\nEmbed markdown differs — Some formatting behaves differently in embeds vs chat messages\n2000 character limit — Standard messages max at 2,000 characters; nitro users get 4,000\nEmbed description limit — Embed descriptions max at 4,096 characters\nCode block language names are case-insensitive — JS, js, and JavaScript all work\nFormatting for Different Contexts\n\nReminder: Regardless of context, always present the final Discord-ready message inside a fenced code block so the user can copy-paste it directly. See \"Output Presentation\" above.\n\nChat Messages\n\nFull markdown support. 2,000 character limit (4,000 with Nitro).\n\nEmbed Descriptions\n\nFull markdown support. 4,096 character limit. Masked links work reliably here.\n\nEmbed Field Values\n\nLimited markdown. 1,024 character limit per field.\n\nBot Messages / Webhooks\n\nFull markdown support. Same as chat messages. Use embeds for richer formatting.\n\nForum Posts\n\nFull markdown support in the post body. Title is plain text only.\n\nResources\nSyntax highlighting: references/syntax-highlighting.md — full list of supported languages with examples\nTemplates: references/templates.md — copy-paste templates for common Discord formatting patterns"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/BillChirico/discord-markdown",
    "publisherUrl": "https://clawhub.ai/BillChirico/discord-markdown",
    "owner": "BillChirico",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/discord-markdown",
    "downloadUrl": "https://openagent3.xyz/downloads/discord-markdown",
    "agentUrl": "https://openagent3.xyz/skills/discord-markdown/agent",
    "manifestUrl": "https://openagent3.xyz/skills/discord-markdown/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/discord-markdown/agent.md"
  }
}