بنقرة واحدة
assess
CEFR placement test — 30 questions, estimate level, seed initial deck
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
CEFR placement test — 30 questions, estimate level, seed initial deck
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Placeholder skill so the pack manifest validates.
Default skill for the Create pack — file casual user input (text, voice, image) into the material pool
Generate a platform-specific post draft from recent material
Fetch a URL, extract key points, and file as material
First-time setup for the Create companion — learn which platforms the user posts to and pick default voices
Evening proactive prompt — surface fresh thoughts the user might want to capture
| name | assess |
| pack | vocab |
| description | CEFR placement test — 30 questions, estimate level, seed initial deck |
| command | true |
| triggers | ["vocab assess","placement","test my level","测试水平","评估等级"] |
Place the user on the A2 / B1 / B2 / C1 spectrum, then build their initial card deck.
Run a 30-question quiz, compute a CEFR level, persist it, and seed 20 starter cards from that level.
Start a run
Use the db tool to read the 30 rows from assessment_items and the persist tool to open a run:
{
"action": "practice",
"skill_type": "vocab.assess.start",
"content": "Assessment started",
"metadata": "{\"target_count\":30}"
}
Ask questions
msg tool with type: "quiz" to render each as a Telegram-native multiple-choice (4 options).Adaptive shortcut (optional)
Compute level
Persist result
{
"action": "practice",
"skill_type": "vocab.assess.complete",
"content": "Placed at <level>",
"metadata": "{\"cefr_level\":\"B1\",\"scores\":{\"A2\":\"9/10\",\"B1\":\"7/10\",\"B2\":\"2/6\",\"C1\":\"0/4\"}}"
}
Also write user_state row cefr_level = <level> and last_assessed_at = now.
Seed initial deck
words row with: word, cefr_level, ipa, def_en, def_zh, one example_en, one example_zh.cards row with status='new', next_due=date('now').Wrap up