--- name: fluent-reading description: Run an interactive reading comprehension session with a short target-language text followed by main-idea, detail, vocabulary-in-context, inference, and true/false questions. Triggered only when the learner types /fluent-reading. Presents the text, waits for the learner to read, then asks questions one at a time with immediate feedback, and optionally adds new vocabulary to the spaced-repetition queue. allowed-tools: Read, Write, Bash disable-model-invocation: true --- # Reading Comprehension Session ## Overview Present one text (100-500 words depending on level), ask 4-6 comprehension questions, extract vocabulary. Builds passive-to-active bridge: learners decode target-language writing, then answer questions that force recall. ## When to Use Trigger this skill only when the learner types `/fluent-reading`. The skill is gated with `disable-model-invocation: true` — 15-20 min interactive session with DB writes should never start from an ambiguous prompt. Skip this skill below A1 mastery 3 — shorter flashcard drills (`/fluent-vocab`) are more appropriate for very early learners. ## Instructions ### 1. Load context ```bash python3 "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/read-db.py" ``` Need: `learner-profile` (level, target language, interests), `mastery-db.skills_mastery.reading`. ### 2. Opening ```markdown # 👀 {target_language} Reading Practice Hallo {name}! Today we're practicing **reading comprehension**. I'll show you a short {target_language} text, then ask you questions about it. **Focus:** main ideas, details, vocabulary in context **Level:** {CEFR} **Duration:** 15-20 min **Tips:** - Read the whole text first - Don't translate every word — get the gist - Use context clues for unknown words - Read the questions before rereading the text **Ready? Let's read!** 📖 ``` ### 3. Pick text type + length A2 types (100-200 words): personal email, short news, advertisement, instructions, simple story, blog post, social media post, info leaflet. B1 (200-350 words): opinion pieces, longer narratives, structured guides. B2+ (350-500): editorials, technical explanations, interviews. Match the topic to `learner-profile.focus_areas` when possible. ### 4. Present the text ```markdown ## 📄 Reading Text {N} **Topic:** {topic} **Type:** {text_type} **Length:** ~{word_count} words --- {target-language text — clean formatting, no inline translation} --- Take your time. When you're done, type **"ready"**. ``` ### 5. Question sequence (one at a time) Rotate across these types: **Main idea:** ```markdown ## Vraag 1: Hoofdidee (main idea) {question in target language} a) {option 1} b) {option 2} c) {option 3} **Type a, b, or c:** ``` **Details:** ```markdown ## Vraag 2: Details {specific question about the text} **Type your answer:** ``` **Vocabulary in context:** ```markdown ## Vraag 3: Vocabulaire In the text it says "{word/phrase}". What does this mean? a) {meaning 1} b) {meaning 2} c) {meaning 3} ``` **Inference:** ```markdown ## Vraag 4: Begrijpen {question requiring inference — not directly stated} **Answer in {target language}:** ``` **True / false:** ```markdown ## Vraag 5: Waar of niet waar? {statement} **Type your answer:** ``` ### 6. Feedback per question ```markdown {✅ or ❌} **Answer:** {correct_answer} **Explanation:** {why — reference the text} {If incorrect: **The text says:** "{relevant_quote}"} **Score: {X}/10** --- ``` ### 7. Vocabulary review After the questions: ```markdown ## 📚 New Vocabulary from the Text | {target_language} | {native_language} | Example from text | |-------|---------|-------------------| | {word 1} | {meaning} | "{sentence}" | | {word 2} | {meaning} | "{sentence}" | **Save these for future review?** (They'll enter spaced repetition.) Type "yes" to add, "no" to skip. ``` If yes, stage each word for `new_vocabulary[]` in the end-of-session DB update. ### 8. Session summary ```markdown ## 📊 Reading Session Complete! **Text:** {title/topic} **Length:** {words} words **Questions:** {N} **Accuracy:** {percent}% ### Comprehension Breakdown - Main idea: {✅ or ❌} - Details: {score} - Vocabulary: {score} - Inference: {score} ### New Words Added: {count} {list} ### For Next Time - {suggestion based on which question type was weakest} **{target-language well done}!** 📖✨ ``` ### 9. Update all databases Use the `fluent-db-updater` skill: - `command_used: "/fluent-reading"`, `skills_practiced: ["reading"]` - `skill_scores.reading: {exercises: N, correct: count_right, time_minutes}` - `errors[]` — per question-type weakness (category `comprehension`, `vocabulary`, `inference`) - `new_vocabulary[]` — words the learner chose to save - `focus_next_session[]` Save to `/results/fluent-reading-session-{NNN}.md` — include the full text + Q&A for later analysis. ## Examples ### Example 1 — personal email text (Dutch A2) > ## 📄 Reading Text 1 > > **Topic:** Making weekend plans > **Type:** Personal email > **Length:** ~75 words > > --- > > Beste Mohammad, > > Bedankt voor je email! Leuk dat je naar Amsterdam komt volgende maand. Ik heb tijd op zaterdag 15 maart. Zullen we om 14:00 uur afspreken bij het Centraal Station? We kunnen naar een café gaan en daarna door de stad wandelen. > > Het weer is meestal koud in maart, dus neem een warme jas mee! Ik verheug me erop om je te zien. > > Groetjes, > Lisa > > --- > > Take your time. When you're done, type **"ready"**. ### Example 2 — main-idea question on the above > ## Vraag 1: Hoofdidee > > Waar gaat deze email over? > > a) Lisa is op vakantie in Iran. > b) Lisa en Mohammad maken plannen voor een ontmoeting. > c) Lisa vraagt naar het weer. Learner: "b" > ✅ Correct! > > **Answer:** b) Lisa en Mohammad maken plannen voor een ontmoeting. > > **Explanation:** The email's core is the meetup plan — date, time, place, and activity. The weather is a secondary detail. > > **Score: 10/10** ## Critical Rules - **Wait for "ready"** before asking the first question. Rushing the reading step defeats the purpose. - **One question at a time.** Multiple at once invites skimming. - **Ask questions in the target language** (at least from A2 up). Reading-comprehension checks should happen in the same language as the text. - **Quote the text** in explanations so the learner can trace the answer back to the source. - **Vocabulary opt-in.** Don't force-add every unknown word — ask the learner which they want to keep. - **Never auto-invoke.** Gated; must fire only on explicit `/fluent-reading`. ## Sample Text Bank (Dutch A2) ### Advertisement ``` CURSUS NEDERLANDS VOOR BEGINNERS Wil je Nederlands leren? Start deze maand nog! - Kleine groepen (max 8 personen) - Ervaren docenten - 2x per week, 's avonds - Locatie: Centrum Amsterdam - Prijs: €150 per maand Aanmelden kan via email: info@nederlandscursus.nl Bel voor meer informatie: 020-123-4567 Eerste les gratis! ``` Keep a small bank per target language — don't reuse the same text in consecutive sessions.