YB学校体育成绩分析报告2

SKILL教育学习
教育学习 未标注权限 许可证不明确
安装这个技能

一句话简介:体测成绩分析图表 HTML 一键变图文报告:年级/班级/个人三视角 Word+PPT 六件套,数字实时计算、图表原样截图,体育教师专用; 中文介绍:体测成绩分析图表 HTML 一键生成图文报告:年级汇总/班级/个人三视角 × Word/PPT 六件套;数字从源数据实时计算零手填,图表从 HTML 原样截图保真;覆盖体质健康测试专项口径(免体、等级、分数段、临界生);全程本地处理,学生数据不外传; 英文介绍:Turn fitness score-analysis HTML into illustrated Word reports and PPT decks across grade/class/student views, with every figure computed live from source data and charts captured as-is. All processing stays local.;

一句话选型结论

按资料字段整理

YB学校体育成绩分析报告2是教育学习类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类教育学习 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_0ac01916/yb-pe-fitness-score-report-yanbo
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

教育学习
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_0ac01916仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量115.6 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
讲解知识点

按水平把知识点讲清楚。

出练习题

按章节生成练习与答案。

制定学习计划

按目标和时间排学习节奏。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在教育学习场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
YB学校体育成绩分析报告2当前 未标注权限 未标注 未标注 未标注 有
食谱创建课堂课程 未标注权限 GitHub 仓库 25.5 万 Codex、Claude、Cursor 有
语言学习 联网访问 ClawHub 市场 23.6 万 OpenClaw 有
learning 效率 只读 ClawHub 市场 19.2 万 OpenClaw 有
学习习惯 未标注权限 ClawHub 市场 10.2 万 OpenClaw 有
日语家教 只读 ClawHub 市场 8.2 万 OpenClaw 有

SKILL.md 全文

115.6 KB
模型实际读到的说明书原文,来自技能仓库

YB学校体育成绩分析报告2(Word + PPT)

把一份已生成的成绩分析图表 HTML,变成图文并茂的 Word 报告 + PPT 汇报。
输入必须是"分析图表HTML"(图表已在 HTML 里定版)——本技能不碰原始数据、不算分;且仅限体质健康/体育成绩多分页报告(const SD 结构),文化课单页 HTML 不在输入范围(详见第1步“输入边界”)。

🧑‍💻 专家视角自动绑定:高级开发工程师(Senior Developer)

每次调用本技能执行任务时,自动带入「高级开发工程师(Senior Developer)」专家——使用者无需在会话里手动点选专家;且专家以后升级,本技能自动跟随最新版,无需回来改技能。

执行规则(动态引用优先):
1. 先探测本机是否已安装该专家:用 Glob 在用户目录(~/$HOME)下的 .workbuddy/plugins/ 范围搜索 **/senior-developer/agents/*.md、**/senior-developer*.md(典型位置:~/.workbuddy/plugins/marketplaces/experts/plugins/senior-developer/agents/senior-developer.md);
2. 探测到了 → 读取该专家定义全文,以其为工作准则(专家定义是“活”的:官方或作者升级专家后,本技能下次执行自动用上新版,不用改技能、不用重打包);
3. 没探测到(分发给其他老师、对方没装这个专家)→ 按下方内嵌精简版工作法则执行,保证任何电脑、任何模型同口径。

说明:WorkBuddy 的"专家"是会话级 UI 选择,技能无法代替使用者在界面上点选专家;本技能的做法是"执行时把专家定义加载进来照着干",干活方式即该专家。若使用者已在会话中显式选择其他专家,尊重使用者选择,本绑定仅在"怎么干活"的方法论层面生效,不覆盖专家的人格与称呼设定。

内嵌精简版工作法则(本机未安装该专家时的兜底,与专家定义同源):

核心原则(四条):①交付为王——一切以可运行、可验证的成果为导向,拒绝空谈;②小步快跑——增量实现,每完成一个模块立即验证,不堆积未验证的代码;③言出必行——承诺的功能必须交付,承诺的检查必须执行;④简洁高效——输出精简,不重复已知内容,珍惜使用者每一分资源。

工作流程(三段式):
- Phase 1 任务理解与规划:先输出 ≤10 行执行计划(任务分解 + 复杂度 + 执行策略);任务不明确先提 1-3 个关键问题确认,不猜测后大量返工;
- Phase 2 增量实现与验证:每完成一个模块执行「写→验→报」——写代码 → 立即自动验证(语法/编译、构建、已有测试、关键功能冒烟,适用哪个跑哪个)→ 一句话汇报进度与结果;
- Phase 3 交付确认:全部完成后输出交付清单(已实现并验证项 / 运行方式 / 已知限制)。

代码自检清单(每次写完代码后内部过一遍,不逐条输出):编译/解释运行无错 · import 齐全 · 命名清晰无拼写错误 · 无硬编码密钥密码(用环境变量)· 边界条件已处理(空值/空数组/异常输入)· 数据库操作参数已绑定(防注入)· 用户输入展示已转义(防 XSS)。发现问题立即修复后再交付。

错误恢复策略:定位根因(先读错误信息,不盲目改代码)→ 一次性修复(不"试试这个、试试那个"反复补丁)→ 修复后重新运行验证(确认问题解决且没引入新问题)→ 三停原则:同一问题连续修 3 次仍未解决,停下来向使用者说明情况和已尝试的方案,请求协助。严禁:不分析原因就改代码 / 反复小修小补 / 隐瞒错误继续往下做 / 输出大段调试过程日志给使用者看。

傻瓜式统一流程(跨模型/跨电脑质量保障,大哥定版)

使用者的电脑配置、系统(Windows/Mac)、甚至调用的模型(混元/GLM/自动)都参差不齐,但输出质量必须一致。保障方式 = 流程固定 + 知识固化 + 环境自愈 + 机检兜底:

  1. 输入只有一个:HTML。使用者只喂上一个图表技能产出的"分析图表 HTML",其余全自动。
  2. 该问的必问,其余全默认:先问视角(年级/班级/个人)+ Word/PPT 组合(铁律2),其余细则走默认设置表,不反复打扰。
  3. 环境自愈:check_env.py 自动检测 Python/浏览器/Office库/资产/输出目录,缺什么给一键安装命令装好(Windows/Mac 双路径),不过不生成。
  4. 质量四道闸(缺一不可):
    - ① 图保真——HTML 图表与信息卡原样截图,任何模型、任何电脑都得到同一套图;
    - ② 数保准——文字里的数字全部 SD 现算,任何模型都得到同一套数;
    - ③ 文字保味——提示词/角色/学段常识/负面清单全部固化在 references/ 文件里,任何模型加载即注入;
    - ④ 交付机检——scan_badwords.py 扫描产物,命中负面清单即阻断。
    → 模型只负责"在闸门内写话",闸门外的(图、数、禁区)都由技能锁死,所以换模型不换质量。
  5. 固定顺序:识别 HTML → 问视角 → 截图 → 现算生成 → 机检 → 落盘交付,一次走完,傻瓜式操作。

🔝 数据准确最高优先级(铁律0 · 大哥 2026-10-15 钦定永久锁定)

数据不准确,剩下都是扯淡。 这是本技能的第一要务,优先级高于下方六条铁律。

> 🔒 永久锁定·不可更改:报告的唯一数据依据 = 成绩分析 HTML 内嵌的 SD 实际成绩,禁止胡编乱造、禁止估算、禁止从图里读数凑数。无论本技能如何进化、换任何底层模型、经任何人之手,都不准改动这条依据;读不到真实 SD 数据时宁可报错退出,也绝不生成含编造数字的报告(build_report.py 已加硬闸,每次构建打印 DATA_LAW_OK 留证)。

  • 唯一数据源 = SD:所有数字来自 extract_sd.py --dump-json 导出的 sd_dump.json,由 build_report.py 的 compute() 实时计算(等级/分数段/标准差/性别/各项目均分/班级/0分/最弱项/双低/临界生/各项目年级与班级均分),零手填、零写死、零读图抄数。
  • 图表=HTML 原样截图:图与信息卡一律用浏览器从 HTML 截图嵌入(所见即所得),禁止用任何库自制/重绘图表;文字里的数字仍由 SD 现算,两边各司其职——图保真、数保准。
  • 交付前机检兜底:scan_badwords.py 扫描产物,零命中 PASS 才交付,有命中 FAIL 阻断(见第5步)。
  • 视角内化靠文件不靠上下文/模型:老教师视角与体育常识固化在 references/domain-knowledge.md(学段常识库+语言负面清单)与 references/prompts.md(角色+通用要求+三视角要求)中,加载技能即注入,不依赖对话上下文、不依赖具体底层模型——换任何模型生成,说的都是内行话(详见"视角内化机制")。

视角内化机制(换模型不露怯的保障)

同样一份提示词,换底模不应让报告"变样"或说外行话。本技能把"老教研组长视角 + 体育常识"做成可加载的资产文件而非对话里的临时约定:

  1. references/domain-knowledge.md —— 青春期性别时差、引体零分全国参照数据、国标及格线、科学进阶路径、官方教研话语体系、语言负面清单(第七节)。生成前必读。
  2. references/prompts.md —— 固化角色(体育教研组长)、9条通用要求、三视角专属要求、机制适配(常识对齐最高优先)。
  3. scripts/scan_badwords.py —— 把负面清单落成机器可执行的拦截,生成后自动扫描,命中即阻断交付。

→ 因为知识在文件里、机检在脚本里,无论调用哪个模型,生成的文字都受同一套文件约束,不会出现"外行话""惊讶式措辞""主战场/洼地"之类的修饰腔。

⚠️ 七条铁律(每一条都不可跳过)

铁律1:通用年级,不锁死任何学段

初一到高三、任何学校、任何班级数都行。解析器自适应找数据结构(const SD 等),遇到不认识的 HTML 结构必须明确报告缺什么,禁止硬崩、禁止自行算分补数。

铁律2:先问视角,再动手(最核心交互)

拿到 HTML 后必须先问清(AskUserQuestion)再动手:
- 没说视角 → 问:年级汇总 / 班级 / 个人?(3种视角 × Word/PPT = 6种产物)
- 班级视角 → 追问:哪个班?
- 个人视角 → 追问:哪个班哪名同学?(可带性别辅助定位)→ 图表只截该生的,禁止批量预截
- 问的时候顺带确认:Word / PPT 要哪个还是都要。

铁律3:图表一律原样截图 HTML,禁止自制重绘

HTML 里的图表与信息卡已定版 → 禁止重绘、禁止用任何库(matplotlib 等)自制图表替代。用 scripts/shot_pw.js(playwright-core + 系统 Edge)把 pg0 各板块(信息卡/班级对比/分数段/单项分析)原样截图成 mod_0.png~mod_N.png,按【图:N】插入 Word/PPT,保证与 HTML 所见完全一致。文字里的数字由 SD 现算(铁律0),禁止从截图上读数。个人视角只截该生相关图。
⚠️ 教训(2026-10-06):曾因拿错测试文件(sample_tag.html,无 pg0)误判"截图方案不可用"而改用 matplotlib 自制图表,被大哥纠正——判定方案是否适用,必须用使用者真实喂的 HTML 验证。
⚠️ 铁律(2026-10-08 大哥定版,永久生效):先定图 → 再据图写文字。报告中所有图表先从 HTML 各界面(年级页/班级页/个人页)原样截图落位,文字分析再逐图展开;此顺序对所有学校、所有年级永久生效,任何新报告不得先用 matplotlib 等自绘图再配文字。
⚠️ 结构铁律(2026-10-14 大哥再次明确,永久生效):无论年级 / 班级 / 个人哪种视角、无论 Word 还是 PPT,报告前半部分必须把 HTML 成绩图表全部截图放进来并逐一分析,改进建议板块(结论与工作安排 / 本班对策与安排 / 本人提升计划)永远是整个报告的最后一个板块,绝不允许插在图表之前或与图表穿插——"先放图 → 逐图分析 → 最后接建议"是写死在 build_word() / build_ppt() 章节装配里的固定顺序(一、总体情况 → 二、图表与据图分析 → 三、结论与工作安排),新增任何内容都只能落在建议之前或建议之内,不得反向。
截图通道(2026-10-08 双通道版):① 首选 shot_pw.js(有系统 Edge/Chrome 的电脑);② 备选 build_report.py 内置 capture_pages()——Python Playwright + Chromium(浏览器二进制由 PLAYWRIGHT_BROWSERS_PATH 环境变量指定,C 盘紧张者可指向非 C 盘目录,跨平台通用;未设置则走 Playwright 默认缓存),自动按 .page 索引逐页截 .cards 与 .chart,tab 标签自适应(button/div/onclick 通吃),Bash 工具可直接跑(实测 Python Playwright 不受 node 沙箱杀进程问题影响),--html 传 HTML 路径即截图即生成一步到位。产物报告中的模块标题/图题文字需过 _clean_wording() 净化负面清单词(如 HTML 冻结标题里的"画像"→"差值"),截图 PNG 内部内容不动(图保真优先)。
逐模块截图保证(2026-10-08 大哥定版+两份 HTML 实测,永久生效):HTML 里每个图表模块都是独立可截的元素——年级总览页 = 1 信息卡 + 11/12 张 .chart;每个班级页 = 1 信息卡 + 7 张 .chart;个人成绩分析页 = 级联选人后 4 张 .chart + 1 信息卡(selGrade→selClass→selGender→selName 四级下拉、onchange 联动 JS 渲染、无按钮)。capture_pages() 一律按模块逐张截(.cards 与每个 .chart 单独成 PNG,保留模块标题与图题),禁止整页长图凑数、禁止任何形式自绘。三视角全部走同一条截图通道:年级=第0页;班级=指定班页;个人=最后一级联页选人后截动态图(--view personal --classes "班级全名" --student "姓名";选人匹配不上即报错退出,铁律1)。实测:三年级(10)班李浩个人视角 5 图全截、机检 PASS、数字 SD 现算全对。

铁律4:安装后自动体检,不带病上岗

技能装到新电脑、或本机首次使用 → 必须先跑环境自检(scripts/check_env.py),自检至少覆盖:
① Python 环境 ② 截图依赖(node 工作区 playwright-core + 系统 Edge/Chrome)③ Office 文档库(python-docx / python-pptx / pillow)④ 模板与版式资产(references/ 含常识库与负面清单)⑤ 机检词表(scan_badwords.py 可跑)⑥ 输出目录可写。
逐项 ✓/✗ 输出体检报告;✗ 项给精确修复命令(如 pip install python-docx),处理后重跑。自检不过不进入生成流程。Windows/Mac 双路径都要覆盖。

铁律5:跨电脑通用,零配置

  • 脚本不写死用户名/盘符/绝对路径,输入输出全走命令行参数或询问。
  • Python 用当前会话的 managed python 实际路径(或 venv ...\envs\default\Scripts\python.exe,已预装 docx/pptx/pillow)。
  • 缺依赖时打印一键安装命令帮用户装好。

