# 阶段4：打包落盘提示词

用途：
指导 agent 在已有 `__demo__.html`、`__student__.json`、`__teacher__.json` 的前提下，先生成页面，再移动文件夹。

注意：
第4阶段拆成三个独立脚本，不再混在一个脚本里。

---

## 输入前提

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

这个任务文件夹里至少应有：
- `__demo__.html`
- `__student__.json`
- `__teacher__.json`

---

## 脚本1：build_template_views.py

目标：
只要字段校验通过，就在传入的文件夹里直接生成：
- `__student-view__.html`
- `__teacher-view__.html`
- `index.html`

其中 `index.html` 使用固定脚本规则：
- 左边展示"评价目标"
- 右边展示"步骤"
- 不显示任务标题
- 不显示一句话说明
- 这部分不再靠临时 prompt 自由发挥，而是固定走脚本渲染

调用方式：
```bash
python3 scripts/build_template_views.py 任务文件夹
```

适用场景：
- 还在当前工作目录里调试
- 想先看页面渲染结果
- 还没准备正式入库

---

## 脚本2：move_template_task.py

目标：
在页面已经生成好的前提下，把整个文件夹直接移动到 skill 目录下的 `templates/`，同时按规则改名，例如：
`a100_给依然老师设计一个AI画像`

调用方式：
```bash
python3 scripts/move_template_task.py 任务文件夹
```

适用场景：
- 已经确认内容没问题
- 已经有 `__student-view__.html` 和 `__teacher-view__.html`
- 准备正式落库

---

## 脚本3：publish_template.py

目标：
把模板文件夹内所有文件上传到七牛 CDN，完成后重建并上传 `template-index.json`。

处理逻辑：
- 遍历文件夹内所有文件，逐一上传（强制覆盖）
- 相对路径在 CDN 上天然可用，无需重写引用

**CDN 配置：**

| 项 | 值 |
|---|---|
| Bucket | `yiran1` |
| CDN 域名 | `https://cdn.yiranlaoshi.com` |

**CDN 路径规则：**
```
https://cdn.yiranlaoshi.com/myclaw/live/yiran/skills/yiran-playground-template-use/templates/{文件夹名}/{文件名}
```

七牛 key：
```
myclaw/live/yiran/skills/yiran-playground-template-use/templates/{文件夹名}/{文件名}
```

调用方式：
```bash
# 发布单个模板
python3 scripts/publish_template.py templates/a103_做一个介绍页面

# 全量发布所有模板
python3 scripts/publish_template.py --all
```

---

## 一键发布：release_template.py（推荐）

如果已确认内容没问题，可跳过手动执行脚本2 + 脚本3，直接用一键发布脚本：

```bash
python3 scripts/release_template.py 任务文件夹
```

该脚本自动依次执行：
1. `build_template_views.py` — 生成 HTML 视图（Step 1）
2. `move_template_task.py` — 创建新版本目录 vN+1/（Step 2）
3. `publish_template.py` — 上传 CDN + 上传索引（Step 3）

> **注意：** build 阶段仍可单独运行（用于调试预览），脚本1无需通过 release 脚本触发。
> release_template.py 对已入库的 vN/ 目录同样适用，会自动产出 vN+1/。

---

## 原则

1. 先在当前工作目录完成中间产物
2. 先 build，再 move，再 publish
3. build 只在原目录生成页面，不移动
4. move 只负责移动和改名，并自动触发索引构建
5. publish 负责全量上传到 CDN，是最终对外发布的步骤
6. 文件命名固定，不临时改名
