markdown
npx skills add https://github.com/hemsoft/public-skills --skill markdown
Agent 安装分布
Skill 文档
Markdown Expert
Expert guidance for markdown linting, quality enforcement, and documentation best practices.
Markdownlint – Markdown Linter
What is markdownlint?
markdownlint is a static analysis tool that checks markdown files for:
- Style consistency
- Formatting issues
- Common mistakes
- Best practices violations
- Accessibility concerns
Integrated with:
- VS Code extension (real-time feedback)
- Command line (markdownlint-cli2)
- Git pre-commit hooks
- CI/CD pipelines
Installation
markdownlint-cli2 (Node.js-based, recommended):
npm install -g markdownlint-cli2
Verify installation:
markdownlint-cli2 --version
Basic Usage
Lint a single file:
markdownlint-cli2 README.md
Lint all markdown files recursively:
markdownlint-cli2 "**/*.md"
Fix auto-fixable issues:
markdownlint-cli2 --fix "**/*.md"
Custom configuration:
markdownlint-cli2 --config .markdownlint.jsonc "**/*.md"
Common Rules
| Rule | Description | Fixable |
|---|---|---|
| MD001 | Heading levels increment by one | No |
| MD003 | Heading style (ATX/setext) | Yes |
| MD004 | Unordered list style | Yes |
| MD009 | Trailing spaces | Yes |
| MD010 | Hard tabs | Yes |
| MD012 | Multiple consecutive blank lines | Yes |
| MD013 | Line length | No |
| MD022 | Headings surrounded by blank lines | Yes |
| MD025 | Single top-level heading | No |
| MD031 | Fenced code blocks surrounded by blank lines | Yes |
| MD032 | Lists surrounded by blank lines | Yes |
| MD040 | Fenced code language | No |
| MD046 | Code block style | Yes |
| MD047 | File should end with newline | Yes |
Full rule list: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
Configuration
Create .markdownlint.jsonc in repository root:
{
// Default state for all rules
"default": true,
// MD013/line-length - Line length (disabled for long URLs, tables, code)
"MD013": {
"line_length": 120,
"heading_line_length": 120,
"code_block_line_length": 120,
"code_blocks": false,
"tables": false,
"headings": true
},
// MD024/no-duplicate-heading - Multiple headings with same content
"MD024": {
"siblings_only": true // Allow same heading in different sections
},
// MD033/no-inline-html - Inline HTML (allow for specific tags)
"MD033": {
"allowed_elements": ["br", "details", "summary", "sup", "sub"]
},
// MD040/fenced-code-language - Fenced code blocks should have language
"MD040": true,
// MD046/code-block-style - Code block style (fenced preferred)
"MD046": {
"style": "fenced"
}
}
VS Code Integration
markdownlint extension provides real-time feedback.
Extension ID: DavidAnson.vscode-markdownlint
Install:
code --install-extension DavidAnson.vscode-markdownlint
Settings (settings.json):
{
"markdownlint.config": {
"default": true,
"MD013": false
}
}
Best Practices
-
Use fenced code blocks with language specifiers
```powershell Get-Process -
Consistent heading hierarchy – Don’t skip levels
# H1 ## H2 ### H3 -
Surround headings with blank lines
Previous paragraph. ## Heading Next paragraph. -
End files with newline – Most rules expect this
-
Use consistent list markers
- Use
-for unordered lists - Use
1.for ordered lists
- Use
-
Add language to code blocks
```javascript console.log('Hello'); ```
Common Issues and Fixes
Issue: MD009 – Trailing spaces
# Fix automatically
markdownlint-cli2 --fix "**/*.md"
Issue: MD012 – Multiple consecutive blank lines
# â Bad
Paragraph 1.
Paragraph 2.
# â
Good
Paragraph 1.
Paragraph 2.
Issue: MD040 – Fenced code language
# â Bad
```
code here
```
# â
Good
```javascript
code here
```
Issue: MD047 – Files should end with newline
- Most editors do this automatically
- Configure your editor to add final newline
Ignoring Rules
In configuration (.markdownlint.jsonc):
{
"MD013": false // Disable line length globally
}
In-file comments (use sparingly):
<!-- markdownlint-disable MD013 -->
This line can be really really long without triggering the line length rule.
<!-- markdownlint-enable MD013 -->
Note: Only disable rules with good reason. Fix the markdown instead.
Quick Fix Script
Run this to auto-fix common issues:
# Fix all markdown files in repository
markdownlint-cli2 --fix "**/*.md"
# Fix specific directory
markdownlint-cli2 --fix "docs/**/*.md"
Quality Standards
All markdown files should adhere to:
- â Consistent heading hierarchy (no skipped levels)
- â Fenced code blocks with language specifiers
- â Proper blank lines around headings, lists, and code blocks
- â No trailing spaces
- â Files end with newline
- â Line length limits (120 chars for content)
- â Consistent list markers