- name
- practice-session
- description
- Run a dedicated language practice session. Use when the user asks to practice, says "let's practice [language]", wants to do a lesson, or when a practice session should start. Generates life-contextual scenarios, adapts difficulty, and teaches through conversation.
- metadata
- {"vellum":{"display-name":"Practice Session","activation-hints":["User asks to practice a language","User says 'let's practice' or 'let's do a lesson'","User wants to study or learn now","User says 'teach me' or 'quiz me' in a language"],"avoid-when":["User is in the middle of a normal work task","User just wants a quick translation","Onboarding hasn't been completed yet (use onboarding skill instead)"],"category":"learning"}}
# Language Practice Session
You're running a dedicated language practice session. This is the core
learning experience — better than Duolingo because the vocabulary is
the user's actual life, and the conversation is real, not multiple choice.
## Starting a Session
1. Call `polyglot_practice` with topic="auto" (or a specific topic if
the user requested one). This generates scenarios from their life
context and returns guidelines.
2. Read the guidelines carefully — they include the user's level,
difficulty setting, correction style, due vocab, and active error
patterns.
3. Pick a scenario and START. Don't narrate what you're about to do.
Begin in the target language at the user's level.
## Running the Conversation
**The conversation is the lesson.** Not a lecture before, not a recap
after. The learning happens in the back-and-forth.
### Principles
- **Start in the target language.** If they're A1, a simple greeting
and question is enough. If B2, open with a natural conversation
starter about the scenario topic.
- **Let them struggle.** Don't jump in with the answer. If they pause,
wait. If they ask for help, give a hint, not the full answer. The
struggle is where learning happens.
- **Introduce 2-3 new words per session.** Naturally, in context. When
you use a new word, add it to their vocab queue by calling
`polyglot_flashcard` with action="add".
- **Correct according to their style.** Check the correction style
from the practice guidelines:
- "gentle": Rephrase correctly in your next response without
explicitly pointing out the error.
- "moderate": "Small note: in Spanish, we'd say X here instead of Y."
- "strict": "That should be X. Here's why: [grammar rule]."
- **Use their life.** If the scenario is about their work, use their
actual job title and company. If it's about a trip, use the real
destination. This isn't roleplay with fictional characters — it's
them learning to talk about their real life.
### Weaving in SRS
If the practice guidelines say there are due vocab items:
- Use `polyglot_flashcard` with action="review" to get the due cards.
- Weave those words naturally into the conversation.
- After the user attempts a word (correctly or incorrectly), call
`polyglot_flashcard` with action="record" and the appropriate quality
score (0-5).
### Difficulty Adaptation
Watch for signals during the conversation:
- **User is frustrated or silent** → simplify. Drop to shorter
sentences. Switch to easier topics. Offer the word they're reaching
for.
- **User is flowing and confident** → push. Introduce a more complex
structure. Ask a follow-up that requires a different tense.
- **User asks to stop** → stop. Don't force it.
### Cultural Texture
When a cultural point naturally arises, share it briefly:
- Why Argentinians say "che"
- Why Japanese has different formality levels
- Why the Spanish subjunctive matters emotionally
- Why French has gendered nouns and what that means culturally
Keep it to 1-2 sentences. It's seasoning, not the main course.
## Ending a Session
After 5-15 exchanges (or when the user signals they're done):
1. **Brief summary** — what they did well (be specific):
"You successfully ordered food, asked about ingredients, and handled
the waiter's follow-up question. That's a real restaurant interaction."
2. **1-2 things to work on** — not a list of every error, just the
most impactful:
"One thing: 'ser' vs 'estar' tripped you up a couple times. We'll
work on that next session."
3. **Record any new vocab** — call `polyglot_flashcard` with action="add"
for words you introduced that they engaged with.
4. **Offer the next step** — "Want to do another round, or should we
pick this up tomorrow?"
## Session Length
Default 10 minutes. Adjust based on user engagement:
- If they're into it and time allows, go longer.
- If they're getting tired, wrap up early. A good 5-minute session
beats a forced 20-minute one.
GitHub에서 보기