Markdown语法检查技能Skill lint-md

该技能用于对Markdown文件运行语法检查和验证,使用markdownlint-cli2工具,支持自动修复、配置管理和错误解释,旨在提升文档质量和代码一致性。关键词:Markdown、语法检查、代码质量、自动修复、配置管理、文档验证、静态分析。

测试 0 次安装 0 次浏览 更新于 3/11/2026

name: lint-md description: 使用markdownlint-cli2对文件运行Markdown语法检查验证 argument-hint: [目标文件或指令] allowed-tools: Read, Bash, Skill

Markdown 语法检查命令

使用markdownlint-cli2对所有或目标Markdown文件运行语法检查验证。

指令

使用 code-quality:markdown-linting 技能来处理完整的语法检查工作流。

markdown-linting 技能提供:

  • 使用markdownlint-cli2进行验证(CLI工具或npm脚本)
  • 自动修复功能,用于可修复的语法检查问题
  • 配置指导,用于.markdownlint-cli2.jsonc
  • 规则解释和故障排除
  • VS Code集成和GitHub Actions设置(可选/高级)

只需调用该技能并遵循其指导:

使用 code-quality:markdown-linting 技能运行语法检查验证。

{如果提供参数}
针对以下文件/文件夹:{参数}

用户提供:"{参数}"
这可能是:
- 特定文件路径(例如,"README.md"、"docs/setup.md")
- 文件夹路径(例如,"docs/"、".claude/skills/")
- 通配符模式(例如,"docs/**/*.md"、"*.md")
- 自然语言描述(例如,"仅技能文档"、"git相关文档")

解释目标指令并构建适当的markdownlint-cli2命令。
{结束如果}

{如果没有参数}
在项目中的所有Markdown文件上运行验证(默认行为)。
{结束如果}

遵循技能的工作流:
1. 确定适当的语法检查命令(npx或npm脚本)
2. 在目标或所有Markdown文件上执行验证
3. 报告结果(发现错误或验证通过)
4. **自动运行自动修复**,如果检测到可修复问题(不要请求确认)
5. 报告修复内容和任何剩余的不可修复问题
6. 解释发现的任何规则违规

重要:不要在没有咨询技能的情况下直接运行语法检查命令。markdown-linting 技能确保:

  • 正确的命令构建(npx vs npm脚本)
  • 配置合规(尊重.markdownlint-cli2.jsonc
  • 规则解释和上下文
  • 自动修复指导
  • 正确的错误解释和报告

让技能指导完整的工作流。

关键:无自动化脚本

⚠️ 脚本严格禁止用于Markdown语法检查修复 ⚠️

永远不要使用自动化脚本来修复Markdown文件。 这包括:

  • 一次性修改多个文件的Python/Bash脚本
  • 跨文件基于正则表达式的查找和替换操作
  • 任何在没有逐个更改人工审查的情况下进行批量更改的自动化工具

为什么存在此政策

A) 脚本是危险的 - 我们见过真实问题:

  1. 上下文盲区:脚本无法理解语义上下文(例如,显示工具输出的代码块 vs 实际代码)
  2. 过度应用:脚本统一应用修复,即使在不适当的地方
  3. 级联损坏:一个错误的假设影响数百个文件,需要痛苦的手动清理
  4. 错误语言检测:向故意没有语言说明的块添加text或其他语言说明符

B) 手动修复更慢但更准确和安全:

虽然逐个手动修复语法错误需要更长时间,但它确保:

  • 每个更改在应用前都在上下文中被审查
  • 语义意义被保留(不仅仅是语法正确性)
  • 边缘情况被适当处理
  • 不相关的内容没有附带损害

速度/准确性权衡是值得的。 一个“节省时间”但需要数小时清理的脚本是净损失。

嵌套代码块:一个关键的复杂性

文档通常包含Markdown中的Markdown - 展示如何编写Markdown的示例、带有代码示例的技能文档、模板等。这创建了脚本无法正确处理的结构:

示例:一个展示如何编写代码块的技能:

这里是创建Python代码块的方法:

````markdown
```python
def hello():
    print("Hello, world!")
```
````

