kids learning English Vocabulary
v1.0.0小升初英语单词深度学习系统。当用户提供单词列表、时限和可用时间,或想要帮助孩子学习英语单词、制定单词学习计划、设计单词故事记忆法、出单词考核题目、查看复习提醒时,必须使用此skill。涵盖:单词故事串联、直接生成图文教学卡PNG、分级考核(听写/发音/用法)、遗忘曲线复习提醒、学习进度追踪与下一课调整。只要用户涉...
Security Scan
OpenClaw
Benign
medium confidencePurpose & Capability
The name/description (vocabulary lessons, story-based memorization, image cards, tests, spaced-repetition reminders) matches the SKILL.md content: it shows how to analyse words, build lesson plans, generate stories, create PNG teaching cards and scene images, and produce test items. No unrelated capabilities (cloud admin, email delivery, etc.) are requested.
Instruction Scope
Instructions stay within the stated domain (generate stories, images, schedules, quizzes). They reference local font files (/mnt/skills/... and /usr/share/fonts/...) and instruct the agent to pip-install Pillow and Matplotlib at runtime. The pip install step (the file shows a truncated flag like --break-syst...) and the reliance on absolute system font paths are operational concerns (may fail or modify environment) but not evidence of malicious scope creep. The SKILL.md does not ask to read unrelated secrets or send data to external endpoints.
Install Mechanism
This is instruction-only (no install spec), which is lower risk. However, the runtime instructions include pip install pillow matplotlib. Because package installation happens at runtime and one truncated flag suggests using a system-breaking pip option, users should be aware this can alter the Python environment; there is no declared install step (so installs are ad-hoc at runtime).
Credentials
The skill requires no environment variables, credentials, or external tokens. The only environment accesses are filesystem reads of fonts and writes of generated PNG files, which are proportional to image-generation and presentation tasks.
Persistence & Privilege
always:false and default model-invocation behavior are appropriate. The skill does not request persistent system-wide changes, nor does it require modifying other skills or system configuration.
Assessment
This skill appears coherent for generating lesson plans and image-based teaching cards, but double-check a few operational details before installing/using it: 1) The SKILL.md instructs a runtime pip install (pillow, matplotlib). Installing Python packages at runtime can change the environment or require elevated privileges; avoid running pip with flags that break system packages unless you control the environment (use virtualenv or container). 2) The code expects font files at /mnt/skills/... and /usr/share/fonts/... — confirm those font files exist or provide safe alternatives; otherwise image generation will fail. 3) Generated files are written to disk (PNG output); ensure the agent has appropriate write permissions and that filenames are sanitized to avoid accidental overwrites. 4) There are no credential or network calls declared — if later versions add external upload, reminders delivery, or analytics endpoints, reassess (that would materially change risk). If you want higher assurance, request the full, untruncated SKILL.md (confirm the pip command flag) and test the image-generation code in an isolated environment first.Like a lobster shell, security has layers — review code before you run it.
latest
Vocab Master — 小升初英语单词深度学习系统
核心理念
故事串联 + 多感官记忆 + 科学间隔复习,让孩子真正能:
- 默写(拼写正确)
- 正确发音(音标掌握)
- 知道含义、词性、用法(语境中使用)
第一步:收集输入参数
必填:
- 单词列表
- 总时限(如"3周后考试")
- 每次可用时间(如"每天30分钟")
选填:
- 孩子年龄/年级(默认:小学5-6年级)
- 薄弱环节(拼写/发音/记忆/用法)
- 过去测试成绩
第二步:制定学习计划总览
2.1 分析单词,构建故事世界
将所有单词按语义场分组(每组5-8个),为每组设计一个迷你故事场景:
故事设计原则:
- 场景具体有趣,贴近孩子生活(冒险、校园、科技、自然等)
- 每个单词在故事中都有"戏份"(动词做动作、名词是角色/道具)
- 故事结尾设悬念,引出下一组单词的故事
- 故事中的单词用【】标注
2.2 计算课时安排
总单词数 ÷ 每课单词数(5-8) = 总课数
总时限天数 ÷ 总课数 = 课间隔
每课时间分配:新课学习60% / 复习回顾30% / 自测10%
输出:学习日历表(日期、学习内容、复习内容、测验类型)
第三步:单节课教学内容
3.1 生成故事文本
输出完整故事(500-800字),所有本课单词用【word】标注,故事末设悬念。
3.2 直接生成教学卡图片(关键步骤)
为每个单词用Python直接生成一张精美教学卡PNG,无需任何外部工具。
字体资源
字体文件位于 /mnt/skills/examples/canvas-design/canvas-fonts/,使用:
- 标题/单词:
BricolageGrotesque-Bold.ttf - 正文/例句:
WorkSans-Regular.ttf(Bold变体也可用) - 音标/标注:
DMMono-Regular.ttf
中文字体:场景图标题/预览文字中的中文,必须使用系统字体:
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc在 matplotlib 中:from matplotlib import font_manager font_manager.fontManager.addfont('/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc') prop_cn = font_manager.FontProperties(fname='/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc') # 然后对所有中文text使用 fontproperties=prop_cn在 Pillow 中,单词卡的中文(含义等)需同样使用此字体路径调用
ImageFont.truetype。
教学卡设计规范(800×520px)
┌────────────────────────────────────────────┐
│ [8px顶部色条] │
│ [6px左侧竖条] │
│ │
│ WORD(64px加粗) /音标/(DMMono) [词性] │
│ │
│ ──────────────── 分割线 ───────────────── │
│ ✦ ad-ven-ture(拼写分组) │
│ ★ 记忆联想(趣味拆字/故事法) │
│ │
│ ──────────────── 分割线 ───────────────── │
│ 中文含义(26px加粗,主色) │
│ ① 简单例句 │
│ ② 稍难例句 │
│ │
│ ──────────────── 分割线 ───────────────── │
│ 📖 在本课故事中的角色 │
│ ⚠ 易错提醒(红色) │
│ │
│ [6px底部色条] │
└────────────────────────────────────────────┘
主题配色方案
THEMES = {
"adventure": {"bg": "#1a1a2e", "accent": "#e94560", "text": "#eaeaea", "tag": "#f5a623"},
"school": {"bg": "#f0f4ff", "accent": "#3b5bdb", "text": "#1a1a2e", "tag": "#40c057"},
"nature": {"bg": "#e8f5e9", "accent": "#2e7d32", "text": "#1b2e1b", "tag": "#ff8f00"},
"technology": {"bg": "#0d1117", "accent": "#58a6ff", "text": "#c9d1d9", "tag": "#3fb950"},
"character": {"bg": "#fff8f0", "accent": "#e67700", "text": "#2c1810", "tag": "#7048e8"},
}
教学卡Python代码(完整实现)
from PIL import Image, ImageDraw, ImageFont
import os
FONT_DIR = "/mnt/skills/examples/canvas-design/canvas-fonts"
def load_font(name, size):
path = os.path.join(FONT_DIR, name)
return ImageFont.truetype(path, size)
def generate_word_card(word_data, theme, output_path):
"""
word_data dict 必须包含:
word, phonetic, pos, meaning, syllables,
memory_tip, example1, example2, story_role,
easy_error (可为空字符串)
"""
W, H = 800, 520
img = Image.new("RGB", (W, H), color=theme["bg"])
draw = ImageDraw.Draw(img)
accent = theme["accent"]
text_col = theme["text"]
tag_col = theme["tag"]
# 顶部/底部色条
draw.rectangle([0, 0, W, 8], fill=accent)
draw.rectangle([0, H-6, W, H], fill=accent)
# 左侧竖条
draw.rectangle([0, 0, 6, H], fill=accent)
# 单词
f_word = load_font("BricolageGrotesque-Bold.ttf", 62)
draw.text((44, 28), word_data["word"].upper(), font=f_word, fill=accent)
# 音标
f_phon = load_font("DMMono-Regular.ttf", 21)
draw.text((46, 108), word_data["phonetic"], font=f_phon, fill=text_col)
# 词性标签(圆角矩形)
f_tag = load_font("WorkSans-Regular.ttf", 17)
tag_text = word_data["pos"]
draw.rounded_rectangle([672, 34, 758, 66], radius=10, fill=tag_col)
draw.text((680, 42), tag_text, font=f_tag, fill="#ffffff")
# 分割线
def hline(y): draw.line([40, y, W-40, y], fill=accent, width=1)
hline(143)
# 拼写分组 & 记忆联想
f_body = load_font("WorkSans-Regular.ttf", 19)
draw.text((44, 156), "✦ " + word_data["syllables"], font=f_body, fill=text_col)
draw.text((44, 184), "★ " + word_data["memory_tip"], font=f_body, fill=text_col)
hline(222)
# 中文含义
f_cn = load_font("WorkSans-Regular.ttf", 25)
draw.text((44, 234), word_data["meaning"], font=f_cn, fill=accent)
# 例句
f_ex = load_font("WorkSans-Regular.ttf", 16)
draw.text((44, 272), "① " + word_data["example1"], font=f_ex, fill=text_col)
draw.text((44, 298), "② " + word_data["example2"], font=f_ex, fill=text_col)
hline(330)
# 故事角色
draw.text((44, 342), "📖 " + word_data["story_role"], font=f_ex, fill=text_col)
# 易错提醒
if word_data.get("easy_error"):
draw.text((44, 370), "⚠ " + word_data["easy_error"], font=f_ex, fill="#ff6b6b")
img.save(output_path, "PNG")
return output_path
故事场景插图(900×500px,matplotlib绘制)
每课生成1张场景图,要求:
- 根据故事主题绘制有氛围感的几何艺术背景(城堡/森林/太空/校园/海洋等)
- 中央展示本课全部关键词(每词带半透明色块背景,随机微旋转±5°)
- 顶部显示课程标题,底部显示故事第一句预览
- 背景必须有具体的几何图形(星星、树形、城垛、波浪等)而非纯色
scene_type到背景图形的映射(必须完整实现):
castle → 城垛轮廓 + 圆形月亮 + 星星散布
forest → 三角形树群 + 地面色带 + 月亮/太阳
space → 椭圆星球 + 圆点星星 + 轨道弧线
school → 矩形建筑轮廓 + 窗格 + 放射阳光
ocean → 波浪曲线 + 三角帆船 + 圆形太阳
图片生成执行顺序
pip install pillow matplotlib --break-system-packages -q- 生成故事场景图 →
/home/claude/lesson_N_scene.png - 循环生成每个单词的教学卡 →
/home/claude/lesson_N_word_X.png - 全部复制到
/mnt/user-data/outputs/ - 调用
present_files展示(场景图排第一位)
第四步:分级考核设计
三级考核体系
🥉 Level 1(每课结束当天)
1. 遮住中文说出单词含义(口头,家长确认)
2. 单词-中文连线(文字输出)
3. 听故事片段,指出单词位置
通过:正确率 ≥ 70%
🥈 Level 2(第2天)
1. 看中文默写英文
2. 根据音标写单词
3. 选择正确例句(辨析用法)
4. 造句1条
通过:正确率 ≥ 80% + 发音家长确认
🥇 Level 3(单元末综合测)
1. 完型填空(新故事填词)
2. 看场景图用5个以上单词描述
3. 口述故事(≥5词,有完整情节)
通过:综合 ≥ 85%
第五步:根据考核调整下一课
| 错误类型 | 调整策略 |
|---|---|
| 拼写错误多 | 下节课前先默写上节错误词 |
| 发音问题 | 音节分解朗读;建议用在线字典听音 |
| 词义混淆 | 重讲故事戏份;增加对比例句 |
| 用法不会 | 下节课前做填空热身;新课减少1-2词 |
| 整体良好 | 加速进度或提前Level 3 |
进度规则:
- 连续2课Level 1失败 → 每课减为4-5词,增加游戏环节
- 连续2课Level 2通过 → 提前单元综合测
- Level 3 < 70% → 本单元复习后再进入下单元
第六步:遗忘曲线复习系统
复习节点(详细参数见 references/ebbinghaus.md):
第 1 天 → 快速复习5分钟(Level 1简化版)
第 3 天 → 中度复习10分钟(Level 2)
第 7 天 → 深度复习15分钟(Level 2-3混合)
第 14 天 → 巩固复习10分钟
第 30 天 → 长期确认5分钟
每日复习清单输出格式
📅 今天 [日期] 复习清单
🔴 紧急(超7天):word1, word2 → 默写测试
🟡 常规(第3天):word3, word4 → 连线游戏
🟢 巩固(第1天):word5, word6 → 重读故事
⏱️ 预计时间:___分钟
特别训练(连续3次出错的词)
- Day 1:画出这个词的意思
- Day 2:造3个不同场景的句子
- Day 3:不看提示默写5次
- Day 4:在日常对话中说出含该词的话并记录
图片生成质量自检(每次生成后必查)
- 字体路径正确,无回退默认字体
- 单词卡:大号单词清晰,配色与主题一致
- 故事场景图:有具体背景图形(不是纯色背景加文字)
- 关键词在场景图中全部展示
- 图片已复制到 outputs 并调用 present_files
参考文件
references/ebbinghaus.md— 遗忘曲线详细参数references/assessment-templates.md— 各Level考核题模板库references/story-themes.md— 故事主题库与词汇分组建议
Comments
Loading comments...
