A Claude Code-driven modular TOEFL prep system.
Module Overview
This skill consists of 8 independent modules and uses progressive disclosure—it only reads the corresponding module when needed.
toefl/
├── SKILL.md ← 你現在在這裡(路由器)
├── scripts/
│ ├── init.py ← 🏁 初始化模組
│ ├── daily.py ← 📅 每日追蹤模組
│ ├── scaffold.py ← 🔧 資料夾結構產生器(由 init.py 呼叫)
│ ├── progress.py ← 📊 進度追蹤與統計
│ ├── adaptive.py ← 🧠 自適應引擎(動態調整難度與時間分配)
│ ├── speaking_coach.py ← 🎤 口說教練模組
│ ├── writing_grader.py ← ✍️ 寫作批改模組
│ ├── mock_test.py ← 📝 模擬考模組
│ ├── generate_listening.py ← 🎧 聽力素材產生器
│ └── generate_anki.py ← 📚 Anki 單字卡產生器
└── references/
├── exam-format-2026.md ← 📋 2026 新制完整格式
├── study-plan-12week.md ← 📅 12 週計畫模板
├── scoring-rubrics.md ← 📏 ETS 評分標準
├── vocabulary-core.md ← 📖 核心學術字彙
└── resources-guide.md ← 🔗 備考素材完整指南(官方+免費+工具)
Routing Logic
Based on the user's intent, select the corresponding module:
🏁 First Use / Initialization
Trigger words: /toefl, "start preparing for TOEFL", "create a study plan", first entering an empty folder
Action:
- Run
scripts/init.py(guided questionnaire → generate config → create folders → generate diagnostic test) - If in a non-interactive environment, use
--non-interactivewith parameters
python scripts/init.py --target .
# 或非互動模式
python scripts/init.py --target . --non-interactive --target-score 5.0 --exam-date 2026-07-15
📅 Daily Entry / What to Practice Today
Trigger words: "what to practice today", "start practicing", entering an initialized folder Action:
- Run
scripts/daily.py --target ./toefl-prep/ - Display today's tasks, streak days, countdown
- Guide completion of each practice item
python scripts/daily.py --target ./toefl-prep/ # 顯示今日任務
python scripts/daily.py --target ./toefl-prep/ --complete # 標記完成
python scripts/daily.py --target ./toefl-prep/ --advance # 推進下一天
python scripts/daily.py --target ./toefl-prep/ --status # 本週總覽
📊 View Progress / Weakness Analysis
Trigger words: "view progress", "my scores", "weakness analysis"
Action: Run scripts/progress.py --action show --target ./toefl-prep/
python scripts/progress.py --action show --target ./toefl-prep/
python scripts/progress.py --action log --target ./toefl-prep/ --minutes 30 --section reading --score 4.5
🎤 Speaking Practice
Trigger words: "speaking practice", "practice speaking", "speaking practice" Action:
- Run
scripts/speaking_coach.pygenerate questions - If audio files are needed, run
scripts/generate_listening.py --type repeatgenerate TTS - After the user completes it, read
references/scoring-rubrics.mdthe speaking section for assessment
python scripts/speaking_coach.py --type full --output ./toefl-prep/speaking/
python scripts/speaking_coach.py --type repeat --output ./toefl-prep/speaking/
python scripts/speaking_coach.py --type interview --output ./toefl-prep/speaking/ --topic technology
When Claude assesses speaking responses:
- Read
references/scoring-rubrics.mdthe Speaking section - Listen & Repeat: check Repeat Accuracy / Fluency / Intelligibility
- Interview: check Fluency / Intelligibility / Language Use / Organization
- Use the standard feedback format (a template is at the bottom of the rubric file)
✍️ Writing Practice / Correction
Trigger words: "writing practice", "correct my writing", "practice writing", "writing practice" Action:
- Run
scripts/writing_grader.pygenerate questions - After the user completes it, read
references/scoring-rubrics.mdthe writing section for correction
python scripts/writing_grader.py --type full --output ./toefl-prep/writing/
python scripts/writing_grader.py --type sentence --output ./toefl-prep/writing/ --count 10
python scripts/writing_grader.py --type email --output ./toefl-prep/writing/
python scripts/writing_grader.py --type discussion --output ./toefl-prep/writing/
When Claude corrects writing:
- Read
references/scoring-rubrics.mdthe Writing section - Email: check whether all points are covered / tone / grammar / spelling
- Discussion: check viewpoint / argumentation / responding to others / grammar
- Use the standard feedback format (list specific errors + corrections + model answer)
🎧 Listening Practice
Trigger words: "listening practice", "practice listening", "listening practice"
Action: Run scripts/generate_listening.py generate audio files and practice questions
python scripts/generate_listening.py --type all --output ./toefl-prep/listening/
python scripts/generate_listening.py --type conversation --output ./toefl-prep/listening/
python scripts/generate_listening.py --type academic --output ./toefl-prep/listening/
Dependencies: pip install edge-tts
📚 Vocabulary / Anki
Trigger words: "memorize vocabulary", "generate Anki", "vocabulary", "flashcards" Action:
- Read
references/vocabulary-core.mdselect this week's vocabulary - Execute
scripts/generate_anki.pygenerate .apkg
📖 Recommended materials / What to use for practice
Trigger words: "recommended materials", "what to watch", "what resources are there", "practice materials", "how to find listening materials"
Action: Read references/resources-guide.md, recommend corresponding materials based on the user's level and weaknesses
resources-guide.md includes:
- Official ETS resources (mock tests, Interactive Sampler)
- Mock test platform comparison (Magoosh, BestMyTest, TestSucceed, etc.)
- Material sources for each section (graded by difficulty Lv1–5)
- Podcast recommendations (beginner/intermediate/advanced)
- YouTube channel recommendations
- Open-source toolchain (edge-tts voice selection, speech rate adjustment commands)
- Weekly material scheduling suggestions
- List of outdated resources to avoid
python scripts/generate_anki.py --output ./toefl-prep/vocabulary/anki-decks/ --week 1
Dependencies: pip install genanki
🧠 Adaptive adjustment / Weakness analysis
Trigger words: "weakness analysis", "adjust plan", "rebalance", "difficulty adjustment", "milestone check"
Action: Execute scripts/adaptive.py
python scripts/adaptive.py --target ./toefl-prep/ --action analyze # 完整分析報告
python scripts/adaptive.py --target ./toefl-prep/ --action rebalance # 重新分配時間
python scripts/adaptive.py --target ./toefl-prep/ --action difficulty # 建議難度等級
python scripts/adaptive.py --target ./toefl-prep/ --action checkpoint # 里程碑檢查
What the adaptive engine does:
- Calculate the gap for each section from progress.json and mock test data (gap = target score - current score)
- Sections with larger gaps → allocate more daily practice time (maximum 45%, minimum 10%)
- Recommend question difficulty levels based on current scores (Lv1 basic ~ Lv5 advanced)
- Detect declining score trends → issue warnings
- Gap for each section > 1.5 points → determine severe imbalance, recommend focused reinforcement
- Generate adaptive.json for other modules to read
- Milestone check (25%/50%/75%/100% progress points)
daily.py integration: daily.py will automatically read adaptive.json (if it exists) and replace the fixed plan with adaptive suggestions.
When to trigger rebalance:
- Automatically suggested after each mock test
- When the user actively requests it
- When a milestone check is not passed
📝 Mock test
Trigger words: "mock test", "mock test", "take a full test" Action:
- Execute
scripts/mock_test.py --action createcreate exam folder - Guide the test in section order (R → L → S → W)
- Use the corresponding module for each section to generate questions
- After completion, score and update progress.json
python scripts/mock_test.py --target ./toefl-prep/ --action create
python scripts/mock_test.py --target ./toefl-prep/ --action score --test 1 --reading 4.5 --listening 5.0 --speaking 4.0 --writing 4.5
python scripts/mock_test.py --target ./toefl-prep/ --action history
Toolchain
| Tool | Purpose | Installation | Necessity |
|---|---|---|---|
edge-tts |
TTS listening materials + shadowing audio files | pip install edge-tts |
Necessary for listening/speaking |
genanki |
Anki flashcards .apkg | pip install genanki |
Necessary for vocabulary feature |
Kokoro TTS |
Offline high-quality TTS | pip install kokoro |
Optional (alternative to edge-tts) |
2026 new format quick reference
When detailed information is needed, read references/exam-format-2026.md。
Scoring: 1.0–6.0 (CEFR aligned), total score = average of four sections Adaptive: R/L Module 1 performance determines Module 2 difficulty (Hard path max 6.0 / Easy path max 4.0)
| Section | Time | Question Type |
|---|---|---|
| Reading | 18–27 min | Complete Words / Daily Life / Academic Passage |
| Listening | 18–27 min | Choose Response / Conversations / Announcements / Academic Talks |
| Speaking | ~10 min | Listen & Repeat (7) + Interview (4), fully AI-scored |
| Writing | ~23 min | Build a Sentence (10) + Email (1) + Discussion (1) |
Claude Code of Conduct
- First entry: Check whether toefl-prep/config.json exists. If it does not exist → run init.py. If it exists → run daily.py.
- Progressive disclosure: Do not read all reference files at once. Only read the corresponding section when needed.
- Language: By default, communicate with the user in Traditional Chinese, but use English for all TOEFL practice content.
- When grading: Be sure to read
references/scoring-rubrics.mdbefore scoring to ensure consistent standards. - Encouragement: Maintain a positive attitude, emphasizing progress rather than shortcomings. At the end of each practice session, give 1–2 specific suggestions for improvement.
- Tracking: After each practice session, remind the user to update progress.json (or update it automatically for them).