用途
该技能用于检查 OWID ETL 项目中的元数据文件是否存在拼写错误。它使用 codespell 对 .meta.yml 和快照 .dvc 文件进行拼写检查,帮助维护元数据质量。当用户提到拼写错误、拼写检查、元数据质量或希望检查元数据时可以使用。
主要能力
- 支持四种检查范围:
- 仅当前步骤:需用户指定步骤路径(例如 etl/steps/data/garden/energy/2025-06-27/electricity_mix)。
- 全部 ETL 元数据:检查 etl/steps/data/{garden,meadow,grapher}/ 下所有活跃的 .meta.yml 文件,自动排除约 3,570 个已归档步骤。
- 快照元数据:检查 snapshots/ 下所有 .dvc 文件(约 7,915 个文件)。
- 全部元数据:同时检查 ETL 步骤和快照元数据文件。
- 自动排除已归档的步骤和快照(定义在 dag/archive/*.yml 中),因为它们不再维护。
- 使用 .codespell-ignore.txt 文件过滤领域专有词汇。
- 解析并结构化展示结果:按拼写错误类型分组、显示文件路径(尽可能可点击)、行号和修正建议。
- 提供修复选项:自动修复全部、逐条审查修复或取消。
- 修复后重新运行 codespell 验证。
- 清理临时文件,不创建新的持久化文件(如报告或脚本)。
使用方式
- 检查 codespell 是否已安装。项目已将其作为开发依赖,通常已安装;若未安装,使用
uv add --dev codespell安装。 - 根据用户选择的范围,提取已归档步骤和快照路径,生成活跃文件列表。
- 运行 codespell,使用 .codespell-ignore.txt 忽略列表。
- 解析输出,按拼写错误类型分组展示,包含文件路径、行号和修正建议。
- 询问用户是否修复:自动修复全部、逐条审查或取消。
- 应用修复(如用户确认),可使用 sed 或 Python 脚本替换。
- 重新运行 codespell 验证修复结果。
- 删除临时文件,仅保留 .codespell-ignore.txt 白名单(如不存在则创建)和修改后的 .meta.yml 文件。
适用场景
- 元数据质量维护:定期检查 .meta.yml 和 .dvc 文件中的拼写错误。
- 拼写错误排查:当用户怀疑元数据中存在拼写错误时。
- 代码审查或提交前检查:确保元数据拼写正确。
限制
- 需要项目环境中已安装 codespell,或能够通过 uv 安装。
- 仅检查 .meta.yml 和 .dvc 文件,不检查其他文件类型。
- 已归档的步骤和快照不会被检查。
- 技术字段名(如下划线变量名)通常忽略。
- 全大写缩写应忽略(如 TE、INE、DIEA)。
- URL 和域名应忽略(codespell 可能误报,如 ine.es、corona.fo)。
- 对标记的单词有疑问时,应先询问用户再修复。
- 始终使用美式英语拼写(如 combating 而非 combatting)。
- 不创建新的持久化文件,如 TYPO_CHECK_REPORT.md 或分析脚本。
- 若未找到 .meta.yml 或 .dvc 文件,会通知用户;若未发现拼写错误,会祝贺用户。
- 若文件修改失败,会报告无法更新的文件。