Skip to content
Back to skills

Student Growth Ops

ASecurity

记录少儿英语学习情况与家长反馈(本地档案)。适用于学情记录、家长沟通、学员建档、咨询留档等场景。

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
developmentpythongobashnodeapi

Works with

  • api

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add whyzsm/tiny-agents --skill student-growth-ops --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Student Growth Ops?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Student Growth Ops
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/whyzsm-student-growth-ops/badge)](https://www.skillsdirectory.com/skills/whyzsm-student-growth-ops)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: student-growth-ops
description: 记录少儿英语学习情况与家长反馈(本地档案)。适用于学情记录、家长沟通、学员建档、咨询留档等场景。
---

# 少儿英语学员成长档案

## 使用场景

当用户提出以下任务时使用本 Skill:
- 咨询学生建档
- 试听测评
- 在读课后记录
- 每周跟进
- 月度学情文字总结(写入 `student-record.json` 与 `03`)
- 家长诉求与反馈(对话优先;必要时落档到 `02`)

每个学生都必须在本地拥有独立文件夹,统一存放在 `~/StudentGrowthOps/` 下。

## 本 Skill 依赖的文件

以下路径均相对于**仓库根目录**(包含 `student-growth-ops/` 的那一层),不要使用本机仓库的绝对路径去读取或打开文件。

执行前先读取这些项目内文件:
- `student-growth-ops/question-bank.json`
- `student-growth-ops/student-file-schema.json`
- `student-growth-ops/web/student-form.html`
- `student-growth-ops/server/index.js`
- `student-growth-ops/scripts/open_student_form.js`

如果需要初始化学生目录,在仓库根目录下执行(使用相对路径):

```bash
python "student-growth-ops/scripts/scaffold_student.py" --student-name "学生名" --grade "G3" --status "leads" --start-date "2026-04-15"
```

若本机中学员服务所在目录与仓库布局不一致,可在启动服务前设置环境变量 `STUDENT_GROWTH_OPS_ROOT` 指向包含 `web/student-form.html` 的 `student-growth-ops` 目录根路径。

## 强制规则

- 第一问必须先确认学生名称。
- 在进入任何阶段前,必须先根据学生名称检查是否已有学生档案。
- 如果已有学生档案,优先进入“跟踪/更新”流程,而不是重复建档。
- 如果没有学生档案,再进入“新建档案”流程。
- 先从用户自然语言里提取已经明确的学生信息和家长诉求。
- 已经明确的信息不要重复问。
- 先问一次填写方式,不要一开始就连续提问。
- 如果走对话填写,每轮只能问 `1-2` 个问题。
- 对话问题必须来自 `student-growth-ops/question-bank.json`。
- 提问时既要给选项,也允许用户自然语言回答。
- 每确认一轮信息后就立即写入对应文件,不要等到最后一次性写入。
- 对话建档和网页建档,最终写入的学生档案文件必须完全使用同一套文件结构和字段语义。
- 不要创建额外的 Markdown 总结文档。
- 业务记录:**系统数据**为单个文件 `_data/student-record.json`(结构见 `student-file-schema.json`);**老师可读层**为 `02-家长需求.txt`、`03-课后跟进记录.txt`。
- **给家长的沟通话术**:当用户要的是「发给家长的一段话 / 微信 / 短信 / 课堂后简短反馈」等,**在对话里直接输出完整文本即可**,语气**礼貌、温柔、有共情**;除非用户**明确**要求落档,否则不要为此覆盖 `02` 等文件。
- **回复用户时的展示规则**:
  - 不要在对话里贴出 `student-record.json` 全文;用一句「系统数据已同步更新」即可。
  - 若更新了 `02`、`03`,在收尾用**本机绝对路径**(纯文本)标出即可,不要用 Markdown 超链接或 `file://`。

## 项目集成约束

这是当前项目 `abcclaw` 的集成版本,所有路径都以项目根目录下的 `student-growth-ops/` 为准。

- 网页实现必须放在 `student-growth-ops/` 目录内
- 页面启动、表单提交、生成文本文件的逻辑,已经在项目内实现
- 实际运行时,只需要启动已有页面服务并打开页面,不要重新生成网页代码

## 学生目录规则

学生根目录:
- `~/StudentGrowthOps/Leads/`
- `~/StudentGrowthOps/Active/`
- `~/StudentGrowthOps/RenewalWatch/`
- `~/StudentGrowthOps/Archived/`

学生目录命名:
- `{grade}-{studentName}-{startDate}`
- 示例:`G3-Luna-2026-04-15`

### 正式档案:双层保存(老师可读层 + 系统数据层)

**老师可读(学员文件夹根目录):**
- `02-家长需求.txt`:家长诉求与跟进摘要(纯文本);即时发家长的话术默认只在对话里输出。
- `03-课后跟进记录.txt`:学习情况与课后跟进要点(纯文本,按日期追加)

**系统数据(`_data/student-record.json`):**
- 唯一结构化存档,字段分区见 `student-growth-ops/student-file-schema.json`。课次在 `lessonLog.rows` 中追加对象。

**网页中间采集:**
- `~/.openclaw/Workspace/student-growth-ops/form-submissions/*.txt` 为网页提交后的中间文件(逐行 `字段名:内容`),需再合并进学员目录中的 `student-record.json` / `02` / `03`。

## 工作流

### 1. 识别当前阶段

把用户需求映射到以下阶段之一:
- `intake`:咨询、报名、家长需求、回访优先级
- `assessment`:试听、测评、首诊反馈
- `lesson-log`:单次课后记录
- `weekly-followup`:一周汇总、提醒、纠正
- `monthly-report`:月度学情文字总结
- `renewal-watch`:续费相关沟通(写入 `student-record.json` 内 `parentNeeds`、`tags`)

### 2. 先提取,再提问

在提问前,先从用户原话中提取已知信息,优先提取:
- `studentName`
- `grade`
- `status`
- `currentLevel`
- `primaryGoals`
- `painPoints`
- `sourceChannel`
- `parentNeeds`

不要对这些已知字段重复追问。

### 3. 先确认学生名称,再检查是否已有档案

不管用户要做建档、学情更新还是跟踪记录,第一步都先确认学生名称。

执行顺序:
1. 先从自然语言中提取学生名称。
2. 如果学生名称还不明确,先只问一个问题:
   - `请先告诉我学生姓名。`
3. 拿到学生姓名后,先去 `~/StudentGrowthOps/` 下查找是否已有对应学生目录。
4. 如果查到已有学生目录:
   - 视为已有档案
   - 后续默认进入跟踪/更新流程
   - 不要重复新建同名档案
5. 如果没有查到学生目录:
   - 视为新学生
   - 后续进入建档流程
   - 必要时先运行脚手架创建学生目录

判断原则:
- `已有目录` = 跟踪记录 / 更新资料 / 继续补充
- `没有目录` = 新建档案 / 首次采集

### 4. 再问填写方式

正式采集前,先只问这一个问题(**问的时候要把两种方式各自的优势说清楚**,方便用户选):
- `你想通过网页填写信息,还是通过对话一步步填写?`

**选项说明(给用户看的优势):**
- **网页填写**:更快、更精准(选项与阶段题目集中展示,一次填完、预览清晰,适合在电脑前集中录入)。
- **对话填写**:更方便(不用开浏览器,按轮回答即可;**在微信等聊天场景里也能完成**,适合碎片化时间)。

建议使用 `AskQuestion` 提供两个选项,标签或说明里可带上上述优势,例如:
- `web`:网页填写(更快、更精准)
- `chat`:对话填写(方便,微信也可以完成)

### 5. 如果用户选择网页填写

网页已经写在项目里的 `student-growth-ops/` 目录下。

运行时要求:
1. 只负责启动已有页面服务。
2. 优先使用一键启动脚本:
   - `node "student-growth-ops/scripts/open_student_form.js"`
3. 如果需要带参数启动,可以使用:
   - `node "student-growth-ops/scripts/open_student_form.js" --studentName=张三 --grade=G3 --status=active --stage=monthly-report`
4. 如需单独启动服务,也可使用:
   - `node "student-growth-ops/server/index.js"`
5. 启动后页面地址:
   - `http://127.0.0.1:8766/student-form`
6. 若启动失败或页面异常,先确认本机 `8766` 是否已被其他进程占用,在终端执行:
   - `lsof -nP -iTCP:8766 -sTCP:LISTEN`
   再根据结果结束旧进程或改用环境变量 `STUDENT_GROWTH_PORT` 指定其他端口。
7. 不要在此时重新生成网页代码。

网页必须满足这些要求:
0. 输入学生姓名后,页面应调用 `GET /api/lookup-student?name=...`(由 `student-growth-ops/server/index.js` 提供),在 `~/StudentGrowthOps/` 下扫描各状态子目录中的学生文件夹,仅识别存在 **`_data/student-record.json`** 且其中 **`studentProfile.studentName`** 与输入一致的目录,并在页面顶部明确提示当前是「新建档案」还是「已找到档案 · 跟踪更新」,与「先问姓名、先查档」的流程一致。
1. 页面字段覆盖当前阶段所需内容。
2. 页面支持下拉选项和自由输入。
3. 页面有明确的 `完成填写` 按钮。
4. 点击 `完成填写` 后立即进入 loading 状态:
   - 按钮禁用
   - 展示 `提交中...` 或 `生成中...`
   - 防止重复点击
5. 页面应优先保证用户体验:
   - 自动保存草稿
   - 重新打开后恢复草稿
   - 展示“将要生成的文本预览”
   - 提交成功后展示完整输出路径
   - 支持一键打开提交目录
6. 提交成功后,在 OpenClaw 工作空间生成一个文本文件:
   - `~/.openclaw/Workspace/student-growth-ops/form-submissions/`
7. 文件名格式:
   - `{studentName}-{timestamp}.txt`
8. 文件内容必须是逐行文本,格式示例:
   - `名字:小明`
   - `年级:G3`
   - `学校:育才小学`
   - `当前英语基础:能跟读`
   - `家长诉求:提分, 口语表达`
9. 文件中不要输出 Markdown、JSON、额外解释或无关标题。
10. 每一行都使用 `字段名:内容` 格式,供后续 AI 直接读取并**合并进正式学生档案**;不要把该 txt 当作最终存档。
11. 网页填写最终落地到学生档案时,必须和对话填写使用完全相同的文件集合:
   - 老师可读层:`02-家长需求.txt`、`03-课后跟进记录.txt`
   - 系统数据层:**`_data/student-record.json`**
12. 不允许网页填写走一套文件结构、对话填写走另一套文件结构。

网页模式下的交互规则:
1. 启动页面并告知用户页面已打开。
2. 告知用户点击 `完成填写` 后会在 OpenClaw 工作空间生成文本文件。
3. 等用户回复 `填写完成`。
4. 用户回复后,明确告诉他去这个路径找:
   - `~/.openclaw/Workspace/student-growth-ops/form-submissions/`
5. 然后读取该文本文件,再回写到学生档案文件中。

### 6. 如果用户选择对话填写

以 `student-growth-ops/question-bank.json` 作为唯一题库来源。

对话规则:
1. 每轮只问 `1-2` 个未完成字段。
2. 优先问当前阶段最关键、最缺失的字段。
3. 有稳定选项的问题优先用 `AskQuestion`。
4. 如果用户直接自然语言回答,要自动解析并映射到最接近的字段值。
5. 只有选项无法覆盖时,才补一个简短自由输入问题。
6. 每轮结束后先写入,再继续下一轮。
7. 对话填写最终落地的学生档案文件,必须和网页填写保持完全一致。

好的方式:
- 先识别出“G3、口语弱、家长想提分”
- 再只问一次填写方式
- 进入对话后每轮只问 `1-2` 个题库问题

错误方式:
- 一上来连续问完整一套问卷
- 用户已经说过的信息又被重复问一遍

### 7. 确保学生文件夹存在

如果学生文件夹不存在:
1. 根据状态选择正确的根目录。
2. 运行 `scaffold_student.py` 初始化。
3. 确认路径后再写入内容。

如果学生文件夹已存在:
1. 直接复用现有目录。
2. 原地更新文件。
3. 除非用户明确要求,不要为同一个学生重复创建新目录。

### 8. 按阶段写入正确文件

文件映射规则(系统数据均写入 **`_data/student-record.json`** 内对应键;老师可读层为根目录 `02`、`03`):
- `intake` -> 更新 `studentProfile`、`parentNeeds`、`tags`;需要维护建档摘要时再更新 `02-家长需求.txt`(**不是**「发给家长的即时话术」的默认落点)
- `assessment` -> 更新 `learningBaseline`、`tags`
- `lesson-log` -> 向 `lessonLog.rows` **追加**一行(对象字段与 `lessonLog.columns` 一致),并在 `03-课后跟进记录.txt` 记一条可读摘要
- `weekly-followup` -> 更新 `weeklyFollowup`、`tags`,必要时更新 `03-课后跟进记录.txt`
- `monthly-report` -> 更新 `weeklyFollowup`、`tags`,并在 `03-课后跟进记录.txt` 记可读摘要
- `renewal-watch` -> 更新 `parentNeeds`、`tags`;必要时将目录转入 `RenewalWatch`

写入规则:
- 旧值只有在新信息明确覆盖时才替换
- 数组字段去重
- 标签字段保持简短、可搜索
- 日期统一用 `YYYY-MM-DD`
- 小步确认,小步写入
- 网页填写和对话填写最终都必须写入同一批文件,不允许产生分叉结构
- 如果是已有学生目录,则本次操作默认是更新已有文件,而不是重新初始化整套文件

## 对用户的反馈方式

结束时只需要简洁说明:
- **学生目录**用一句话给出**本机绝对路径**即可。
- **结构化数据**:不要贴出 `student-record.json` 全文;用「系统数据已更新」之类概括即可。
- **`02`、`03`**:若本次有更新,**直接写出本机绝对路径**(纯文本),不要用 Markdown 超链接或 `file://`。
- 如果是网页填写,中间采集目录写出 **`~/.openclaw/Workspace/student-growth-ops/form-submissions/`** 展开后的**本机绝对路径**(纯文本)。
- 若本次交付主要是**家长沟通话术**,说明话术已在对话中给出即可,**不必**强调写入了某个 txt 文件。

Files in this skill

  • SKILL.md13.2 KB
  • agents/openai.yaml373 B
  • question-bank.json12 KB
  • scripts/open_student_form.js2.5 KB
  • scripts/scaffold_student.py5.6 KB
  • server/index.js8.4 KB
  • source.json285 B
  • student-file-schema.json3.9 KB
  • visual-output-config.json123 B
  • web/student-form.html37.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…