Skip to main content
ClaudeWave
Skill44.4k repo starsupdated 4d ago

curly-quote-sft

Install in Claude Code
Copy
git clone --depth 1 https://github.com/bojieli/ai-agent-book /tmp/curly-quote-sft && cp -r /tmp/curly-quote-sft/chapter8/curly-quote-sft ~/.claude/skills/curly-quote-sft
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# 中文技术文档符号与引用规范

## 何时加载

- 编辑或生成同时包含中文、英文、Markdown 和代码的技术文档。
- 用户反馈引号、反引号或代码边界格式错误时。

## 符号定义

- ASCII 直引号:`"`、`'`;常用于英文标点和代码字符串。
- 中文弯引号:`“”`、`‘’`;用于中文自然语言引用。
- Markdown 反引号:`` ` ``;用于行内代码和字面量。

## 决策优先级

1. 先保护可执行代码、JSON/schema、URL、路径和用户要求原样保留的引用文本。
2. 识别 Markdown 代码围栏、行内代码和代码注释边界。
3. 在中文自然语言作用域中,把成对的直引号改为弯引号,并正确处理嵌套引用。
4. 英文原文保持原文标点;英文标识符是否使用反引号由其是否为代码字面量决定,而不是由语言决定。
5. 无法判断作用域时保留原文并请求澄清,不做全局替换。

## 正反例约束

- 正例:`# 中文注释:显示 "状态"` → `# 中文注释:显示 “状态”`;同一代码块中的 `name = "status"`、`const name = "status"`、SQL 标识符和 JSON 键值保持 ASCII 语法。
- 反例:不能把代码字符串、JSON、URL、路径、英文原句或 Markdown 行内代码中的 `"`/`'` 改成弯引号;不能因为文件是中文就全局替换。
- 每种编程语言至少提供“该改的中文注释”和“该留的可执行字面量”成对样本,并在留出/边界集更换体裁、变量名和代码结构。

## 数据质量门禁

- 合成数据先按文章体裁、作用域类型和编程语言分层,再切分 train/eval/boundary,禁止 ID 和模板组合重叠。
- 机器门禁检查未解析变量、代码围栏、非注释代码行漂移和保护区;人工抽查每个分层的首条样本,记录在 `validation/manual_audit.md`。
- 任何语言类别的保护区或语法门禁失败,都应回到 Skill/数据蓝图修订后重训,不能只增加 epoch 或汇报总体平均分。

## 验证

- 修改必须是最小编辑,正文事实和代码内容不变。
- Markdown、JSON 和代码语法检查必须通过。
- 英文原文、代码和保护区域做字节级回归。
- 记录来源 Bad Case、适用范围、例外和验证结果。