{
  "schemaVersion": "1.0",
  "item": {
    "slug": "markdown-formatter",
    "name": "Markdown Formatter",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/Michael-laffin/markdown-formatter",
    "canonicalUrl": "https://clawhub.ai/Michael-laffin/markdown-formatter",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/markdown-formatter",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=markdown-formatter",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "config.json",
      "index.js",
      "package.json",
      "test.js"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "markdown-formatter",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T03:31:41.985Z",
      "expiresAt": "2026-05-07T03:31:41.985Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=markdown-formatter",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=markdown-formatter",
        "contentDisposition": "attachment; filename=\"markdown-formatter-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "markdown-formatter"
      },
      "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/markdown-formatter"
    },
    "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/markdown-formatter",
    "agentPageUrl": "https://openagent3.xyz/skills/markdown-formatter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/markdown-formatter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/markdown-formatter/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Markdown-Formatter - Beautify Your Markdown",
        "body": "Vernox Utility Skill - Make your markdown look professional."
      },
      {
        "title": "Overview",
        "body": "Markdown-Formatter is a powerful tool for formatting, linting, and beautifying markdown documents. Supports multiple style guides (CommonMark, GitHub Flavored Markdown, custom rules) and handles everything from simple cleanup to complex reformatting."
      },
      {
        "title": "✅ Formatter Engine",
        "body": "Multiple style guides (CommonMark, GitHub, custom)\nPreserves document structure\nHandles nested lists, code blocks, tables\nConfigurable line width and indentation\nSmart heading normalization\nLink reference optimization"
      },
      {
        "title": "✅ Linting & Cleanup",
        "body": "Remove trailing whitespace\nNormalize line endings (LF vs CRLF)\nFix inconsistent list markers\nRemove empty lines at end\nFix multiple consecutive blank lines"
      },
      {
        "title": "✅ Beautification",
        "body": "Improve heading hierarchy\nOptimize list formatting\nFormat code blocks with proper spacing\nWrap long lines at configured width\nAdd proper spacing around emphasis"
      },
      {
        "title": "✅ Validation",
        "body": "Check markdown syntax validity\nReport linting errors\nSuggest improvements\nValidate links and references"
      },
      {
        "title": "Installation",
        "body": "clawhub install markdown-formatter"
      },
      {
        "title": "Format a Document",
        "body": "const result = await formatMarkdown({\n  markdown: '# My Document\\n\\n\\n## Section 1\\nContent here...',\n  style: 'github',\n  options: {\n    maxWidth: 80,\n    headingStyle: 'atx'\n  }\n});\n\nconsole.log(result.formattedMarkdown);"
      },
      {
        "title": "Beautify Multiple Files",
        "body": "const results = await formatBatch({\n  markdownFiles: ['./doc1.md', './doc2.md', './README.md'],\n  style: 'github',\n  options: { wrapWidth: 80 }\n});\n\nresults.forEach(result => {\n  console.log(`${result.file}: ${result.warnings} warnings`);\n});"
      },
      {
        "title": "Lint and Fix",
        "body": "const result = await lintMarkdown({\n  markdown: '# My Document\\n\\n\\nBad list\\n\\n- item 1\\n- item 2',\n  style: 'github'\n});\n\nconsole.log(`Errors found: ${result.errors}`);\nconsole.log(`Fixed: ${result.fixed}`);"
      },
      {
        "title": "formatMarkdown",
        "body": "Format markdown content according to style guide.\n\nParameters:\n\nmarkdown (string, required): Markdown content to format\nstyle (string, required): Style guide name ('commonmark', 'github', 'commonmark', 'custom')\noptions (object, optional):\n\nmaxWidth (number): Line wrap width (default: 80)\nheadingStyle (string): 'atx' | 'setext' | 'underlined' | 'consistent' (default: 'atx')\nlistStyle (string): 'consistent' | 'dash' | 'asterisk' | 'plus' (default: 'consistent')\ncodeStyle (string): 'fenced' | 'indented' (default: 'fenced')\nemphasisStyle (string): 'underscore' | 'asterisk' (default: 'asterisk')\nstrongStyle (string): 'asterisk' | 'underline' (default: 'asterisk')\nlinkStyle (string): 'inline' | 'reference' | 'full' (default: 'inline')\npreserveHtml (boolean): Keep HTML as-is (default: false)\nfixLists (boolean): Fix inconsistent list markers (default: true)\nnormalizeSpacing (boolean): Fix spacing around formatting (default: true)\n\nReturns:\n\nformattedMarkdown (string): Formatted markdown\nwarnings (array): Array of warning messages\nstats (object): Formatting statistics\nlintResult (object): Linting errors and fixes\noriginalLength (number): Original character count\nformattedLength (number): Formatted character count"
      },
      {
        "title": "formatBatch",
        "body": "Format multiple markdown files at once.\n\nParameters:\n\nmarkdownFiles (array, required): Array of file paths\nstyle (string): Style guide name\noptions (object, optional): Same as formatMarkdown options\n\nReturns:\n\nresults (array): Array of formatting results\ntotalFiles (number): Number of files processed\ntotalWarnings (number): Total warnings across all files\nprocessingTime (number): Time taken in ms"
      },
      {
        "title": "lintMarkdown",
        "body": "Check markdown for issues without formatting.\n\nParameters:\n\nmarkdown (string, required): Markdown content to lint\nstyle (string): Style guide name\noptions (object, optional): Additional linting options\n\ncheckLinks (boolean): Validate links (default: true)\ncheckHeadingLevels (boolean): Check heading hierarchy (default: true)\ncheckListConsistency (boolean): Check list marker consistency (default: true)\ncheckEmphasisBalance (boolean): Check emphasis pairing (default: false)\n\nReturns:\n\nerrors (array): Array of error objects\nwarnings (array): Array of warning objects\nstats (object): Linting statistics\nsuggestions (array): Suggested fixes"
      },
      {
        "title": "CommonMark (default)",
        "body": "Standard CommonMark specification\nATX headings (ATX-style)\nReference-style links [text]\nUnderscore emphasis\nAsterisk emphasis"
      },
      {
        "title": "GitHub Flavored Markdown",
        "body": "Fenced code blocks with ```\nTables with pipes\nTask lists [ ] with x\nStrikethrough ~~text~~\nAutolinks with https://url"
      },
      {
        "title": "Consistent (default)",
        "body": "Consistent ATX heading levels\nConsistent list markers\nConsistent emphasis style\nConsistent code block style"
      },
      {
        "title": "Custom",
        "body": "User-defined rules\nRegex-based transformations\nCustom heading styles"
      },
      {
        "title": "Documentation Cleanup",
        "body": "Fix inconsistent formatting in README files\nNormalize heading styles\nFix list markers\nClean up extra whitespace"
      },
      {
        "title": "Content Creation",
        "body": "Format articles with consistent style\nBeautify blog posts before publishing\nEnsure consistent heading hierarchy"
      },
      {
        "title": "Technical Writing",
        "body": "Format code documentation\nBeautify API specs\nClean up messy markdown from LLMs"
      },
      {
        "title": "README Generation",
        "body": "Format and beautify project README files\nEnsure consistent structure\nProfessional appearance for open source"
      },
      {
        "title": "Markdown Conversion",
        "body": "Convert HTML to markdown\nReformat from one style to another\nExtract and format markdown from other formats"
      },
      {
        "title": "Edit config.json:",
        "body": "{\n  \"defaultStyle\": \"github\",\n  \"maxWidth\": 80,\n  \"headingStyle\": \"atx\",\n  \"listStyle\": \"consistent\",\n  \"codeStyle\": \"fenced\",\n  \"emphasisStyle\": \"asterisk\",\n  \"linkStyle\": \"inline\",\n  \"customRules\": [],\n  \"linting\": {\n    \"checkLinks\": true,\n    \"checkHeadingLevels\": true,\n    \"checkListConsistency\": true\n  }\n}"
      },
      {
        "title": "Simple Formatting",
        "body": "const result = await formatMarkdown({\n  markdown: '# My Title\\n\\n\\nThis is content.',\n  style: 'github'\n});\n\nconsole.log(result.formattedMarkdown);"
      },
      {
        "title": "Complex Beautification",
        "body": "const result = await formatMarkdown({\n  markdown: '# Header 1\\n## Header 2\\n\\nParagraph...',\n  style: 'github',\n  options: {\n    fixLists: true,\n    normalizeSpacing: true,\n    wrapWidth: 80\n  }\n});\n\nconsole.log(result.formattedMarkdown);"
      },
      {
        "title": "Linting and Fixing",
        "body": "const result = await lintMarkdown({\n  markdown: '# Title\\n\\n- Item 1\\n- Item 2\\n\\n## Section 2',\n  style: 'github'\n});\n\nconsole.log(`Errors: ${result.errors.length}`);\nresult.errors.forEach(err => {\n  console.log(`  - ${err.message} at line ${err.line}`);\n});\n\n// Fix automatically\nconst fixed = await formatMarkdown({\n  markdown: result.fixed,\n  style: 'github'\n});"
      },
      {
        "title": "Batch Processing",
        "body": "const results = await formatBatch({\n  markdownFiles: ['./doc1.md', './doc2.md', './README.md'],\n  style: 'github'\n});\n\nconsole.log(`Processed ${results.totalFiles} files`);\nconsole.log(`Total warnings: ${results.totalWarnings}`);"
      },
      {
        "title": "Speed",
        "body": "Small documents (<1000 words): <50ms\nMedium documents (1000-5000 words): 50-200ms\nLarge documents (5000+ words): 200-500ms"
      },
      {
        "title": "Accuracy",
        "body": "Structure preservation: 100%\nStyle guide compliance: 95%+\nWhitespace normalization: 100%"
      },
      {
        "title": "Invalid Input",
        "body": "Clear error message\nSuggest checking file path\nValidate markdown content before formatting"
      },
      {
        "title": "Markdown Parsing Errors",
        "body": "Report parsing issues clearly\nSuggest manual fixes\nGraceful degradation on errors"
      },
      {
        "title": "File I/O Errors",
        "body": "Clear error with file path\nCheck file existence\nSuggest permissions fix\nBatch processing continues on errors"
      },
      {
        "title": "Format Not Applied",
        "body": "Check if style is correct\nVerify options are respected\nCheck for conflicting rules\nTest with simple example"
      },
      {
        "title": "Linting Shows Too Many Errors",
        "body": "Some errors are style choices, not real issues\nConsider disabling specific checks\nUse custom rules for specific needs"
      },
      {
        "title": "Best Results",
        "body": "Use consistent style guide\nEnable fixLists, normalizeSpacing options\nSet maxWidth appropriate for your output medium\nTest on small samples first"
      },
      {
        "title": "Performance Optimization",
        "body": "Process large files in batches\nDisable unused linting checks\nUse simpler rules for common patterns"
      },
      {
        "title": "License",
        "body": "MIT\n\nFormat markdown. Keep your docs beautiful. 🔮"
      }
    ],
    "body": "Markdown-Formatter - Beautify Your Markdown\n\nVernox Utility Skill - Make your markdown look professional.\n\nOverview\n\nMarkdown-Formatter is a powerful tool for formatting, linting, and beautifying markdown documents. Supports multiple style guides (CommonMark, GitHub Flavored Markdown, custom rules) and handles everything from simple cleanup to complex reformatting.\n\nFeatures\n✅ Formatter Engine\nMultiple style guides (CommonMark, GitHub, custom)\nPreserves document structure\nHandles nested lists, code blocks, tables\nConfigurable line width and indentation\nSmart heading normalization\nLink reference optimization\n✅ Linting & Cleanup\nRemove trailing whitespace\nNormalize line endings (LF vs CRLF)\nFix inconsistent list markers\nRemove empty lines at end\nFix multiple consecutive blank lines\n✅ Beautification\nImprove heading hierarchy\nOptimize list formatting\nFormat code blocks with proper spacing\nWrap long lines at configured width\nAdd proper spacing around emphasis\n✅ Validation\nCheck markdown syntax validity\nReport linting errors\nSuggest improvements\nValidate links and references\nInstallation\nclawhub install markdown-formatter\n\nQuick Start\nFormat a Document\nconst result = await formatMarkdown({\n  markdown: '# My Document\\n\\n\\n## Section 1\\nContent here...',\n  style: 'github',\n  options: {\n    maxWidth: 80,\n    headingStyle: 'atx'\n  }\n});\n\nconsole.log(result.formattedMarkdown);\n\nBeautify Multiple Files\nconst results = await formatBatch({\n  markdownFiles: ['./doc1.md', './doc2.md', './README.md'],\n  style: 'github',\n  options: { wrapWidth: 80 }\n});\n\nresults.forEach(result => {\n  console.log(`${result.file}: ${result.warnings} warnings`);\n});\n\nLint and Fix\nconst result = await lintMarkdown({\n  markdown: '# My Document\\n\\n\\nBad list\\n\\n- item 1\\n- item 2',\n  style: 'github'\n});\n\nconsole.log(`Errors found: ${result.errors}`);\nconsole.log(`Fixed: ${result.fixed}`);\n\nTool Functions\nformatMarkdown\n\nFormat markdown content according to style guide.\n\nParameters:\n\nmarkdown (string, required): Markdown content to format\nstyle (string, required): Style guide name ('commonmark', 'github', 'commonmark', 'custom')\noptions (object, optional):\nmaxWidth (number): Line wrap width (default: 80)\nheadingStyle (string): 'atx' | 'setext' | 'underlined' | 'consistent' (default: 'atx')\nlistStyle (string): 'consistent' | 'dash' | 'asterisk' | 'plus' (default: 'consistent')\ncodeStyle (string): 'fenced' | 'indented' (default: 'fenced')\nemphasisStyle (string): 'underscore' | 'asterisk' (default: 'asterisk')\nstrongStyle (string): 'asterisk' | 'underline' (default: 'asterisk')\nlinkStyle (string): 'inline' | 'reference' | 'full' (default: 'inline')\npreserveHtml (boolean): Keep HTML as-is (default: false)\nfixLists (boolean): Fix inconsistent list markers (default: true)\nnormalizeSpacing (boolean): Fix spacing around formatting (default: true)\n\nReturns:\n\nformattedMarkdown (string): Formatted markdown\nwarnings (array): Array of warning messages\nstats (object): Formatting statistics\nlintResult (object): Linting errors and fixes\noriginalLength (number): Original character count\nformattedLength (number): Formatted character count\nformatBatch\n\nFormat multiple markdown files at once.\n\nParameters:\n\nmarkdownFiles (array, required): Array of file paths\nstyle (string): Style guide name\noptions (object, optional): Same as formatMarkdown options\n\nReturns:\n\nresults (array): Array of formatting results\ntotalFiles (number): Number of files processed\ntotalWarnings (number): Total warnings across all files\nprocessingTime (number): Time taken in ms\nlintMarkdown\n\nCheck markdown for issues without formatting.\n\nParameters:\n\nmarkdown (string, required): Markdown content to lint\nstyle (string): Style guide name\noptions (object, optional): Additional linting options\ncheckLinks (boolean): Validate links (default: true)\ncheckHeadingLevels (boolean): Check heading hierarchy (default: true)\ncheckListConsistency (boolean): Check list marker consistency (default: true)\ncheckEmphasisBalance (boolean): Check emphasis pairing (default: false)\n\nReturns:\n\nerrors (array): Array of error objects\nwarnings (array): Array of warning objects\nstats (object): Linting statistics\nsuggestions (array): Suggested fixes\nStyle Guides\nCommonMark (default)\nStandard CommonMark specification\nATX headings (ATX-style)\nReference-style links [text]\nUnderscore emphasis\nAsterisk emphasis\nGitHub Flavored Markdown\nFenced code blocks with ```\nTables with pipes\nTask lists [ ] with x\nStrikethrough ~~text~~\nAutolinks with https://url\nConsistent (default)\nConsistent ATX heading levels\nConsistent list markers\nConsistent emphasis style\nConsistent code block style\nCustom\nUser-defined rules\nRegex-based transformations\nCustom heading styles\nUse Cases\nDocumentation Cleanup\nFix inconsistent formatting in README files\nNormalize heading styles\nFix list markers\nClean up extra whitespace\nContent Creation\nFormat articles with consistent style\nBeautify blog posts before publishing\nEnsure consistent heading hierarchy\nTechnical Writing\nFormat code documentation\nBeautify API specs\nClean up messy markdown from LLMs\nREADME Generation\nFormat and beautify project README files\nEnsure consistent structure\nProfessional appearance for open source\nMarkdown Conversion\nConvert HTML to markdown\nReformat from one style to another\nExtract and format markdown from other formats\nConfiguration\nEdit config.json:\n{\n  \"defaultStyle\": \"github\",\n  \"maxWidth\": 80,\n  \"headingStyle\": \"atx\",\n  \"listStyle\": \"consistent\",\n  \"codeStyle\": \"fenced\",\n  \"emphasisStyle\": \"asterisk\",\n  \"linkStyle\": \"inline\",\n  \"customRules\": [],\n  \"linting\": {\n    \"checkLinks\": true,\n    \"checkHeadingLevels\": true,\n    \"checkListConsistency\": true\n  }\n}\n\nExamples\nSimple Formatting\nconst result = await formatMarkdown({\n  markdown: '# My Title\\n\\n\\nThis is content.',\n  style: 'github'\n});\n\nconsole.log(result.formattedMarkdown);\n\nComplex Beautification\nconst result = await formatMarkdown({\n  markdown: '# Header 1\\n## Header 2\\n\\nParagraph...',\n  style: 'github',\n  options: {\n    fixLists: true,\n    normalizeSpacing: true,\n    wrapWidth: 80\n  }\n});\n\nconsole.log(result.formattedMarkdown);\n\nLinting and Fixing\nconst result = await lintMarkdown({\n  markdown: '# Title\\n\\n- Item 1\\n- Item 2\\n\\n## Section 2',\n  style: 'github'\n});\n\nconsole.log(`Errors: ${result.errors.length}`);\nresult.errors.forEach(err => {\n  console.log(`  - ${err.message} at line ${err.line}`);\n});\n\n// Fix automatically\nconst fixed = await formatMarkdown({\n  markdown: result.fixed,\n  style: 'github'\n});\n\nBatch Processing\nconst results = await formatBatch({\n  markdownFiles: ['./doc1.md', './doc2.md', './README.md'],\n  style: 'github'\n});\n\nconsole.log(`Processed ${results.totalFiles} files`);\nconsole.log(`Total warnings: ${results.totalWarnings}`);\n\nPerformance\nSpeed\nSmall documents (<1000 words): <50ms\nMedium documents (1000-5000 words): 50-200ms\nLarge documents (5000+ words): 200-500ms\nAccuracy\nStructure preservation: 100%\nStyle guide compliance: 95%+\nWhitespace normalization: 100%\nError Handling\nInvalid Input\nClear error message\nSuggest checking file path\nValidate markdown content before formatting\nMarkdown Parsing Errors\nReport parsing issues clearly\nSuggest manual fixes\nGraceful degradation on errors\nFile I/O Errors\nClear error with file path\nCheck file existence\nSuggest permissions fix\nBatch processing continues on errors\nTroubleshooting\nFormat Not Applied\nCheck if style is correct\nVerify options are respected\nCheck for conflicting rules\nTest with simple example\nLinting Shows Too Many Errors\nSome errors are style choices, not real issues\nConsider disabling specific checks\nUse custom rules for specific needs\nTips\nBest Results\nUse consistent style guide\nEnable fixLists, normalizeSpacing options\nSet maxWidth appropriate for your output medium\nTest on small samples first\nPerformance Optimization\nProcess large files in batches\nDisable unused linting checks\nUse simpler rules for common patterns\nLicense\n\nMIT\n\nFormat markdown. Keep your docs beautiful. 🔮"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Michael-laffin/markdown-formatter",
    "publisherUrl": "https://clawhub.ai/Michael-laffin/markdown-formatter",
    "owner": "Michael-laffin",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/markdown-formatter",
    "downloadUrl": "https://openagent3.xyz/downloads/markdown-formatter",
    "agentUrl": "https://openagent3.xyz/skills/markdown-formatter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/markdown-formatter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/markdown-formatter/agent.md"
  }
}