#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
check_integrity.py —— 仓库自洽性检查(CI 与本地都能跑,零第三方依赖)。
检查项都对应真实发生过的漂移风险:
1. SKILL.md 的 version 与 CHANGELOG.md 最新版本号一致
—— 发布时最容易漏:改了 SKILL.md 忘写 CHANGELOG(或反之)。
2. style-catalog.json 与 style-catalog.md 的风格 ID 集合完全一致
—— 两者由 import_styles.py 同时生成,不一致 = 有人只手改了其中一个。
3. style-catalog.json 的条目数 == SKILL.md 里声明的风格数
—— 更新风格库时 SKILL.md 的硬编码数字最容易忘记同步。
4. JSON 每条都有 id / license 字段,且 id 唯一
—— 授权信息缺失会让 THIRD_PARTY_NOTICES 失真。
5. 帧模板 / 封面模板不得出现外链字体或 CDN 资源
—— 离线渲染硬要求,见 frame-contract.md 契约 2。
用法:
python scripts/check_integrity.py # 以脚本所在技能的根目录为准
python scripts/check_integrity.py --root . # 指定仓库根
退出码:0 = 全过,1 = 有失败项。
"""
from __future__ import annotations
import argparse
import json
import os
import re
import sys
OK = " \u2713"
BAD = " \u2717"
# 外链资源(离线渲染禁止)
REMOTE = re.compile(r"""(?:]+href|@import\s+url\(|