Files

398 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: keping-dir-standardize
description: 将课评目录迁移到标准结构。当用户说"规范目录"、"整理目录"、"目录规范化"、"初始化目录"、"初始化项目"时触发。自动识别当前目录范式,创建标准 .claude/memory/class/ 结构,迁移现有数据(不删除原文件),补建缺失目录,配置课程大纲同步。如果是全新仓库,参考标准仓库创建项目。
---
# 课评目录规范化 Skill
## 功能概述
将老师仓库中的课评数据迁移到统一标准目录结构。
- 自动识别 4 种现有目录范式
- 创建标准 `.claude/memory/class/` 结构
- 迁移现有课评和画像文件(移动,不删除)
- 补建缺失的 `feedback/`、`profile.md`、`summary/`、`补课/` 目录
- 配置课程大纲同步(从独立仓库同步,不提交到本仓库)
- 支持"全新项目"场景(参考标准仓库创建)
- 生成迁移报告
## 触发条件
用户说出以下任意表达时触发:
- "规范目录"
- "整理目录"
- "目录规范化"
- "初始化目录"
- "初始化项目"
- "标准化目录"
- "迁移目录"
## 安全原则
1. **绝不删除文件** — 只移动(mv)到新位置,原位置的文件迁移后不再保留副本
2. **绝不修改文件内容** — 只改变文件路径和文件名
3. **先报告再执行** — 必须先向用户展示迁移计划,确认后再执行
4. **遇到不确定的情况就停下问** — 不要猜测
## 参考仓库(标准范例)
**克力老师的仓库**是最完整的标准范例:
`https://git.qonnwolf.com/keli/ClassFeedback`
新老师或需要补充项目的老师,克隆这个仓库来参考目录结构和配置,但**不是照抄**——只参照结构,数据用自己的。
## 目标结构
```
.claude/
├── memory/
│ ├── class/ # 【核心 - 所有班级课评数据】
│ │ ├── CSP05克力周六1600/ # 班级名 = 课程编号+老师+星期+时间
│ │ │ ├── summaries/ # 班级总结/群发文案
│ │ │ │ ├── YYYYMMDD_CSP05-07_班级反馈.md
│ │ │ │ └── YYYYMMDD_CSP05-07_微信群.txt
│ │ │ ├── 张三/ # 本班学生
│ │ │ │ ├── feedback/ # 个人课评目录
│ │ │ │ │ ├── YYYYMMDD_CSP05-07.md # 正常课评
│ │ │ │ │ ├── YYYYMMDD_CSP05-07(请假).md # 请假记录
│ │ │ │ │ ├── YYYYMMDD_CSP05-07(补课-去AI03茄子周六1900).md # 补课追踪
│ │ │ │ │ └── ...
│ │ │ │ ├── profile.md # 学生画像
│ │ │ │ └── summary/ # 阶段性总结
│ │ │ │ └── 2026-05_月度总结.md
│ │ │ ├── 李四/
│ │ │ │ └── ...
│ │ │ └── 补课/ # 补课学生专用目录
│ │ │ └── 王五/ # 来自其他班级的补课学生
│ │ │ └── feedback/
│ │ │ └── YYYYMMDD_CSP05-07.md
│ │ ├── AICODE03菠萝周六1600/
│ │ │ └── ...(结构同上)
│ │ ├── SPIKE02小Q周六1400/
│ │ │ └── ...(结构同上)
│ │ └── KITTEN04洋芋周六1600/
│ │ └── ...(结构同上)
│ ├── lesson/ # 课程大纲(从独立仓库同步,不提交)
│ │ ├── README.md
│ │ ├── CSP/ ← 信息学奥赛课
│ │ │ ├── CSP01/
│ │ │ └── ...
│ │ ├── AICODE/ ← AI人工智能课
│ │ │ ├── AICODE01/
│ │ │ └── ...
│ │ ├── SPIKE/ ← 乐高搭建课
│ │ ├── KITTEN/ ← 图形化编程课
│ │ ├── VEXIQ/ ← VEX机器人课
│ │ └── GESP/ ← 竞赛项目课
│ └── oj/ # OJ数据分析(仅 CSP 班级,可选)
│ └── analysis/
└── skills/ # 技能脚本(可选)
```
### 班级命名规则
格式:`课程编号+老师+星期+时间`
| 类目 | 前缀 | 示例班级名 |
|------|------|-----------|
| 信息学奥赛课 | CSP | `CSP05克力周六1600`、`CSP01六六周六1045` |
| AI人工智能课 | AICODE、AIMAKE | `AICODE03菠萝周六1600`、`AIMAKE02东东周五1630` |
| 乐高搭建课 | SPIKE、WEDO、FAXIAN 等 | `SPIKE02菠萝周六1400`、`WEDO01小Q周六1030` |
| 图形化编程课 | KITTEN、SCRATCH | `KITTEN04洋芋周六1600`、`SCRATCH03橙子周五1900` |
| VEX机器人课 | VEXIQ、VEXGO 等 | `VEXIQ01菠萝周六1400` |
| 竞赛项目课 | GESP、ENJOYAI 等 | `GESP03克力周日0900`、`ENJOYAI01东东周六1400` |
### 课程类目与编号前缀
用于从课程编号前缀识别课程类目,规范班级命名和分类:
| 类目 | 课程前缀(不含数字) |
|------|---------------------|
| 乐高搭建课 | YISHI、HUOCHE、MATATA、FAXIAN、FAMING、WEDO、ROCKET、SPIKE |
| 图形化编程课 | KITTEN、SCRATCH |
| VEX机器人课 | VEXGO、VEXPRE、VEXIQ、V5RC |
| AI人工智能课 | AICODE、AIMAKE |
| 信息学奥赛课 | CSP |
| 竞赛项目课 | ENJOYAI、BOTBALL、ROBORAVE、GOC、GESP、CSP-J、NCT、CSP-S、INFOR、LABOR、FSHH |
| 杂项类目课 | XITI、CUSTOM、FESTIVAL |
### 考勤状态说明
每次课后,每位学生必须有且仅有一条 feedback 文件:
| 状态 | 文件名 | 说明 |
|------|--------|------|
| 正常 | `YYYYMMDD_课程编号.md` | 完整课评 |
| 请假 | `YYYYMMDD_课程编号(请假).md` | 简要记录 |
| 补课 | `YYYYMMDD_课程编号(补课).md` | 记录补课 |
### 补课双向追踪
**1) 接收补课(外班学生来本班)**:
- 存放在 `补课/学生名/feedback/YYYYMMDD_课程编号.md`
- 不建 `profile.md` 和 `summary/`
- 课评开头注明来源:`(补课,来自 CSP05克力周六1600)`
**2) 外出补课(本班学生去别班)**:
- 存放在学生自己的 `feedback/YYYYMMDD_课程编号(补课).md`
- AI 读取后知道该学生当天的课评在补课班级
### 课程大纲同步
`.claude/memory/lesson/` 从独立仓库同步,**不提交到老师自己的仓库**:
| 目录 | 类目 | 来源 |
|------|------|------|
| `lesson/CSP/` | 信息学奥赛课 | `https://git.qonnwolf.com/keli/CSP2026` |
| `lesson/AICODE/` | AI人工智能课 | `https://git.qonnwolf.com/keli/AICODE2026` |
| `lesson/GESP/` | 竞赛项目课 | 按实际仓库配置 |
| 其他前缀目录 | 对应类目 | 按实际仓库配置 |
需在 `.gitignore` 中添加:`.claude/memory/lesson/`
## 执行流程
### 场景判断
先判断属于哪种场景:
| 场景 | 判断条件 | 处理方式 |
|------|---------|---------|
| **全新项目** | 没有 `.claude/memory/class/` 或任何课评数据 | 参考标准仓库创建 |
| **已有项目** | 有课评数据但结构不标准 | 识别范式后迁移 |
### ===== 场景一:全新项目 =====
适用于:刚加入协作的老师,或者还没有建立 ClassFeedback 仓库的老师。
#### 第 1 步:确认老师信息
向用户询问:
1. 老师昵称/真名
2. 手机号(用于远端仓库地址)
3. 负责的班级列表(课程编号+上课时间)
4. 每个班级的学生名单
#### 第 2 步:参考标准仓库创建结构
克隆标准仓库作为参考:
```bash
git clone https://git.qonnwolf.com/keli/ClassFeedback /tmp/standard-ref
```
**从标准仓库中参考的部分**(只参考结构,不复制数据):
- `.claude/memory/class/` 的目录组织方式
- `.claude/memory/class/班级/学生/feedback/` + `profile.md` + `summary/`
- `.claude/memory/class/班级/summaries/` 班级总结目录
- `.claude/memory/class/班级/补课/` 补课目录
- `.claude/memory/lesson/README.md` 大纲来源说明
- `.gitignore` 中的忽略规则
**不需要参考的部分**(每个老师自己维护):
- `.claude/memory/class/` 下的实际学生数据
- `.claude/memory/oj/` OJ 数据(仅 CSP 老师需要)
- `.claude/rules/` 规则文件(各老师可能有不同风格)
- `.claude/skills/` 技能文件
#### 第 3 步:创建目录结构
```bash
# 为每个班级创建结构(示例覆盖不同课程类目)
for class in "CSP05克力周六1600" "AICODE03菠萝周六1600" "SPIKE02小Q周六1400" "KITTEN04洋芋周六1600"; do
mkdir -p ".claude/memory/class/${class}/summaries"
mkdir -p ".claude/memory/class/${class}/补课"
# 为每个学生创建结构
for student in 张三 李四 王五; do
mkdir -p ".claude/memory/class/${class}/${student}/feedback"
mkdir -p ".claude/memory/class/${class}/${student}/summary"
# 创建画像模板
cp profile_template.md ".claude/memory/class/${class}/${student}/profile.md"
done
done
# 创建课程大纲目录(按实际需要的课程前缀创建)
mkdir -p ".claude/memory/lesson/CSP"
mkdir -p ".claude/memory/lesson/AICODE"
mkdir -p ".claude/memory/lesson/GESP"
# 其他课程前缀按需创建:SPIKE、KITTEN、VEXIQ 等
```
#### 第 4 步:创建基础文件
1. **创建 `.gitignore`**:
```gitignore
.claude/
!.claude/memory/
!.claude/memory/class/
!.claude/memory/lesson/README.md
.claude/memory/lesson/*/
```
2. **创建 lesson/README.md**(记录大纲来源)
3. **同步课程大纲**(如果网络可用)
4. **创建 CLAUDE.md**(可选,记录本仓库的基本信息)
### ===== 场景二:已有项目迁移 =====
#### 第 1 步:识别当前目录范式
扫描当前仓库,判断属于哪种范式:
| 范式 | 特征 |
|------|------|
| **A: 标准型** | `.claude/memory/class/` 下有班级目录 |
| **B: 三件套型** | `memory/student/` 或 `memory/学生/`,每学生"画像+素材+历史课评" |
| **C: 分离式** | 课评在 `.claude/课评/`,画像在 `.claude/memory/用户画像/` |
| **D: 散落型** | `课堂记录/`、`ClassFeedback/` 或根目录级 |
**识别方法**(按优先级检测):
1. 存在 `.claude/memory/class/` → 范式 A
2. 存在 `memory/student/` 或 `memory/学生/` → 范式 B
3. 存在 `.claude/课评/` → 范式 C
4. 存在 `课堂记录/` 或 `ClassFeedback/` → 范式 D
5. 以上都不存在 → 按场景一(全新项目)处理
#### 第 2 步:收集班级和学生信息
**从目录结构中提取**:
- 扫描现有目录,列出所有班级名和学生名
**从 CLAUDE.md 或 README.md 补充**:
- 读取本仓库的 CLAUDE.md,查找班级/课程信息
**与用户确认**:
- 如果班级名缺少"星期+时间"(如只有 `AICODE03班`),询问用户补全
- 格式参考:`CSP05克力周六1600`
#### 第 3 步:生成迁移计划
向用户展示迁移计划,包含:
1. 范式识别结果
2. 将创建的目录结构预览
3. 文件迁移清单(原路径 → 新路径)
4. 不迁移的文件(保留原位)
**必须等用户确认后再执行。**
#### 第 4 步:执行迁移
用户确认后,按计划执行:
**范式 A**(已接近标准,微调即可):
- 重命名班级目录(如果名称不规范)
- 确保每个学生有 feedback/、profile.md、summary/
- 创建 summaries/ 和 补课/ 目录
**范式 B**(三件套型):
- 创建标准 `.claude/memory/class/` 结构
- `用户画像.md` → `profile.md`
- `历史课评记录.md` → `summary/历史课评记录.md`
- `成长素材.md` → `summary/成长素材.md`
- 单次课程记录 → `feedback/YYYYMMDD_课程编号.md`
**范式 C**(分离式):
- 创建标准结构
- 从集中画像目录迁移到各班级下
- 课评文件迁移到 feedback/
**范式 D**(散落型):
- 创建标准结构
- 全班课评汇总 → `summaries/`
- 从校宝 API 或人员名单获取学生列表,创建个人目录
#### 第 5 步:补建缺失内容
1. **profile.md 模板** — 对没有画像的学生创建空模板
2. **补课目录** — 每个班级下创建 `补课/`
3. **summaries 目录** — 每个班级下确保有 `summaries/`
#### 第 6 步:配置课程大纲同步
1. 创建 `lesson/` 目录和子目录
2. 创建 `lesson/README.md`(记录来源仓库)
3. 更新 `.gitignore`,添加 `.claude/memory/lesson/*/`(忽略所有课程大纲子目录)
4. 如果网络可用,克隆并同步大纲
#### 第 7 步:更新 CLAUDE.md
更新仓库的 CLAUDE.md(如果存在):
- 更新目录结构说明
- 添加课程大纲同步说明
- 添加考勤状态记录说明(请假/补课)
#### 第 8 步:生成迁移报告
输出迁移报告,包含:
- 仓库信息(老师、范式变化)
- 迁移统计(班级数、学生数、文件数)
- 班级结构表
- 后续建议
## profile.md 空模板
```markdown
# {学生姓名} - 画像
## 基本信息
- 班级:{班级名}
- 入班时间:
- 年龄/年级:
## 性格特点
(待观察填写)
## 学习风格
(待观察填写)
## 课堂表现
(待观察填写)
## 编程能力
- 理解力:
- 动手能力:
- 创造力:
- 调试能力:
## 家长沟通
(待记录)
```
## 请假记录模板
```markdown
# 请假记录
**日期**: {YYYY-MM-DD}
**课程**: {课程编号}
**学生**: {学生姓名}
**状态**: 请假
**原因**: (如有)
```
## 补课追踪模板(原班级侧)
```markdown
# 补课记录
**日期**: {YYYY-MM-DD}
**原课程**: {原课程编号}
**学生**: {学生姓名}
**状态**: 补课
**补课班级**: {目标班级名}
**补课老师**: {目标老师}
```
## 注意事项
1. **处理所有课程类型** — 按课程类目表覆盖全部前缀(乐高搭建、图形化编程、VEX机器人、AI人工智能、信息学奥赛、竞赛项目、杂项),全部统一规范
2. **CSP 特殊处理** — CSP 班级可能有 `oj/` 数据目录,保持不动
3. **文件名中的课程编号** — 统一用 `课程编号-课次` 格式(如 `CSP05-07`、`AICODE03-02`、`SPIKE02-05`、`KITTEN04-03`)
4. **补课学生** — 在补课班级只有 feedback/,不建 profile.md 和 summary/
5. **全班课评** — 范式 D 的全班课评放到 summaries/ 下,不强行拆分为个人课评
6. **不确定就问** — 如果班级时间信息缺失、学生归属不明,停下来问用户
7. **不碰 .claude/rules/ 和 .claude/skills/** — 这些是配置文件,不在迁移范围内
8. **lesson 不提交** — 课程大纲目录加入 .gitignore,大纲从独立仓库同步