# 课程模板流水线 Skill

这个 skill 面向中文课堂的小专题课程设计流程。

它的目标不是只生成某一个页面，而是把一个“题目灵感 / 设计角度”逐步变成一整套可用的课程任务文件。

---

业务背景请统一参考：
`业务背景.md`

---

# 当前工作流

## 阶段一：灵感 -> demo 页面
最开始输入的是：
- 题目灵感
- 设计角度
- 课堂上的切入想法

这一阶段最重要的事情是：
**先做出 __demo__.html（效果演示页）**

阶段一到阶段三的产物，统一放在：
**当前工作目录下新建的 `任务名称/` 文件夹里。**

也就是说：
- 不先放到 templates
- 不先放到 skill 目录根部
- 而是在当前工作目录里，先建立一个任务临时文件夹，再往里写 `__demo__.html`、`__student__.json`、`__teacher__.json`

---

## 阶段二：生成 __student__.json
这一阶段不要求一定已经有 __teacher__.json。
这一阶段甚至不要求一定已经有完整作品。

这一阶段的核心目标是：
**先把学生任务的步骤和评价结构 JSON 确立下来。**

对应输出：
`__student__.json`

---

## 阶段三：生成 __teacher__.json
在 __student__.json 已经明确后，再整理教师侧信息。

这一阶段的核心目标是：
**明确题目设计目的、训练重点、适合学生类型，以及老师上课时如何判断和引导。**

对应输出：
`__teacher__.json`

---

## 阶段四：JSON -> HTML，并按目录打包
第4阶段现在拆成两个脚本：

### 1）build_template_views.py
校验通过后，在原文件夹中直接生成：
- `__student-view__.html`
- `__teacher-view__.html`
- `index.html`

其中 `index.html` 采用固定脚本规则：
- 只展示两块内容
- 左边是“评价目标”
- 右边是“步骤”
- 不显示任务标题
- 不显示一句话说明
- 不再依赖临时提示词拼装
- 统一由脚本直接根据 `__student__.json` 渲染

### 2）move_template_task.py
在页面已经生成好的前提下，把整个文件夹移动到：
`yiran-playground-template-use` skill 的 `templates/`

同时按规则改名，例如：
`a100_给依然老师设计一个AI画像`

并且：
**move 成功后会自动触发 `yiran-playground-template-use` 的索引重建。**

---

# 当前目录结构

- `SKILL.md`：技能总说明
- `prompts/阶段1-demo生成.md`：如何把灵感先做成 demo 页面
- `prompts/阶段2-student生成.md`：如何生成 __student__.json
- `prompts/阶段3-teacher生成.md`：如何生成 __teacher__.json
- `prompts/阶段4-打包落盘.md`：如何组织文件并调用第4阶段脚本
- `scripts/render_teacher_view.py`：把 __teacher__.json 渲染成教师查看页
- `scripts/render_student_page.py`：把 __student__.json 渲染成学生页
- `scripts/build_template_views.py`：在原目录生成 __student-view__.html 和 __teacher-view__.html
- `scripts/move_template_task.py`：移动整个任务文件夹到 templates 并改名，同时自动重建索引
- `references/teacher-fields.md`：教师侧字段设计与标签规则说明
- `references/student-fields.md`：学生侧字段说明
- `references/student-example.json`：学生侧 JSON 示例
- `references/student-scaffold.json`：学生侧 JSON 脚手架
- `references/teacher-scaffold.json`：教师侧 JSON 脚手架
- `assets/student-template.html`：独立学生页模板
- 模板库和搜索索引统一维护在 `yiran-playground-template-use` skill 中

---

# 模板索引

模板库和索引统一维护在 `yiran-playground-template-use` skill 中。

`move_template_task.py` 成功执行后会自动触发索引重建。如需手动重建，在 `yiran-playground-template-use` skill 中运行：

```bash
python3 scripts/build_template_index.py
```

---

# 核心原则

1. 先有灵感，再做 demo，再定 __student__.json，再定 __teacher__.json
2. 阶段一到三的产物，统一放在当前工作目录下新建的任务文件夹里
3. __student__.json 先解决学生任务结构
4. __teacher__.json 再解决题目设计目的与教师判断
5. 第4阶段拆成 build 和 move 两个独立脚本
6. templates 作为 skill 的资产目录统一维护
7. 模板有变化后，要重新构建索引
8. demo 中的媒体资源优先使用 CDN 链接，不使用本地相对路径；当前固定前缀为 `https://cdn.yiranlaoshi.com/yiran/workspace-ai-demo`，后面拼接资源相对路径
9. 模板负责布局，提示词负责填内容，脚本负责稳定输出
10. 所有内容优先服务中文课堂和小学生阅读场景
