1实现原理 · 为什么它能做到
职责二分:内容层面的分析/重构由模型按 SKILL.md 的步骤做(Step 1-5),排版层面的确定性修复交给自带脚本(Step 6)。
Claude performs content analysis and formatting (Steps 1-5), then runs the script for typography fixes (Step 6).
核心纪律是『只调格式、不碰内容』:不改写、不增删、不加评论性内容。
**Core principle**: Only adjust formatting and fix obvious typos. Never add, delete, or rewrite content.
脚本主体是 unified/remark 管线:解析 → 可选 CJK 友好强调修复 → GFM/frontmatter → stringify,然后原地写回文件。
.use(options.emphasis ? remarkCjkFriendly : [])
CJK/英文间距不是自己实现,而是运行时调用 npx autocorrect-node --fix 就地改文件。
const result = spawnSync(npxCmd, ["autocorrect-node", "--fix", filePath], {
可选的引号规范化:把成对 ASCII 双引号与「」替换为全角弯引号。
.replace(/"([^"]+)"/g, "\u201c$1\u201d")
标题生成走可复用公式库:references/title-formulas.md 提供 8 个 hook 公式 + 直白型,输出 4-5 个候选交给用户选。
8 hook formulas + straightforward style for balanced title generation.
frontmatter 字段有固定加工规则:title/slug/summary/description/coverImage,summary 与 description 双版本且长度有指标。
| `summary` | 1 sentence, ~50-80 chars | Concise hook — for feeds, social sharing, SEO meta |
写盘纪律:输出 {filename}-formatted.md,覆盖前先按时间戳备份;分析文档 {original-filename}-analysis.md 作为改稿依据保留。
mv "{filename}-formatted.md" "{filename}-formatted.backup-$(date +%Y%m%d-%H%M%S).md"
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | npx autocorrect-node --fix(CJK/英文间距修复) |
| package | remark-cjk-friendly |
| package | remark-parse / remark-stringify / remark-gfm / remark-frontmatter / unified / unist-util-visit / yaml |
| cli | bun(首选运行时;无 bun 时 npx -y bun) |
4风险提醒 风险提醒:黄色 · 留意使用
- 默认路径会原地改写用户源文件 — 用户在检测到已有 Markdown 时若选『Typography fixes only』,脚本直接对原文件 writeFileSync,损坏不可自动回滚(该分支不产生备份);建议先拷贝再跑。
- 运行时拉取未锁定版本的第三方 CLI — spacing 默认开启,autocorrect.ts 会用 npx 拉取 autocorrect-node 的最新版并执行;上游发版行为变化会直接体现在文件改动上。
- 『不改内容』是提示级约束,非代码强制 — Step 2-4 的改写/加粗/建表全部由模型执行,脚本不校验内容是否被改;是否符合『Only adjust formatting』依赖模型遵守 SKILL.md。
- 标题/摘要质量不可机械验证 — 公式驱动的候选标题仍可能偏离原文主张或不符平台风格,SKILL.md 要求用户选择,如果用户走 auto_select 则完全由模型定夺。
5第二遍独立确认
- [ok] 『模型做内容、脚本做排版』的两段式划分 — SKILL.md Workflow 段逐字:'Claude performs content analysis and formatting (Steps 1-5), then runs the script for typography fixes (Step 6).' 与脚本能力一致(脚本无内容改写逻辑)。
- [ok] 脚本的确定性修复项与默认值 — main.ts DEFAULT_OPTIONS={quotes:false, spacing:true, emphasis:true};--quotes/--no-spacing/--no-emphasis 均有对应分支;与 SKILL.md 选项表一致。
- [ok] npx autocorrect-node 为唯一外部命令调用 — 全目录 grep spawn/exec/npx 仅 autocorrect.ts 命中一处;main.ts 只有 readFileSync/writeFileSync。
- [ok] 外部依赖清单完整性 — package.json 声明 8 个包(remark 生态 + unified + yaml),另加运行时 npx 的 autocorrect-node;全目录无任何 http 端点/API 调用。
- [ok] 无凭证读取 — 目录内 token 扫描 API_KEY/TOKEN/SECRET/.env/keychain 零命中;仅读取 EXTEND.md 偏好(路径在 SKILL.md 明列)。
- [ok] 标题公式库内容与『8 个公式』一致 — references/title-formulas.md 首行 '8 hook formulas + straightforward style for balanced title generation.',表格确为 8 行 hook(Subversive…Empathy)。
- [ok] 『仅排版修复』会原地改用户文件 — SKILL.md 第三条路径写明 'Run typography script on original file in-place / No copy created, modifies original file directly',与 main.ts writeFileSync(filePath…) 行为一致,已列为使用注意。
- [ok] 元数据(license/stars/commit) — git HEAD=1567581c26ec29f4216c6e6835415bf30343b0e3;仓库根 LICENSE=MIT(Copyright (c) 2026 Jim Liu);GitHub API stars=25926、pushed_at=2026-09-10T15:13:43Z。
6结论
6367312d8f2334bb…1567581c26