Markdown Formatter
by @michael-laffin
Format and beautify markdown documents with configurable styles. Preserve structure, fix formatting, ensure consistency.
clawhub install markdown-formatterš About This Skill
name: markdown-formatter description: Format and beautify markdown documents with configurable styles. Preserve structure, fix formatting, ensure consistency. metadata: { "openclaw": { "version": "1.0.0", "author": "Vernox", "license": "MIT", "tags": ["markdown", "formatter", "beautifier", "text", "formatting", "documentation"], "category": "tools" } }
Markdown-Formatter - Beautify Your Markdown
Vernox Utility Skill - Make your markdown look professional.
Overview
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.
Features
ā Formatter Engine
ā Linting & Cleanup
ā Beautification
ā Validation
Installation
clawhub install markdown-formatter
Quick Start
Format a Document
const result = await formatMarkdown({
markdown: '# My Document\n\n\n## Section 1\nContent here...',
style: 'github',
options: {
maxWidth: 80,
headingStyle: 'atx'
}
});console.log(result.formattedMarkdown);
Beautify Multiple Files
const results = await formatBatch({
markdownFiles: ['./doc1.md', './doc2.md', './README.md'],
style: 'github',
options: { wrapWidth: 80 }
});results.forEach(result => {
console.log(${result.file}: ${result.warnings} warnings);
});
Lint and Fix
const result = await lintMarkdown({
markdown: '# My Document\n\n\nBad list\n\n- item 1\n- item 2',
style: 'github'
});console.log(Errors found: ${result.errors});
console.log(Fixed: ${result.fixed});
Tool Functions
formatMarkdown
Format markdown content according to style guide.Parameters:
markdown (string, required): Markdown content to formatstyle (string, required): Style guide name ('commonmark', 'github', 'commonmark', 'custom')options (object, optional):maxWidth (number): Line wrap width (default: 80)
- headingStyle (string): 'atx' | 'setext' | 'underlined' | 'consistent' (default: 'atx')
- listStyle (string): 'consistent' | 'dash' | 'asterisk' | 'plus' (default: 'consistent')
- codeStyle (string): 'fenced' | 'indented' (default: 'fenced')
- emphasisStyle (string): 'underscore' | 'asterisk' (default: 'asterisk')
- strongStyle (string): 'asterisk' | 'underline' (default: 'asterisk')
- linkStyle (string): 'inline' | 'reference' | 'full' (default: 'inline')
- preserveHtml (boolean): Keep HTML as-is (default: false)
- fixLists (boolean): Fix inconsistent list markers (default: true)
- normalizeSpacing (boolean): Fix spacing around formatting (default: true)Returns:
formattedMarkdown (string): Formatted markdownwarnings (array): Array of warning messagesstats (object): Formatting statisticslintResult (object): Linting errors and fixesoriginalLength (number): Original character countformattedLength (number): Formatted character countformatBatch
Format multiple markdown files at once.Parameters:
markdownFiles (array, required): Array of file pathsstyle (string): Style guide nameoptions (object, optional): Same as formatMarkdown optionsReturns:
results (array): Array of formatting resultstotalFiles (number): Number of files processedtotalWarnings (number): Total warnings across all filesprocessingTime (number): Time taken in mslintMarkdown
Check markdown for issues without formatting.Parameters:
markdown (string, required): Markdown content to lintstyle (string): Style guide nameoptions (object, optional): Additional linting optionscheckLinks (boolean): Validate links (default: true)
- checkHeadingLevels (boolean): Check heading hierarchy (default: true)
- checkListConsistency (boolean): Check list marker consistency (default: true)
- checkEmphasisBalance (boolean): Check emphasis pairing (default: false)Returns:
errors (array): Array of error objectswarnings (array): Array of warning objectsstats (object): Linting statisticssuggestions (array): Suggested fixesStyle Guides
CommonMark (default)
GitHub Flavored Markdown
\\Consistent (default)
Custom
Use Cases
Documentation Cleanup
Content Creation
Technical Writing
README Generation
Markdown Conversion
Configuration
Edit config.json:
{
"defaultStyle": "github",
"maxWidth": 80,
"headingStyle": "atx",
"listStyle": "consistent",
"codeStyle": "fenced",
"emphasisStyle": "asterisk",
"linkStyle": "inline",
"customRules": [],
"linting": {
"checkLinks": true,
"checkHeadingLevels": true,
"checkListConsistency": true
}
}
Examples
Simple Formatting
const result = await formatMarkdown({
markdown: '# My Title\n\n\nThis is content.',
style: 'github'
});console.log(result.formattedMarkdown);
Complex Beautification
const result = await formatMarkdown({
markdown: '# Header 1\n## Header 2\n\nParagraph...',
style: 'github',
options: {
fixLists: true,
normalizeSpacing: true,
wrapWidth: 80
}
});console.log(result.formattedMarkdown);
Linting and Fixing
const result = await lintMarkdown({ markdown: '# Title\n\n- Item 1\n- Item 2\n\n## Section 2', style: 'github' });Errors: ${result.errors.length}console.log(
); result.errors.forEach(err => { console.log(- ${err.message} at line ${err.line}); });// Fix automatically const fixed = await formatMarkdown({ markdown: result.fixed, style: 'github' });
Batch Processing
const results = await formatBatch({ markdownFiles: ['./doc1.md', './doc2.md', './README.md'], style: 'github' });Processed ${results.totalFiles} filesconsole.log(
); console.log(Total warnings: ${results.totalWarnings}`);
Performance
Speed
Accuracy
Error Handling
Invalid Input
Markdown Parsing Errors
File I/O Errors
Troubleshooting
Format Not Applied
Linting Shows Too Many Errors
Tips
Best Results
Performance Optimization
License
MIT
Format markdown. Keep your docs beautiful. š®
ā” When to Use
š” Examples
Simple Formatting
const result = await formatMarkdown({
markdown: '# My Title\n\n\nThis is content.',
style: 'github'
});console.log(result.formattedMarkdown);
Complex Beautification
const result = await formatMarkdown({
markdown: '# Header 1\n## Header 2\n\nParagraph...',
style: 'github',
options: {
fixLists: true,
normalizeSpacing: true,
wrapWidth: 80
}
});console.log(result.formattedMarkdown);
Linting and Fixing
const result = await lintMarkdown({
markdown: '# Title\n\n- Item 1\n- Item 2\n\n## Section 2',
style: 'github'
});console.log(Errors: ${result.errors.length});
result.errors.forEach(err => {
console.log( - ${err.message} at line ${err.line});
});
// Fix automatically
const fixed = await formatMarkdown({
markdown: result.fixed,
style: 'github'
});
Batch Processing
const results = await formatBatch({
markdownFiles: ['./doc1.md', './doc2.md', './README.md'],
style: 'github'
});console.log(Processed ${results.totalFiles} files);
console.log(Total warnings: ${results.totalWarnings});
āļø Configuration
Edit config.json:
{
"defaultStyle": "github",
"maxWidth": 80,
"headingStyle": "atx",
"listStyle": "consistent",
"codeStyle": "fenced",
"emphasisStyle": "asterisk",
"linkStyle": "inline",
"customRules": [],
"linting": {
"checkLinks": true,
"checkHeadingLevels": true,
"checkListConsistency": true
}
}