From fluent
Runs interactive reading comprehension sessions for language learners: presents leveled target-language texts, asks main-idea/detail/vocab/inference/true-false questions with feedback, adds vocab to spaced-repetition. Triggered by /reading.
npx claudepluginhub m98/fluent --plugin fluentThis skill is limited to using the following tools:
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.
Runs interactive typed speaking practice sessions for language learners, triggered by /speaking. Loads profile/DB via Python/Bash, asks target-language questions one at a time, evaluates communication/grammar, updates databases.
Selects and sequences reading comprehension strategies for specific texts based on challenges, student levels, difficulties, and purposes. Provides implementation guides, modeling scripts, and pitfalls.
Tutors any language via conversation, vocab drills, grammar lessons, flashcards, and immersive practice. Activates for language learning, vocab practice, grammar study, translation, or conversation prep.
Share bugs, ideas, or general feedback.
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.
Trigger this skill only when the learner types /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 (/vocab) are more appropriate for very early learners.
python3 .claude/hooks/read-db.py
Need: learner-profile (level, target language, interests), mastery-db.skills_mastery.reading.
# ๐ {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!** ๐
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.
## ๐ 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"**.
Rotate across these types:
Main idea:
## Vraag 1: Hoofdidee (main idea)
{question in target language}
a) {option 1}
b) {option 2}
c) {option 3}
**Type a, b, or c:**
Details:
## Vraag 2: Details
{specific question about the text}
**Type your answer:**
Vocabulary in context:
## Vraag 3: Vocabulaire
In the text it says "{word/phrase}". What does this mean?
a) {meaning 1}
b) {meaning 2}
c) {meaning 3}
Inference:
## Vraag 4: Begrijpen
{question requiring inference โ not directly stated}
**Answer in {target language}:**
True / false:
## Vraag 5: Waar of niet waar?
{statement}
**Type your answer:**
{โ
or โ}
**Answer:** {correct_answer}
**Explanation:** {why โ reference the text}
{If incorrect: **The text says:** "{relevant_quote}"}
**Score: {X}/10**
---
After the questions:
## ๐ 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.
## ๐ 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}!** ๐โจ
Use the db-updater skill:
command_used: "/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 savefocus_next_session[]Save to /results/reading-session-{NNN}.md โ include the full text + Q&A for later analysis.
๐ 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".
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
/reading.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.