Agent skill

Fluent Setup

by m98 in m98/fluent

One-time interactive onboarding that creates the learner's personalized language-learning profile — name, target language, native language, current/target CEFR level, timeline, daily minutes, and…

MITAuto-check: notesEducation

Install Fluent Setup

skills CLI
$ npx skills add m98/fluent --skill fluent-setup -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install m98/fluent fluent-setup --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/m98/fluent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/fluent-setup .claude/skills/fluent-setup && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fluent-setup
GitHub stars
420
Token cost
~2.1k tokens
SKILL.md length
676 words
Files
1
Skills in repo
12
Repo updated
First seen
Licence
MIT

At a glance

One-time interactive onboarding that creates the learner's personalized language-learning profile — name, target language, native language, current/target CEFR level, timeline, daily minutes, and…

  • Works in 6 steps: Check for existing profile → Welcome → Collect info → …
  • Tasks that involve Language learning
  • SKILL.md covers Overview, When to Use, Instructions and Profile Updates (existing…, plus 2 more sections
  • Calls python3

What it does

Fluent Setup is an agent skill from m98/fluent. One-time interactive onboarding that creates the learner's personalized language-learning profile — name, target language, native language, current/target CEFR level, timeline, daily minutes, and learning goals. Triggered only when the learner types /fluent-setup. Also handles profile updates and resets for returning users. Must never auto-invoke because re-running can reset progress.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Education, covering Language learning. The repository describes itself as: The AI Language Learning Kit for Claude Code and others. The licence is MIT.

When your agent uses it

  • Tasks that involve Language learning

Example prompts

  • “/fluent-setup”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Read, Write, Bash, AskUserQuestion

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Check for existing profile
  2. Welcome
  3. Collect info
  4. Generate the learning plan
  5. Write databases
  6. Optional first lesson

What it can do on your machine

Read from SKILL.md and the folder at commit 86fb80f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Bash
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Fluent Setup loads about 2.1k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 676 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~100
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Bash, AskUserQuestion

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from m98/fluent at commit 86fb80f, republished under its MIT licence (© m98). 676 words, ~2,124 tokens.

Download SKILL.mdSave it as .claude/skills/fluent-setup/SKILL.md (or your agent's skills folder).
name
fluent-setup
description
One-time interactive onboarding that creates the learner's personalized language-learning profile — name, target language, native language, current/target CEFR level, timeline, daily minutes, and learning goals. Triggered only when the learner types /fluent-setup. Also handles profile updates and resets for returning users. Must never auto-invoke because re-running can reset progress.
allowed-tools
Read, Write, Bash, AskUserQuestion
disable-model-invocation
true

Language Learning Setup

Overview

One-time onboarding that seeds all 6 databases in the Fluent data directory. After setup, every other skill reads from those files — this is the bootstrap. Also handles profile updates and progress resets for returning users.

The data directory is resolved at runtime (not hardcoded to ./data/):

  1. $FLUENT_DATA_DIR if set
  2. $CLAUDE_PROJECT_DIR/data/ if that path contains learner-profile.json (clone mode)
  3. ./data/ if ./data/learner-profile.json exists (clone mode, cwd inside repo)
  4. ~/.claude/fluent-data/ otherwise (plugin-install default)

Always resolve it via the helper rather than writing literal data/ paths:

bash
FLUENT_DATA="$(python3 "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/ensure_data_dir.py")"

or from Python:

python
import sys
sys.path.insert(0, f"{PLUGIN_ROOT}/.claude/hooks")
from fluent_paths import ensure_data_dir
DATA = ensure_data_dir()

When to Use

Trigger this skill only when the learner types /fluent-setup. The skill is gated with disable-model-invocation: true — re-running can reset a learner's progress, so it must never auto-fire from an ambiguous prompt.

Skip this skill if a profile already exists and the learner did not ask to change anything; route them to /fluent-learn or /fluent-progress instead.

Instructions

1. Check for existing profile

Resolve the data directory first, then probe for learner-profile.json:

bash
DATA_DIR="$(python3 -c "
import sys; sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks')
from fluent_paths import data_dir
print(data_dir())
")"
test -f "$DATA_DIR/learner-profile.json" && echo "exists" || echo "new"

If it exists, jump to Profile updates below. Otherwise continue.

2. Welcome
markdown
# 🌍 Welcome to Your Personal Language Learning System!

This AI-powered system will help you learn any language through:
- 📊 Systematic progress tracking
- 🧠 Spaced repetition (scientifically proven)
- 🎮 Gamification (streaks, achievements)
- 📈 Adaptive difficulty
- 🎯 Personalized to YOUR goals

**Let's get you set up!** (~5 minutes)
3. Collect info

Use the AskUserQuestion tool to gather questions in batches when possible. Required fields:

  1. Name — personalizes greetings.
  2. Target language — the language being learned (e.g. Spanish, French, German, Japanese, Korean, Arabic, Dutch).
  3. Native language — for translations and explanations.
  4. Other languages spoken — optional, used to offer cross-language connections.
  5. Current level — A1 / A2 / B1 / B2 / C1 / C2 / "not sure".
  6. Target level — where they want to get to.
  7. Timeline — 3 months / 6 months / 12 months / 2+ years / custom.
  8. Daily study minutes — 10 / 15 / 30 / 60 / custom.
  9. Learning goal — travel / work / exam (specify) / living in country / academic / family / interest.
  10. Learning style — conversational / academic / immersive / balanced (default).
  11. Gamification on/off — default on.

If the learner picks "not sure" for current level, run a quick 5-question assessment:

  1. Basic vocabulary recognition → A1
  2. Simple sentence construction → A2
  3. Past tense usage → B1
  4. Complex subordinate clauses → B2
  5. Idiomatic expression → C1

Map score to level: 0-1 correct = A1, 2 = A2, 3 = B1, 4 = B2, 5 = C1.

4. Generate the learning plan

Compute expected months to target level:

A1 → A2: ~100 hours
A2 → B1: ~150 hours
B1 → B2: ~200 hours
B2 → C1: ~300 hours
C1 → C2: ~400 hours

months = hours_needed / (daily_minutes / 60) / 30

Adjust:

  • -10% time if learner's native language is typologically close to the target (e.g. Dutch ↔ English, Spanish ↔ Italian).
  • -10% per additional language already known (cap at 30% total).

Present:

markdown
## 🎉 Setup Complete!

**Your Learning Profile:**
- 👤 Name: {name}
- 🌍 Learning: {target_language}
- 📚 Native: {native_language}
- 📊 Level: {current} → {target}
- 📅 Timeline: {timeline}
- ⏱️ Daily time: {minutes} min
- 💡 Goal: {goal}

## 📋 Personalized Plan

**Estimated time:** {months} months
**Total study hours:** ~{hours} hours

### Weekly Schedule
**Daily:**
- 🔄 `/fluent-review` — spaced repetition ({X} min)
- 📚 `/fluent-vocab` — new vocabulary ({Y} min)

**Alternating:**
- 📝 `/fluent-writing` (Mon/Wed/Fri)
- 🗣️ `/fluent-speaking` (Tue/Thu/Sat)
- 📖 `/fluent-reading` (Sun)

**Weekly:**
- 📊 `/fluent-progress` — check stats (5 min)

### Milestones
- Month 1: {reasonable short-term}
- Month 3: {quarter-way}
- Month 6: {half-way}
- Target date: {target_level}!

### Next Steps
1. Start now — type `/fluent-learn`
2. Daily habit — `/fluent-review` every day
3. Weekly — `/fluent-progress` to see stats
4. Stay consistent — even 10 min daily beats 2 hours weekly

**Your journey to {target_language} fluency starts now!** 🚀
Show full SKILL.md (307 more words)Show less
5. Write databases

Start from the templates in data-examples/. Resolve the target directory via fluent_paths.ensure_data_dir() (it creates the directory if missing), then create these 6 files inside it:

  • learner-profile.json — fill all fields from the interview.
  • progress-db.json — empty stats.
  • mistakes-db.json — empty error_patterns.
  • mastery-db.json — skills_mastery entries with mastery_level: 0 for each skill.
  • spaced-repetition.json — empty queues, daily_limits.review_items_per_day: 20.
  • session-log.json — empty sessions array, total_sessions: 0.

Use the Write tool for each. Do not call update-db.py — that script is for session updates, not bootstrapping.

6. Optional first lesson
markdown
## 🎓 Want to start your first lesson now?

A quick 5-10 min intro session to learn your first 10 words and get familiar with the system.

Type "yes" to start, "later" to begin on your own.

If yes, hand off to the fluent-learn skill.

Profile Updates (existing profile)

markdown
# 👋 Welcome back, {name}!

You already have a learning profile.

What would you like to do?

1. **Update profile** — change goals, timeline, or preferences
2. **View current plan** — see your learning schedule
3. **Reset progress** — start fresh (⚠️ erases all progress!)
4. **Cancel** — keep everything as is

**Type 1, 2, 3, or 4:**
  • 1 — ask which field, update only that field, preserve the rest.

  • 2 — render the plan section from current data. Read-only.

  • 3 — confirm twice. This deletes every file in the resolved data directory. Back up first:

    bash
    DATA_DIR="$(python3 -c "
    import sys; sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks')
    from fluent_paths import data_dir
    print(data_dir())
    ")"
    TS="$(date +%Y%m%d-%H%M%S)"
    mkdir -p "$DATA_DIR/.backups/pre-reset-$TS"
    cp "$DATA_DIR"/*.json "$DATA_DIR/.backups/pre-reset-$TS/"

    Then restart setup from Step 2.

  • 4 — exit cleanly.

Examples

Example 1 — first-time setup flow

Learner runs /fluent-setup. After collecting all 11 answers, compute months, generate plan, write 6 JSON files, offer first lesson.

Example 2 — returning-user profile reset

Learner: "reset my progress, I want to start over"

You're about to delete:

  • 42 sessions
  • 6-day streak
  • 287 vocabulary items
  • 12 mastered patterns

This is irreversible. Type RESET (all caps) to confirm, or anything else to cancel.

Critical Rules

  • Never auto-invoke. Re-running this can reset a learner's progress. Must be an explicit /fluent-setup.
  • Confirm twice before reset. "This will erase X days of progress, Y sessions, and Z mastered words. Proceed? (yes/no)".
  • Always seed all 6 files — every other skill assumes they exist.
  • Back up before reset. Hooks may not fire here; back up manually to .backups/pre-reset-<timestamp>/.
  • Don't invent data. Start every file empty — progress, mistakes, mastery all start at zero. The system builds up from real sessions.

© m98, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/fluent-setup of m98/fluent.

Open the folder on GitHubat commit 86fb80f

Compare with similar skills

Fluent Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Fluent Setup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fluent Setup this skillm98/fluent420—~2.1kAutomated safety check: NotesMIT
Pronunciation Specialistbitwize-music-studio/claude-ai-music-skills5361 repos~2.3kAutomated safety check: PassCC0-1.0
Duolingo Playpockebot/openpocket847—~1.1kAutomated safety check: PassMIT
Study Companion Enmingchen666/Reviva236—~5.7kAutomated safety check: PassNone
Adult Language Learninghezkvectory/hermes-edu-skills106—~737Automated safety check: PassMIT
Pre Generation Checkbitwize-music-studio/claude-ai-music-skills536—~2.1kAutomated safety check: PassCC0-1.0

Similar skills

  • Pronunciation Specialist

    bitwize-music-studio/claude-ai-music-skills

    Scans lyrics for pronunciation risks and prevents Suno mispronunciations.

    536 GitHub starsUsed in 1 repo~2.3k tokens
    EducationAuto-check passed
  • Duolingo Play

    pockebot/openpocket

    Help users complete Duolingo language lessons. An agent skill from pockebot/openpocket.

    847 GitHub stars~1.1k tokensUpdated 3 mo ago
    EducationAuto-check passed
  • Study Companion En

    mingchen666/Reviva

    General study companion for learning, review, exam prep, exam-point analysis, syllabus/exam-outline interpretation, finals speedrun teaching, concept explanation, problem solving, homework coaching…

    236 GitHub stars~5.7k tokensUpdated 16 days ago
    EducationAuto-check passed
  • Adult Language Learning

    hezkvectory/hermes-edu-skills

    把成人语言学习从收藏资料变成真实场景输入、主动输出、纠错和复现。核心不是再推荐一堆资料,而是让用户今天能完成一个可检查的小成果。

    106 GitHub stars~737 tokensUpdated 4 mo ago
    EducationAuto-check passed
  • Pre Generation Check

    bitwize-music-studio/claude-ai-music-skills

    Validates all pre-generation gates before sending tracks to Suno.

    536 GitHub stars~2.1k tokensUpdated 14 days ago
    EducationAuto-check passed
  • Lyric Reviewer

    bitwize-music-studio/claude-ai-music-skills

    Reviews lyrics against a quality checklist before Suno generation.

    536 GitHub stars~2.8k tokensUpdated 14 days ago
    EducationAuto-check passed

More from m98/fluent

All 12 skills in this repo
  • Fluent Progress

    m98/fluent

    Show the learner's language learning progress, statistics, mastery levels, streak, and achievements.

    420 GitHub stars~1.5k tokensUpdated 3 mo ago
    Auto-check: notes
  • Parse Fluent /results/.md session files to extract error patterns, strengths, accuracy trends, and focus areas for the next session.

    420 GitHub stars~1.3k tokensUpdated 3 mo ago
    Auto-check passed
  • SM-2 spaced-repetition algorithm reference for the Fluent language learning system.

    420 GitHub stars~1.2k tokensUpdated 3 mo ago
    Auto-check passed
  • 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…

    420 GitHub stars~1.6k tokensUpdated 3 mo ago
    Auto-check passed
  • Canonical feedback template for every learner answer in the Fluent system — celebrate correct parts, correct mistakes with category and brief explanation, show the full correct version, score out of…

    420 GitHub stars~1.2k tokensUpdated 3 mo ago
    Auto-check passed
  • Fluent Learn

    m98/fluent

    Main adaptive language-learning session that mixes skills (writing, speaking, vocabulary, reading) and exercise types based on the learner's current level, weak patterns, and due reviews.

    420 GitHub stars~1.8k tokensUpdated 3 mo ago
    Auto-check: notes

Categories

Questions about Fluent Setup

What does Fluent Setup do?

One-time interactive onboarding that creates the learner's personalized language-learning profile — name, target language, native language, current/target CEFR level, timeline, daily minutes, and…. Fluent Setup is an agent skill from m98/fluent. One-time interactive onboarding that creates the learner's personalized language-learning profile — name, target language, native language, current/target CEFR level, timeline, daily minutes, and learning goals.

When should I use Fluent Setup?

Fluent Setup fits situations like: tasks that involve Language learning.

How do I install Fluent Setup in Claude Code?

Run `npx skills add m98/fluent --skill fluent-setup -a claude-code`. Or copy the skill folder (.claude/skills/fluent-setup in m98/fluent) into .claude/skills/fluent-setup in your project. Claude Code loads it when a task matches its description.

How do I install Fluent Setup in Codex?

Run `npx skills add m98/fluent --skill fluent-setup -a codex`. Or copy the skill folder (.claude/skills/fluent-setup in m98/fluent) into .agents/skills/fluent-setup in your project. Codex loads it when a task matches its description.

Can I use Fluent Setup in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add m98/fluent --skill fluent-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fluent-setup, .gemini/skills/fluent-setup, .github/skills/fluent-setup and .opencode/skills/fluent-setup in your project.

What does Fluent Setup need to run?

Going by SKILL.md and its folder, Fluent Setup needs the command-line tools its instructions call (python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Bash, AskUserQuestion.

Does Fluent Setup access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Fluent Setup safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Fluent Setup use?

Fluent Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fluent Setup use?

About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Fluent Setup?

Skills that share tags, products or a category with Fluent Setup: Pronunciation Specialist (bitwize-music-studio/claude-ai-music-skills, 536 stars), Duolingo Play (pockebot/openpocket, 847 stars), Study Companion En (mingchen666/Reviva, 236 stars) and Adult Language Learning (hezkvectory/hermes-edu-skills, 106 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fluent Setup?

m98 (a GitHub user) maintains it in m98/fluent, which has 420 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on June 15, 2026.

Source: m98/fluent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.