铁律6:产物落盘规则(默认设置)

  • 产物默认存 HTML 同文件夹(HTML 在哪 Word/PPT 就在哪)——这条与个人习惯无关,通用默认;用户指定位置才按指定。
  • 备份位置因人而异,必须问:原作者本机示例备份在 [使用者自定义目录](如 D:\备份\);其他电脑首次使用必问"要不要备份?备到哪?"(有人习惯 D 盘、有人放网盘同步目录、有人不备份),按回答传 --backup-dir,不备份就不传(不传则不备份、不报错)。
  • 文件命名:原文件名_年级报告.docx / .pptx、_班级X报告、_个人XX报告。
  • 生成完用 present_files 展示给用户。

铁律7:换电脑必问开放设置(2026-10-08 大哥定版)

每台电脑的使用习惯、磁盘分区、安装路径都不同,凡"放哪里、装哪里"的开放性设置一律多问,禁止把某一台机器的习惯硬套到别人电脑上:
1. 产物存哪:默认 HTML 同文件夹(与个人习惯无关),首次确认一句即可;
2. 要不要备份、备到哪:决定 --backup-dir,不备份也不报错;
3. 浏览器二进制装哪:C 盘紧张的用户先设 PLAYWRIGHT_BROWSERS_PATH 指向自选非 C 盘目录、再跑安装命令(check_env 修复指引已含此说明);
4. 截图中间产物放哪:默认系统临时目录(--shots-dir 可指定),用户在意再改。
→ 技能内所有脚本不写死任何用户的盘符/用户名/个人目录;本文档中出现的作者本机本地路径(如 D:/ E:/ 盘下的个人目录)仅为原作者示例,其他电脑一律以使用者回答为准。使用者的路径偏好一经确认,记住该使用者习惯、后续默认沿用。

个人偏好记忆文件(2026-10-15 大哥定版):确认过的个人习惯写入技能文件夹之外的 ~/.workbuddy/pe_score_prefs.json(字段:out_dir 产物目录 / backup_dir 备份目录 / shots_dir 截图中间产物目录 / browser_dir 浏览器二进制目录;模板见包内 pe_score_prefs.example.json)——与 school_prefs.json(学校级:校名/默认模板/配色/校本措辞)分开存、互不干扰,升级都不丢。读取优先级:命令行显式传参 > 个人偏好记忆 > 技能默认(产物默认 HTML 同文件夹);之后每次生成先读该文件,有记忆直接沿用、不再反复问;使用者明确要求改,才更新文件。

使用流程(截图保真 + SD 现算,固定六步)

> 两条不可妥协的硬规矩(2026-10-26 核查定版):① 产物默认存上传的 HTML 同文件夹(不指定 --out-dir 就不许存到别处;脚本默认输出已锁定为 HTML 同文件夹,不再退回桌面);② 生成完必须用 present_files 把 Word/PPT 在对话里展示给老师,不能只生成不通知。

第0步:环境自检(首次必跑,铁律4)

PY="<venv 或 managed python 实际路径>"
"$PY" "$SKILL/scripts/check_env.py" [--html-dir "输出目录探测"]

输出逐项 ✓/✗ + 修复命令;全部通过打印 ALL CHECKS PASSED。不过不往下走。

第1步:识别 HTML → 导出 SD(自适应解析)

"$PY" "$SKILL/scripts/extract_sd.py" "INPUT.html"
"$PY" "$SKILL/scripts/extract_sd.py" "INPUT.html" --dump-json "sd_dump.json"

自动输出:数据结构判定(标准 SD / 变体 / 不认识)、年级推断、班级清单、项目清单、学生数。
--dump-json 把解析结果落盘为 sd_dump.json —— 这是后续所有文字数字的唯一来源。
- 标准结构 → 进入第2步;
- 变体 → 打印差异点,用 AskUserQuestion 确认口径;
- 不认识 → 明确告知"这份 HTML 缺什么结构",停止。
- 输入边界(2026-10-13 大哥定版):本技能只承接体质健康/体育成绩多分页“分析图表 HTML”(图表技能 fitness_report.py 路线,内含 const SD 结构)。文化课单页 HTML(图表技能 analyze.py 路线)明确不在支持范围——extract_sd.py 对其判“不认识”、说明缺什么结构后停止,这是设计边界不是故障(2026-10-13 全链路验证实测确认);文化课场景请直接用图表技能的 HTML 产物,或另用通用文档技能成稿。

第2步:主动问细节(铁律2)

AskUserQuestion 三连(缺省值按探测结果生成选项):
1. 视角:年级 / 班级 / 个人?(多选可出多份)
2. 班级视角→哪个班;个人视角→哪班哪名同学;
3. 产物:Word / PPT / 两者都要?(默认:两者都要)
4. 报告口径确认:单次成绩(无轨迹章→降级为对标分析)等探测出的特殊情况。

PPT 样式两级机制(仅产物含 PPT 时走,先定样式再定颜色):
- 第一级·选样式:把 5 套精选模板拉出来让使用者自己挑——先跑 --preview-sheet 生成《模板选择总览.png》(带编号大图,编号与 --list-templates 一一对应)用 present_files 挂出来,配合 AskUserQuestion 给编号选项;不满意随时对话换("换第 7 套"→改 --template 秒级重生成,其余步骤不重跑);
- 第二级·调颜色:样式定了之后问一句"颜色要不要调?"——四张预设色卡(莫兰迪灰绿 / 雾霭蓝 / 灰玫瑰 / 墨色鎏金,全部低饱和)或自定义(给主色+强调色两个 hex);
- 使用者说"默认就好"→ 内置深蓝汇报风 + 默认配色,一步不问直接出。

第3步:原样截图 HTML 板块(铁律3)

⚠️ 按操作系统选通道(截图通道已跨平台,照下方走就不会卡):
- Windows(有系统 Edge/Chrome):用 shot_pw.js(playwright-core + 系统浏览器),走 PowerShell 工具直跑 node——实测 Bash 沙箱会杀浏览器进程(page.goto 报 browser has been closed),PowerShell 直跑正常;
- Mac / Linux(无 PowerShell,也无系统 Edge):本步可跳过,直接走第4步 build_report.py——其内置 capture_pages() 用 Python Playwright 自动截图(Bash 工具直接跑,不受 node 沙箱影响),一条命令出图 + 报告;
- 浏览器二进制位置统一由 PLAYWRIGHT_BROWSERS_PATH 环境变量指定(跨平台;C 盘紧张者指向非 C 盘目录),未设置则 Playwright 走默认缓存。

$env:NODE_PATH = "$env:USERPROFILE\.workbuddy\binaries\node\workspace\node_modules"  # 跨用户通用:playwright-core 安装目录(安装/修复见第0步自检指引);未安装则走 build_report.py 内置 Python Playwright 截图,无需此变量
& "<node.exe 实际路径>" "<SKILL>\scripts\shot_pw.js" "<HTML路径>" "<截图输出目录>"
  • playwright-core(node 工作区)+ 系统 Edge(channel: msedge,免下载浏览器);启动参数含 --no-sandbox,msedge 失败自动回退 chrome / bundled chromium;
  • 按 pg0 子元素 H2 切块 → 逐模块截图 mod_0.png~mod_N.png(年级视角 pg0 共4板块:基础数据信息卡 / 班级对比 / 分数段 / 单项分析);
  • 截图前自动隐藏 fixed/sticky 吸顶元素;日志写 <截图输出目录>/shot_log.txt(stdout 可能被吞,一切进度以落盘日志为准);
  • ⚠️ 截图输出目录必须与 sd_dump.json 同目录——build_report.py 从 dirname(sd) 读取 mod_*.png;
  • 班级视角:改 JS 定位 pgN;个人视角:先 eval 操作级联下拉选定该生 → 再截动态渲染图;
  • 实测坑(沿用):嵌套 powershell -File 调 agent-browser 崩进程树——禁走;.ps1 体内中文默认值 ANSI 坑——中文路径一律命令行传参。

第4步:生成报告(build_report.py,compute() 实时算数)

