markdownlint
This skill should be used when users need to format, clean, lint, or validate Markdown files using the markdownlint-cli2 command-line tool. Use this skill for tasks involving Markdown file quality checks, automatic formatting fixes, enforcing Markdown style rules, or identifying Markdown syntax issues.
When & Why to Use This Skill
The Markdownlint skill is a specialized utility designed to automate the formatting, linting, and validation of Markdown files using the markdownlint-cli2 engine. It helps maintain high-quality documentation by enforcing consistent style rules, identifying syntax errors, and providing automatic fixes, ensuring that your READMEs, guides, and Quarto Markdown (.qmd) files are professional and error-free.
Use Cases
- Automated Style Enforcement: Automatically apply and enforce project-specific Markdown style guides (e.g., indentation, heading styles) to ensure consistency across large documentation sets.
- Syntax Validation and Cleaning: Identify and resolve common Markdown syntax issues, such as broken headers, missing alt text for images, or improper list nesting, before publishing.
- Batch Formatting: Use the auto-fix capability to instantly clean up and reformat multiple Markdown files or entire directories, saving significant manual editing time.
- Documentation Quality Assurance: Integrate linting into the writing workflow to catch errors early, ensuring that documentation is ready for version control or static site generation.
| name | markdownlint |
|---|---|
| description | This skill should be used when users need to format, clean, lint, or validate Markdown files using the markdownlint-cli2 command-line tool. Use this skill for tasks involving Markdown (including Quarto Markdown `.qmd`) file quality checks, automatic formatting fixes, enforcing Markdown style rules, or identifying Markdown syntax issues. |
Markdownlint Skill
Contents
Project Configuration
IMPORTANT: This project uses .markdownlint.yaml. Always follow these rules:
| Rule | Setting | Notes |
|---|---|---|
| MD040 | Enabled | Always specify language for code fences |
| MD007 | 2 spaces | List indentation |
| MD024 | Siblings only | Duplicate headings allowed under different parents |
| MD013 | Disabled | No line length restrictions |
| MD033 | Disabled | Inline HTML allowed |
| MD041 | Disabled | Files don't need to start with H1 |
| MD038 | Disabled | Spaces in code spans allowed |
| MD036 | Disabled | Emphasis as heading allowed |
Basic Usage
# Lint files
markdownlint-cli2 "**/*.md"
markdownlint-cli2 README.md
# Auto-fix issues
markdownlint-cli2 --fix "**/*.md"
# Exclude directories
markdownlint-cli2 "**/*.md" "#node_modules" "#vendor"
Common Operations
Lint Specific Paths
markdownlint-cli2 README.md # Single file
markdownlint-cli2 "docs/**/*.md" # Directory
markdownlint-cli2 "*.md" "docs/**/*.md" # Multiple patterns
markdownlint-cli2 . # Current directory
Auto-Fix
markdownlint-cli2 --fix "**/*.md" # Fix all files
markdownlint-cli2 --fix README.md # Fix single file
Process stdin
cat README.md | markdownlint-cli2 -
Workflow
Standard Lint-Fix-Verify Cycle
- Run lint check:
markdownlint-cli2 "**/*.md" - Review reported issues
- Apply auto-fix:
markdownlint-cli2 --fix "**/*.md" - Re-run lint to verify:
markdownlint-cli2 "**/*.md" - Review changes:
git diff - Commit when satisfied
Safe Fix with Backup
- Stage current state:
git add . - Create backup commit:
git commit -m "Backup before markdownlint fix" - Apply fixes:
markdownlint-cli2 --fix "**/*.md" - Review changes:
git diff - Commit fixes or reset:
git add . && git commit -m "Apply markdownlint fixes"
Cross-Platform Usage
For maximum compatibility:
- Quote glob patterns:
markdownlint-cli2 "**/*.md" - Use
#for negation:markdownlint-cli2 "**/*.md" "#vendor"(not!) - Use forward slashes:
docs/**/*.md(works on all platforms) - Stop option processing:
markdownlint-cli2 -- "special-file.md"
Troubleshooting
No Files Matched
- Verify glob patterns are quoted
- Check file extensions (
.mdvs.markdown) - Ensure negated patterns don't exclude everything
Too Many Issues
- Start with auto-fix:
markdownlint-cli2 --fix "**/*.md" - Disable problematic rules temporarily
- Address remaining issues incrementally
Configuration Not Loading
- Verify configuration file name matches expected patterns
- Validate JSON/YAML syntax
- Use
--configto explicitly specify the file
References
- Rules Reference - Complete rule descriptions
- Configuration Examples - Config templates and patterns
- Official Documentation
- All Rules
Installation
npm install -g markdownlint-cli2 # npm
brew install markdownlint-cli2 # Homebrew
markdownlint-cli2 --help # Verify installation