chinese-quotes-fix

star 121

Check and fix Chinese quote pairing in Markdown files generated by ClaudeCode or other agents, while preserving Markdown syntax and protected blocks.

ranxi2001 By ranxi2001 schedule Updated 5/13/2026

name: chinese-quotes-fix description: Check and fix Chinese quote pairing in Markdown files generated by ClaudeCode or other agents, while preserving Markdown syntax and protected blocks.

中文引号修复技能

用于检查并修复 Markdown 文档里的中文引号问题(双引号 + 单引号),重点处理 ClaudeCode / Agent 生成文档中常见的这类错误:

  • 正文里混入英文直双引号
  • 正文里中文语境下的直单引号 '(如 '客户为先')未转为中文单引号 ''
  • 左右引号方向不配对
  • Mermaid、YAML、代码块、HTML 属性等语法区域被误改

核心目标不是”全局轮流替换”,而是只修正文 prose,并尽量准确判断每个直引号应该变成左引号还是右引号。

适用场景

  • ClaudeCode 输出的教程、博客、知识库文档
  • 含有 Mermaid 流程图、HTML 片段、Markdown 链接的 Markdown 文件
  • 中文正文为主,夹杂英文术语,例如 "做 Agent""微调""一问一答"

保护区规则

以下区域中的直引号默认不改动:

  • YAML front matter
  • Fenced code blocks,包括 ``` 和 ~~~
  • Inline code
  • Mermaid HTML 块,例如 <div class="mermaid">...</div>
  • Markdown 链接与引用式链接定义
  • HTML tag / attribute / comment
  • 常见非正文 HTML block,例如 detailstablesvgpre

这条规则是为了避免把语法中的合法直引号误改成中文弯引号,导致 Markdown、HTML 或 Mermaid 失效。

标准工作流

1. 先检查

python .claude/skills/chinese-quotes-fix/check_quotes.py "path/to/file.md"

批量检查:

python .claude/skills/chinese-quotes-fix/check_quotes.py "docs/**/*.md"

检查输出会区分:

  • 文件里一共有多少个直双引号 / 直单引号
  • 有多少个在正文里,属于可修复目标(单引号仅检测 CJK 语境)
  • 哪些行仍有正文直引号
  • 当前正文里的弯引号是否存在配对问题(双引号和单引号分别报告)

2. 预览修复

python .claude/skills/chinese-quotes-fix/fix_quotes.py --dry-run "path/to/file.md"

3. 正式修复

python .claude/skills/chinese-quotes-fix/fix_quotes.py "path/to/file.md"

4. 修复配对问题(弯引号方向错误)

当 check 报告 pairing issues(如 "text" 应为 "text")时,使用 --fix-pairing

python .claude/skills/chinese-quotes-fix/fix_quotes.py --fix-pairing --dry-run "path/to/file.md"
python .claude/skills/chinese-quotes-fix/fix_quotes.py --fix-pairing "path/to/file.md"

此模式会分析上下文判断每个弯引号的正确方向,将误用为开引号的 " 修正为 ",反之亦然。

配对策略

双引号

脚本不会简单按”第 1 个左引号、第 2 个右引号”做全局替换,而是结合上下文判断:

  • 行首、冒号、左括号等之后的直引号,优先判为开引号
  • 标点、句末、右括号之前的直引号,优先判为闭引号
  • 如果一行里已经出现现成的 / ,会把它们纳入状态判断,尽量修复混用场景
  • 状态按行重置,避免上一段的未闭合引号污染下一段

单引号

单引号使用同样的上下文判断逻辑,但额外增加 CJK 语境检测

  • 只有当直单引号 ' 的前后邻近字符包含 CJK 文字或中文标点时,才判定为中文单引号并进行转换
  • 英文语境中的撇号(如 don'tit's)不会被误改
  • 转换目标:''(U+2018)或 '(U+2019)

常见修复场景:

  • ”客户为先” 中的 '客户为先''客户为先'
  • 京东的'多快好省'理念京东的'多快好省'理念

推荐使用方式

当你刚完成一篇 agent 生成的中文文档时,建议顺序如下:

  1. 先完成正文生成或格式整理
  2. 再跑 check_quotes.py
  3. 如果存在正文直引号,再用 fix_quotes.py --dry-run
  4. 预览无误后正式执行修复
  5. 最后抽查 Mermaid、YAML、链接和 HTML 片段

验收清单

修复完成后至少确认这几项:

  • 正文里的 已替换成 ””
  • CJK 语境中的 ' 已替换成 ''
  • 英文撇号(don'tit's)保持原样
  • Mermaid 中的 [“text”] 保持原样
  • YAML 里的 title: “...” 保持原样
  • Markdown 链接没有被破坏
  • check_quotes.py 不再报 Needs fix
  • check_quotes.py 的双引号和单引号 Pairing issues 均为 0

注意事项

  • 单引号仅在 CJK 语境下修复(前后邻近字符为中文字或中文标点),英文撇号不受影响
  • 如果某些 HTML block 内部本身就是正文,但你不希望保护它们,需要按具体场景再调规则
  • 如果文档里故意保留英文学术用法的直引号,修复前请先用 --dry-run 确认
  • Windows 控制台可能不是 UTF-8,脚本已经做了安全输出处理,但最终内容仍建议以文件实际渲染结果为准
Install via CLI
npx skills add https://github.com/ranxi2001/zero2Agent --skill chinese-quotes-fix
Repository Details
star Stars 121
call_split Forks 6
navigation Branch main
article Path SKILL.md
More from Creator