"$PY" "$SKILL/scripts/build_report.py" --html "INPUT_分析图表.html" --sd "sd_dump.json" --out-dir "OUT" [--backup-dir "使用者确认的备份目录,不备份则不传"] --view grade|class|personal [--classes "三年级(10)班"] [--student "李浩"] [--template "模板名"] [--colors "莫兰迪灰绿"] [--shots-dir "可选,截图中间产物目录"]
  • 2026-10-08 起 build_report.py 为"截图内置一体版":--html 必传,内部 capture_pages() 自动用 Python Playwright 截 HTML 对应界面(grade→年级总览页;class→--classes 指定班页,按 tab 数字匹配+兜底映射;personal→最后一级联页 #selClass/#selName 选人后截动态渲染图),截完即嵌 Word/PPT,第3步可跳过(shot_pw.js 通道保留给有系统浏览器的电脑);
  • 生成顺序(v2.0 管线):先 Word 成稿 → 自动提炼 PPT 大纲与提示词(内部中间产物不展示)→ 按大纲生成 PPT(详见"Word 先行管线"节);
  • 视角与班级:--view grade 年级视角;--view class --classes "班级全名,可多个" 班级视角;--view personal --classes "班级全名" --student "姓名" 个人视角(铁律2:班级没说必问、个人没说必问到班到人;选人匹配不上报错退出,禁止猜人);产物命名 年级名+成绩分析报告_年级视角/班级视角(班名)/个人视角(姓名).docx/.pptx;
  • 截图落盘 --shots-dir 指定目录(缺省系统临时目录,中间产物不进交付目录、不写死盘符);
  • compute(sd) 逐项目重算所有关键统计量(等级/8段/标准差/性别/各项目均分/班级/0分/最弱项/双低/临界生/各项目年级与班级均分),报告文字里没有任何手填数字;
  • PPT 样式切换(--template,第一级):传模板名(--list-templates 可列 5 套精选清单,编号与总览图一致)或 pptx 路径,缺省=内置深蓝汇报风。⚠️ 机制 v3.2 定版(模板 DNA 移植):模板的版面设计真正进场——①浅色模板:数据页承载在模板内容页上(保留底色+角标装饰、清中央占位),页面标题落模板标题位(字体/颜色/位置=DNA 本体);②四色统计卡从模板 theme accent HSL 莫兰迪化派生(保留模板色相,换模板卡色变);③卡头/分隔线随模板底色派生(换模板整页色系变);④封面背景图带烙印字("答辩"烤图里)自动回退自绘封面;⑤深色模板回退白纸七件套(白底截图无缝铁律优先)。⚠️ v3.3.1 移植加固:模板原生尺寸≠标准版心时全部形状按比例缩放(治设计挤左/出界);封面长标题入英文短词框自动语义断行+缩字号;深色模板卡片底色恒浅。Word 不受模板影响;
  • PPT 颜色叠加(--colors,第二级):在模板/内置色板之上强制覆盖主色与强调色。传预设色卡名(莫兰迪灰绿/雾霭蓝/灰玫瑰/墨色鎏金)或自定义 "主:6E7F6B,强调:A8634E"(支持主色/主 两种写法、全半角冒号);解析失败打印 COLORS_NOT_PARSED 并回退模板原色,不中断生成。先定样式、再叠颜色,两者可任意组合;
  • --preview-sheet:生成 5 套精选模板带编号总览图 模板选择总览.png(供第2步选样式用),无需 --sd;
  • 对话换样式/换色 = 改对应参数重跑本步,秒级完成,第1~3步产物全部复用;
  • 输出/备份目录自动创建(新使用者第一次跑不因目录不存在而崩);
  • 图表引用 <sd同目录>/mod_*.png(第3步截图产物),缺图时自动写占位说明不崩;
  • compute() 已覆盖:性别维度各项目男女均分对比(SD 有 g 字段,实例:初一引体男3.6 vs 女78.4)、0分明细(项目×性别×班级)、临界生(55-60/75-80)按班级分布、等级结构、最弱项、双低——全部现算写入报告,杜绝读图抄数;
  • 同时产出 Word + PPT(图表字三者结合,每页一重点、标题即结论);
  • 三视角已全部实装(2026-10-08):grade 年级页 / class 班级页 / personal 个人页级联选人后动态图,图表全部 HTML 实截、按模块逐张截,个人数字由 _student_detail() SD 现算(总分/段位/班排名/三方对比/差值);
  • 产物落盘 --out-dir + 自动 --backup-dir 备份;同路径时 SameFileError 已防护。

第5步:交付前机检(scan_badwords.py,铁律0 兜底)

"$PY" "$SKILL/scripts/scan_badwords.py" "OUT"

扫描产物 docx/pptx 正文,对照 references/domain-knowledge.md 第七节语言负面清单:
- 零命中 → 打印 BADWORDS_SCAN: PASS,退出码 0,才允许交付;
- 有命中 → 打印明细,退出码 1,阻断交付,回第4步重写对应表述。
(机检是"换模型不露怯"的硬保险:无论底层模型怎么变,负面清单词命中即拦截。)

第6步:交付核验

  • Word:图片编号连续无缺失、章节完整、字数达标(年级4000/班级3000/个人2000 基准线,内容优先不设硬区间,见默认设置表)、结尾改进建议占比≥20%、名册/免体/实际统计三层口径已写明、元话语零残留(扫描"口径与使用说明/数据说明与使用建议/实时重算/定盘子/定抓手/结论详见正文/互相校验/配套使用"等报告使用说明书用语,命中即删段重写);
  • PPT:页数在建议区间(年级12-16/班级10-12/个人6-8,年级上限随 HTML 图表数浮动)、无占位符溢出、每页有视觉元素;
  • 机检 PASS 后 → 产物落盘 HTML 同目录(备份按使用者指定,未指定不备份)→ present_files 展示 → 随即运行 release_office_lock.py 主动释放占用(缓解补丁3,2026-10-26 定版):python "$SKILL/scripts/release_office_lock.py" "<docx路径>" "<pptx路径>"。present_files 会拉起平台预览 SDK(editor_sdk.exe)渲染 Office 文件,该进程预览后不释放句柄,导致用户在外用 WPS 打开时遭遇「文档已被占用 / 只读」(外在表现即"内容打不开");本脚本只结束该预览 SDK 进程、不动 wps.exe / 用户文件 / 生成产物,无占用时为空操作(exit 0),不影响任何其他功能;
  • 交付前必核对产物 mtime(2026-10-16 大哥翻车教训,永久生效):present_files 前必须用 os.path.getmtime 确认 docx/pptx 修改时间 = 本次构建时间。工作目录常同时存在旧版技能(grade 视角产物名"年级汇总")与新版("年级视角")的产物,按文件名挑文件交付 = 把陈旧旧版产物(matplotlib 旧图、字数不足)当新产物交错——2026-10-16 实翻车:新版构建 13 张真 HTML 截图完全正确,却把同目录 10-08 旧版"年级汇总"当成交付物。发现同目录有易混淆的旧命名产物,主动送回收站或明确告知使用者。
  • mtime 闸已代码级强制(2026-10-16 加固,不依赖人读文档):build_report.py 在写出 docx/pptx 后调用 _assert_fresh(),校验产物 mtime ≥ 本轮构建起点(RUN_START),早于起点即抛 [STALE_DELIVERABLE] 并阻断交付;正常走通打印 FRESH_OK docx=.../pptx=...。即使 AI 跳过上一条说明,代码也会拦住交错旧文件。

Word 先行管线:Word → PPT大纲(内部) → PPT(2026-10-09 v2.0,大哥定版)

指定年级/班级/个人后生成 Word + PPT 两个文件,固定先后与依赖关系:

截图+SD现算 → ① 先生成 Word 成稿(大哥要审的文字都在这)
           → ② build_word 内收集成稿结构 story(每图的分析文字/结语)
           → ③ derive_outline(story) 自动提炼《PPT生成大纲和提示词》→ 落盘 ppt_outline.json
              (内部中间产物,存截图临时目录,**不展示给用户**)
           → ④ build_ppt(outline=...) 按大纲组装 PPT
  • 大纲为什么更好:PPT 以 Word 成稿为纲——每页结论句取自 Word 该图的分析文字(前两句),两个产物口径永远一致,不会各说各话;页序=章节结构;style_hint 固化融绘 v3.2 模板 DNA 移植视觉语言,未来接入任何 PPT 引擎都以大纲为唯一叙事来源;
  • 要点(黄高亮)不走 Word:仍由 _points_sd() SD 现算(Word 与 PPT 同源函数)——数字永远现算(铁律0),Word 出结论、SD 出数字;
  • 大纲 JSON 含 meta(标注"内部中间产物不对外")/ style_hint(提示词)/ slides(每页 kind/title/points/concl/png),落盘 shot_dir/ppt_outline.json,OUTLINE_OK slides=N 打印进度;
  • build_ppt 按图表标题索引大纲,chart 页结论优先取大纲,大纲缺失自动回退 analyze_chart 现算(不因大纲缺页崩)。

融绘 v3:设计页留用 + 数据页白纸原生绘制(2026-10-08 v1.9,大哥"50分"差评驱动,取代 v2 内容页留用;⚠️ 数据页白纸路线已被 v3.2 模板 DNA 移植取代,本节为历史方法论)

核心洞察(融入感差的真正根因):深色模板底(如星空图)vs 白底图表截图 = 强烈反差 → 怎么装裱都是"贴"。两份参考材料(人教社讲座 PDF + 大哥开题报告)的共同答案是数据页回归白纸:图与页面同底,元素原生编排,图就"长"在页面里。

页面分工(该用原版用原版,该画就画):
- 设计页留用模板原页:封面 / 目录 / 章节过渡页 / 结尾页——只替换文字、_strip_logo() 清除模板校徽校名图与音视频媒体;
- 数据页(总体+每张图)白纸原生绘制:用模板中最素的浅色版式新建(add_cslide),并无条件铺全页白底矩形(_paper)——压过版式层一切装饰(实测"1_空白"版式藏整页 33.87×11.52cm 装饰大图,明暗判定测不出来,必须盖);
- 模板的内容装饰页全部淘汰删除(多余没用的自动去除)。

数据页视觉语言七件套(网格纪律:页边距1.8cm、区间距≥0.2cm、不出画布):
1. _header_bar 讲座风标题条:主色竖条+红色章节小字("03 · 分数段结构")+大标题+右上出处标签+细分隔线;
2. _src_tag 出处标签(人教社"《课程标准》P128"式):灰底小圆角,"数据来源:HTML 分析图表 · 原样截图";宽度按 9.5pt 字宽 0.345cm/字算,防止折行被裁;
3. _quad_cards 莫兰迪四色统计卡(开题报告色 #AD8555/#89C5BE/#FDDABF/#A47D69):四卡四色分块,字色按卡色亮度自适应(lum<0.62 白字否则深字);
4. _chart_frame 图表容器:白卡+浅边+卡头(模块名,与图表标题错开层次)+图等比居中+呼吸留白——截图白底与白纸同底无缝;
5. _hl_stack 黄高亮要点列(人教社高亮笔语言):与图并排互锁,2-4 条 SD 现算短句,禁止读图;
6. _concl_bar 结论条:强调色侧条+标签+正文,高度按字数自适应(10.5pt 约74字/行、最多4行、底边锁定 17.98cm 不溢出);
7. _foot_band 底部装饰带:主色小块+浅色延伸线收束页面。

截图裁白边:_trim_png() 在 capture 截图后裁纯白边(.chart 容器 div 常比 SVG 内容大),图更满地住在容器卡里。

踩过的坑(永久记住):
- ⚠️ EMU²→cm² 除数是 1.296e11(1cm²=1.296e11 EMU²)——除成 1e6 面积虚大 1.3 万倍,_strip_logo 永远删不掉图(实测踩坑);
- ⚠️ 模板 logo 可能是图片占位符或组合内图片,str(shape_type) 不含 "PICTURE"——判定用 XML 层 a:blip(sh._element.find(&quot;.//&quot; + qn(&quot;a:blip&quot;)));
- ⚠️ Edit 工具偶发假成功(返回成功但内容未写入)——关键修改后必须 Grep 复核再生成;
- 验证双闸:程序自检(出界/FILLER 残留/四色卡齐全)+ PowerPoint COM 导出 PNG 逐页目测(win32com,PowerShell COM 被沙箱拦就走 Python)。

v3.1 全篇统一(大哥反馈"封面结尾与其他页不统一"驱动;⚠️ 全篇白纸路线已被 v3.2 模板 DNA 移植取代——v3.2 根因复盘:白纸自绘让模板版面没进场,换模板看不出差异。本段为历史记录):设计页不再留用模板深色页——封面/目录/过渡/结尾全部白纸讲座风自绘(_cover_page/_toc_page/_trans_page/自绘结尾),四色元素贯穿全篇(封面四色条、目录四色章号块、结尾四色关键词卡),过渡页补齐 6 章(浅色大数字+章名);模板页全部淘汰,模板仅保留主题色呼应。~~设计原则:整套 PPT 一个气质,统一优先于"模板原设计"。~~(v3.2 反转:统一感来自模板 DNA 贯穿全篇)

融绘 v3.2:模板 DNA 移植(2026-10-09 v2.1,大哥批评"换来换去没啥变化,根本看不出模板差异"驱动,取代 v3.1 全篇白纸)

根因复盘(必读):v3.1 为统一气质把全篇改成白纸自绘——模板只贡献了一个标题色,版面设计根本没进场,换模板 = 只换个色值,这是"看不出模板差异"的技术根因。v3.2 反向定版:统一感来自模板 DNA 贯穿全篇,而非白纸贯穿全篇。

三大移植件(换模板 = 三处全变,差异肉眼可见):
1. 数据页承载在模板内容页上(浅色模板启用 tpl_light;深色模板回退 v3.1 白纸自绘——白底截图无缝铁律优先):take_page() 从模板内容页池取真页 → _dna_prep() 清场 → 七件套叠加。_dna_prep 五步:_strip_logo → 整页装饰背景图墨迹检测(_bg_pic_decorative:灰度缩略图墨迹占比>1.5% 判装饰画退场,素白底保留)→ 选标题载体(顶部 30% 内最大字号文字形状)→ 其余文字全退场 → _content_zone_clear 清中央装饰(保留整页底/顶部与底部角标);标题落模板位(字体/颜色/位置=模板 DNA 本体),仅钳字号≤24 + 拓宽标题框(模板框仅 ~6.5cm 宽装不下报告长标题);
2. 四色卡从模板 theme accent 派生:_morandi_hex() HSL 降饱和(S≤0.40)收亮度(L 0.56-0.76)→ 莫兰迪化但保留模板色相;派生不足 4 色回退开题报告莫兰迪;
3. 卡头/分隔线随模板底色派生:PAGE_BG 从模板内容页整页底形状采样,_mix() 派生 C_HEADFILL(混白55%)与 C_LINE(混灰25%)——整页一个色系。

封面可用性闸:封面背景图若是装饰画("答辩"大字/学士帽等烙在图里改不了字)→ 封面回退自绘(_cover_ok 判定),错字封面比素封面伤害大;目录/过渡页不受影响仍用模板真身。

踩过的坑(永久记住):
- ⚠️ python-pptx 代理对象陷阱:sl.shapes 每次迭代生成新包装对象,sh is tsh 永远 False → 标题载体刚选中就被清场循环删掉(实测全篇标题集体消失的元凶)。同体判定必须用 sh._element is tsh_el;
- ⚠️ _max_run_sz 对字号继承(run.font.size=None)的标题形状记 18 兜底分而非 0 分,否则这类标题在载体选择中永远选不中;
- take_page 对"纯图无字"模板页必然回退自绘标题条——底色角标仍是模板的,可接受;
- 验证链完整走三闸:程序自检(filler/quad/标题)→ COM 导 PNG → PNG 目测(本轮实测 Read PNG 可视,此前"Content filtered"是暂时现象)。

自动安装(分发包内置 install.py,2026-10-08 v1.7.2)

接收方把压缩包交给自己的 WorkBuddy 说"安装这个技能"即可,无需手工解压配置。WorkBuddy 只需执行一条命令:

python install.py [技能包.zip]   # 不传路径则自动查找当前目录/脚本目录下的 *_技能包.zip

install.py(纯标准库,Win/Mac 通用)自动完成五步并汇报各步耗时:①校验 zip 并读取技能名 → ②解压到 ~/.workbuddy/skills/&lt;技能名&gt;/(旧版本自动备份到 skills/.backup/)→ ③缺失依赖 pip 安装(清华镜像)→ ④缺浏览器二进制自动国内镜像精简安装(约90MB,--only-shell,失败自动回退完整安装)→ ⑤复验 check_env。全过打印 INSTALL ALL PASSED,任何失败给出明确修复建议。安装器路径探测与本机兜底逻辑与 check_env 一致(环境变量→E盘目录→默认缓存)。

默认设置一览(细则全默认,问过的才定制)

项 默认
产物位置 HTML 同文件夹(通用默认);备份位置按使用者习惯问清后指定
产物组合 Word + PPT 都要
Word 字数 基准线:年级 4000 / 班级 3000 / 个人 2000;内容优先,不设区间硬约束、不要刻意减少字数——以“分析清楚、内容真实有效”为第一目标,不为凑区间砍实质内容,实测超标属正常(2026-10-13 大哥定版:三视角实测 4878/3272/2439 字为优良样例);上限 5000(仅约束 Word);结尾改进建议占比 ≥20%(年级=整体课堂教学安排 / 班级=项目教法调整 / 个人=缺点针对性练习,2026-10-08 大哥定版)
输入边界 仅承接体质健康/体育成绩多分页“分析图表 HTML”(const SD 结构);文化课单页 HTML 明确不支持——extract_sd 判“不认识”即停,属设计边界非故障(2026-10-13 大哥定版)
口径必写 名册/免体/实际统计三层口径必须写明(班级与个人视角含免体名单),不得只写统计人数(2026-10-08 大哥纠偏:六5班在册40人、免体1人、实际39人)
禁元话语 正文禁写"口径与使用说明/数据说明与使用建议/定盘子定抓手/本报告数字XX重算/三份报告配套使用/结论详见正文"等报告使用说明书;口径只用自然句带出,免体名单除外(2026-10-08 大哥点名:"这种废话不要出现在各种视角的报告里")
PPT 页数 随图表数自适应:骨架页(封面1+目录1+过渡6+结尾1)+ 总体1 + 每图1页(年级实测23页)
Word 排版 图上文下按【图:N】自动插图;字号比常规大一号;中文双引号
PPT 版式 融绘 v3.2 模板 DNA 移植(浅色模板):数据页承载模板内容页+七件套叠加,四色卡/卡头/分隔线从模板派生;深色模板回退白纸七件套(卡片恒浅);每页标题即结论;v3.3.1 页面归一化缩放+封面长标题语义断行
0分 有效成绩(不剔除)
免体/缺考 不编分,按 HTML 数据原样呈现
临界生口径 55-60 及格临界 / 75-80 优良临界(对齐上游 HTML 技能)
语言风格 教研组长口吻、结论先行、"第一/第二/第三"条列;说人话禁修饰腔(负面清单见 references/domain-knowledge.md 第七节,禁用主战场/洼地/两个世界/黄金窗口/画像等,知识内化为视角直接陈述事实+判断+做法)

开放设置 vs 锁死口径(2026-10-08 大哥定版:环境类全开放必问,业务类锁死不开放)

开放(环境/个人习惯类——换电脑必问、参数可指定,禁止写死):

项 开放方式 缺省行为
输入 HTML / SD 命令行参数 无缺省,必传
产物目录 --out-dir HTML 同文件夹(通用默认,首次确认一句)
备份目录 --backup-dir,不传不备份不报错 首次必问"要不要备份、备到哪"
截图中间产物 --shots-dir 系统临时目录
浏览器二进制位置 PLAYWRIGHT_BROWSERS_PATH 环境变量(安装前设可避开 C 盘) 环境变量 → 已存在的本地目录 → 默认缓存
PPT 样式/颜色 --template / --colors / --preview-sheet 内置深蓝汇报风
视角/班级/学生 --view / --classes / --student 必问(铁律2),禁止猜
标题日期 技能一 --date 取生成时年月

锁死(业务口径/教学测量类——大哥定版,不做成参数、不因电脑而变):等级线 90/80/60、分数段 8 段、临界区间 55-60/75-80、光荣榜≥90、免体识别词(免体/免测/免考)、雷达图仅个人页、图表样式冻结、字数三基准线与建议占比≥20%(区间硬约束已按 2026-10-13 大哥定版改为内容优先)、三层口径必写、禁元话语、负面清单词表、PPT 页数区间、"先定图后写文"截图通道。这些是报告质量的锚,换学校换电脑都不变;确需改口径时改脚本顶部常量并跑 selftest,不允许在对话里临时变通。

打包分发清单(分享给其他老师时按此核对)

必带:SKILL.md、references/(prompts.md / domain-knowledge.md / layout-rules.md 等)、scripts/ 全部脚本(extract_sd.py / shot_pw.js / build_report.py / scan_badwords.py / check_env.py)、assets/templates/精选5套/。
剔除:__pycache__/、任何 ~$ 临时文件、已废除的自绘脚本(gen_charts.py 已于 v1.7.1 移除)。
不随包:浏览器二进制(约90-300MB,装后由 check_env 引导国内镜像精简安装或同校拷贝);本机 E 盘补充模板库与个人路径。
Mac 注意:全流程 Mac 真机未验证(见版本记录 v0.9.1);中文微软雅黑在 Mac 由 Office 自动替换不致错;Playwright 浏览器目录探测已含 ~/Library/Caches/ms-playwright。

版式资产(精选模板已随技能打包,包内不出现任何人名)

  • 技能内置(随技能分发,跨电脑即装即用,已接入生成引擎):assets/templates/精选5套/
    ——5套 .pptx(15.1MB)+ 5张封面预览图 + 《精选模板清单.md》索引;生成时 --template &quot;模板名&quot; 直接换装,--colors 叠色卡(机制见第4步);--preview-sheet 一键出带编号总览图供对话选样式。
    筛选硬标准(固化,重筛时必须执行):莫兰迪/蓝灰科技色系 / 高级简约 / 零人物照片 / 学术汇报适用 / 16:9 / 封面原生标题≤44pt / 无背景音乐mp3 / 场景铁律:这是成绩分析报告,不是毕业答辩(大标题、大学校名、"答辩人/报告人"占位、"论文框架"式目录一律出局;大哥实地否掉暗色模板与"复旦/清华式大标题")。
    2026-10-13 第三轮定版:夕觉24(默认推荐)/ 信息图-OKR规划(02306) / 信息图-简约图表(02310) / 学术答辩-67 / 学术答辩静(24),五套全链路终验 ALL_PASS(21页/主标题齐全/零场景残留/零暗元素/机检PASS);check_env 第④项自动清点,少于4套即体检不过。
  • 使用者本地补充模板库(可选,有则用、缺失不影响交付):把任意 .pptx 直接传给 --template &quot;&lt;绝对路径&gt;&quot; 即可换装;技能内置 5 套已覆盖常见汇报场景,本地库仅作扩展,不写死任何个人目录。
  • 设计规格(作者本机开发文档,不在技能包内,仅开发期参考):略。

他山之石:python-pptx 系技能吸收的设计纪律(2026-10-09 v1.8 融合)

2026-10-09 装并验证三套 python-pptx 系技能(dragon-ppt-maker / openclaw-office-toolkit / create-pptx),横向比对后,把与"先定图、禁自绘"核心不冲突的设计纪律固化进来;凡与铁律3(禁自制图表)冲突的,一律不吸收。

吸收的纪律(适用边界:换肤 / 自绘兜底 / 自定义页时遵守)

  1. WPS 安全渐进揭示:任何"逐条出现 / 动画"效果,一律用多页拆分(骨架页 → 加一层 → 加全层)实现,禁止依赖 WPS 不靠谱的点击触发动画(create-pptx references/wps-compat.md 实证)。本技能 PPT 以模板截图为底、本就静态,但凡未来加动态揭示必须遵守此条。
  2. 配色纪律:整套 deck 用一套大胆配色——主色占 60-70%,1-2 个辅助色,1 个尖锐强调色;禁止默认蓝,按主题选色;颜色一律定义为 RGBColor 常量集中在顶部,禁魔法数字。与现有 --colors 四级色卡机制一致,自定义色时按此纪律落地。⚠️(v2.0 勘误)"深色背景+亮色点缀显高级"一条已被融绘 v3.1 全篇白纸取代——白底截图与白纸同底无缝是硬约束,深色底会让截图变"贴";深底手法仅在纯封面/海报类无截图场景可用。
  3. 三明治结构:⚠️(v2.0 勘误,v3.2 再勘误)"封面/章节页深底、结语浅底"已被融绘 v3.2 模板 DNA 移植取代——统一感来自模板底色/角标/卡色贯穿全篇,深浅节奏不做人为规定;深底手法仅在纯封面/海报类无截图场景可用。
  4. 布局坐标预先计算:X/Y 位置在动手前用 EMU 算好(1pt=12700 EMU,16:9=12192000×6858000),禁 magic number;与"先定图 → 据图写文"的逐模块定位一脉相承。⚠️(v2.0 勘误)面积换算 EMU²→cm² 的除数是 1.296e11,除成 1e6 会虚大 1.3 万倍(实测踩坑:_strip_logo 永远删不掉图)。
  5. 卡片碰撞分散:若某页自绘卡片网格且多卡同 X,迭代外推分散(参考 create-pptx resolve_collisions),避免叠字。
  6. 标准页骨架命名:封面 / 目录 / 要点页 / 图文并排 / 数据页 / 章节分隔 / 结尾 七类命名固定(create-pptx references/standard-slides.md),模板缺某类页时自绘兜底按此命名,保证跨模板风格连续。

明确不吸收(与铁律3 冲突,保持 HTML 原样截图)

  • create-pptx references/charts.md 的原生图表绘制 API(柱状 / 折线 / 饼图 / 散点)——禁吸收,报告图表只用 HTML 截图,任何情况下不自绘(铁律3 永久生效)。
  • create-pptx 自带 education / business-dark 模板——本技能已有 5 套精选模板(莫兰迪 / 零人物 / 学术适用),且 create-pptx 模板带 Slidesgo 署名页必须保留,不并入以免污染"占位话术零残留"校验。
  • 李继刚式"VBA 生成 PPT"提示词路线(2026-10-09 评估,大哥问"能否融合")——不吸收,五条硬冲突:①生成机制冲突——VBA 要用户开 PowerPoint/Alt+F11/贴代码/跑宏,打断"傻瓜式固定六步"全自动闭环;②铁律0/3 冲突——该路线靠"知识库填充内容",没有 SD 现算闸与截图通道,等于重开"自绘+手填数字"口子;③WPS 双兼容硬门槛——WPS 个人版通常无 VBA 宏环境(需另装插件),分享给其他教师大概率跑不起来(大哥定的资源库硬门槛);④模板 DNA 移植(v3.2 take_page/_dna_prep/派生色)需整套 VBA 重写,数千行不可跨平台不可机检;⑤跨电脑/宏安全设置差异,"换模型换电脑不换质量"保障崩。结论:评估存档防重复评估;极端"无 Python 电脑"场景用"别机生成+拷文件"解决,不维护平行管线。

横向比对结论(重复类 PPT 技能谁最好用)

python-pptx 系 PPT 生成技能高度同质,create-pptx 综合最强(图表 / 图示 / 时间轴 + WPS 兼容踩坑 + 教育模板 + helper 脚本 + 参考文档齐全);dragon-ppt-maker 轻量快捷、三套主题够用,作快速出稿备选;openclaw-office-toolkit 是 Word/Excel/PPT/PDF 通吃的总工具书,保留它补 Word/Excel/PDF 侧。三者安全扫描 0 红线、python-pptx 链路实测可生成合法 pptx。

脚本资产(质量四道闸的载体)

  • scripts/extract_sd.py —— 自适应解析 HTML,导出 sd_dump.json(文字数字唯一来源)。
  • scripts/shot_pw.js —— HTML 原样截图执行器(playwright-core+系统Edge,pg0 按H2切块,--no-sandbox+msedge/chrome/bundled 通道回退)。必须经 PowerShell 工具调用 node(Bash 沙箱会杀浏览器进程)。
  • scripts/build_report.py —— 读 SD,compute() 实时算数,组装 Word + PPT(零手填数字,图表引用第3步真截图)。
  • scripts/scan_badwords.py —— 交付前机检负面清单词,命中即阻断(退出码1)。
  • scripts/check_env.py —— 安装/首次使用环境自检(铁律4),Windows/Mac 双路径。
  • ~~scripts/gen_charts.py~~ —— 已废除移除(2026-10-08 v1.7.1):matplotlib 自绘路线随"先定图"铁律永久禁用(铁律3),且其 Windows 字体路径写死在 Mac 必崩——原文件已归档至原作者本机 E 盘 workspace,不再随技能分发。自绘兜底口子就此关闭:任何情况下报告图表只用 HTML 原样截图,无例外。

版本记录

  • 2026-10-05 v0.1 骨架版(阶段1):六条铁律 + check_env.py 五项体检 + extract_sd.py 自适应解析 + prompts.md 固化提示词;截图执行器/Word线/PPT线标注阶段2/3交付。
  • 2026-10-05 v0.2 实战打通版:初一HTML全流程跑通(年级视角 Word+PPT 双产物落盘F盘+E盘备份)。新增 scripts/shot_pw.js(playwright-core+系统Edge截图执行器,pg0按H2切块、隐藏吸顶元素);check_env.py 第②项优先检测 node工作区playwright-core+系统Edge;沉淀三坑:嵌套PS调agent-browser崩进程树、PS5.1脚本体内中文默认值ANSI坑、python-pptx东亚字体需手动插a:ea。
  • 2026-10-06 v0.3 数据驱动修正版(大哥验收反馈驱动):①prompts.md 字数改区间制(年级3500-4000/班级2500-3000/个人1200-1800),PPT每页必须2-4句成段分析文字+页数做满下限;②重大纠错——上版报告从图上读数得出"2班48.9掉队22.3分"系误读,SD重算真实极差仅5.4分,确立"报告数字一律SD重算、禁止读图抄数"铁律;③新增性别维度必做铁律(SD有g字段,实例:初一引体 男3.6 vs 女78.4,班际之外的真分化在性别);④SKILL.md 第4步新增"分析深度铁律"(0分明细、临界生班级分布、等级结构必算)。
  • 2026-10-06 v0.4 学段常识校准版(大哥二次反馈驱动):新增 references/domain-knowledge.md 学段体育常识库(青春期发育性别时差/引体零分全国参照数据57%与87%/国标及格线7年级4个/科学四步进阶路径/避坑练法/叙事自检清单);prompts.md 机制备忘新增第0条"常识对齐(最高优先)"——禁止洼地/失守/警报等惊讶式措辞,一律"正常起点+科学进阶"口吻;check_env.py 资产清单纳入常识库。老教研组长视角:女生体能占优是发育时差规律,男生引体零分是全国普遍现象,初一是"从0到1"起点年。
  • 2026-10-06 v0.5 数字口径+平实化收口版(大哥三次反馈"继续"驱动):① SD 逐项目重算发现 Word/PPT 多处数字与数据集不符,一次性修正——分数段(80-89.9=52人非55、90+=10人非12、60-69.9=66人非62、30-39.9=9人非10、0-29.9=4人非2)、不及格最弱项(引体28人非27、50米19人非17)、50米与立定跳远双低(34人非18)、不及格女生(6人非8)、2班50米均分(55.5非53.5)、耐力跑区间(56.9-64.6非57.8-66.0);强化"分析深度铁律"为"所有等级/分数段/性别/0分/临界生数字逐项目交叉核对,禁止凭记忆或读图补数"。② PPT 平实化收口:删除主战场/双向蓄水池/泾渭分明/画像/黄金窗口/本底盘面等负面清单词(完整清单见 domain-knowledge 第七节),Word 新增"数据说明与使用建议"章节补足至3608字。③ 默认设置"语言风格"行加"说人话禁修饰腔"硬约束,指向负面清单。最终产物:Word 3608字/4图、PPT 14页,机检零禁用词。
  • 2026-10-06 v0.6 数据准确铁律固化版(大哥两条硬要求驱动):①确立"铁律0 数据准确最高优先级"——唯一数据源=SD,build_report.py 的 compute() 实时算数零手填;②新增"视角内化机制"说明——老教师视角/体育常识固化进 references 两个文件,加载技能即注入,不依赖对话上下文/具体模型;③新增交付前机检 scan_badwords.py。⚠️ 本版误将图表主路线改为 matplotlib 自制(根因:拿错测试文件 sample_tag.html 误判截图不可用),v0.7 纠偏。
  • 2026-10-06 v0.7 回归截图正道版(大哥纠偏定版驱动):①撤销"SD 现算图表"主路线——真实 HTML(初一算分结果_分析图表.html)pg0~pg7 完好,pg0 恰4板块对应4图,shot_pw.js 完全可用;②铁律3 回归"图表一律原样截图 HTML,禁止自制重绘",gen_charts.py 降级为"确认不可用+大哥批准"的兜底;③实测新坑:Bash 沙箱杀浏览器进程(browser has been closed),shot_pw.js 必须经 PowerShell 工具直跑 node——已固化进第3步;④shot_pw.js 启动参数加 --no-sandbox + msedge/chrome/bundled 通道回退;⑤新增"傻瓜式统一流程"节(大哥定版):输入只认 HTML、问视角后固定顺序全自动、环境自愈、质量四道闸(图保真/数保准/文字保味/机检兜底),保证跨模型跨电脑同质量;⑥信息卡截图实证回归——mod_0=年级基础数据汇总(251人/7项目/2人有单项缺测/104.0最高/68.8均分/优秀率25.6%/及格率77.3%/不及格率22.7%/免体9人名单/缺测0分统计表)。重建产物 Word 3606字/4真图 + PPT 14页,机检 PASS,落盘 F盘HTML同目录+E盘备份。
  • 2026-10-06 v0.8 模板随技能打包版(使用者指令"精选 PPT 模板随技能打包"驱动):①本地精选 42套 .pptx(248.9MB)+ 42张封面预览图(1.3MB)+清单索引打包进 assets/templates/,python-pptx 逐套结构校验 42/42 通过零损坏;②check_env.py 第④项升级——自动清点内置模板,缺失即体检不过并给修复指引,其他电脑装上技能模板即就位,不再依赖本机 E 盘库;③SKILL.md 版式资产改为"技能内置优先、E盘库仅本机补充"。自检实测 5/5 ALL CHECKS PASSED。
  • 2026-10-06 v0.9 轻量精选包+去人名版(使用者指令驱动):①技能包内全部清除使用者姓名——prompts.md / layout-rules.md / SKILL.md / check_env.py 及资产文件夹全部改中性命名,技能包=通用技能包;②按"莫兰迪色系 / 高级简约 / 零人物照片 / 学术与汇报适用"硬标准,对42套逐张封面人工把关重筛出20套(淘汰人物照片模板、艳色与俗套22套),重建 assets/templates/精选模板20套/(20 pptx + 20封面 + 中性清单,105MB,校验20/20通过),删除旧42套包(249MB→105MB);③筛选硬标准固化进 SKILL.md 版式资产节与 layout-rules.md 审美总纲(莫兰迪色系优先、低饱和灰调、忌艳色);④check_env 第④项指向新目录(≥18套达标)。
  • 2026-10-06 v0.9.1 全流程复验版:全新目录(不依赖任何旧产物)六步复跑全绿——第0步环境自检 5/5 → 第1步解析 SD(STANDARD/251人/85068字节与前次逐位一致,解析确定性达标)→ 第3步截图(MODS=4 四板块全截,msedge 通道)→ 第4步生成(BUILD_OK Word 3606字 + PPT 14页)→ 第5步机检 PASS → 铁律0数字抽查 10/10 全中(名册251/实测242/免体9/不及格55/临界43/优秀率25.6%/及格率77.3%/不及格率22.7%/最弱项引体28/均分68.8)。技能当前状态:Windows 全流程验证通过,可分发;Mac 真机验证仍待做。
  • 2026-10-06 v1.0 样式切换版(使用者问"如何切换PPT样式"并拍板"接模板母版"驱动):①build_report.py 新增 --template / --list-templates——以精选模板为底座生成 PPT:清空示例页并 drop_rel(只删 sldId 会 zip 重名)、强制16:9、继承母版/版式/主题;accent 色板与中文字体自动从模板 theme 抽取(accent1→主色、accent2→强调色);母版底色三态自适应:纯色深底→浅字深卡翻转、纯色浅底→默认、图片底→每页垫90%白纱保可读;Word 不受模板影响。②第2步问视角时顺带问样式(默认内置深蓝汇报风)。③输出/备份目录自动创建(新使用者防崩)。④三风格实测全绿:内置 / 水墨(浅底,主题色 4F81BD/C0504D 继承)/ 电路科技(深底,深卡 2C3442 + 浅字 F2F4F8 翻转),各14页、机检 PASS。
  • 2026-10-06 v1.1 两级样式机制版(使用者定版"先定样式再定颜色,对话傻瓜式换"驱动):①第一级·选样式:--preview-sheet 一键生成 20 套模板带编号总览图《模板选择总览.png》(编号与 --list-templates 一一对应),对话里挂图让使用者挑,不满意随时"换第N套"改 --template 秒级重生成(第1~3步产物全复用);②第二级·调颜色:新增 --colors——四张预设莫兰迪色卡(莫兰迪灰绿 6E7F6B/A8634E、雾霭蓝 5C7A99/B85C5C、灰玫瑰 977E85/5F7470、墨色鎏金 2F3A45/B08D57)或自定义 &quot;主:hex,强调:hex&quot;,在模板/内置色板之上强制覆盖主色与强调色,解析失败回退原色不中断;③第2步改写为"两级机制"流程(选样式→调颜色→默认即走);④实测三组合全绿:水墨+灰绿卡、深底科技+自定义色(D4A373/5F7470)、内置+雾霭蓝——色值均结构级验证写入页面 XML,各14页、机检 PASS。
  • 2026-10-08 v1.2 先定图+双视角+Python截图通道版(大哥三条硬指令驱动:①为何不直接截HTML的图 ②先定图再写文、所有学校年级永久生效 ③年级+班级双视角8文件):①build_report.py 整体重写为"截图内置一体版"——删除 matplotlib 自绘图(render_charts 废除),新增 capture_pages():Python Playwright + Chromium 按 .page 索引截 .cards+.chart,tab 标签自适应去重,班级匹配"数字优先+兜底映射";②确立"先定图→据图写文"硬结构(浏览器二进制由 PLAYWRIGHT_BROWSERS_PATH 指定、可指向非 C 盘目录,跨平台通用):analyze_chart(module_title, chart_title) 双题定位图型,文字全部 SD 现算、逐图展开、每图带"做法"落地句;③双视角:--view grade + --view class --classes,班级视角 Word 含年级背景定位+本班图表+本班对策,PPT 含本班定位页;④_clean_wording() 净化 HTML 冻结标题引用中的负面清单词(画像→差值),截图 PNG 内部不动;⑤实测坑沉淀:同文件并行 Edit 会互相覆盖丢改动(必须串行);班级名含"年级"二字(如"三年级(10)班")会干扰图型匹配——分支条件须用"占比/与年级"等强特征词;Bash 沙箱无 ls/grep/head/tail,一律 Python 内联脚本替代。三年级+六年级各年级/班级双视角共 8 文件全部生成,机检 8/8 PASS,数字抽查 SD 现算全对(三年级396人均分79.0及格率91.4%最弱体前屈;六年级317人均分80.7最弱50米),班级页截图视觉核验通过(强弱项差值图与 HTML 界面一致)。
  • 2026-10-08 v1.3 三视角闭环+逐模块截图定版(大哥"梳理验证技能"两条指令驱动:①所有学校所有视角一律 HTML 实截禁自绘 ②确认每图表模块独立可截、按模块截图):①全面验证——两份 HTML 全页面探测(3年级12页/6年级10页),年级页1卡+11/12图、每班页1卡+7图全部为独立 .chart/.cards 元素逐张可截;个人页四级级联下拉(selGrade/selClass/selGender/selName,onchange 联动无按钮)实测选人后 4 图+1卡全部独立截成(雷达图/分数段定位/三方对比/差值);②build_report.py 补齐个人视角闭环:capture_pages 增加 student 参数(级联选人+等 JS 渲染+匹配不上报错退出)、新增 _student_detail()/_seg_key()/SEG_LABEL(SD 现算总分/段位/班排名/三方/差值)、analyze_chart 增加个人分支(信息卡/分数段定位/雷达图/三方对照/差值,全部"结论+做法"结构)、build_word/build_ppt 增加个人视角三处分支(总体情况/图循环/结语提升计划)、main 增加 --student 并强校验(缺班或缺名即 ap.error);③实测:三年级(10)班李浩 Word 1413字5图 + PPT 8页5图,机检 PASS,SD 抽查全对(77.6分/班内第26/40/班均分83.5),雷达图截图视觉核验与 HTML 界面一致;④SKILL.md 铁律3 增补"逐模块截图保证"(禁止整页长图凑数),第4步用法更新为三视角。至此三视角×双格式全走"HTML 实截+SD 现算",无任何自绘路径。
  • 2026-10-08 v1.4 字数+口径+建议加厚版(大哥三条纠偏驱动:①字数不达标——定版年级4000/班级3000/个人2000 ②六5班在册40人报告写39人、免体1人未说明 ③结尾改进建议字数占比要加大):①prompts.md 字数行改版+新增"改进建议占比≥20%";②免体口径修复——_class_detail() 增返 roster/exempt_n/exempt_names,班级信息卡分析、班级导语、个人导语、班级结语四处全部写明"在册X人、免体Y人(名单)、实际统计Z人";③新增 chart_extra() Word 专用图后加厚段 + ITEM_RX 项目练习处方表;④三视角结语大扩(年级5段:总体研判/弱项攻坚/整体课堂教学安排/盯人与转化/复测与闭环;班级4段:总体定位含免体口径/项目与教法调整/分层安排/盯人与复测;个人3段:缺点针对性练习用 ITEM_RX 处方/优势保持与目标含追前一名差分/执行与家校);⑤实测 10 文件全绿:三年级年级4475字12图、六年级年级4646字13图、三年级(10)班3087字、六5班3105字(免体1人·杨静已写明)、李浩个人2024字,机检 10/10 PASS;⑥落款日期动态化,PPT 结语页增视角要点行;⑦坑:六年级年级 PPT 16页超旧区间上限,页数区间改为"年级12-16"。
  • 2026-10-08 v1.5 禁元话语版(大哥点名:"口径与使用说明……这种废话不要出现在各种视角的报告里"):①build_word 删年级导语两段("下方各图均自HTML截取""数据说明与使用建议")、班级导语整段"口径与使用说明"、年级结语尾"本报告全部数字XX重算"、三处导语尾"下列各图均自HTML…截取";②analyze_chart/chart_extra 清三句"该图数据已按XX口径呈现,结论详见正文"兜底(改 return "")、四处"口径补充/口径说明"改自然句(免体名单+缺测+0分实质保留,"与HTML同口径/互相校验/并不矛盾"全删);③对冲字数:个人结语补执行细节三处、班级结语补 ITEM_RX 弱项处方与分层/盯人执行细节、班级导语补及格/优良临界人数、班级图表分析补段位名单/临界名单/两头复核四句——全部为实质内容,不用废话凑字;④prompts.md 第3条新增"禁止报告使用说明书"、SKILL.md 增"禁元话语"默认行+第6步元话语扫描;⑤实测:三年级年级4144字/班级(10)班3149字/个人(李浩)2067字、六年级年级4317字,机检元话语零残留+负面词零命中全 PASS;六5班因 Word 文件被占用(~$锁文件确认)未及重建,待关闭后补跑;⑥坑沉淀:Word 保存 PermissionError=目标文件被 WPS/Word 打开,请使用者关文件后重跑,勿改输出名绕行。
  • 2026-10-08 v1.6 定名+提速版(大哥两指令:①技能改名"生成成绩分析报告" ②安装提速但步骤不能少):①frontmatter name 与标题改中文显示名"生成成绩分析报告"(原 grade-report-generator),文件夹名不动——所有脚本路径引用不断,改名零风险;②check_env 第2项升级为"包+浏览器二进制"双探测(依次查 PLAYWRIGHT_BROWSERS_PATH 环境变量→E盘本机目录→默认缓存 ms-playwright),杜绝"包装了但浏览器没下、生成时才报 Executable dons't exist、现场下载半小时"的坑;缺二进制给三条加速路径:镜像精简安装(PLAYWRIGHT_DOWNLOAD_HOST=https://cdn.npmmirror.com/binaries/playwright + --only-shell,约90MB,playwright≥1.49,截图场景够用)>镜像完整安装(约300MB)>同校离线拷贝(零下载:从已装电脑整目录拷贝+设环境变量);③pip 修复命令全部加清华镜像 -i https://pypi.tuna.tsinghua.edu.cn/simple,npm 加 npmmirror registry——下载提速、五项体检一项不少;④修 build_report.py 写死路径坑:PLAYWRIGHT_BROWSERS_PATH 由硬编码 E 盘改为"环境变量优先→E盘目录存在才设→默认缓存",其他电脑首次安装即可闭环(原写法在无 E 盘目录的电脑上必报错);⑤实测:本机 check_env 5/5 全过(第2项正确显示二进制位置),build_report.py 语法验证通过。
  • 2026-10-08 v1.7 新电脑必问开放设置版(大哥指令:"装到别的电脑他们的使用习惯安装路径都与我的习惯不一样,一些开放性的设置多问"):①新增铁律7 换电脑必问开放设置——产物存哪/要不要备份备到哪/浏览器二进制装哪(C盘紧张先设 PLAYWRIGHT_BROWSERS_PATH 再装)/截图中间产物放哪,四个开放项一律问清,禁止把某台机器的习惯硬套到别人电脑;使用者的路径偏好一经确认记住并沿用;②铁律6 改写:备份位置因人而异必须问(本机 E盘 workspace 仅为原作者示例),不传 --backup-dir 就不备份不报错;③修 build_report.py 写死坑——shot_dir 由硬编码 E盘 workspace\shots 改为 --shots-dir 参数(缺省系统临时目录),其他电脑无 E 盘不再崩;④示例命令中备份目录改为"使用者确认的备份目录"占位;⑤实测:个人视角最小回归通过(截图自动落系统临时目录、2067字与交付版一致),语法 OK。至此脚本内零写死个人路径(E盘目录全部为 isdir 判断通过才用的兜底)。
  • 2026-10-08 v1.7.1 开放设置总盘点版(大哥指令:"再次验证检查,类似这种通用的设置还有哪些需要开源不必锁死的"):①全量扫描 scripts/ 盘符/路径/字体/环境变量——真问题仅两处,其余为误报(单字母冒号正则误匹配、generate_video.py 系其他技能文件被 glob 扫串);②移除 gen_charts.py 遗留自绘兜底(SKILL.md 原定义为"经大哥批准的兜底",但先定图铁律已永久禁自绘、且其 C:\Windows\Fonts 字体写死在 Mac 必崩)——归档至原作者 E 盘 workspace 后从技能删除,自绘口子就此彻底关闭,SKILL.md 资产节同步改写;③新增"开放设置 vs 锁死口径"总表——开放:输入/输出/备份/截图目录/浏览器位置/模板/配色/视角/日期共 9 项全参数化;锁死:等级线/分数段/临界区间/免体词/样式冻结/字数/口径/负面词/页数/截图通道共 10 类业务口径(换学校换电脑不变,改口径必须改常量+跑 selftest,禁止对话临时变通);④新增"打包分发清单":必带/剔除(pycache、~$、已废除脚本)/不随包(浏览器二进制、E盘个人库)/Mac 注意(未真机验证、字体自动替换、缓存目录已探测)四栏;⑤字体确认安全:Word/PPT 用"微软雅黑"名称引用(非文件路径),Mac 由 Office 自动替换不崩;⑥回归:check_env 5/5 全过、extract_sd 链路不受影响。
  • 2026-10-08 v1.7.2 全自动安装器版(大哥指令:"让使用者像对话一样把压缩包给 WorkBuddy 说安装,它自动安装运行并验证检测,还要快"):①分发包内置 install.py(纯标准库、Win/Mac 通用、按 zip 内 SKILL.md 自动识别技能名)——一条命令完成校验→解压(旧版自动备份)→依赖镜像安装→浏览器缺二进制时镜像精简自动装(失败回退完整)→check_env 复验,输出 INSTALL ALL PASSED+各步耗时;②SKILL.md 新增"自动安装"节(本节);③端到端实测:本机用真实 zip 演练两技能均 INSTALL ALL PASSED(2.8秒/2.7秒,含 103MB 大包解压),测试目录已清理。
  • 2026-10-09 v1.8 他山之石融合版(大哥指令"装三套 python-pptx 技能并验证、比对谁最好用、把优点融进本技能"驱动):①装并验证 dragon-ppt-maker / openclaw-office-toolkit / create-pptx(SkillHub 下载 + 解压到 ~/.workbuddy/skills/ + 安全扫描 0 红线 + python-pptx 装进隔离 venv 实测可生成合法 pptx);②新增"他山之石"节固化跨技能吸收的设计纪律——WPS 安全渐进揭示(多页拆分禁点击动画)、配色纪律(单套大胆配色 / 禁默认蓝 / 深色高级感 / RGBColor 常量集中)、三明治结构、布局坐标预计算禁魔法数字、卡片碰撞分散、标准页骨架命名;③明确不吸收 create-pptx 原生图表绘制与自带模板(与铁律3 冲突、会污染占位话术零残留校验);④横向比对结论写入 SKILL.md:create-pptx 综合最强、dragon-ppt-maker 轻量备选、openclaw-office-toolkit 留作 Word/Excel/PDF 总工具书。
  • 2026-10-08 v1.9 融绘v3版(大哥评50分+"参考人教社讲座PDF与开题报告风格重做"驱动,取代 v2 内容页留用):①确立页面分工——设计页(封面/目录/过渡/结尾)留用模板原页,数据页(总体+每图)白纸原生绘制(add_cslide 选最素浅色版式+_paper 无条件全页白底压过版式层装饰),模板内容装饰页全部淘汰;②数据页视觉语言七件套(吸收两份参考材料):墨绿标题条+出处标签(人教社)、莫兰迪四色统计卡(开题报告 #AD8555/#89C5BE/#FDDABF/#A47D69 按亮度自适应字色)、图表容器卡(卡头放模块名与图题错层)、黄高亮要点列(SD 现算与图并排互锁)、结论条(高度按字数自适应底边锁定)、底部装饰带、_trim_png 截图裁白边(图更满地住进容器);③_strip_logo 清除模板校徽/校名图/音视频(a:blip 判定兼容图片占位符与组合内图);④实测踩坑沉淀:EMU²→cm² 除数 1.296e11(除错 1.3 万倍永远删不掉图)、版式层装饰透显必须无条件白纸化、Edit 工具偶发假成功关键修改后必须 Grep 复核;⑤验证双闸:程序自检(22页零出界零残留、14数据页四色卡齐全)+ PowerPoint COM 导 PNG 逐页目测(封面/总体/图表/结尾全过,校徽音频已清);⑥方法论回填 SKILL.md"融绘 v3"节。
  • 2026-10-08 v1.9.1 融绘v3.1全篇统一版(大哥反馈"封面结尾与其他页面不统一"驱动):①封面/目录/过渡/结尾全部改白纸讲座风自绘(_cover_page 竖条+大标题+四色条 / _toc_page 四色章号块+六章节 / _trans_page 浅色大数字+主色竖条+章名 / 结尾大字标语+四色关键词卡+结论条),过渡页补齐6章,模板页全部淘汰;②原则定版:整套PPT一个气质,统一优先于"模板原设计";③坑:_quad_cards 的 chips 必须是 (num,lab,color) 三元组,传二元组 ValueError 崩;④23页(封面1+目录1+过渡6+数据14+结尾1)逐页目测四类页面气质统一。
  • 2026-10-09 v2.0 技能梳理+Word先行管线版(大哥三问驱动:①技能是否冲突紊乱 ②升级后如何与20套模板有效结合 ③Word先行→PPT大纲提示词(内部)→按大纲生成PPT):①冲突排查与勘误——SKILL.md"他山之石"节三明治结构/深底高级感两条与 v3.1 全篇白纸直接冲突,加勘误标注保留历史;PPT页数区间(12-15)与实际23页矛盾改"随图表数自适应";"09/08精选规则库"过时引用改融绘七件套;--template 的"母版三态自适应/白纱"旧机制描述改写为 v2.0 定位;②模板结合定版——模板=气质来源(主题标题色/强调色/字体三线融入),QUAD 四色卡锚定莫兰迪不随模板(实测学术答辩-52 accent 高饱和蓝橙灰黄直接当卡色俗气、违背莫兰迪硬标准,回退),换卡色走 --colors 预设色卡;③Word先行管线——build_word 收集成稿结构 story(每图 analysis/extra/结语),derive_outline() 提炼《PPT生成大纲和提示词》落盘 shot_dir/ppt_outline.json(内部中间产物不展示,含 meta/style_hint/slides),_points_sd() 提为模块级(大纲与PPT同源要点),build_ppt 加 outline 参数按图表标题索引、chart 页结论句取 Word 成稿前两句(口径与Word一致)、大纲缺失回退现算不崩;④实测:OUTLINE_OK slides=17、BUILD_OK 23页、结论条从四行长文变两行精炼句、自检零问题;⑤坑:story 初始化引用 G 须放在 G 定义之后(UnboundLocalError)。
  • 2026-10-09 v2.1 融绘v3.2模板DNA移植版(大哥批评"换来换去没啥变化,还是你自己做的,根本看不出模板差异"驱动,取代 v3.1 全篇白纸):①根因复盘——v3.1 全篇白纸自绘让模板版面彻底没进场,换模板只换标题色;②三大移植件:数据页承载模板内容页(take_page 取真页+_dna_prep 五步清场+七件套叠加,浅色模板启用、深色回退白纸)、四色卡从模板 accent HSL 莫兰迪化派生(保留模板色相,换模板卡色变)、卡头/分隔线随模板底色 PAGE_BG 派生(换模板整页色系变);③标题落模板位(字体/颜色/位置=DNA 本体)+字号钳24+标题框拓宽(模板框6.5cm装不下长标题);④封面可用性闸——封面背景图带烙印字("答辩"烤在图里)→ 封面回退自绘,目录/过渡页仍用模板真身;⑤整页装饰背景图墨迹检测(_bg_pic_decorative 墨迹占比>1.5% 退场,花卉线稿实测退场);⑥实测坑四大件:python-pptx 代理对象陷阱(sh is tsh 永 False 用 _element 判同体——标题集体消失的元凶)、_max_run_sz 对继承字号记18兜底分、_content_zone_clear 连 LINE 一起清(竖穿数据卡的分隔线)、中央区 cy 范围 4.0-16.2cm;⑦静24实测23页:全篇零占位残留、标题全员到齐、派生四色卡(62A4BC/6F9AC1/86BC62/A1A17D)全面进场、封面自绘(灰绿底+四色条)+模板目录/过渡页真身(E5EAE4),COM 导 PNG 逐页目测通过。
  • 2026-10-09 v2.2 VBA路线评估+梳理验证版(大哥两指令驱动:①李继刚式"VBA生成PPT"提示词能否融合 ②不融合后再验证梳理技能):①VBA 路线评估存档——五条硬冲突(打断全自动闭环/绕开SD现算与截图闸撞铁律0·3/WPS个人版无VBA环境违背双兼容硬门槛/模板DNA移植需整套VBA重写/宏安全设置破坏跨电脑保障),写入"他山之石·明确不吸收"节防重复评估;②补齐文档承诺缺口——--list-templates(此前 argparse 无此参数、文档却引用)与 --preview-sheet(第2步选样式依赖、完全未实现)双双实装:总览图 4×5 网格 20 套封面带编号,编号与 --list-templates 排序一致,中文字体 msyh/simhei/PingFang 候选链;③文档一致性勘误 4 处——第4步 --template 机制描述 v2.0 定版改写为 v3.2(模板 DNA 进场/卡色派生/深底回退)、Word 先行管线 style_hint v3.1→v3.2、三明治勘误补 v3.2 再勘误、融绘 v3/v3.1 节头加"已被 v3.2 取代"历史标注;④技术债清理——Pillow getdata 弃用警告(Pillow 14 移除)改 get_flattened_data 优先+旧版回退双兼容(_img_lum/_bg_pic_decorative 两处);⑤六步全绿回归——check_env 5/5 ALL CHECKS PASSED、--list-templates 20 套、--preview-sheet 总览图目测通过、BUILD_OK(word 4317字/ppt 23页/charts 13)、scan_badwords 5/5 PASS 零禁用词。
  • 2026-10-09 v2.3 静32换装+封面/标题三修版(大哥指令"重新生成,用第14套模板"驱动):①封面分组去重——同一条 cover_rules 命中多个形状时(模板双标题/双答辩栏)只保留视觉最大的一个设值其余清空(静32 实测:主标题出灰色残影、汇报人重复两处、学号588888 残留),cover_rules 补 学号/专业/学术风格/严守 词,纯数字长串与局部 filler 一并清;②执行序坑两连:封面循环(行~1408)早于 _FILLER/_max_run_sz 定义(行~1776),运行时 NameError——封面块内改用局部正则与局部 _run_max 辅助函数;③标题载体统一洗白——静32 的标题形状是自带红椭圆填充的 AUTO_SHAPE(fill+line 都成残留),_dna_prep 设标题时无条件 fill.background()+line.fill.background()、字色统一压 C_MAIN(本就自模板标题色派生);④标题可读性归一——标题位过低(>2.2cm 被统计卡行压住)或与 ≥25cm² 页首装饰相交时,挪到 y0.95 + 清掉与新标题区重叠的页首装饰;⑤静32 实测 23 页全绿:零占位残留、派生四色卡(7D90A1/BC6266/CBB8B8 灰蓝玫红系)与静24(蓝绿橄榄系)差异肉眼可见、模板灰框+红丝带页码 DNA 进场、封面/目录/过渡页真身留用,COM 导 PNG 逐页目测通过,scan_badwords PASS。
  • 2026-10-09 v2.4 -38换装+全局去院校化版(大哥评"整体比昨天好多了"并指令"再换一个模板,第六套(学术答辩-38)"驱动):①全局去院校化——-38 的复旦校徽烤在版式/母版层,_strip_logo 只扫 slide 层够不着,新增全局循环遍历 prs.slide_masters+slide_layouts 清 blip/media/视频(报告不属于任何模板院校,任何模板换装后院校烙印零残留);②占位词表扩充——目录页"论文综述"类学术占位残留在 PLACEHOLDER_SECS 命中,词表随模板扩;③组内标题保护——p15 标题藏在 GROUP 里且组心落在清场区 y0-y1,整组被 _content_zone_clear 删→签名加 skip 参数:_dna_prep 先锁定标题 sp 元素,沿 getparent() 回溯整条祖先链入集合,清场时 sh._element in skip 整链豁免;④标题洗白沿用 v2.3(fill/line background+字色压 C_MAIN),-38 实测标题字青绿色入位;⑤实测 23 页全绿:派生四色卡(89C5BE/AD8555/FDDABF/A47D69 开题报告莫兰迪本色)、青蓝封面+灰方块装饰 DNA 进场、零占位残留、COM 导 PNG 四张关键页目测通过、scan_badwords PASS;⑥融绘模板档案更新——模板序号:静24=第17套、静32=第14套、学术答辩-38=第6套。

  • 2026-10-09 v2.5 -38确认+夕觉24换装(第3套)+模板编号解析修复版(大哥确认-38版后指令"再换成第3套"驱动):①模板编号解析修复(关键bug)——_resolve_template 只认文件名,--template 3 被拼成 3.pptx 找不到后静默回退无模板模式(16页灰卡白纸版、目录/过渡页/四色卡派生全没了,换装指令被吞):纯数字改按 --list-templates 编号索引(v2.2 承诺的"编号与总览图一一对应"至此真正闭环),解析失败打 TEMPLATE_NOT_FOUND 不再静默降级;②目录条目乱序修复——模板目录的 XML 顺序与视觉顺序不一致(夕觉24 实测 04/01/05/02/03 乱序),条目替换改为先收集按 (top,left) 排序再依序写入;③夕觉24(第3套)换装实测:青花瓷中国风模板,目录/过渡页真身留用(蓝白水墨底),四色卡派生(8FA8C8 棕 A97C5F 灰粉 C0AAB4 橄榄 B3A560——蓝棕灰橄榄系,与静24蓝绿/静32灰玫红/-38青棕差异肉眼可见)、总体页承载模板淡青水彩底、标题用模板楷体居中载体;封面因模板封面装饰画退场走自绘(白纸讲座风+派生四色条);已知边界:模板目录框原生仅5条目,第6章"结论与安排"无载体可落(不凭空造框破坏模板设计),数据页 note card 文字少时下部留白偏大;④23页全绿:BUILD_OK、机检零残留、COM 导 PNG 目测通过。

  • 2026-10-09 v2.6 改进建议专页进PPT版(大哥反馈"分析页换汤不换药 + Word里详尽改进措施没进PPT、结尾只一句带过"驱动):①设计取舍澄清——"分析页面换汤不换药"是既定取舍:数据页=图表+要点+结论三段式结构全篇统一,差异来自 SD 现算数字 + 模板 DNA 皮肤(底色/角标/卡色/字体),不随模板改内容骨架(改骨架会破坏"先定图→据图写文"铁律);本轮只落实可落地的明确诉求——把 Word 结语的改进建议补进 PPT;②新增 _improve_items(view,V,sd,student,pages)——分视角 SD 现算要点,与 Word 结语同源(年级5段:总体研判/弱项攻坚/整体课堂安排/盯人与转化/复测与闭环;班级4段:总体定位/项目与教法调整/分层安排/盯人与复测;个人3段:缺点针对性练习/优势保持与目标/执行与家校),全部用 V 现算数字零手填;③新增 _improve_slide(items)——白纸专页铺开(七件套视觉:标题条+副标+四色竖条+派生四色卡),放结尾页之前;④两套路径都接——模板模式 units.append((nsec-1,&quot;improve&quot;,None)) 置 ending 前、ch_pages 循环 elif kind==&quot;improve&quot; 分支渲染并 continue;非模板模式在结语页前直接插入;⑤夕觉24(第3套)重生成实测 24 页(23+1 改进建议专页):p23=改进建议与落实安排(5段年级要点全 SD 现算:均分80.7/及格率91.2%/最弱50米体前屈/不及格28人/临界110人)、p24=结语页,图表页 pics 全部保留;verify 全绿零占位残留、COM 导 PNG 目测通过;⑥融绘预览图归档——03_23_改进建议页.png + 03_24_结尾页.png 入目录,旧 03_23_结尾页.png 改名 _旧23页版 避免页数错位混淆。


校本配置(可选,升级不覆盖)

各校 / 各师的使用习惯(学校名、默认配色模板、校本专项要求)统一存到技能文件夹之外的外部配置文件:~/.workbuddy/school_prefs.json(模板见技能包内 school_prefs.example.json,复制过去改即可)。升级技能只覆盖技能文件夹,这份校本配置原样保留,谁的家底都不丢;本技能与「YB学校体育成绩分析图表1」共用同一份。字段含义:

  • school_name:学校名 → 进 Word 元信息行与 PPT 封面副标题;
  • default_colors / default_template:命令行未指定 --colors / --template 时的缺省值,免得每次重选;
  • custom_prompt:校本专项要求 → 在报告"校本专项要求"段落显示。

配置缺失或损坏时技能照常运行(不报错、不留空),只是不加校本内容。

个人偏好记忆(可选,升级不覆盖)

教师个人习惯(产物目录 / 备份目录 / 截图中间产物目录 / 浏览器二进制目录)统一存到技能文件夹之外的个人偏好记忆文件:~/.workbuddy/pe_score_prefs.json(模板见技能包内 pe_score_prefs.example.json,由 AI 首次问清后自动写入)。与上面的校本配置分工不同、互不干扰:校本配置管"这个学校的事"(校名、默认模板、配色、校本措辞),个人偏好管"这台电脑这位老师怎么用"(产物放哪、备到哪、浏览器装哪)。升级技能只覆盖技能文件夹,两份配置都原样保留。读取优先级:命令行显式传参 > 个人偏好记忆 > 技能默认(产物默认 HTML 同文件夹、不传 --backup-dir 则不备份);之后每次生成先读记忆文件,有记录直接沿用、不再反复问。配置缺失或损坏时技能照常运行,按默认规则执行。

CHANGELOG

v1.17.7(2026-10-26)

  • 生成后自动释放机制(缓解补丁3,闫博定版):修复 v1.17.6 引入的回归——present_files 强制展示后,平台预览 SDK(editor_sdk.exe)渲染完 Office 文件不释放句柄,导致生成报告在 WPS 中被「文档已被占用 / 只读」卡住、且进程持续占用不释放。新增 scripts/release_office_lock.py:在 present_files 展示之后由 AI 立即调用,仅结束预览 SDK 进程(editor_sdk.exe 或 handle 精确定位的具体 PID),释放文件句柄;不动 wps.exe / 用户文件 / 生成产物,无占用时为空操作(exit 0),跨平台稳妥。第6步交付核验已强制「present_files → 随即 release_office_lock.py」顺序。此补丁为平台句柄泄漏的缓解方案(根治需平台侧修复 editor_sdk 释放句柄),不影响其他功能。
  • 版本 1.17.6→1.17.7,分发包随本次重建。

v1.17.6(2026-10-26)

  • 输出位置双硬规矩(核查定版):① build_report.py 默认输出目录由「桌面/当前目录」改为上传 HTML 同文件夹(与铁律6「产物默认存 HTML 同文件夹」一致,满足"默认存上传文件夹"要求);② SKILL.md「使用流程」新增两条不可妥协规矩,明写生成完必须用 present_files 在对话里展示。此前实测曾因个人偏好文件 ~/.workbuddy/pe_score_prefs.json 的 out_dir 被设成本机工作区、把默认输出劫持到非上传目录,现已将该偏好 out_dir 清空,回落到 HTML 同文件夹默认。
  • 版本 1.17.5→1.17.6,分发包随本次重建。

v1.17.4(2026-10-15)

  • 市场版模板自动还原机制(SkillHub 二进制禁令兜底,大哥发布页实测):SkillHub 上传管道禁止二进制文件(页面明示"禁止上传二进制文件",pptx/jpg 无论大小全被拒)——精选模板改为 base64 纯文本分片内置 assets/templates_b64/*.pNN.txt(5 套全带,约 5.4MB 文本,平台照收文本);新增 scripts/decode_templates.py(按序拼接→b64 解码→PK 头校验→还原 pptx),build_report.py main() 入口自动调用(TEMPLATE_RESTORED_FROM_B64),缺哪个还原哪个、模板齐全时零写操作;zip 离线安装版自带真实 pptx,还原逻辑不触发。附带:模板瘦身技术预研沉淀(JPEG 降采样/大 PNG 量化/内嵌 MP3 静音化/XML deflate9,02306 可 3707→972KB、静24 因 XML 底噪 1MB 物理无解)。
  • 版本 1.17.3→1.17.4,分发包随本次重建。

v1.17.3(2026-10-15)

  • slug 加 handle 后缀避撞名(大哥发布页面实测"Slug 不可用"):yb-pe-fitness-score-report 在 SkillHub 已被占用(官方文档 Q4 实锤:slug 必须全网唯一,建议带 handle 前缀/后缀)→ 改为 yb-pe-fitness-score-report-yanbo(yanbo=闫博 handle);图表技能同步改为 yb-pe-fitness-score-charts-yanbo。显示名/步骤序号不变。
  • 版本 1.17.2→1.17.3,分发包随本次重建。

v1.17.2(2026-10-15)

  • 名称加系列序号 2(大哥定版):显示名「YB学校体育成绩分析报告」→「YB学校体育成绩分析报告2」——与「YB学校体育成绩分析图表1」配套成有序系列(图表 1 在前出 HTML、报告 2 在后出 Word/PPT),市场里按序号相邻排序、一眼看清使用先后;slug 不变(yb-pe-fitness-score-report),全文互引同步(引用图表技能处改为「YB学校体育成绩分析图表1」)。
  • 版本 1.17.1→1.17.2,分发包随本次重建(zip 名 YB学校体育成绩分析报告2_技能包.zip)。

v1.17.1(2026-10-15)

  • 新增个人偏好记忆机制(大哥定版"使用习惯融合"):新增技能文件夹之外的个人偏好记忆文件 ~/.workbuddy/pe_score_prefs.json(out_dir/backup_dir/shots_dir/browser_dir,模板随包 pe_score_prefs.example.json),AI 首次问清使用习惯后写入,之后读取沿用不再问;与 school_prefs.json(学校级)同构分工、分开存互不干扰,升级/市场更新都不丢。代码:build_report.py 新增 load_pe_prefs(),--out-dir/--backup-dir/--shots-dir 缺省时按"命令行 > 个人偏好记忆 > 技能默认"优先级取值(命令行显式传参永远优先);browser_dir 在环境变量未设且目录存在时才设 PLAYWRIGHT_BROWSERS_PATH(不覆盖用户已设值、不写死盘符)。
  • 大哥定名 YB 前置:显示名「学校体育成绩分析报告YB」→「YB学校体育成绩分析报告」(YB=闫博署名放系列前缀,大哥以后发布的技能统一 YB 开头,市场搜"YB"即成系列);slug 同步改为 yb-pe-fitness-score-report;全文互引同步。
  • 版本 1.17.0→1.17.1,分发包随本次重建。

v1.17.0(2026-10-15)

  • 技能商店上架适配版 + 大哥定名「学校体育成绩分析报告YB」:为发布到 WorkBuddy 技能市场(SkillHub / 开放平台),SKILL.md frontmatter 新增两套平台字段——SkillHub 要求 slug(全网唯一 kebab-case:pe-fitness-score-report-yb)、displayName、summary、license、author;开放平台要求 display_name、description_zh、description_en、category、categories、tags;version 改为合法 SemVer 三段式 1.17.0(SkillHub 对非 SemVer 版本号直接阻断发布)。显示名由大哥钦定为「学校体育成绩分析报告YB」(原名“生成成绩分析报告”,YB=闫博署名),全文互引同步替换;本地字段(name/description/agent_created/deps)与脚本零改动,本地安装使用不受影响。
  • 版本 1.17→1.17.0,分发包随本次重建。

v1.17(2026-10-15)

  • 安装器提速 v1.3:修复浏览器镜像探活 URL 错误(老款 ThinkPad"17分钟没装完"的根因):
  • 根因:新版 playwright(≥1.5x)的 headless-shell 下载路径已改为 CFT 结构(builds/cft/&lt;browserVersion&gt;/&lt;plat&gt;/chrome-headless-shell-&lt;plat&gt;.zip),而安装器的镜像探活 probe(PW_MIRROR) 探的是镜像根路径(恒返回 404)→ 每次安装都误判"国内镜像不可达"→ 浏览器二进制改走官方源下载。本机实测:npmmirror 镜像 4842 KB/s(120MB 约 24 秒)vs 官方 cdn.playwright.dev 506 KB/s(约 232 秒),相差近 10 倍;老 ThinkPad 网络与 CPU 更弱,叠加串行等待,17 分钟装不完;
  • 修复:新增 shell_probe_url(mirror)——从已装 playwright 的 browsers.json 动态推导当前版本的完整工件下载 URL(CFT 新结构优先、旧结构 builds/chromium/&lt;rev&gt;/ 兜底,零硬编码版本号,playwright 日后升级镜像路径自动跟随),再 HEAD 探活;探活通过才设 PLAYWRIGHT_DOWNLOAD_HOST,不通则回退官方默认三镜像,行为与修复前一致(功能一步不减);
  • 文案校正:浏览器二进制实际约 120MB(旧文案 90MB 已过时),安装耗时预估同步改为"1MB/s 约 2 分钟 / 200KB/s 约 10 分钟";
  • 修复 browsers_ok() 版本不校验(端到端干跑实锤的第二处问题):旧逻辑只查"目录里有没有 chromium 前缀"——缓存里躺着旧版 chromium-1228 而 playwright 要 1243 时被糊弄,安装器跳过下载、最后 check_env 才发现版本不匹配,使用者还得手动跑修复命令。新版与 check_env 同口径:读 browsers.json 要求的 revision,校验磁盘目录 chromium_headless_shell-&lt;rev&gt; 存在且含可执行文件;读不到版本清单时保守降级旧宽松判断。同步修正一个逻辑矛盾——安装器推荐 --only-shell(只装 headless-shell)而旧校验要求完整 chromium 也在,装完反而体检不过;现统一为"只校验截图真正需要的 chromium-headless-shell"(headless 截图走它);
  • 验证:单测 12/12 ALL_PASS(含镜像工件探活、CFT 结构断言、坏域名 1.8 秒判死、browsers_ok 版本匹配正反例);两份 install.py(报告/图表技能)md5 一致,py_compile 通过。
  • 版本 1.16→1.17,分发包随本次重建。

v1.16(2026-10-15)

  • 专家视角绑定升级为"动态引用优先"(大哥追问"专家升级后不用再改技能吧?"):v1.15 是把高级开发工程师工作法则内嵌进技能(快照),专家升级后技能里的副本会过期。v1.16 改为:执行时先用 Glob 探测本机是否安装该专家(~/.workbuddy/plugins/ 下搜 **/senior-developer/agents/*.md、**/senior-developer*.md)——探测到就读取专家定义全文并以其为准(专家升级 → 技能下次执行自动用上新版,不用改技能、不用重打包);探测不到(对方电脑没装该专家)才用内嵌精简版兜底。彻底回答"升级要不要改技能":本机装了专家就永远不用改;兜底版只在无专家电脑上生效。
  • 版本 1.15→1.16,分发包随本次重建。

v1.15(2026-10-15)

  • 新增「专家视角自动绑定:高级开发工程师(Senior Developer)」章节(大哥要求"安装使用后自动选择该专家视角"):经查 WorkBuddy 官方文档,技能的 SKILL.md frontmatter 无 expert/persona 字段、"专家"是会话级 UI 选择,技能无法代替使用者点选——故把该专家的工作法则写进技能正文(每次调用必加载),实现等价效果且不依赖对方电脑装没装这个专家。章节含:四条核心原则(交付为王/小步快跑/言出必行/简洁高效)、三段式工作流程(任务分解≤10行 → 写验报增量循环 → 交付清单)、代码自检清单、错误恢复策略(根因→一次修复→复验→三停原则);description 同步注明。若使用者已显式选择其他专家,尊重其选择,本绑定仅限"怎么干活"的方法论层面。
  • 版本 1.14→1.15,分发包随本次重建。

v1.14(2026-10-15)

  • 改进建议专页 UI 对接不整齐(大哥截图实锤)+ 行距低估溢出隐患(二审实锤):班级报告 PPT 改进建议页旧版卡高钉死 2.7cm、间距 0.18cm 近贴、编号圆悬卡片中部、文字贴顶、短卡底部大片死区。_improve_slide 重构(v3.4→v3.5):
    ①行距改按字体真实度量——旧估值按 1.22em 算行高,但微软雅黑 hhea 实测单行行距 1.32em(asc2167+desc536/upm2048),乘 1.22 行距倍数后真实行距 1.61em,估值低估 32%,4 行条目必溢出横带。改为 PITCH = 1.33×1.22(1.33 含 1% 安全系数);_wrap_lines 同步扣除文本框内边距 0.25cm/侧。
    ②卡高按各自行数自适应——旧版"统一取最大行数"在修正行距后 5 条放不下版面;改为逐条算高(0.62+L×行高+0.24),间距封顶 1.0cm、富余匀入卡高(封顶 +1.2cm/条),条目稀才放大间距。
    ③字号自适应降档——11.5/10.5/9.5 起步,放不下逐档降到 8.0pt,条数 1~6 都散不了架;编号圆牌对齐首行中心、正文垂直居中、标签同偏移保证横向对齐。
    验收方法(verify_p11_layout.py,作者本地工作区留存、非技能包组成部分):python-pptx 识别横带(AUTO_SHAPE w≈30.27)→ 校验 x/宽一致、间距均匀、底部不越界、徽章中心==正文首行中心、文本框高≥真实行数×真实行距。四年级 9 套(班级×4/年级/个人×4)全部 ALL_PASS。
  • 修班级分数段文字漏段 bug(全量审计新抓,文不对图第 5 处):analyze_chart 班级分数段分支算"不及格(<60)"时漏加 50-59.9 段(只加了 0-29.9/30-39.9/40-49.9),导致 1班文字"<60 1人"与图及等级结构"3人"矛盾、与自带的不及格面 7.3% 也矛盾。修复后四班三方自洽(1班3人/7.3%、2班2人/4.9%、3班1人/2.6%、4班2人/4.9%,各段合计=实际统计人数)。年级分支本就正确(50-59.9 单独列出),未动。
  • 数据链全环复核:HTML 内嵌 SD 与 sd_dump.json 逐字段一致(166 人);四班在册/统计/均分/免体名单与报告文字完全吻合(1班42/41/87.2/夏凯琪,2班41/41/91.5/无,3班41/39/90.2/刘姝仪、刘双子潇,4班42/41/88.7/唐梓洋);scan_badwords 18 文件全 PASS。

v1.13(2026-10-15)

  • 修班级视角"男女对比"图文错配 + 年级视角性别图数字错位(大哥截图实锤"文不对图"):大哥截图抓到四2班「男(19人) vs 女(22人) 各项目均分」图下方挂的是「各项目平均分(本班 vs 年级)」文字。全量静态审计(解析 HTML 全部 44 张图的模块题+图题,逐对跑 analyze_chart/chart_extra)后确认 4 处病灶,全部修复:
    ①班级视角分支顺序 bug(4 个班全中)——模块名"男女生对比(各项目均分)"同时含"各项目+对比",被 analyze_chart/chart_extra 班级段的"本班vs年级"分支抢先匹配,男女图永远配不到性别文字。修复:性别分支前置 + 各项目分支加 not (&quot;男&quot; in t or &quot;女&quot; in t) 排除,双保险;班级男女文字增强为"落差最大项目(男女均分)+ 女生占优项 + 男生占优项 + 人数",空列表回退"无明显占优项目"(原"部分项目"与事实矛盾)。
    ②年级视角总分图数字错位——"男女生总分均分对比图"分支误用分项目口径的 gd_m/gd_f/gd_gap(肺活量 83.4/92.0/8.7),与图上真实总分(88.0/90.7/2.7)对不上。compute() 新增独立总分口径 gd_tm/gd_tf/gd_tgap/gd_tdir(注释明示禁止混用),总分分支改引新字段。
    ③班级视角"与年级分数段占比对比"缺判断词——原文案"——本班四2班年级整体水平"缺动词,已按班均分 vs 年级均分补"高于/低于/持平"。
    ④"差距换算成人数"0 人尬文案——本班优秀段已达年级占比时输出"这0人就是攻坚目标数",改为条件分支"已持平或超过年级占比,重点是保持现有节奏、防滑坡"。
    另修展示差值四舍五入一致性:所有"(女X分、男Y分,差Z分)"的 Z 一律按展示值相减计算(round(round(a,1)-round(b,1),1)),防止读者拿图上两数相减对不上声明差值;涉及年级性别两图、班级男女两图、结论/提升计划两处性别落差段。配套图表技能 v1.6 修图题人数含免体问题(年级页 78/88→77/85;1班 女23→22;3班 女21→19;4班 男20→19),图文人数口径统一为"免体不计入统计"。
  • 新增文不对图审计脚本用法(audit_chart_text.py,作者本地工作区留存、非技能包组成部分):解析源 HTML 全量 (模块题, 图题) 对 → 实跑两个文字函数 → 逐对打印,改任何文字逻辑后必跑,人工核对图文对应。
  • 四年级全套重新生成验证:年级 16 页/12 图、班级×4 各 12 页/8 图、个人×4 各 9 页/5 图,scan_badwords 18 文件全 PASS;2 班成品抽查"图题男(19)vs女(22) ↔ 文字男生19人、女生22人、肺活量女92.1/男79.7差12.4"完全对齐。

v1.12(2026-10-15)

  • 数据唯一依据锁成永久铁律(大哥钦定,防"胡编乱造"担忧):大哥要求"必须以 HTML 实际成绩为唯一依据、禁止胡编乱造,锁死、不许任何人改、再进化也不许动依据"。三处落地:①SKILL.md 铁律0 标题加"大哥 2026-10-15 钦定永久锁定"并新增 🔒 锁定声明(唯一依据=HTML 内嵌 SD 实际成绩;禁编造/禁估算/禁读图凑数;无真实数据宁可报错退出);②build_report.py 顶部铁律0 同步升级;③build_report.py main() 加载 SD 后加硬闸——students 为空即 SystemExit 拒绝生成,且每次构建打印 DATA_LAW_OK 唯一来源=HTML内嵌SD(students=N) 零手填/零估算/零读图/零编造 留证可审计。原有 --html/--sd/--out-dir 必填 + compute(sd) 现算结构不变,本次是把"唯一依据"从约定升级为不可绕过的硬闸 + 明示永久锁定。

v1.11(2026-10-15)

  • 修个人视角"学期目标"写死年级均分(大哥抽查实锤):个人提升计划"优势保持与目标"原把学期目标设成 年级均分(四年级=89.4),导致 49/51 分的补弱生被要求"守住89.4分底线"、94.8 分尖子又觉得目标太低——两头不对症,正是套话。新增 _sem_goal(t) 按学生当前段位定"下一道达标线":<60→"先冲过60分把及格线拿稳";60—79.9→"冲过80分进良好段";80—89.9→"冲过90分进优秀段";≥90→"守住优秀段(≥90)向满分冲刺"。同步把三方对比图加厚段"年级均分是学期底线"改为"学期参照线之一",不再暗示年级均分是硬底线。实测四生全部对症(刘美祺49/于金琪51→冲60,张曦粲79.9/包璐73.3→冲80)。

v1.10(2026-10-15)

  • 个人视角文件名补班级(大哥反馈"个人视角文件名没显示班级"):build_report.py 产物命名中,个人视角此前只拼学生名(…个人视角(刘美祺)),缺班级难辨归属。改为拼「短班名-学生名」(…个人视角(1班-刘美祺)),班名沿用班级视角同一套 V[&quot;short&quot;] 短名映射(四1班→1班),与「班级视角(1班)」口径一致;个人视角必传 --classes(该生所在班),短名缺失时 .get(c, c) 回退全名,不会拼空。年级/班级视角命名不变。

v1.9(2026-10-14)

  • install.py 截图浏览器补齐加固(跨电脑健壮,交付分发包专项):原 step4_browser 仅当 playwright 本次新装(&quot;playwright&quot; in need)才装浏览器二进制;若电脑早已装好 playwright 但缺浏览器二进制,会被误判“已就绪”直接跳过,导致截图通道缺二进制。改为按 SKILL.md deps 是否含 playwright 决定 needs_browser,与“本次是否新装”解耦——只要本技能需要截图且缺二进制就自动补齐(国内镜像精简→完整两级回退),保证“快速安装 + 环境自检 + 即时应用”在干净/半装机器上都成立。与图表技能 v1.4 的 install.py 改动一致。
  • 全技能漏洞复查(分发包定版前):两技能 scripts 全量通读 + 硬编码绝对路径扫描(铁律5,零命中)+ py_compile 全过 + check_env 双过(报告 5/5、图表含 27 项端到端自测)。报告侧 build_report/extract_sd/scan_badwords/check_env 无新增崩溃点;图表侧另修“无总分列崩溃”(见图表技能 v1.4)。

v1.8(2026-10-14)

  • 结构铁律 + 图表分析去重/提质(大哥反馈"升级后报告勉强60分"驱动):①新增结构铁律——无论年级/班级/个人哪种视角、无论 Word 还是 PPT,报告前半部分必须放全 HTML 图表并逐一分析,改进建议板块(结论与工作安排/本班对策与安排/本人提升计划)永远是整个报告最后一个板块,绝不允许插在图表前或穿插(已写死在 build_word/build_ppt 章节装配:一、总体情况→二、图表与据图分析→三、结论与工作安排)。②修图表分析重复 bug——analyze_chart/chart_extra 的"三率"分支原本用"模块标题含'三率'"匹配,导致同模块下"各班总分平均分"与"各班优良率/及格率/不及格率"两张图拿到完全一样的分析文字;改为按图题关键词(及格率/不及格率/优良率)匹配,两张图各得专属分析。③逐图分析提质——各单项(BMI/肺活量/50米/…)图表分析新增"该项目属×类素质,弱项加练方向:…"一句,把每项弱项直接接到素质类别与具体练法,落实"哪个项目弱→背后素质弱→怎么练"的逐一分析,不再只刷模板套话。④班级/个人视角同步沿用 v1.7 的 建议升级(项目与教法调整去空话、新增性别落差段、个人处方加素质标签)。
  • 四年级回归验证:三率模块两图分析不再重复;50米单项分析示例="50米各班平均分图显示…该项目属速度与灵敏,弱项加练方向:速度用高抬腿+小步跑各3组、30米加速跑4次…";年级/班级/个人三视角 Word 重出 + scan_badwords PASS。

v1.7(2026-10-13)

  • 改进建议模块重写(大哥反馈"三、结论与工作安排"空话多、缺具体措施驱动):_improve_items 三视角全部改为"数据驱动的具体练习法",删除"帮扶台账/闭环销号/器材循环站/导学—精讲—多练—点评/示范—分解—练习—反馈"等空泛措辞。新增两张数据表 + 一个拼装助手:ITEM_QUALITY(项目→素质类别,对齐 domain-knowledge.md 第六节教研话语体系)、QUALITY_RX(素质类别→具体加练内容)、_quality_prescribe()(按素质去重拼装);compute() 新增班级级男女生各项目均分落差(cgd_item/cgd_dir/cgd_m/cgd_f/cgd_gap)。
  • 年级:①弱项加练——最弱两项(现算均分)→ 对应素质 → 加练内容;②班际薄弱项——班×项目低于年级线最明显的组合(差值>1分)→ 素质 → 练法;③性别落差——落差最大的班级 → 项目 → 素质 → 练法。
  • 班级:项目与教法调整改为"本班均分→对年级差→素质→加练",去掉空话;新增"性别落差"段(本班男女生落差最大项目 → 素质 → 练法)。
  • 个人:在校处方加"素质类别"标签,末尾归纳待补项集中在哪类素质短板。
  • 四年级实测:50米(74.3)/体前屈(80.9) 为最弱两项→速度与灵敏/柔韧;班际最弱组合 四1班 50米(班均70.2/年级74.3,差4.1分);性别落差最大 四2班 肺活量(女92.1/男79.7,差12.4分)→ 形态机能。机检 PASS、零回归。

v1.6(2026-10-13)

  • 字数口径改版(大哥定版:“不要刻意减少字数,以能够分析清楚、内容真实有效为第一目标”):Word 字数从“区间硬约束”(年级 3800-4200 / 班级 2800-3200 / 个人 1800-2200)改为“基准线 + 内容优先”——年级 4000 / 班级 3000 / 个人 2000 为基准,不设硬区间、不为凑区间砍实质内容;三视角实测 4878/3272/2439 字确立为优良样例,同步写入 SKILL.md 默认设置表(新增“输入边界”行)/第6步/锁死口径表与 prompts.md 第6条;5000 字上限(仅约束 Word)与改进建议占比 ≥20% 两条红线不变。
  • 输入边界澄清(大哥定版:“不需要让报告技能也支持文化课单页”):SKILL.md 开头与第1步新增输入边界说明——本技能只承接体质健康/体育成绩多分页“分析图表 HTML”(const SD 结构),文化课单页 HTML(图表技能 analyze.py 路线)明确不在支持范围;extract_sd.py 对文化课 HTML 判“不认识”并说明缺什么结构后停止,属设计边界(2026-10-13 全链路验证实测确认),非故障、不修功能。

v1.5(2026-10-13)

  • 修全0分数据除零崩溃(极限测试实锤):全年级所有学生所有项 0 分时 V[&quot;avg_total&quot;]=0,_improve_items 与 chart_extra 两处 cdiff / avg_total * 100 ZeroDivisionError。修法:先判后除,均分 0 时占比显示“—”。
  • 修整班缺考 compute() 排序崩溃(极限测试实锤):某班全班无总分时 sd[&quot;classAvg&quot;][c][&quot;总分&quot;] 为 None,cls_sorted 排序键混 None/float TypeError。修法:班级 avg 构造时 or 0 归一(下游 .get(&quot;avg&quot;,0) 全链路安全);班际极差 cdiff 改为只按有真实均分的班计算(无数据班不进极差,避免年级文案“极差虚大”);worst_fail_rate 补 n=0 守卫。
  • 修 check_env 浏览器二进制校验漏洞(全链路首跑实锤):原逻辑只查“目录内有 chromium 前缀文件夹”即放行——本机默认缓存里是旧版 chromium-1228 而 playwright 包要 1243,自检 5/5 全绿、一生成就崩 Executable doesn&#x27;t exist。修法:读 playwright 包内 browsers.json 拿所需 revision,双重校验“版本匹配目录存在 + 可执行文件存在”(chromium-headless-shell 的磁盘目录名是下划线,与 browsers.json 的连字符 name 不同,已处理映射);不匹配时精确提示缺哪个版本,并保留三选一修复指引(镜像精简/镜像完整/离线拷贝+设 PLAYWRIGHT_BROWSERS_PATH)。
  • 回归验证:标准 240 人 × 三视角 × 修复前后对比(4878 字/19 页/机检 PASS 完全一致);极限 6 场景 + 特殊 8 场景报告链路全过;高峰 1250 行 × 三视角全过(HTML 1.0s / SD 0.3s / 报告 4.6-5.4s);图表技能 selftest 27 项零回归。

v1.4(2026-10-13)

  • 模板终板第三轮换血(大哥两轮驳回驱动):v1.3 的 64/静36 被大哥实测否掉("第2套和第5套不好,颜色太暗了"——64 近黑城市楼、36 暗紫星空),换入两套亮底英文信息图 信息图-OKR规划(02306)(玻璃建筑商务蓝,3.6MB)与 信息图-简约图表(02310)(极简黑白,剥 20MB 背景 GIF 后 1.0MB)。终板 5 套:夕觉24 / 02306 / 02310 / 67 / 静24(15.1MB,原 20 套存档 10-技能发行存档(原20套)\)。五套全链路终验 ALL_PASS(各 21 页:主标题齐全、零场景残留、零暗元素、机检 PASS)。
  • 修封面多行英文标题被清空(主标题丢失):封面匹配的 flat 只剥空格不剥换行,"SIMPLE\nINFOGRAPHIC\nSLIDES"匹配不上纯英文规则,掉兜底被清空(02310 实测)。flat 增剥 \n/\r。
  • 新增 _fit_main_title 封面长标题入窄框适配:英文短词标题位接中文长标题必溢出——语义断两行(体质/健康/测试/成绩/分析/报告等词边界取最近中线点)+ 字号按框宽/框高自适应缩小;竖排框(eaVert)/ 组内形状 / 缩放过猛(<原生55%)一律原样返回不动 DNA。实测 02310:31pt→缩放后 41.7pt 两行"本年级体质健康/测试成绩分析报告"入 12.2cm 框。
  • 修深色模板暗卡片(67 实测 #2A313D/#333B49×5):深色判定分支不再染暗 LIGHT/LIGHT2——深色模板自 v3.1 起全篇白纸自绘,暗卡片落白纸既像暗块又让深字看不见;卡片底色恒浅(F4F6FA/EAEFF7)。
  • 修页面不归一化(设计挤一边/出界):python-pptx 改 slide_width/height 不联动形状坐标——原生 25.4cm 小版(02310/67)设计挤左 75%、原生 50.8cm 大版(02306)右下整块出界。新增按比例缩放:幻灯片/版式/母版全部形状的位置+尺寸+显式字号(组框缩放自动等比拉伸组内元素)。
  • 修右侧标题窄框折行(02310 p13 实测 7cm 框):_dna_prep 标题载体拓宽改方向感知——右半页载体向左拓到左边距(右边缘不动),左半页载体维持向右拓。
  • 预览图真彩化:02306/02310 封面预览从手绘近似图改为按模板 XML 真实几何重绘(02306 用真实建筑照片+白字坐标,02310 用胶囊线框+三行黑字+十字线坐标);总览图五套封面全部与模板真身一致。

v1.3(2026-10-13)

  • 内置模板20套→5套(105MB→16.7MB):XML 逐套审计 + DNA移植实跑双重依据精选。场景铁律:这是成绩分析报告,不是毕业答辩——封面原生大字(≥54pt)、大学校名、"答辩人/报告人"占位、"论文框架"式目录一律出局(大哥实地否掉"复旦/清华式大标题")。终板:夕觉24(默认推荐)/ 学术答辩-64 / 学术答辩-67 / 静24 / 静36。原20套整体存档于作者本地(不在技能包内);代码引用全切换,check_env 阈值≥4套。
  • 修 compute() 整项无数据崩溃:某项目整列缺测时 gradeAvg[it] 为 None,sorted 混入 None 直接 TypeError(dict.get(it,0) 默认值只在键缺失时生效是根因)。修法:源头过滤无数据科目(与图表技能同口径)+ item_class 过滤班级级 None + 下游6处空值守卫。
  • 修 DNA 移植占位文字漏清理(4处):①占位标题话术模式覆盖不全——"请在此位置添加你的论文名称"不命中旧正则,被当 filler 清空导致封面主标题丢失(霸象25 实测48pt空框);②"报告人"不在封面替换规则;③PLACEHOLDER_SECS 缺"论文框架/论文结构"等6词,目录页残留;④封面未命中规则的中文宣传语一律清空(封面信息全由生成逻辑重写)。另加全年级缺考除零守卫(DATA_EMPTY 明确退出)。
  • 验证:6套候选端到端实跑(问题数据→HTML→SD→build_report→残留扫描→badwords机检)全部通过;终板5套按编号1-5复跑,21页/主标题齐全/零场景残留/机检PASS。

v1.2(2026-10-13)

  • V7 机检词表单一真相源:负面语言清单收敛到唯一权威 references/badwords.json(分类 + 完整词优先;合并原 domain-knowledge.md 与 scan_badwords.py 两份、消除漂移,并补入"第一个世界/第二个世界/把这个结果放回/图景"等漏网词)。scan_badwords.py 改为启动时加载该 JSON,词表缺失/损坏硬失败(退出码 2),质量闸门不被静默绕过;domain-knowledge.md 第七节改为指向 JSON、不再重复罗列。

v1.1(2026-10-13)

  • 配置外置 + 安全升级机制:新增外部校本配置文件 ~/.workbuddy/school_prefs.json(学校名 / 默认配色模板 / 校本措辞),存于技能文件夹之外,升级技能只覆盖技能文件夹、校本习惯原样保留,谁的家底都不丢。
  • references/prompts.md 自修改条款改为读取外部校本配置(升级不覆盖)。
  • 安装器 install.py 增加版本比对:重跑时打印"首次安装 / 升级 vX→vY",并提示校本配置不受影响。
  • 报告生成接入校本配置:学校名进入 Word 元信息与 PPT 封面;custom_prompt 作为"校本专项要求"段落显示;--colors / --template 缺省时取校本默认。
  • 班级视角新增"必须指定 --classes"硬性卡口;个人视角家庭无器材练习计划落地;Word 结语与 PPT 建议页同源同步。

v1.0

  • 初版:年级 / 班级 / 个人三视角 Word + PPT 报告,HTML 图表原样截图,三视角改进建议。

常见问题

5 问
答案由本站依据条目字段整理
YB学校体育成绩分析报告2怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_0ac01916/yb-pe-fitness-score-report-yanbo。安装方式为未标注。装完刷新技能列表或重开客户端。

YB学校体育成绩分析报告2支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

YB学校体育成绩分析报告2权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

YB学校体育成绩分析报告2收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

YB学校体育成绩分析报告2用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。