1.6k★markdown-formatter – OpenClaw Skill
markdown-formatter is an OpenClaw Skills integration for writing workflows. Format and beautify markdown documents with configurable styles. Preserve structure, fix formatting, ensure consistency.
Skill Snapshot
| name | markdown-formatter |
| description | Format and beautify markdown documents with configurable styles. Preserve structure, fix formatting, ensure consistency. OpenClaw Skills integration. |
| owner | michael-laffin |
| repository | michael-laffin/markdown-formatter |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @michael-laffin/markdown-formatter |
| last updated | Feb 7, 2026 |
Maintainer

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
- Multiple style guides (CommonMark, GitHub, custom)
- Preserves document structure
- Handles nested lists, code blocks, tables
- Configurable line width and indentation
- Smart heading normalization
- Link reference optimization
✅ Linting & Cleanup
- Remove trailing whitespace
- Normalize line endings (LF vs CRLF)
- Fix inconsistent list markers
- Remove empty lines at end
- Fix multiple consecutive blank lines
✅ Beautification
- Improve heading hierarchy
- Optimize list formatting
- Format code blocks with proper spacing
- Wrap long lines at configured width
- Add proper spacing around emphasis
✅ Validation
- Check markdown syntax validity
- Report linting errors
- Suggest improvements
- Validate links and references
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 count
formatBatch
Format multiple markdown files at once.
Parameters:
markdownFiles(array, required): Array of file pathsstyle(string): Style guide nameoptions(object, optional): Same as formatMarkdown options
Returns:
results(array): Array of formatting resultstotalFiles(number): Number of files processedtotalWarnings(number): Total warnings across all filesprocessingTime(number): Time taken in ms
lintMarkdown
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 fixes
Style Guides
CommonMark (default)
- Standard CommonMark specification
- ATX headings (ATX-style)
- Reference-style links [text]
- Underscore emphasis
- Asterisk emphasis
GitHub Flavored Markdown
- Fenced code blocks with ```
- Tables with pipes
- Task lists [ ] with x
- Strikethrough
~~text~~ - Autolinks with https://url
Consistent (default)
- Consistent ATX heading levels
- Consistent list markers
- Consistent emphasis style
- Consistent code block style
Custom
- User-defined rules
- Regex-based transformations
- Custom heading styles
Use Cases
Documentation Cleanup
- Fix inconsistent formatting in README files
- Normalize heading styles
- Fix list markers
- Clean up extra whitespace
Content Creation
- Format articles with consistent style
- Beautify blog posts before publishing
- Ensure consistent heading hierarchy
Technical Writing
- Format code documentation
- Beautify API specs
- Clean up messy markdown from LLMs
README Generation
- Format and beautify project README files
- Ensure consistent structure
- Professional appearance for open source
Markdown Conversion
- Convert HTML to markdown
- Reformat from one style to another
- Extract and format markdown from other formats
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'
});
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}`);
Performance
Speed
- Small documents (<1000 words): <50ms
- Medium documents (1000-5000 words): 50-200ms
- Large documents (5000+ words): 200-500ms
Accuracy
- Structure preservation: 100%
- Style guide compliance: 95%+
- Whitespace normalization: 100%
Error Handling
Invalid Input
- Clear error message
- Suggest checking file path
- Validate markdown content before formatting
Markdown Parsing Errors
- Report parsing issues clearly
- Suggest manual fixes
- Graceful degradation on errors
File I/O Errors
- Clear error with file path
- Check file existence
- Suggest permissions fix
- Batch processing continues on errors
Troubleshooting
Format Not Applied
- Check if style is correct
- Verify options are respected
- Check for conflicting rules
- Test with simple example
Linting Shows Too Many Errors
- Some errors are style choices, not real issues
- Consider disabling specific checks
- Use custom rules for specific needs
Tips
Best Results
- Use consistent style guide
- Enable fixLists, normalizeSpacing options
- Set maxWidth appropriate for your output medium
- Test on small samples first
Performance Optimization
- Process large files in batches
- Disable unused linting checks
- Use simpler rules for common patterns
License
MIT
Format markdown. Keep your docs beautiful. 🔮
Markdown-Formatter
Format markdown. Keep your docs beautiful. 🔮
Quick Start
# Install
clawhub install markdown-formatter
# Format a document
cd ~/.openclaw/skills/markdown-formatter
node index.js formatMarkdown '{"markdown":"# My Title","style":"github"}'
Features
- ✅ Multiple style guides (CommonMark, GitHub Flavored Markdown, custom rules)
- ✅ Linting & Cleanup
- ✅ Beautification
- ✅ Validation
- ✅ Smart heading normalization
- ✅ Link reference optimization
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): Style guide optionsmaxWidth(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 statistics
formatBatch
Format multiple markdown files at once.
Parameters:
markdownFiles(array, required): Array of file pathsstyle(string, required): Style guide nameoptions(object, optional): Same as formatMarkdown options
Returns:
results(array): Array of formatting resultstotalFiles(number): Number of files processedtotalWarnings(number): Total warnings across all filesprocessingTime(number): Time taken in ms
lintMarkdown
Check markdown for issues without formatting.
Parameters:
markdown(string, required): Markdown content to lintstyle(string, required): 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)
Returns:
errors(array): Array of error objectswarnings(array): Array of warning objectsstats(object): Linting statistics
Configuration
Edit config.json to customize:
{
"defaultStyle": "github",
"maxWidth": 80,
"headingStyle": "atx",
"listStyle": "consistent",
"codeStyle": "fenced",
"emphasisStyle": "asterisk",
"strongStyle": "asterisk",
"linkStyle": "inline",
"fixLists": true,
"normalizeSpacing": true
}
Examples
Format with GitHub Style
const result = formatMarkdown({
markdown: '# My Document\\n\\nThis is content.',
style: 'github'
});
console.log(result.formattedMarkdown);
Format and Beautify
const result = formatMarkdown({
markdown: '# My Title\\n\\n## Section 1\\n\\nParagraph...',
style: 'github',
options: {
fixLists: true,
normalizeSpacing: true,
wrapWidth: 80
}
});
Lint and Fix
const result = lintMarkdown({
markdown: '# Title\\n- Item 1\\n- Item 2',
style: 'github'
});
console.log(`Errors: ${result.errors.length}`);
console.log(`Warnings: ${result.warnings.length}`);
Format markdown. Keep your docs beautiful. 🔮
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
Configuration
### Edit `config.json`: ```json { "defaultStyle": "github", "maxWidth": 80, "headingStyle": "atx", "listStyle": "consistent", "codeStyle": "fenced", "emphasisStyle": "asterisk", "linkStyle": "inline", "customRules": [], "linting": { "checkLinks": true, "checkHeadingLevels": true, "checkListConsistency": true } } ```
FAQ
How do I install markdown-formatter?
Run openclaw add @michael-laffin/markdown-formatter in your terminal. This installs markdown-formatter into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/michael-laffin/markdown-formatter. Review commits and README documentation before installing.