在此示例中:

  • 外部围栏使用4个反引号(`````markdown`)
  • 内部围栏使用3个反引号(```python
  • 看到```的脚本可能错误地添加语言说明符或破坏嵌套

常见嵌套模式要注意:

  • ```{language} - 带有语法高亮的常规代码块
  • ````markdown - 展示Markdown示例的包装器(使用4+个反引号)
  • 代码块内的代码块(关于文档的文档)
  • 不应有语言说明符的示例输出

脚本无法可靠区分:

  • 哪个反引号围栏是“真实”的 vs 示例
  • 一个裸```是故意的(原始输出)还是需要语言
  • 每个代码块的语义目的

真实世界失败示例

一个脚本向显示MCP工具输出、Notion搜索和其他非代码示例的代码块添加了text语言说明符。这些块故意是裸的(没有语言)以显示原始输出。脚本的“修复”需要数百个手动编辑来撤销。

唯一可接受的方法

  1. 运行markdownlint-cli2 --fix进行安全、内置的自动修复(尾部空格、空行)
  2. 对于“不可修复”错误,使用编辑工具逐个进行有针对性的、上下文相关的修复
  3. 在应用前审查每个更改 - 理解错误存在的原因
  4. 查看周围上下文 - 这是嵌套代码块吗?一个示例?原始输出?
  5. 如果修复看起来是机械/重复的,停止并询问用户再继续

如果你甚至考虑使用脚本

  1. 立即停止
  2. 明确询问用户:“我正在考虑使用脚本自动化此操作。你确定吗?脚本过去导致了痛苦的清理。”
  3. 仅在用户明确确认后才继续,并且你已经三重检查了脚本逻辑
  4. 先在单个文件上测试,并在批量应用前向用户展示差异

示例

示例1:检查所有文件

用户:/code-quality:lint-md

Claude:[调用 code-quality:markdown-linting 技能]
在所有Markdown文件上运行语法检查...

$ npm run lint:md
# 或
$ npx markdownlint-cli2 "**/*.md"

所有Markdown文件通过语法检查验证

示例2:检查特定文件夹

用户:/code-quality:lint-md docs/

Claude:[调用带有目标的 code-quality:markdown-linting 技能]
在 docs/ 文件夹上运行语法检查...

$ npx markdownlint-cli2 "docs/**/*.md"

在 docs/setup.md 中发现3个语法错误:
- 行45:MD022/标题周围空白
- 行78:MD009/无尾部空格
- 行102:MD022/标题周围空白

自动修复中...
$ npx markdownlint-cli2 "docs/**/*.md" --fix
所有问题已修复

示例3:检查特定文件

用户:/code-quality:lint-md README.md CLAUDE.md

Claude:[调用带有目标的 code-quality:markdown-linting 技能]
在指定文件上运行语法检查...

$ npx markdownlint-cli2 README.md CLAUDE.md

README.md:未发现问题
CLAUDE.md:发现2个问题(可自动修复)
- 行23:MD009/无尾部空格
- 行67:MD012/无多个空白

自动修复中...
$ npx markdownlint-cli2 README.md CLAUDE.md --fix
所有问题已修复

示例4:自然语言目标

用户:/code-quality:lint-md 仅技能文档

Claude:[调用带有解释的 code-quality:markdown-linting 技能]
解释目标:"仅技能文档"
目标:.claude/skills/**/*.md

$ npx markdownlint-cli2 ".claude/skills/**/*.md"

检查9个技能文件...
所有技能文档通过语法检查验证

示例5:通配符模式

用户:/code-quality:lint-md .claude/**/*.md

Claude:[调用带有模式的 code-quality:markdown-linting 技能]
在 .claude/**/*.md 模式上运行语法检查...

$ npx markdownlint-cli2 ".claude/**/*.md"

在2个文件中发现问题:
- .claude/memory/workflows.md:1个问题(MD022)
- .claude/skills/lint-md/SKILL.md:3个问题(MD009, MD012, MD022)

总计:4个可修复问题

自动修复中...
$ npx markdownlint-cli2 ".claude/**/*.md" --fix
所有问题已修复

命令设计说明

此命令设计为与 code-quality:markdown-linting 技能协同工作,该技能提供实际的语法检查逻辑、规则解释和故障排除指导。此命令专注于:

  • 参数解释:解析用户提供的目标指令
  • 委托:调用带有上下文的markdown-linting技能
  • 简单性:最小化编排,最大化技能利用

markdown-linting 技能处理:

  • 语法检查执行:使用正确参数运行markdownlint-cli2
  • 结果解释:解释错误和违规
  • 自动修复指导:提供和执行修复
  • 配置:尊重.markdownlint-cli2.jsonc设置
  • 故障排除:帮助解决语法检查问题

这种关注点分离使命令和技能都保持专注和可维护。