# Training Content Restructure

> 用户对整套培训材料发"全局调整"时使用——全链路重构与一致性治理。

- Skill: `jorinyang/training-content-restructure` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add jorinyang/training-content-restructure`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jorinyang/training-content-restructure/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: jorinyang (https://skillmd.com/u/jorinyang)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/jorinyang/training-content-restructure

---


# Training Content Restructure — 培训资料全链路重构

## When to Use

用户对已交付的整套培训材料发出"全局调整"指令时触发（移除模块/强化模块/改学练比例/改课程制/借鉴外部方案重构/要求"一致性校验+仅保留最新版本"）。单文档小幅修改走 html-ppt 的 training-document-cascade 即可，本技能管整库重构。

当用户对已交付的整套培训材料发出"全局调整"时使用（实测场景：移除 M6 模块、强化 M2/M4、学练比 40/60 重构、2 天制拆 8×2h 课程制）。本技能是单文档级联同步（见 html-ppt/training-document-cascade.md）的**整库升级版**。

## 触发场景

- 移除某模块全部内容（如 M6 服务边界与角色工作法）
- 强化指定模块（概念/边界/框架）
- 学练比例重构（40% 学习 + 60% 实战/探讨）
- 课程形式变更（2 天集中 → 8×2 小时课程制）
- 借鉴外部课程方案重构（结构/详细安排/考核权重化）

## 交付物全景（OPT 培训材料标准族）

```
01-培训大纲-vN.M.md          ← 协调件（唯一结构基准）
对内-讲师/ 01-课程教材（内容源头）02-讲师手册 03-沙盘剧本 04-测试题库 05-培训PPT
对外-学员/ 01-作业模板 02-工具包 03-学员手册 04-在线练习系统(生成物) 05-练习题库
生成管线：_practice_bank.json → _build.js → 04-在线练习系统-vN.M.html → OSS 部署
```

## 执行模式（按序）

### 1. 设计先行：大纲即协调件
- **主代理亲自改写大纲**（v0.x 升级），锁定新结构/时长/口径，再派子代理；不要委托大纲设计
- 旧版大纲文件**保留到所有在途子代理完成后再删**（子代理任务写明读 `01-培训大纲-v0.x.md`，文件消失会导致它们读错或失败）
- 结构性变更（如拆课制）先核算总时长与 40/60 比例再排课表

### 2. 黑名单词汇制度
- 定义被删模块的术语黑名单（实测：三本账/双清单/三不接/T1 四维/合同语言/分轨工作法/服务边界与角色工作法）
- 铁律：正文零出现；**修订说明/版本块/变更记录区豁免**（历史性提及合法）
- 区分"长得像黑名单的框架术语"：五层封装的"责任边界"层名、M3 责任容器、人机边界语义——必须保留并写入任务 context
- 统一替换口径（接不接→Workflow 适配性判断；三本账叙事→"我们是谁+Workflow 是什么+能解决什么"）

### 2b. 语义级黑名单扫描（字面词清零 ≠ 内容清零，实测踩坑）

- 字面黑名单 grep=0 之后，**用户仍可能发现残留**——被删模块的内容常以不含字面词的措辞存活。实测：M6 移除后题库仍残留"对赌条件""T1 升格四维评估"题，字面黑名单完全扫不到
- **语义词族**必须另列并单独扫（按被删模块的概念族发散，商业筛选类 M6 实测词族）：对赌 / 升格 / 四维评估 / 客户筛选 / 接洽四步 / 破冰探底 / 引流 / 沙龙 / 期望管理 / 报价工具 / 替代管理岗 / 免费工具
- **命中 ≠ 删除**：语义命中先对照教材原文核对——教材仍保留的概念（实测："能力驱动/焦虑驱动客户"是 M1 教材原文口径）属合法内容；只删教材里已不存在的框架（升格四维、对赌结构谈判）
- 题库/练习系统是重灾区：题干、选项、解析三处都要扫；替换题保持模块分布与题型配比不变，并在修订说明记录换题清单
- 练习系统改题且构建管线已删时：从 HTML 内联 `const BANK=` 正则括号配平提取 → json.loads → 按 id 改 → `json.dumps(ensure_ascii=False, separators=(",",":"))` + `<` 转 `\u003c` → 整块回写 → 重新部署 → urllib 拉线上 md5 对比

### 2c. 比例/结构类要求必须在产物"可见结构"中体现（实测踩坑，用户纠正）

- 计划层达标 ≠ 产物层达标。实测：学练 40/60 写进了大纲与教材时间盒，但 PPT 里每个实战环节只有 1 页浓缩页（9/67 页 = 13%）——用户翻 deck 时"看不到练习内容"，提出复核
- **验收比例类要求（学练比/实战占比/双线内容）时，必须核算产物层的可见占比**：PPT 实战页数/总页数、手册实战页占比、作业页是否在显眼位置。课时占比 60% 的环节在 deck 里应有 ~30% 页面
- **实战环节扩页分解模板**（每环节 1 页浓缩 → 2-3 页实内容）：①任务说明页（背景卡+任务+要求）②规则/流程页（时间盒+互评规则+操作指令）③产出模板页或参考答案页（填空模板/判据陈述示范/第一刀）
- 内容源冲突时以教材为准：子代理任务书与教材原文冲突（时间盒/术语），指令中写明"与教材逐字级一致"，子代理按教材修正并在汇报中说明

### 3. 并行子代理波次（3 并发上限）
- 依赖链：大纲 → 教材（内容源头）→ 讲师手册/题库/剧本/作业/工具包 → PPT/学员手册 → 生成物重建+部署
- 每个任务 context 必备：新大纲路径、黑名单、替换口径、保留铁律、改造清单、输出路径、版本块要求、校验要求（grep 黑名单=0 + 结构抽查）
- 波次间依赖必须严格；同一波次内任务彼此独立

### 4. 版本引用同步
- 文件升版后全库 grep 旧版本串统一替换（实测：`03-沙盘剧本-v0.1`→v0.2→v0.3、`04-测试题库-v0.1`→v0.2 各漏 1-2 处）
- **并行波次产物会漂移**：波次 2 的文件在波次 1 文件升版前就写好了版本块（实测：讲师手册写"作业模板-v0.2"时 v0.3 尚未存在、剧本写"大纲-v0.4"时 v0.6 未存在）——终检必须逐文件扫"配套"行指向的版本是否仍存在
- 终检再扫一轮旧版本引用

### 4b. 结构术语迁移清扫（结构变更类重构必做）
- 课程结构变化时，旧结构的**术语**也会残留（实测：2 天制→8 课制后，剧本"Day 2 下午沙盘"/题库"Day 2 下午"/作业模板"认知测验 Day 2 已完成"/工具包"Day 2 学习提升"等 6 处漏改）
- 终检加 grep 旧结构词（`Day ?[12]`、`晨间回顾`、`第 X 天`），映射到新结构词（课号、课间回顾），逐处人工确认上下文后替换
- 同理适用于其他结构轴切换（模块编号、阶段命名、分组方式）

### 5. 七域终检脚本（一次跑完）
结构完整性（文件齐全/无旧版残留）→ 日程一致性（大纲↔教材↔手册时长逐字比对）→ 口径合规（黑名单+真实姓名，修订说明豁免）→ 题库（题数/模块分布/答案-选项位置/跨库重复）→ HTML 制品（页数/内联题数）→ 版本引用（零旧引用）→ OSS 线上一致性（本地 md5 vs 线上 md5，`urllib` 拉取对比）

### 6. 仅保留最新版本
- 删除所有 v0.x 旧文件、临时文件（`_*.md`/`_*.png`）、`__pycache__`
- 用户说"仅保留最终交付结果/移除多余内容"时，**构建管线也一并删**（`_*.py`/`_build.js`/`_practice_bank.json`/`_build_template.html`）——题库源可从练习题库 MD 或练习系统内联 BANK 恢复（恢复路径见 2b），不留脚本不算丢资产
- 保留：活文档（决策审计轨迹）+ 用户提供的参考源文件（docx 等，永远不删）
- 删前确认无其他文档引用；删后重跑终检确认零残留

## 子代理故障恢复（实测三类）

- **配额 403（usage limit）**：重派同一批任务即可（当前模型），任务定义无需改
- **会话存储写入失败**（"turn was stopped because session storage could not be written"）：文件已落盘但最终汇报丢失——**不要重跑任务**，直接 stat/read/grep 验证产物文件；磁盘充足时属瞬时故障
- **迭代上限中断**（max_iterations）：子代理会留"收尾未执行"说明（notes 裁剪/验证/删旧版）——主代理接管：跑遗留脚本、补 Playwright 实测、删旧版

## 校验脚本自身陷阱

- f-string 里写正则 `\n` 会被转义成真实换行；`("M2", "105'")` 再拼 `M{m}` 会变 `MM2`——正则模板变量传裸值
- 豁免判断：修订说明不一定在文件头 12 行内（HTML 单行结构可能在第 400+ 行）；用"上下文窗口含 修订说明/变更记录/移除/已删除"判定，或人工逐条确认
- read_file 会把 UTF-8+CRLF 的 .md 误判为 binary（`is_binary: true`）——用 execute_code `open(encoding='utf-8')` 读取
- 子代理报告"完成"≠文件正确：批次完成后独立校验（行数/结构标题/黑名单 grep/页数），尤其 summary 含警告时

## 参考文件

- `references/html-artifact-verification.md` — HTML 制品（PPT/手册/练习系统）Playwright 验证选择器陷阱与断言模式

