Files
html-explainer/.github/workflows/ci.yml
T
MohZhuang 2581e2c685 docs: 重构 README 并统一文档语言为中文
README 精简(中文 528 → 364 行,-31%;英文 552 → 390 行,-29%):
- 删除使用者不需要的深层细节,改为指向 references/ 与 SKILL.md:
  横向对比全表、八条契约表、project.json 逐字段说明、仓库目录树、B() 代码详解
- 第一定位改为「Agent Skill」,而不是「一条渲染流水线」
- 新增「安装」章:一句话安装 prompt + 九个智能体的技能目录对照表 + 环境要求
- 新增「参考思路与姊妹项目」:anything2explainer 与 html-video,并明确标注
  两者为不同作者的独立项目,本项目运行时不依赖其代码

文档语言统一为中文(README.en.md 除外):
CHANGELOG.md、CONTRIBUTING.md、THIRD_PARTY_NOTICES.md、PR/issue 模板、CI 注释。
许可证原文(MIT / Apache-2.0)与 GSAP 自带 README 属第三方逐字文本,未翻译。

跨平台可移植性修复(原先隐含 WorkBuddy 专属路径):
- peek_frame.mjs 的技能根兜底改为遍历各智能体技能目录
  (.workbuddy / .claude / .codex / .gemini / .cursor / .agents),已用隔离夹具正反验证
- setup_env.sh 标注哪几个候选是 WorkBuddy 托管路径
- SKILL.md 新增「跨 Agent 安装」章,安装路径不再写死单一平台

修正一处事实错误:THIRD_PARTY_NOTICES 原称两个方法来源项目「均为作者本人作品」,
与事实不符,已改为「他人独立项目」并补充来源链接。
2026-09-21 13:11:22 +08:00

84 lines
2.6 KiB
YAML

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
# 每个分支只关心最新一次运行;被取代的自动取消。
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
checks:
name: ${{ matrix.os }} / py${{ matrix.python }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# Windows + Git Bash 是主要开发平台,所以和 Linux 一起测,
# 而不是被当成事后补的。
os: [ubuntu-latest, windows-latest]
python: ["3.9", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- uses: actions/setup-node@v4
with:
node-version: "22"
# --- 仓库自洽性:版本号漂移、风格目录漂移、残留外链 ---
- name: Repository integrity check
run: python scripts/check_integrity.py
# --- Python 脚本至少在支持的最低版本上要能编译 ---
- name: Compile Python scripts
run: python -m compileall -q scripts
# --- 画面体检工具要能被导入,且命令行要能响应 ---
- name: Lint tool smoke test
run: python scripts/lint_frames.py --help
- name: Integrity checker smoke test
run: python scripts/check_integrity.py --root .
# --- Shell 入口语法 ---
- name: Check setup_env.sh syntax
shell: bash
run: bash -n setup_env.sh
# --- 渲染器 / 封面器 / 单帧速览工具的语法 ---
- name: Check Node module syntax
shell: bash
run: |
set -e
for f in scripts/*.mjs; do
echo "checking $f"
node --check "$f"
done
- name: Check templates are self-contained
shell: bash
run: |
set -e
# 画面帧绝不允许引 CDN 或网络字体:离线渲染不会报错,只会静默劣化。
# 只扫 HTML —— markdown 文档里*提到*这些 URL 是合理的
# (比如正是指南在教你要把它们删掉),而 GSAP 自带的 README 也会介绍它的 CDN 用法。
hits=$(grep -rInE --include='*.html' \
'https?://[^"'"'"' ]*(fonts\.googleapis|fonts\.gstatic|cdn\.)' . \
|| true)
if [ -n "$hits" ]; then
echo "$hits"
echo "::error::external font or CDN reference found in an HTML template"
exit 1
fi
echo "no external font or CDN references in HTML templates"