138 lines
3.8 KiB
Markdown
138 lines
3.8 KiB
Markdown
|
|
# Markdown-Formatter
|
||
|
|
|
||
|
|
**Format markdown. Keep your docs beautiful.** 🔮
|
||
|
|
|
||
|
|
## Quick Start
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 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 format
|
||
|
|
- `style` (string, required): Style guide name ('commonmark', 'github', 'commonmark', 'custom')
|
||
|
|
- `options` (object, optional): Style guide options
|
||
|
|
- `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 markdown
|
||
|
|
- `warnings` (array): Array of warning messages
|
||
|
|
- `stats` (object): Formatting statistics
|
||
|
|
|
||
|
|
### `formatBatch`
|
||
|
|
Format multiple markdown files at once.
|
||
|
|
|
||
|
|
**Parameters:**
|
||
|
|
- `markdownFiles` (array, required): Array of file paths
|
||
|
|
- `style` (string, required): Style guide name
|
||
|
|
- `options` (object, optional): Same as formatMarkdown options
|
||
|
|
|
||
|
|
**Returns:**
|
||
|
|
- `results` (array): Array of formatting results
|
||
|
|
- `totalFiles` (number): Number of files processed
|
||
|
|
- `totalWarnings` (number): Total warnings across all files
|
||
|
|
- `processingTime` (number): Time taken in ms
|
||
|
|
|
||
|
|
### `lintMarkdown`
|
||
|
|
Check markdown for issues without formatting.
|
||
|
|
|
||
|
|
**Parameters:**
|
||
|
|
- `markdown` (string, required): Markdown content to lint
|
||
|
|
- `style` (string, required): Style guide name
|
||
|
|
- `options` (object, optional): Additional linting options
|
||
|
|
- `checkLinks` (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 objects
|
||
|
|
- `warnings` (array): Array of warning objects
|
||
|
|
- `stats` (object): Linting statistics
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
Edit `config.json` to customize:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"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
|
||
|
|
```javascript
|
||
|
|
const result = formatMarkdown({
|
||
|
|
markdown: '# My Document\\n\\nThis is content.',
|
||
|
|
style: 'github'
|
||
|
|
});
|
||
|
|
|
||
|
|
console.log(result.formattedMarkdown);
|
||
|
|
```
|
||
|
|
|
||
|
|
### Format and Beautify
|
||
|
|
```javascript
|
||
|
|
const result = formatMarkdown({
|
||
|
|
markdown: '# My Title\\n\\n## Section 1\\n\\nParagraph...',
|
||
|
|
style: 'github',
|
||
|
|
options: {
|
||
|
|
fixLists: true,
|
||
|
|
normalizeSpacing: true,
|
||
|
|
wrapWidth: 80
|
||
|
|
}
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
### Lint and Fix
|
||
|
|
```javascript
|
||
|
|
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.** 🔮
|