Fluent Reading
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.
MCP get_skill({ skillId: "fluent-reading-2983f73f" })Use this skill with your agent
Create a free account and connect via MCP
# 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.Related Skills
More skills in Education & Writing
Academic Plotting
Generates publication-quality figures for ML papers from research context. Given a paper section or description, extracts system components and relationships to generate architecture diagrams via Gemini. Given experiment results or data, auto-selects chart type and generates data-driven figures via matplotlib/seaborn. Use when creating any figure for a conference paper.
Add Educational Comments
Add educational comments to the file specified, or prompt asking for file to comment if one is not provided.
AI Prompt Engineering & Safety Best Practices
Comprehensive best practices for AI prompt engineering, safety frameworks, bias mitigation, and responsible AI usage for Copilot and LLMs.
Anti Slop
Comprehensive toolkit for detecting and eliminating "AI slop" - generic, low-quality AI-generated patterns in natural language, code, and design. Use when reviewing or improving content quality, preventing generic AI patterns, cleaning up existing content, or enforcing quality standards in writing, code, or design work.
Apple Notes
Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.
Asc Whats New Writer
Generate engaging, localized App Store release notes (What's New) from git log, bullet points, or free text using canonical metadata under `./metadata`. Optionally pairs with promotional text updates.
Explore Other Categories
Skills from other categories with shared topics
Fluent DB Updater
Atomically update all 6 Fluent learner databases (learner-profile, progress, mistakes, mastery, spaced-repetition, session-log) at session end by calling .claude/hooks/update-db.py with a single JSON payload. Use at the end of every practice session — fluent-writing, fluent-vocab, fluent-speaking, fluent-reading, fluent-review, fluent-learn — to persist the session's errors, review results, new vocabulary, and session metadata.
Anki Flashcard Deck Generator
Extracts key concepts from study material, generates spaced-repetition flashcards in Anki-compatible CSV/TSV format, and applies memory science principles (cloze deletion, image occlusion, interleaving). Prerequisites: python3.
Language Practice Partner
Conducts conversational language practice at your level, corrects grammar in real-time, teaches vocabulary in context, and tracks your progress. Researches cultural context via Brave Search. Prerequisites: brave-search MCP.