From fluent
Runs interactive typed conversation sessions for language learners, simulating spoken practice with role-plays and opinion questions. Prioritizes communication and naturalness over perfect grammar.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fluent:fluent-speakingThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Conversational practice through typed dialogue. Unlike `/fluent-writing`, prioritize **communication and naturalness** — grammar errors that don't block meaning are downplayed. Goal: build the learner's confidence to produce target-language output without over-analyzing.
Conversational practice through typed dialogue. Unlike /fluent-writing, prioritize communication and naturalness — grammar errors that don't block meaning are downplayed. Goal: build the learner's confidence to produce target-language output without over-analyzing.
Trigger this skill only when the learner types /fluent-speaking. 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 2 — the learner needs a basic word bank and verb conjugations first (run /fluent-vocab a few times).
python3 "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/read-db.py"
Need: learner-profile (level, target language), mastery-db.skills_mastery.speaking.
# 🗣️ {target_language} Speaking Practice
Hallo {name}!
Today we're practicing **speaking** through typed conversation. I'll ask you questions or give scenarios, you respond naturally in {target_language} — just like a real conversation.
**Focus:** natural expression, fluency, pronunciation (typed)
**Level:** {CEFR}
**Duration:** 15-20 min
**Tips:**
- Think in {target_language}, not {native_language}
- Don't chase perfect grammar — focus on getting your message across
- Use complete sentences
- Be natural and conversational
**Ready? Let's chat!** 💬
A2 topics:
B1+: opinions, comparisons, hypotheticals, complaints, narratives.
## Question {N}: {Topic}
{Question in target language}
**Type your answer in {target_language}:**
Build the conversation naturally — after 3-4 Qs on one topic, transition: Interessant! Let's talk about something else....
Check in this order:
Feedback template (variant of fluent-feedback-formatter):
{✅ or 🟡} {one-line encouragement}
**What you said:**
"{their_answer}"
**Communication:** {Clear / Mostly clear / Unclear} ✅
**Grammar notes:** (secondary — don't over-focus)
- {major error → correction, only if communication-blocking}
**Natural alternative:**
You could also say: "{more_natural_phrasing}"
**Score: {X}/10**
- Communication: {Y}/5
- Grammar: {Z}/3
- Vocabulary: {W}/2
{encouragement}
---
For B1+ or when the learner is warmed up:
## 🎭 Role-Play
**Scenario:** {description in native language}
**Your role:** {what the learner plays}
**I'll be:** {what Claude plays}
Ready? I'll start...
---
{first line in target language}
**Your turn:**
## 🎉 Speaking Session Complete!
**Duration:** {X} min
**Questions Answered:** {N}
**Topics Covered:** {list}
### Communication Scores
**Overall:** {percent}%
- Clear messages: {count}
- Natural expression: {rating}/5
- Confidence: Growing! 💪
### Vocabulary Used Well
- {words}
### For Next Time
- Try using: {new phrase}
- Practice: {weak area}
**{target-language well done}!** 🌟
Use the fluent-db-updater skill:
command_used: "/fluent-speaking", skills_practiced: ["speaking"]skill_scores.speaking: {exercises: N, correct: count_of_clear_answers, time_minutes}errors[] — only communication-blocking ones (don't flood mistakes-db with minor speaking slips)focus_next_session[] — one topic + one patternSave exchange to /results/fluent-speaking-session-{NNN}.md.
Question 1: Introductions
Vertel me over jezelf. Waar kom je vandaan? (Tell me about yourself. Where are you from?)
Learner: "Ik ben Mohammad. Ik kom van Iran maar ik woon nu in Nederland."
✅ Clear and natural!
What you said: "Ik ben Mohammad. Ik kom van Iran maar ik woon nu in Nederland."
Communication: Clear ✅
Grammar notes:
- 🟢 "van Iran" → "uit Iran" (prepositions — origin uses
uit, notvan). Small slip; message still crystal clear.Natural alternative: "Ik kom uit Iran, maar ik woon al een paar jaar in Nederland."
Score: 9/10
- Communication: 5/5
- Grammar: 2/3
- Vocabulary: 2/2
Great start — you packed two ideas into one sentence, which is exactly what fluency looks like.
🎭 Role-Play
Scenario: You're at a café in Amsterdam. You want coffee and a vegetarian option for lunch. Your role: Customer I'll be: The server
"Goedemiddag! Wat wilt u drinken?"
Your turn:
/fluent-speaking.Add equivalents for other target languages as needed.
npx claudepluginhub m98/fluent --plugin fluentFacilitates structured speaking practice for language learners, using ACTFL OPI and CEFR-aligned techniques to develop fluency, accuracy, and pragmatic competence through guided conversation.
Executes Speak SDK workflow for AI conversation practice with real-time pronunciation, grammar, and vocabulary feedback in language learning apps.
Runs interactive reading comprehension sessions for language learners with target-language texts and comprehension questions. Invoked via /fluent-reading command.